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.
Factorio - wheybags
Bugfixes
  • Fixed vertical squashing of listbox. more
  • Fixed in-game updater would not work on Windows if Factorio path or write data path would contain non-ASCII characters. more
  • Undoing action of building entity that removed ghosts also restores the ghosts. The same with removal of ghosts by cancelling deconstruction. more
  • Fixed that building power poles when moving very fast did not have consistent spacing. more
  • Fixed undo of train deconstruction. more
  • Fixed undo of circuit conditions of entities in the ghost state. more
  • Fixed train pathing inconsistency between normal station departure and waypoint. more
  • Fixed problems related to rail path waypoints and station removal.
  • Fixed logarithmic sliders not showing value of 1. more
  • Fixed logarithmic sliders showing the same value for some positions.
  • Fixed logarithmic sliders not showing correct initial position.
  • Fixed Rich text icons not working in rotated text. more
  • Fixed a crash when loading saves converted to scenarios in the map editor after changing mods. more
  • Fixed that the inventory hand was not activated when the cursor was auto-refilled when entity building, tile building, fast transferring, repairing, using capsules or dropping items. more
  • Fixed that fast-replacing ghosts would not transfer settings.
  • Fixed that double clicking on a list box scroll bar would trigger the confirm action. more
  • Fixed train GUI preview not centering on locomotive when opening the color picker. more
  • Fixed gui clipping for scrollpane inside a scrollpane. more
  • Fixed biters ignoring the player when building a new base. more
  • Fixed that copying settings with a blueprint would not show returned materials. more
  • Fixed turret ranges with huge radius would not render correctly when zooming into a map. more
  • Fixed that the reset queue would reset if the the game window is resized whilst the technology GUI is open. more
  • Fixed that resizing the game window would clear the search filter in the technology GUI. more
  • Fixed that crafting machines with an empty fluid_boxes key could be rotated. more
  • Fixed train state not updating properly in some specific cases. more
  • Fixed mining drill showing misleading message when building on top of invalid resources. more
  • Fixed a crash related to assemblers that sometimes occurred during loading 0.16 modded games.
  • Fixed a crash when opening map too fast after creating a new game or new surface. more
  • Fixed LuaPlayer::open_map, close_map, zoom_to_world would mutate rendering state while render thread was possibly using it causing crash. more
  • Changed the custom scale slider in interface settings to be disabled when automatic scale is selected.
  • Fixed train path finding in a special case of a loop with no signals and exactly one intersection. more
  • Fixed clipping when the preset description in the map generator is scrollable. more
  • Better path selection within one segment that is in a loop. more
Scripting
  • Added LuaEntityPrototype::secondary_collision_box read.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - posila87
Bugfixes
  • Fixed gates sometimes not closing when next to cliffs. more
  • Fixed crashes related to GUI tables. more

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Changes
  • Removed RTL language translations (Hebrew, Arabic). more
Bugfixes
  • Fixed crash when opening technology tree.
  • Fixed blueprint loading related to trains and temporary stations. more
  • Fixed that the quick bar and shortcut bar weren't aligned on UI scales other than 100% and 200%, making the game literally unplayable. more
  • Fixed fuzzy search in the select-a-filter GUI could show empty groups. more
You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Bugfixes
  • Fixed various layouting problems related to tables.
  • Fixed upgrading underground belt ghosts would not recalculate underground connections resulting in desyncs. more
  • Fixed construction robot tutorial when spamming ghost radars. more
  • Fixed that some entities didn't show the not enough power icon. more
  • Fixed possible crash when editing font names in rich text. more
  • Fix of previous fix of certain situations of assembler settings copy/paste. more
  • Fixed that toolbar buttons stayed pressed down. more
  • Fixed crash when an inventory gui was shown with 0 slots. more
Scripting
  • Added LuaGuiElement::scroll_to_top(), scroll_to_bottom(), scroll_to_left() and scroll_to_right().
  • Added LuaGuiElement::scroll_to_element().
  • Added LuaEntityPrototype::has_belt_immunity, pollution_to_join_attack, min_pursue_time, max_pursue_distance, radar_range, move_while_shooting, can_open_gates, affected_by_tiles, distraction_cooldown and spawning_time_modifier read.
  • Added LuaEntityPrototype::inserter_extension_speed and inserter_rotation_speed read.
  • Added LuaTransportLine::input_lines read.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Changes
  • Dragging power poles over ghosts of the same type will revive them. more
  • Replaced the hand graphic in the quickbar with a selected graphic, so blueprint books are visible.
