Factorio - Klonan
Read this post on our website

Rail building changes
The problem with rail building is that it has too many states. It depends whether you start building the rail with shift, to use the ghost mode or not, and then it also matters whether you still hold shift, to ignore trees or not. Moving from manual building to ghost rail building means cancelling the whole rail building and starting it again with the correct modifier.

The problems were reaching the surface from time to time, and Twinsen even drew a nice little state diagram of the rail building system.



It kind of peaked with this bug report. After some time, it became clear that we should simplify it.

This is a nice example, where we can talk about change we just released (0.17.29) in a FFF.

From now on, instead of 3 modes (building manually, ghost building, ghost building + tree/rock removal), we have only 2 modes, where the ghost building without obstacle deconstruction is not available anymore. So it doesn't matter anymore how you start the building, it just matters whether you are holding shift or not at the moment, which makes it consistent with the normal entity building and the ghost icon.



Once the topic is opened, it is hard to leave it so easily, so we agreed that the rail building could be streamlined even more. The current model is, that you have to build one straight piece of rail first, and then you can use the rail builder on the edge of that rail. It is annoying generally, and especially for the new players, because he might miss the way how it is being used, as the straight rails are built exactly the same way as other entities. The reason we did it this way was mainly, because when we first introduced the (new at that time) rail builder, we weren't confident enough that it could replace even the basic straight rail building. But since the rail building is stable enough, we might go one more step forward.

The plan is that the rail won't be used to build straight rails normally the way you can now. The rail item would be always used to build by the rail planner only. Instead of having to snap to an existing rail, you could just start building anywhere on the ground. Instead of showing the rail preview when holding the item, you would see the arrow as when starting the rail building, and you could rotate it with the R key. It would make sense, to make the arrow color/size different for starting a rail planner on the ground versus snapping to an existing rail, but other than that, it would be the same.

High-res icons
Until now with the old GUI non-scalable system, we hadn't had much of a problem with the icons. We use one single version of 32px to display in the GUI slots, and the zooming system of the game takes care of the re-scaling for the rendering in the world.

This is not a perfect solution because we use the same set of icons in the GUI and in the world. That means that the zooming level of the game can re-scale them up to 25% so we lose pretty much all control of the bitmaps, and the readability of them is affected. Now with the high resolution possibilities of the new GUI system, we need to double the size of the bitmap, therefore the original icons must be 64px in order to have a correct visualization at 200% GUI scale. We are still using them in the world, so the engine can rescale them up to 9.55%. The amount of out of control pixels is now much more serious.

Unisize vs Mipmap
We are exploring some possibilities and we want to keep it simple. For now we are testing the limits of our old technique: one single bitmap for all the uses.

https://cdn.factorio.com/assets/img/blog/fff-290-zooming.webm

Delight yourself with this test icon placed on the belt. 64x64px size, every square is 8px. With it you can see how extreme the resizing can become:
From maximum zoom level 3.053 = 76.325% icon size.
To minimum zoom level 0.382 = 9.55% icon size.

To solve the problem for making it work in all the situations we design the icons in a very synthetic way. We simplify the shape to its purest meaning like the case of the assembling machines, where 1 gear + the color indicates level 1, 2 gears means level 2, etc.



This solution works but we have a lot of icons (~355), and many of them are very complex in their shape and/or meaning. In some cases this complexity is essential at the time of designing the icon -especially the entities- so we need to find the proper synthesis for each icon as we did with the assembling machines. They work fine at any zoom level, even at 128px. But with other entities, like the big electric pole, it's more complicated to keep this level of minimalism due to the fact that the shape itself is already complicated in its essence. If we make it less complex, we wouldn't be able to recognize it anymore.



A possible solution would be using a very minimalistic flat icon, but this wouldn’t be integrated as an object in the world. We don’t like that.
The other solution is using mipmaps. So we use different versions of the same icon optimized for different zoom levels. We would notice the change of version at certain zoom levels, and for solving it we must complicate the situation. This complication would be not just for the code to create some crazy crossfading effect, but also for the designers to keep the several versions of the icon close enough as to not feel the change.

