Factorio - wheybags
Changes
  • Improved fluid simulation threading. Decreases CPU usage. Threading available on all operating systems. Simulation performance should remain unchanged.
Bugfixes
  • Fixed a crash when importing blueprint strings with power switch wires.
  • Fixed fluid mixing for fixed recipe assemblers. more
  • Fixed "Not enough rails" message after successful track placement. more
  • Fixed a crash when destroying entities during the on_pre_ghost_deconstructed event. more
  • Fixed that trains with "logistics while moving" disabled would not deploy robots when switched into automatic mode while waiting at a station more

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

Inching closer to stable
The last 2 weeks have been less productive than we would like on the bug fixing front. The Easter festivities along with a wave of illness have dampened our efforts. We have still managed to push out 2 more experimental releases, and fixed a few desyncs. We encountered one specific desync in the mass MP stress test last weekend, caused by a characters inventory size changing (such as researching the toolbelt technology) while the player is respawning.

The graph of crashes paints a similar story to how the office atmosphere feels. It is natural though, most of the major crashes affecting most players are resolved, so all that remains are the more difficult issues that only affect a handful of players. This means that each bug fix is less effective at reducing the overall crash count.



This last weekend, we had over 500 total crashes reported, which is a slight improvement over the prior weekend's ~650. One thing that makes our progress hard to evaluate is that we don't know how many people are actually playing experimental. Most people play through Steam, and so far we have found no way of determining how many people are opted-in to the 0.17 experimental through Steam. It could be that the game is more stable, or it could be that less people are playing.

There are still over 250 open bug reports on our forum, so it seems it will be a few more weeks until the first stable 0.17.

Some people have been asking when we will release the new GUI and GFX updates that we promised before 0.17 release. The plan is that after the first 0.17 stable version, some of the team will be moved from fixing bugs to working on features. At the point where we have a meaningful amount of new content ready (A few GUIs, some new GFX, etc.), we will release it as a new experimental 0.17 version. We plan to give some explanation and notice about these 'mini-content releases' in a FFF before they are each released.

Factorio massive multiplayer stress testing (Part 2)
As mentioned last week, we did a stress test of the Factorio multiplayer last Saturday. We didn't have any crashes, but the server was really struggling at around 300 players, kicking players when they got near that mark. We reached a maximum of 350 concurrent players.

The stress testing is also a good way to find and fix desyncs, as the probability of a desync is about 100 times higher with this many players.

We made some more tweaks and minor improvements and we plan to make the test again. Every week the stress tests are more stable and allow more and more players. This will probably be a weekly thing for a couple more weeks until we are happy with the stability and performance of multiplayer.

So, tomorrow (Saturday 27th April) at around 8pm CEST we will be making another stress test. If you want to help out, join the server and play normally when the game starts. Details will be posted in the KatherineOfSky discord in the #mmo_stresstest channel. Or keep an eye out for the Steam announcement (event) notification. The server will probably become unstable or might require some restarts as we test, debug and trace things, so please bear with us.

Community spotlight
Just wow.

https://youtu.be/7lVAFcDX4eM

As always, let us know what you think on our forum.
Factorio - wheybags
Changes
  • Added out of fuel alert icon to flamethrower turrets.
  • UI scale won't be synchronised over Steam Cloud anymore. more
  • Syncing startup settings with a server will automatically join the server on game restart. more