Bugfixes
  • Solved train positioning when being built by robots. more
  • Fixed that playing Factorio in full-screen mode on macOS would hide all notifications. more
  • Allow commas with spaces after in color tags. more
  • Fixed the mechanic of saving a scenario locally when joining a multiplayer game that uses a scenario you don't have didn't work correctly. more
  • Fixed that the burner light would still glow even when the entity is sleeping. more
  • Assembler copy/paste now works correctly when pasting both recipe and direction with fluid mixing around. more
  • Tool shortcut bar selection list can be closed with ESC. more
  • Fixed that some technologies wouldn't show in the technology list if they were fully researched. more
  • Fixed incorrect zooming speeds when using keyboard to zoom. more
  • Blank property expression names in map gen settings JSON are ignored. more
  • Seed1 arguments above 255 to noise functions no longer crash the game, warning about the upper bits being ignored, instead. more
  • Fixed broken supply challenge. more
  • Fixed slow horizontal trackpad scrolling in the tech tree view. more
  • Fixing one situation of underground pipe connection over a ghost. more
  • Fixed blueprint icons not disappearing when using set_quick_bar_slot more
  • Fixed PvP force modifiers were being overwritten. more
  • Fixed "graphics_variation" was read-only on entities of type "corpse". more
  • Fixed buildability check of some fluid entities in blueprints. more
  • Fixed gui layouting related to having more squashable elements with different minimal sizes in one row/column.
  • Fixed possible crash when hovering the statistics graphs.
  • Fixed a crash when using LuaGameScript::show_message_dialog during on_init.
  • Fixed headless server would hang when shutting down on Windows. more
  • Fixed interaction of pipe underground connections of different reach. more

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

Hello,
This week has been non-eventful. We are fixing bugs. There is not much to say, and I have updated the graph to reflect the status of the ongoing Dev vs. Bug war:


The massive spike is the specific crash we talked about in the last FFF.

EGX Rezzed
We will be attending EGX Rezzed in 2 weeks. This week I have been finishing all the preparation work, such as furniture and equipment rental, accommodation, our itinerary etc. We will have a booth in the South Vault, with a couple of PCs for playing the game. If you are also attending be sure to pop by (We might have some free swag).

This will probably be the only conference we will exhibit at this year, as there is some non-trivial team effort in arranging our attendance, and we want to focus that effort into finishing 1.0. Saying that, each time we exhibit at a new conference we learn a lot, and its good to have a couple under our belt before deciding our post-1.0 event plans.

Splitter belt compression
There were different kind of Splitter compression problems over the years and we had to apply more and more fine-tune tricks to keep it as good as possible in all the special cases, which became even more complicated with input/output priorities etc.

Our situation became worse in 0.16 by the fact, that we started to have the debug option of show-transport-line-gaps, which suddenly made even the smallest gap, previously unnoticeable, possible to be seen by the players. On top of that, once we made the gaps 0.25 of a tile in 0.17, even without the debug option, the circuit network can now easily notice any slight compression imperfection. This basically means, that the proper compression of a belt has more value.

When we encounter situations like this in the bug reports (and similar), we have to try to fix it.

https://cdn.factorio.com/assets/img/blog/fff-287-splitter-gap.webm

In this situation for example, the timing of the incoming items allows the Iron plate to move through the Splitter, but in a way, that it is slightly further from the previous.The internal code is logical, but from the players perspective, it doesn't really make sense that adding an extra item on the input can make the output little bit less compressed.

There were a few different ideas of how to fix it. One of them was that the Splitter could basically have a tiny internal inventory that would work as a buffer. But due to the change to the logic and possible performance implications, we decided this idea isn't good enough.

The solution we settled on is actually quite simple. This is the way how Splitter worked before, it had 0.5 tile long ramps of inputs, and 0.5 tile long ramps of outputs.



So we just extended the input ramp by a little (+0.2 tiles) and used that extra length as a small buffer. With some extra logic to properly transfer the position of the items from input to output, this solution was able to solve all the little timing problems.



https://cdn.factorio.com/assets/img/blog/fff-287-splitter-no-gap.webm

The only real change for players is that Splitters need 20% more items for the belt to be fully backed up which is kind of insignificant.

Invalid usernames
As you might remember, even if you've bought Factorio from Steam, in order to join multiplayer, the game asked you to register an account. We have the typical restrictions on username characters: alphanumerics and the characters ._-.

Back in December, one of our developers made a slight code edit that inadvertently made it possible to register an account from in-game without checking whether the username is valid... In two months we have gathered 1,945 registered accounts that don't conform to the intended restrictions. Things mostly work fine with arbitrary usernames, but one big problem is that it's impossible for server owners to ban people with spaces in their usernames!

Most people who registered an account like that intended no harm, but sadly we can't let arbitrary usernames stand, so they will be asked to change their username on factorio.com when they attempt to log in.

My apologies to users too sexy for your party, NOT THE BEES!!!!!, your mum lives in a tent, and ' or 1=1; --.

As always, let us know what you think on our forum.
Factorio - wheybags
Changes
  • Fast replacing power poles will keep existing connections but also try to connect to further away power poles if possible. more
  • 0-255 numbers are now allowed in [color] tags. The game will detect if you want to use floats or 0-255, just like the /color command. more