I would try to be pragmatic and I bet for the unisize solution based in a proper synthesis, but it’s not going to be easy for sure, like the entire history of Factorio development.

As always, let us know what you think on our forum.
Factorio - posila87
Minor Features
  • Added ability to set a maximum number of map upload slots for multiplayer servers. Setting this is recommended to prevent the server from being flooded with map fragment requests from clients.
Optimisations
  • Optimized alt-mode icon background rendering. more
Bugfixes
  • Fixed that cut tool marked trees/rocks/cliffs for deconstruction when there was other valid entity in the selection. more
  • Fixed that movement by keys or clicking on an alert didn't unsnap the currently followed train in the map. more more
  • Fixed that the game would crash when showing blueprint library tooltips. more
  • Fixed that the game would crash when showing a blueprint library tooltip in multiplayer when the blueprint/book was removed by another player.
  • Fixed alt-mode icon background for narrow icons was very subtle. more
  • (0.17.31) Fixed a crash when hosting multiplayer games in some scenarios.

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Changes
  • Simplified rail building. Holding shift while rail building always activates the combination of ghost-rail-building + remove-obstacles, releasing shift returns back to normal manual mode. It doesn't matter anymore, whether the rail building started with shift or not. This removed the possibility to do ghost-rail-building without the remove-obstacles, but since it seems to be almost useless, we consider it to be worth the simplification.
  • font/color rich text tags now have to be properly terminated. This means eg: "[color=red]Red circuits" will now need to be "[color=red]Red circuits[/color]". This fixes a number of issues with handling start/end tags. more even more
  • Enter key will be shown as "ENTER" instead of "RETURN" on Windows and Linux. more
Minor Features
  • Added a shortcut for increasing/decreasing/resetting UI scale, mainly for debugging of proper automatic adjustment of UI, but people might find it useful for something as well.
Bugfixes
  • After a realization of a big misleading mistake, the pollution per second had to be renamed to pollution per minute, because it is what it actually is. more
  • Fixed that tree pollution absorption was recorded as pollution emission in the statistics.
  • Fixed that equipment electric network priority migration wasn't present. more
  • Crafting group selection by typing exact recipe match will now preserve the same way as selecting the crafting group manually. more
  • Fixed few layouting issues in the mods GUI. more
  • Fixed that sticker duration could be 0. more
  • Restored previous behavior where normal (not only underground) pipe connections reconnected when a fluidbox got removed. more
  • Fixed crash when robots try to revive locomotive that has both front and back wheels on rails, but no rail in-between. more
  • Fixed that repair packs could be lost if they didn't fit in your inventory when using personal robots. more
  • Added missing pipe connection arrows to flamethrower turret. more
  • Fixed that custom GUI style values specified directly on the elements weren't updated after UI scale change. more
  • Fixed that the electric network GUI would sometimes be opened when starting deconstruction planner selection on an electric pole in the map view. more
  • Fixed that Textfield and Sliders didn't update its size properly on UI change.
  • Fixed UI change update in ModSettingsGui and MapGeneratorGui with preview open.
  • Fixed quickbar selection disappearing when cursor stack is refreshed with a new stack. more
  • Fixed that nested frame styles (horizontal flow, vertical flow, header filler flow, filler) weren't initialized/updated correctly in the GUI created by script.
  • Fixed that the loading indicator in the browse games GUI was left of the "Back" button. more
  • Fixed turret prototype definition allowed ammo_type of attack_parameters to be optional resulting in crash when the turret started to shoot.
  • Don't consider recipes with 0 minimum amount (and possible randomised result) when resolving automatic crafting of ingredients when crafting manually. more
Scripting
  • Changed the LabelStyle::want_ellipsis default value to true and it is never changed to be something else now. We are considering to even remove this style property completely, as we basically want the ellipsis always when the label is squashed.
  • Added tile parameter to on_player_built_tile and on_robot_built_tile.
  • Removed unused on_player_tool_inventory_changed event.