Bugfixes
  • Fixed yet another consistency bug related to ghost connections. more
  • Fixed crash related to changing force of entity marked for deconstruction/upgrade/in undo queue. more
  • Fixed a crash resulting from overlapping underground pipes. more
  • Fixed power grid overlay not showing correctly on map when changing surfaces. more
  • Fixed another instance of furnaces with fluid outputs not working correctly. more
  • Fixed multiplayer paused notification not being cleared when the client is dropped. more
  • Fixed accumulators showing discharge animation and empty icon at the same time. more
  • Fixed that the game would desync when changing forces of beams, fluid streams, projectiles, stickers, and fire flames.
  • Fixed player inventory income flying text would sometimes show incorrect total item count. more
  • Fixed switched technology levels in the console message when changing research. more
  • Fixed that the keyboard shortcuts for new blueprint/upgrade planner/deconstruction planner wouldn't work when the cut or copy tool was selected. more
  • Changed render layer of belts marked for deconstruction so they don't clip with other belts. more
  • Fixed attempt to rotate ore patches that are out of reach would create "Can't Reach" floating message. more
  • Fixed that generators would produce infinite pollution in some cases. (https://forums.factorio.com/69450) more
  • Fixed that generator tooltips did not show pollution. more
  • Fixed that LuaGameScript::tick_paused read was not of type boolean. more
  • Fixed that the map editor convert-save-to-scenario didn't work correctly in some cases. more
  • Fixed that the map editor intensity slider number fields wouldn't accept numbers outside the slider range. more
  • Fixed that the deconstruction planner "tiles only" mode would ignore tile ghosts. more
  • Fixed that exporting blueprint strings wouldn't include pending icon changes. more
  • Fixed that cloning rocket silos with rockets waiting to launch wouldn't auto-launch correctly. more
  • Fixed that cloning single entities with wire connections to themselves didn't work correctly. more
  • Fixed a desync related to rail item names. more
  • Map generator GUI now remembers the last preset used.
  • Fixed an older bug with pull-placement of power poles. more
  • Fixed copying files to temp folder would preserve read only permissions, which could cause errors. more
Factorio - Klonan
Read this post on our website.

New Campaign
Have you ever been playing a Freeplay game and realised you don't know what your next big goal is? And then, once you decide to pick a new goal, you realise while you worked on automating the last goal, there were 10 new technologies unlocked and now you don't know which to pick next.



These are the situations we hope to address with the new full Campaign. A guided Freeplay, in which the player plays through the whole tech tree, without being overloaded with choice, while still having the perminance and unidirectional progression of Factorio. The perminance problem has already been solved using the new map expansion technique which is playable in the Introduction scenario. Over the last year we have been working on the bigger design task of unravelling the tech tree and breaking it into a set of choices for the player.

This task has been made all the more Interesting as the tech tree is also constantly getting tweaks and revisions over that time as well.

I look forward to providing more insights but for now I will leave you with one example (read: spoiler):



Just to note, we won't be changing the freeplay tech tree, which will still have all the choice and diverging paths as it does now.

Factorio massive multiplayer stress testing
A few days ago I was contacted by Caledorn from the KatherineOfSky community. They were doing some tests to see if they can host a massive multiplayer event. I joined forces with him and started looking into the new and old problems we can fix in Factorio so we can host a large number of players. The last test was on Sunday. We had around 80-140 players playing without too many issues. But it was still a small test compared to our previous record of 400 players back in 2016.



Among some small tweaks, I added the ability to set a maximum number of map upload slots for the server. This should help tremendously for events such as these, where the map can get quite large, and there would often be a large flood of players joining, usually after a disconnect or server restart. This would cause a massive flood of map request packets coming to the server and very slow map uploads caused by uploading to way too many players. Now, when many players will try to join at the same time, they will pe placed in a queue and the game will wait for an upload slot to open up.

Another small annoyance in these events (or even small multiplayer games) is the constant annoying blinking of the "Server not responding"/"Player is being dropped from the game". I made some tweaks that should show this message less often. We also found a memory leak in input action handling, which Rseding has fixed.

There are still some technical problems to investigate and fix, so tomorrow (Saturday 20th April) at around 8pm CEST we will be making another stress test. If you want to help out, join the server and play normally when the game starts. Details will be posted in the KatherineOfSky discord. If we need more players, a Steam announcement (event) notification will be sent out, so keep an eye out for that also. The server will probably become unstable or might require some restarts as we test, debug, and backtrace things, so please bear with us.

High-res Icons part II
Last week I opened the subject of the high resolution icons FFF-290, more focused on the unisize method: re-scaling a single 64px bitmap to any size through trilinear interpolation.
The results were very fine, and compared to the old version it was obviously a success.

This week we are focused on the mipmap method. Posila very quickly implemented the code for it, and even though I was willing to reject the technique due its extra work and complications, after testing it I changed my mind.
Here a comparison with all the methods:



On the first glance the difference between unisize and mipmap is almost not noticeable, but when we surpass the boundary of zoom level 1.000, the mipmap starts to react a bit better.
I was worried about the amount of work implied about the creation of the 4 levels for each icon, but after preparing a few of them, I saw that it wasn’t that much. Not to mention that having control over 4 different sizes is a big relief, especially the 16px and 8px versions.

The best part of the plan is that we can combine both methods, so we can make mipmaps only for the icons that require special attention, it is just about the Lua definition of the item.

Now, just for the joy of it, I’d like to show a sneak peak of what HR icons means for the GUI.


GUI at 100% scale


GUI at 200% scale

I hope this new contrast and definition results in a better experience for the player.

As always, let us know what you think on our forum.
Factorio - wheybags
Changes
  • Admins ignore multiplayer map upload slot limit
  • "Player is being dropped"/"Server not responding" messages will only show after 2 seconds, to avoid irrelevant short pop-ups.
Bugfixes
  • Fixed that the server-settings.example.json had an additional comma at the end of the file. more
  • Filled in a missing fluid mixing check for miner. more
  • Fixed that create-blueprint-item shortcut prototypes could have no item_to_create set. more
  • Fixed upload slot queue blocking players from joining even if not all slots were filled.
  • Fixed a desync from rotation of an assembler with fluid energy source. more
  • Fixed a connection consistency problems of wire/circuit connections ghosts and undo. more
  • Added a no-crop requirement to the wire sprite definitions to avoid mods removing it, which can confuse the drawing logic. more
  • Fixed text boxes would not respect keyboard layout for shortcuts like copy or paste. more
  • Fixed blocking of game shortcuts when a text box has focus did not take into account keyboard layout settings. more
  • Fixed the game would not respect remapping of modifier keys (Ctrl, Shift, Alt) in operating system. more
  • Fixed it wasn't possible to bind mouse buttons 6 to 9. more
  • It is no more possible to teleport an entity into fluid mixing. more
  • Fixed a crash when defining a programmable speaker with no instruments. more
  • Sync-mods-with-save will no longer offer to load-save when attempting to sync while hosting a multiplayer game. more
  • Fixed that negative health regeneration wouldn't work when the entity had full health. more
  • Fixed a crash related to migrating game versions while having gates marked for deconstruction with ghost walls built over them. more
Modding
  • For performance reasons inserter pickup/dropoff vectors are now limited to half a chunk or less.
Scripting
  • Added LuaEntityPrototype::lab_inputs read.
  • Added LuaEntityPrototype::researching_speed read.
  • Added LuaGameScript::pollution_statistics read.
You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
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.
...