Bugfixes
  • Solved transport line compression related to splitters for various corner cases. more
  • Fixed texture-compression config values that were valid in 0.17.15 but are not valid since 0.17.16 would cause error on startup. more
  • Fixed that reverse/forward speed limits of the train movements were mixed up. more
  • Fixed that reverse locomotive power was the same as forward.
  • Fixed item transfers tutorial giving combinators instead of wood. more
  • Fixed tutorials showing migrations dialog.
  • Fixed slow inserters on transport belt madness level 3. more
  • Fixed massive biter clumps in Wave defense. more
  • Fixed a crash when importing save files into saves with different technology levels researched.
  • Fixed that swapping Command and Option keys on macOS caused neither one to work in Factorio. more
  • Fixed that the technology GUI would list all technology levels if the technology was fully researched. more
  • Fixed a crash when using /swap-players. more
  • Fixed a crash when rotating some modded underground pipes. more
  • Fixed poor performance when large chat messages are rendered. more
  • Fixed a crash when a train traveling to a temporary stop has its schedule copy-pasted. more
  • Fixed a crash when using "Join server after sync" for server hosted over Steam Networking. more
  • Fixed hand missing from quickbar when selecting shortcuts to the blueprint library. more
Scripting
  • Added LuaControl::open_technology_gui(technology) which will open the technology GUI and select the given technology.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - posila87
Changes
  • Disabled vanilla pollution attacks in the NPE until after the final wave.
  • Changing teams in PvP will try to preserve the current character. more
Bugfixes
  • Fixed alerts showing for trees and rocks in the NPE more
  • Fixed solid fuel not triggering "fuel furnace" quest item more
  • Potentially fixed scrap metal crash bug again more
  • Fixed that a fluid furnace revived from a ghost would not work. more
  • Fixed that launching tutorials could leave the running game in a broken state. more
  • Fixed that clearing the ghost cursor did not clear the hand in the quickbar. more
  • Fixed Compilatron blocking placement of burner inserter in NPE more
  • Fixing a bug from last version that allowed fluid mixing by setting a recipe in assembler. more
  • Different alert when unable to revive ghost due to fluid mixing by hand vs. by robot. more
  • Fixed spitters would not properly target construction robots that are blocked from fulfilling their task. more
  • Fixed a crash when joining Steam game invites while a multiplayer connection is in progress.
  • Fixed that the "research finished" indicator would display the wrong technology level. more
  • Fixed a crash when removing the end rail of a temporary train order. more
  • Fixed that cargo wagon filters wouldn't get preserved in blueprint strings. more
Scripting
  • Fixed that printing the output of LuaProfiler anywhere except log(...) would cause a desync. Note: this means if the results are shown in things like player.print() they won't persist through save/load (but won't cause desyncs).
  • Fixed Electric Pole smart coverage placement not building over other pole ghosts. more

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
Factorio - posila87
Changes
  • Fixed that trains wouldn't depart for temporary stops when waiting at a station. more
  • Fixed that two headed train running out of fuel didn't trigger the out of fuel alert in one of the directions. more
  • Improved Compilatron's ability to select a free space when indicating structures by a factor of 16.6.
  • The player must now wait for Compilatron to follow before being allowed to evacuate the first area of the NPE.
  • The player must collect at least some of their structures before evacuating the first area of the NPE.
  • Updated the player spawn after big biter attack in case the player wants to check how aggressive the biters are.
  • Compilatron now has its own icon.
  • Biters and worms in the NPE will now be aggressive except in special situations.
Gui
  • It is now possible to scroll horizontally with a touch pad in the tech tree view. more
Bugfixes
  • Fixed bugged Compilatron speech in NPE when showing blocked miner.
  • Turrets placed in the starting area will now be detected during the entrench step of the NPE. more
  • Fixed flamethrower turret range visualization was rendered in wrong layer. more
  • Fixed editing map gen settings in the map editor would crash the game. more
  • Fixed that robots would still try to deconstruct trains that left their network. more
  • Reduced screen tearing on Windows 7 when Aero is disabled. more
  • Fixed that converting games to scenarios and back could corrupt script global data. more
  • Fixed that disabling friendly fire prevented fish from healing. more
  • Fixed that LuaEntity::destroy({do_cliff_correction=true}) was ignored. more
  • Fixed toggle state of item selection buttons when clicked with item to fast-select. more
  • Fixed that the Q that cancels wire dragging also removed the hand from the quickbar. more
  • Fixed that selecting quickbar slot while dragging wire only cancelled the dragging, but had to be pressed again to select the slot. more
  • Fixed that modded fluid streams could crash the game in some situations. more
  • Fixed that keys blocked by textfield didn't include CONTROL + A (to select all), the same way as it is doing for (CONTROL + C/V/X). more
  • Fixed the double-click to clear functionality of number text field. more
  • Fixed a crash when migrating mods related to assembling machines and fluids. more
  • Fixed that exporting a blueprint to the library could crash the game. more
  • Fixed a crash when a modded assembler is built over a ghost of assembler with different rotation. more
  • Fixed damage technology migrations not migrating infinite technologies properly. more
  • Potentially fixed a Linux-specific bug where the game would react to key presses not intended for it. more
Scripting
  • Added LuaGameScript::create_profiler() which can be used to measure script performance.

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
...