Modding
  • Added emissions_per_minute property in the energy source, that is supposed to replace the emissions_per_second_per_watt which was basically wrong and hard to work with, both emissions_per_second_per_watt emissions definition will work for some time (at least in 0.17) so mods don't get broken.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Bugfixes
  • Fixed a crash when hovering over some inventory-like GUI elements.

Includes version 0.17.27
Bugfixes
  • Fixed that pollution statistic values from entities were reversed and didn't increase evolution. more
  • Fixed a crash when mods would set special_signal = true for virtual-signal prototypes.
  • Fixed a crash when a mining drill is destroyed during the resource-depleted event.
  • Fixed a crash when loading modded saves related to recipe migrations and fluidboxes.
  • Fixed a desync related to the blueprint library and keeping outdated blueprints between versions.
  • Fixed crash when undoing manual removal of entity marked for deconstruction. more
  • Fixed that the technology GUI would show 100% researched for near-100% values. more
  • Fixed crash when calling LuaGameScript::take_technology_screenshot for force that doesn't have any technologies enabled.
  • Fixed that action bar link to blueprint in the inventory had tooltip size limited too much. more
  • Fixed that blueprint cost table width wasn't correct for UI scale different than 100%.
Scripting
  • Added surface_index to the on_robot_mined_tile event.

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
Factorio - posila87
Changes
  • Reverted fonts used for Chinese, Japanese, Korean and Russian localizations to pre-0.17.24 versions.
Bugfixes
  • Fixed that circuit connection from ghost to entity wasn't preserved when it was upgraded or undone. more
  • Fixed that it was possible to rotate entities whilst the technology GUI was open. more
  • Fixed that the updates-available counter in the update-mods tab didn't update as mods would be updated. more
  • Fixed that LuaSurface::get_closest() did not check the type of the second parameter. more
  • Fixed that LuaEntity::revive() raise_revive parameter sometimes did not work. more
  • Fixed that script render objects sometimes did not render in screenshots.
  • Fixed a crash when rendering inserter interactions for modded furnace recipes without item ingredients.
  • Fixed research queue and technology tooltip for long technology names. more
  • Fixed sprites would render as corrupted on some GPUs with texture streaming enabled. more
  • Fixed layouting of filters of deconstruction planner in a tooltip. more
  • Fixed that the rocket silo alt-info module icons didn't render in the correct location due to the size changes. more
  • Fixed several inconsistencies with the map editor paused state in multiplayer. more
  • Fixed schedule merging when more than one step of connecting train is done and part with the empty schedule is connected first. more
  • Fixed pollution reporting of machines with negative pollution when there is not enough pollution to absorb. more
  • Fixed that building a new rail through robots changed all rail-bound train stops to that station. more
  • Fixed a crash when departing from temporary stations while all other stations in the schedule are invalid. more
  • Fixed that setting a character controller for an offline player would crash the game. more
  • Fixed trains overview GUI updating and performance problems. more
  • Fixed that long server names were overflowing in the Browse games GUI. more
Scripting
  • Added LuaAutoplaceControlPrototype::category read.
  • Added LuaEntityPrototype::alert_icon_shift read.
  • Added LuaForce::research_queue read/write.
  • Added LuaForce::add_research() and cancel_current_research().
  • Removed LuaForce::current_research write.
  • Changed cutscene waypoints to allow all entities as targets.

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
Factorio - Klonan
Read the blog on our website

Hello,
we are still focusing most of our resources towards fixing as many bugs as possible so we have stable release in reasonable time. In the meantime, the preparation for the continuation of the work on the GUI rewrite is still happening:

Character GUI mockup
The character screen is one of the most used GUI screens in the game, so we need to really try to do it right. We are moving towards the final version of the mockup, so we can start implementing it soon.

Crafting tab


Left frame
  • (1) Inventory: We just translated the previous okay mechanics to the new style so we don’t add nor remove any important function.
  • (2) Slots: Those are darker now in order to improve the contrast and readability of the icons.
Right frame
  • (3) Panel tabs: The regular system of tabs takes quite some extra space, so in order to keep a compact design we decided to use a new system for tabs attached to the panel itself. This is a measure we take due to the importance of this player window compared to some other panels. When a tab is selected it looks like a title for the panel frame and the inactive ones are like regular tabs.
  • (4) Search button: After iterating with the design of the new GUI we realised that our actual solution for the search bar is not efficient enough. Our problem was that we were placing it as a tool button in a subheader, so many times we had the situation of placing a subheader in a frame just for the search bar, no tools. This solution takes a lot of space and also can be conflicting with the space for other tools. So we decided to have the search as a panel function attached to the panel and opening it in a floating small window that can be placed anywhere in the layout, certainly very handy.
  • (5) Info button: This function opens an overlay with relevant information about the usage of the panel. This is a new feature and we will probably speak with more detail in future posts.
  • (6) Close button: You will still closing the panel with escape, no worries, but we need a graphical clue for the newcomer to learn how to close a panel. Those buttons will have tooltips explaining shortcuts and relevant information.
  • (7) Category tabs: The “classic” version uses buttons, For a better readability we find more proper using tabs. With a situation of a heavy modded game we will divide the space for the tabs by the number of categories, so we can have as maximum 8 tabs. For more than 8 tabs, we will add new rows below, and we will change the tabs system for the classic buttons solution increasing also the height of the panel until reaching some generous max height, after this we will be forced to use a scroll. But this solution should be very extreme.
  • (8) Virtual slots: The classic GUI version uses slots for everything, even for crafting buttons. We decided to go deeper on this concept and we’ve created different kinds of slots. Regular slots are used for “real” items. Things that the player has in the inventory. Virtual slots are referring to the idea of an item. And they should look like a button: like a crafting button. You must be used to them already in the 0.17 series with the action bar.
  • (9) Rubber grid: This tileset gives us the idea of dynamic content, and saves the balance in the composition.
Logistics tab
Feature wise, most of the changes are in this tab.
In the current version, there are logistic requests and trash slots presented as two separate tabs:



As you most probably know, the requests are specifying how much to deliver from the logistic network, while the auto trash is used to specify what is the maximum before items are moved to trash slots and taken away back to the network.

There are several problems with this:
  • Its possible to request more than you have set in the auto-trash, leading to a infinite loop.
  • It is cumbersome to align the values when I want to have the maximum and minimum counts the same.
  • The player doesn't see it all in one place
  • Auto trash has infinite slots, the requests do not.

This is how the current mockup looks:



These two tabs were merged into one (1). Every slot can specify minimum (the request), maximum or any combination. The amount of slots is infinite.This means, that the slot have 6 basic variants:
  • (2) Requested amount is the same as maximum amount: Just the number of the request is shown.
  • (5) Requested amount is specified and maximum (bigger) amount is specified as well: We show the numbers in a column following the order of min/max.
  • (6) Requested amount is specified, maximum amount is not limited: Similar as (5), just showing the infinite symbol for maximum.
  • (7) Item is not requested (request amount is 0) and maximum amount is specified: We need to show 0 for the request, to differentiate it from (2)
  • (8) Item is not requested and maximum amount is 0: When you don't want the item to be ever in your inventory, in this case, we just show no number, same as it is in the auto trash slots now.

But this is not everything, there is one little feature in current version, where you can hover a logistic slots, and see how many robots are on the way, and how many is available in the logistic network. This is very handy thing, but not really practical to use:



So what we will have is, that the slots themselves will have color styles depending on the state.
  • (2) All the items are delivered: The default style.
  • (3) items are on the way: Yellow button style (color can change).
  • (4) Items not available: Red button style, no items are on the way, and there is not enough items in the network to satisfy the order at this moment.
  • There could be one more color for when robots are on the way, but there isn't enough in the logistic network, as when you request something that is just being slowly produced, you will have always one robot coming with the freshly created product, but it would take a long time until there is produced enough. But we need to consider whether it is worth to do it or not.
I imagine this to be useful when I come back to the base to let the logistic robots "refill" my inventory, I can just open the logistic tab, and see how the yellow slots are becoming default color, or easily spot what is missing. I already know in advance, that this is the kind of little feature that I will not understand how could I play without it.

The logistic request slot is kind of an extreme, as we need to show different kinds of information on top of each other (the icon, the slot type, and the request/trash combination type, and I hope that won't look too chaotic to new players.

Character tab



These are basically the leftovers of what the character might need to access/configure. The important thing is the weapons slots being here, which solves the problem of not being sure what shift-click is going to do. Now, when you have logistics tabs opened, shift-click moves to trash slots, and when you have the character tab opened, it moves it to weapons/armor.

Factorio at EGX Rezzed
A small part of the team is at EGX Rezzed this week. If you are attending, be sure to find them in the Indie Basement and pick up some free pins.

From left to right: Wheybags, Abregado, Klonan, Twinsen, Dominik.


As always, let us know what you think on our forum.
Factorio - posila87
Changes
  • The Mods GUI will now always include a link to the mod portal for the selected mod.
Bugfixes
  • Fixed roboport area rendering for players. more
  • Fixed a crash when trying to print invalid values through the Lua API. more
  • Fixed that the rail world preset didn't allow to get some achievements due to smaller base size. more
  • Fixed that the technology GUI technology cost wouldn't show numbers > 2^32 correctly. more
  • Fixed that custom checkboxes didn't render correctly in some cases. more
  • Fixed opening nested items in items so the same item isn't opened multiple times. more
  • Fixed a crash when trying to filter standalone character ammo slots. more
  • Disallowed building train stops in intersections.
  • Fixed that cloning fluid turrets with fluid would crash the game.
  • Fixed that cloning transport belts could crash when cloning fails.
  • Fixed personal roboport would render its construction area even when toggled off. more
  • Fixed train stop names were rendered without rotation. more
  • Fixed Russian and several other localizations would not show symbols ≠, ≤, ≥ in train conditions and decider combinators. more
  • Fixed Chinese and Japanese text was too small to read. more
  • Fixed that deleting mods would follow symlinks instead of just removing the symlink. more
  • Fixed that mining drill can't-build messages would be wrong in some cases. more
  • Fixed that the game finished GUI would not show the time played if there were no kills.
  • Fixed building underground pipes over ghosts could crash/corrupt the game. more
  • Fixed that the shortcut selection list wouldn't use a scroll bar if the shortcuts didn't fit on the screen. more
Modding
  • Recipes with duplicate ingredients or products will now error at startup instead breaking crafting runtime. more
Scripting
  • Added surface_index to the on_robot_built_tile event.

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Balancing
  • Changed god controller inventory size to be the same as the character inventory size.
Bugfixes
  • Fixed rendering of targeting range visualization for turrets with limited turn range. more
  • Fixed parameters passed to LuaPlayer::zoom_to_world didn't have any effect. more
  • Fixed that power poles would sometimes build automatically when they shouldn't. more
  • Fixed that editing map gen settings for the non-default surface using the map editor didn't work. more
  • Fixed that LuaSurface::spill_item_stack would ignore belts by default. more
  • Fixed that LuaEntity::set_request_slot() wouldn't allow filters with a count of 0. more
  • Fixed that copying assembler settings would copy direction as well. more
  • Fixed that automation and logistics technologies were marked as upgrades.
  • Fixed that non-upgrade technologies didn't show the level properly. more
  • Fixed default key bindings for in-game copy, paste and undo shortcuts on Russian keyboard layout. more
  • Fixed that remote.call() with small strings didn't work correctly. more
  • Fixed lamp lighting up for 1 tick without any electricity. more
  • Fixed that the next infinite research level wouldn't appear in the technology list after the previous level was queued. more
  • Fixed a crash when changing modded recipes that used fluid inputs or outputs. more
  • Fixed lamp showing full electricity bar without any electricity. more
  • Fixed that large sequential lua tables wouldn't be saved and loaded correctly. more
  • Fixed poor performance when rendering logistic network overlays. more
  • Fixed that the shortcut for opening the console could be also entered into it (does not fix dead keys).
  • Fixed Scroll Lock would trigger an event on both key down and key up. more
  • Fixed trains stop names with icons in them would look wrong when pinging a train station in chat. more
  • Fixed that crafting machines could not be rotated if they used a heat energy source and didn't have fluid boxes. more
  • Fixed inventory hand sometimes pushing items out of the inventory and spilling them on the ground. more
  • Fixed that some languages had no name, and that some used their English name, and some the name in the language itself. more
  • Fixed incorrect scaling of cyrillic characters when viewing them with your language set to English.
  • Fixed two crashes from migration of modded fluid using entities. more
  • Fixed that clicking a technology in the research queue would select the next available level instead of the queued level. more
Scripting
  • Added LuaEntity::get_max_transport_line_index().
  • Added LuaPlayer::last_online read.
  • Added allow_belt parameter to LuaSurface::spill_item_stack.
  • Added corpses parameter to on_post_entity_died.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Bugfixes
  • Fixed that merging two electric networks didn't merge the statistics which was introduced by the power switch addition in 0.13. more
  • Fixed light not turning off properly when using fluid energy source on an entity. more
  • Fixed a crash when building large electric poles. more
Modding
  • The game now checks that technology levels are contiguous.
  • Non-upgrade technologies are now considered to be level 1; previously they were level 0.
  • Renamed "electric-energy-accumulators-1" to "electric-energy-accumulators".

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - Klonan
Removing RTL language translations
I'm sorry to say that we have removed the RTL language translations (Hebrew and Arabic) in 0.17.20.

Until this point we've had a half implementation of RTL languages, where the text is simply flipped when we download it from Crowdin. This 'works' for a decent proportion of things, but not nearly 100%. In order to attain the level of polish we want for the 1.0 release, we would need to spend a lot of time implementing proper support for RTL layouts. This just doesn't make sense for us given our current goals, and the proportion of our player base which uses these languages (less than 0.1%). We decided that instead of completely gutting the translations, we could leave them in for those who enjoy them, but not to offer them in the GUI as defaults.

The languages will remain up on Crowdin, and the locale files will still be present in game, but there will be no option in the in-game language options dialog to choose them. If you want to use an RTL language, you will have to manually edit your config file to set your locale. Detailed instructions are available on our forum. What this also means, is that we won't be investigating any bug reports about RTL issues.

Interesting bug reports
Years ago when I was just getting into the programming field I was told by others that someone typically starts in the QA/bug tester positions and if they prove themselves can move on to do the "fun" work. That implies that the QA/bug tester positions aren't fun and that I should look forward to being done with those tasks. It was 4 years, 7 months, and 8 days ago (as of writing this) that I asked Kovarex about possibly letting me help fix bugs in Factorio and today bug fixing is my 2nd favorite part of working on Factorio (with optimizations taking first place).

The weirder and more difficult a bug is to track down the more I enjoy working on it and finally seeing it resolved. Naturally as I've spent so much time working on bug fixes (in the same code base - and always going for the difficult ones) I've gotten quite good at it. One of the fun parts of fixing the difficult bugs is putting the reproduction steps in the changelog and watching peoples reactions when they read the patch notes for that release.

Some of the more interesting ones from the 0.17 bug fixing so far:
  • The game would crash when bringing up the escape menu in multiplayer while in the middle of using blueprints/deconstruction planners then releasing the mouse button.
  • The game GUI would be hidden if the game was saved and loaded while the technology GUI was open.
  • Resizing the window while loading on 4k screens would cause the loading progress bar to not render (but text still worked fine).
  • The game would crash when removing the target rail of a temporary train order if the target rail was a dead end.
  • The game would crash if you opened the update-mods GUI, weren't signed in, then closed the sign-in prompt, clicked refresh, signed in, left the update-mods GUI, and came back to it (found from automatic crash logs).
  • The game would crash if the open GUI target become invalidated during the same tick as autosave starting (found from automatic crash logs).
  • The game would crash when trying to open the set-filter GUI on the ammo inventory of another player opened using the /open command (found from automatic crash logs).
  • The game would crash when if you re-joined a multiplayer game that you lost connection from while the tips-and-tricks window was showing (found from automatic crash logs).
  • The game would crash when accepting a Steam game invite if a previous attempt to manually join a multiplayer game was in progress. (found from automatic crash logs).
  • The game would crash when loading if you had a modded save with 2 different assembling machines with 2 different fluid recipes that both migrated to different recipes with different amounts of fluid inputs/outputs (found from automatic crash logs).
Most of these where ~10 line fixes but the reproduction steps took anywhere from a few hours to a day.

They still haven't beaten the best ones we've had previously:
  • The game would crash when clicking "Restart" from a running game if the new game happened to be created at the exact same memory address as the old game.
  • The multiplayer map transfer logic would get stuck forever trying to send the last packet if the CRC for the packet happened to be a specific value that some routers interpreted as bad/invalid/flagged to be dropped.
  • And finally the best: The game crashes randomly inside heavily threaded rendering logic if you have an AMD Ryzen CPU with older chipsets drives and BIOS. We still get crash reports from this one - a handful with each release. The fix for this one is simple: update the chipset drivers and BIOS. It's common enough that we'll most likely add a special message if we detect it happening. See this forum post.

Overall bug fixing is going well. We had a rough release earlier this week related to some GUI logic not working correctly. In the past we've talked about our automated test system (FFF-186) which normally tests game logic. With the rough release earlier this week it pushed me to get the test system in a shape where we can run automatic graphics tests (in hopes of avoiding the issues we had during the 2 broken versions). We still have a few small things to fix but otherwise the automatic test system can now run the full graphics interface while running the tests (in parallel). Just for fun, I set it up so it would arrange the windows in a grid:

https://youtu.be/LXnyTZBmfXM

New remnants for almost everything
Since forever, when killing an entity we used generic remnants (with a few exceptions, walls, rails...). We only cared about the size of the entity and it is done.



This is an okay solution, but we want more specific and natural remnants, so it is possible to recognize which entity was destroyed. That’s not really super necessary because ghosts are normally providing this information, but we are polishing the game and making everything nicer when possible.
So we started experimenting with the small electric poles.



We realised how simple things can become complicated in no time with Factorio.
For starters, the old generic remnants are very flat because the character can walk on top them and they have no collision box. Also they are moved from the objects layer to the corpse layer which is rendered under it. Now that we want more specific and custom remnants for entities, sometimes we need to grow in the Z-axis, which can result in something like this:



No big deal, we just need to keep the remnants in the object layer and everything is solved. The new problem is the sorting of the objects layer. Factorio renders the objects from top to bottom and from left to right. Meaning that objects on top are covered by objects below them, and objects on the left are covered by objects to their right. So we need to be very careful with remnants invading tiles not assigned to them. This makes the composition more difficult because this can happen:



In this case we were lucky, because that looks nice, but in the other direction we wouldn’t be so lucky. With more heavy remnants like nuclear reactor or oil refinery, we are not going have this happy accident anymore. Of course we will try to make these happy accidents possible with any setup, but allow me to be skeptical in this regard.

No big deal again, we just stay in our assigned tiles and we’re safe. But our chaotic composition of destruction starts to be pretty much like an Ikea assembly kit. Everything in place almost as it was before. But we still have the Z-axis let’s use it.

Well, remember that the player can walk through it and the remnants don't have collision boxes. It’s going to be really weird seeing the player literally ignoring the physicality of the world. One potential solution proposed was to add a collision box to the remnants, so we avoid this nasty visual effect. This solution seems nice from the beginning but it touches so many aspects of the actual balance of the gameplay that we dismissed it.

We are still experimenting with it, and trying to find the best approach in between all these limitations. Hopefully soon we will find a proper solution.

As always, let us know what you think on our forum.
...