Factorio - posila87
Changes
  • Removed the message of "<X> is in the way" when building over the exact same entity with same direction and position as in cursor. more
  • Rails under trains can be marked for deconstruction. more
  • Better latency hiding in multiplayer when experiencing connection issues. Less issues with rubber-banding or character teleporting.
  • Latency hiding is no longer completely disabled when the character is shooting. Character position and animation are still not latency-hidden while the character is in combat (10 seconds after shooting or taking damage). This should make combat smoother in multiplayer.
  • The Linux version of the game now depends on PulseAudio.
Bugfixes
  • Fixed adding conditions to a train station after it was dragged. more
  • Improved drawing of a wall preview in some special cases. more
  • Fixed that the sync-mods-with-save could in some cases leave mods enabled. more
  • Added Right Control as secondary binding for "Temporary station modifier" controls. more
  • Fixed that migrating saves could in some cases mess up damage bonuses. more
  • Added a migration for unloadable saves because of invalid train paths caused by bugs in previous versions. more
  • Fixed that rails wouldn't build correctly if they had a fast_replaceable_group defined. more
  • Fixed flamethrower turret tooltip was missing info about created fire. more
  • Fixed that modded units with minimal attack range wouldn't try to get away from a target if they were too close. more
  • Fixed that train built from blueprint could miss a connection occasionally due the rail building order. more
  • Fixed that electric-energy-interface and heat-interface entity types didn't export properly in blueprint string format. more
  • Fixed Compilatron speech bubble hologram effect would cause entire screen to flicker when "Full color depth" graphics option was disabled. more
  • Fixed a map corruption issue related to building blueprints outside of the map through script. more
  • Fixed that too long description of shortcut tool could make the selection frame to be too big and unclosable. more
  • Fixed that undo doesn't work for trains. more
  • Fixed that reading 'disabled' from train stop control behaviors from Lua would report bad values in some cases. more
  • Fixed that rich text tooltips would flicker in multiplayer. more
  • Fixed possible crash in NPE when Compilatron builds an iron mining setup. more
  • Fixed multiplayer issue where a client and server would sometimes send a large amount of data, causing players with slower connection to disconnect (https://factorio.com/blog/post/fff-302)
  • Fixed that the wind sound would cut off abruptly when the technology screen was opened. more
  • Fixed that inserter tooltips would list pollution despite inserters being unable to produce pollution. more

  • Fixed that the bar of train wagon in blueprint was lost when the game was saved and loaded. more
  • Fixed that textfield selection wasn't removed when the focus was lost. more
Modding
  • Equipment with the "manual" shape now renders backgrounds/outlines automatically like equipment with the "full" shape.

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

Crash site: First state
For many weeks now the GFX department has been focused on preparing replacements for the placeholder graphics of the campaign crash site. The subject as usual is not that easy because we had to first solve the main concept of the crash site.

It happens that those new entities belong to the Factorio universe, but they come from a different reality than the usual DIY/diesel punk of the game. So we had to invent a new way to design machines that look like Factorio but that are not too familiar.

Here a proof of concept of the look:



The concept is that the big (medium) spaceship broke into pieces as it crash landed, and lost many components that the player, during the introduction, will repair and use for his own profit.

The look of the spaceship remnants are a little bit based on the designs of the 60’s/70’s pulp Sci-Fi. Fortunately we can keep the look of Factorio due the accident, which allows us to destroy and dirty up the machines show many inner mechanical details.

It is also part of the concept that all the machines that the player builds, are based on an existing technology from his home planet. So the machines that we see in the regular game are like 'cheap' versions of the original ones.



For the lab, we keep the dome shape and the beams inside in order to keep consistency with the regular laboratory. So slowly the player gets used to the meaning of the shapes.



The generator is similar to a substation -more or less-, connectable like a pole but it also produces electricity. Sometimes we really have to invent.



This works like an assembling machine. The design is more based in the (yet unshown) redesign of the assembling machines, rather than on the actual 'classic' ones.



These cylinders are like chests. We decided to make them cylindrical instead of a box for this difference in technology level that we are speaking about. The player will recognize them for the shape, color, and they also always have a number printed. You don’t really want to know the meaning of the numbers.

All this new content is a work in progress, and we made these new entities first for the testing of the campaign. Based on feedback with testers we will have the chance to tweak and adapt whatever is necessary. In the case of the introduction, the positioning of the entities can have a large impact on the flow of the gameplay. Once we are more sure of the final placement, we can see how all the pieces will fit together.

The next round for the crash site is the main crashed spaceship, and some other assets that converts the scene into a full composition, more proper for the introduction of the game.

Mods do crazy things
I've heard it many times and said it myself: "It's only ..., there aren't a lot of them in the base game so it should be fine." And then mods come along and bring a slap of reality: if a mod *can* do something a mod *will* do something.

The other week I got a bug report that the game was using a large amount of memory and took an excessive amount of time to exit. After reading over the bug report I had my theories as to why it might be happening but first I needed to reproduce it. A few failed attempts later I got the correct set of mods and mod settings to make it happen. To my surprise (well not really - it happens almost every time with these things now) - it wasn't what I thought it was going to be.

Sprites.
Not the video-texture kind but the internal wrapper class we use to store information about the video-texture. The game was creating an insane amount of them due to what the mod was doing. Specifically: the mod was making a lot of variations of each biter, spitter, worm, biter nest, and spitter nest. Normally that's not a problem - the game can do that easily. The problem came from how worms work. Worms have multiple directions with multiple animations for each direction. The end result is each base game worm creates 7668 sprites. ... "It's only 7668 sprites per worm, there aren't a lot of them in the base game so it should be fine." The base game has 4 worms: small, medium, large, behemoth. This mod was asking the game to make 3020.

The base game:
  • 188'056 sprites on the main menu
  • 1.281 seconds from launch to the main menu
  • 245 MB idling on the main menu
  • 0.1 seconds to exit

The mods:
  • 41'071'478 sprites on the main menu
  • 47.395 seconds from launch to the main menu
  • 15'791 MB idling on the main menu
  • 47.5 seconds to exit

Many ideas and attempts later (plus fixing all the broken stuff introduced by those changes with the assistance of Oxyd) I had reduced the time complexity of making and destroying the sprites by a significant amount and found that some just weren't needed.

The result:
  • 23'681'677 sprites on the main menu
  • 37.444 seconds from launch to the main menu
  • 5'484 MB idling on the main menu
  • 2.9 seconds to exit

A significant improvement on every measurement. I always love working on these kinds of problems because they almost always involve a lot of thinking and experiments.

As always, let us know what you think on our forum.
Jun 24, 2019
Factorio - wheybags
Bugfixes
  • Fixed a crash related to equipment rendering.
  • Fixed a crash related to tile building. more
You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Bugfixes
  • Fixed crashes related to creating tile-ghost entities through the Lua API. more
  • Fixed that configuring blueprints and then directly exporting to a string didn't work correctly. (https://forums.factorio.com/71977) more
  • Fixed that the Lua API would allow the same non-infinite technology to be queued multiple times. more
  • Fixed a crash when queuing things to be crafting during the crafting finished event. more
  • Fixed train pathfinding bug related to two different station connected to the same rail from different sides when one after another is in the schedule. more
  • Fixed rail signal consistency when rail is removed from reserved signal. more
  • Added "buffer-rename-workaround" config setting as a possible workaround for rendering glitches on some Sandy Bridge and Ivy Bridge GPUs. more
  • Fixed an issue that made unit group pathfinding fail often, resulting in very few biter attacks. more
  • Fixed that the hovering entity tooltip would still follow the cursor while in the menu. more
  • Fixed a crash when exiting the campaign during the same tick as a script-triggered autosave.
  • Fixed that incompatible dependencies would effect mod sort order.
  • Fixed missing fluid icons on new ghosts. more
  • Replay button in new game GUI is now remembered after confirm. more
  • Changed rendering of belts to use linear interpolation for minification to reduce flickering effect on some zoom levels. more
  • Fixed that units could sometimes get stuck forever. more
  • Fixed that multiplayer replay would crash the game if it contained a blueprint transferred using the blueprint library. more
  • Fixed that LuaEntity::destroy({raise_destroy=false}) would still raise the destroy event. more
  • Fixed that the style debug tooltips could in some cases show multiple at once. more
  • Fixed that robots could get stuck if the chest they're trying to put items into was blocked. more
  • Fixed that the update mods GUI would incorrectly disable the "Update selected" button in some cases. more
  • Fixed that building concrete/stone paths wouldn't use all tile variations in some cases. more
  • Fixed a performance problem related to large amounts of incredibly fast robots and storage chests. more
  • Fixed turret range overlay in map was not rendering correctly. more
  • Fixed that turret tooltips could show damage modifiers from the wrong force. more
  • Prevented possible number overflow in train condition gui. more
Modding
  • Added uses_stack to the thrown capsule item action.
  • Removed the rail-category prototype type.
  • resource_autoplace_settings has been made public (require('resource-autoplace').resource_autoplace_settings) and the API improved. It will automatically allocate a unique resource index for each patch_set_name. 'patch_set_name' and 'autoplace_control_name' can be independently specified. 'seed1' can be specified as a parameter. The global function 'get_next_resource_index' is obsolete and has been deleted.
  • Equipment shapes can be defined as "manual" (a set of points).
  • Added optional lamp prototype property "always_on".
Scripting
  • Added "entity_to_ignore" to LuaSurface::request_path.
  • Added target, orientation, and orientation_target to LuaRendering::draw_polygon().
  • Added LuaGameScript::item_subgroup_prototypes, item_group_prototypes, fuel_category_prototypes, resource_category_prototypes, achievement_prototypes, module_category_prototypes, equipment_category_prototypes, trivial_smoke_prototypes, shortcut_prototypes, and recipe_category_prototypes read.
  • Added LuaControl::character_mining_progress read.
  • Added LuaEntity::can_shoot().
  • Added LuaEntityPrototype::always_on read.
  • Added LuaGuiElement type "line".
You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - Klonan
Hello, this Special Friday Facts post is too long to post here on Steam, so we would like to invite you to read it on our website.

Factorio - wheybags
Changes
  • Inserters are slightly faster when picking up from belts as they can now select an item and pick it up in the same tick.
Bugfixes
  • Fixed a special case of assembler pipe connection bug. more
  • Fixed a crash when trying to check for mod updates with mods that have dependencies not on the mod portal.
  • Fixed that multiple modded inserters aiming for the same belt would compete for the same item. more
  • Fixed that opening signal by circuit network could let train to go to a reserved/occupied block. more
  • Fixed that it was possible to build a special rail crossing that didn't merge the blocks and allowed trains to cross without collisions. more
  • Fixed a crash related to pathfinding toward a moving target, such as when the player was fighting biters. (https://forums.factorio.com/71989 https://forums.factorio.com/72011)
  • Fixed turret ranges would not render properly on some models of Apple computers with Intel integrated GPU. more
  • Fixed most of the Map Editor GUI would still work when doing replays. more
  • Fixed that "the hand" didn't work correctly in the Map Editor when the inventory was full. more
  • Fixed that cut ignored the not-minable and not-deconstructable flags in some cases. more
  • Fixed rail signal to block binding that occurred in special cases. more
  • Fixed shooting would refresh only the first beam if multiple beams were active. more
  • Fixed that cloning rails with locomotive on top in the map editor made the copied rails not minable even when the locomotive was removed. more
  • Fixed another train pathfinding issue related to re-pathing while in chain signal sequence. more
Scripting
  • Added LuaEntity::energy_generated_last_tick read.
  • Added LuaGameScript::parse_map_exchange_string().
You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - Klonan
You might have noticed that a lot of rail related stuff was broken during these past releases, and now it is working more or less fine again. The story behind is is not so trivial.

Rail signal logic
The rail signal logic for automated trains is quite straightforward:

As a train moves forward, it tries to reserve signals in front of it. If it can reserve a signal, the whole block guarded by the signal gets reserved for the train. If the train can't reserve the signal, as the block is reserved or occupied by different train(s), it stops in front of the signal and waits. Once the train passes a signal and enters a new block, it removes the reservation on the signal and block it had reserved. Once it exits the block, the block can be reserved and entered by other trains.

This looks nice and simple, nothing fundamentally wrong could happen with this logic right? Especially since we have it there for almost five years and it all just works right?

If the answer to this was "Yes", it would be quite a stupid buildup, so the answer is "No" :).

The counter example



So in this example, the train is approaching from the right. The problem is, that it reserves the block number 2 twice since there is a special rule, that a train can enter a reserved or occupied block as long as it is reserved by itself.



Since the train reserved the block 2 twice but removed both of the block reservations by entering it, the second reservation, which the train still counts on, isn't applied on the block 2, and the block is basically open for any other train to enter. This can lead to collisions and surprisingly also desyncs since we don't save block reservations, but deduce them from signal reservations while the game is being loaded.

The solution
Once the problem was identified, the solution was quite straightforward. I added support for block to be reserved multiple times, removing the reservation decreases the counter, and the block is freed only if all the reservations are removed.

But the real bugs and problems started after, because we now need to be extra sure that the block is reserved exactly the same amount of times as it is unreserved. The logic around this was far from rigid before as it just wasn't needed. Quite a few strict checks were added all over the place, to make sure that an internally incompatible state doesn't appear, since we don't really want to have to fix these "this block is closed forever" bugs where it would be close to impossible figure out how the game got into that state.

P.S. Since we can now use train stops as waypoints, not only blocks, but rail signals can be reserved more than once as well, as a train can plan path in a circle and reserve the same signal twice along the path.

The effect
You can see how the internal changes of rails bumped our crash report counts, but it will hopefully go back to normal soon.



Well, you can't make an omelette without breaking some eggs... but overall the trend continues toward stability.

As always, let us know what you think on our forum.
Factorio - wheybags
Bugfixes
  • Fixed sprite batching issue when drawing many inserters with circuit connectors. more
  • Fixed construction robot working shadow. more
  • Fixed using repeat_count in RotatedAnimation definition would cause crash. more
  • Fixed rail signal consistency in case of reserved signal being invalidated by building a rail that puts both sides into same block.
  • Fixed rail crash related to marking reserved signal for deconstruction.
  • Fixed that programmatically set locale for autoplace controls didn't work. more
  • Fixed that scrollpane consumed the mouse wheel events even when not activated, which blocked the other (parent) scrollpane. more
  • Fixed that re-pathing in chain signal sequence didn't respect the need for green exit when the re-pathing was based on manual change of target station. more
  • Fixed that changing state of rail signal by circuit network didn't properly update state of parent circuit signals. more
  • Fixed that rail signal disabled by circuit network didn't prevent train passing by it if it guards a block that is already reserved/occupied by the same train. more
  • Limited of usage of tab/shift-tab to move between textboxes as other objects didn't support it and it seems like it isn't worth to try to support it for everything. (https://forums.factorio.com/69656) more
  • Reduced the UPS impact of a large number of biters trying to pathfind. more
  • Fixed that tabbing could move to invisible or disabled widgets.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Changes
  • Improved manual building of character corpses through the map editor. more
  • Textures that are being streamed are compressed now to reduce RAM usage and increase rendering performance.
Bugfixes
  • Fixed production statistics were not cleared before starting the Introduction scenario more
  • Fixed Compilatron getting stuck in a loop between two help nodes. more
  • Fixed various bugs uncovered (mainly) by more rigid rail signal handling.
  • Fixed that when starting a server with --start-server-load-scenario, --map-settings would have no effect. more
  • Fixed that the minimap radar coverage preview would show radars on different surfaces. more
  • Fixed that turrets would show the glow animation in some cases when dead. more
  • Fixed that checking for mod updates would work correctly if the mod author had previously uploaded a broken version of the mod. more
  • Fixed that crafting machine lights wouldn't render correctly when off-screen partially. more
  • Fixed that the map editor extra-settings GUI didn't resize correctly. more
  • Fixed that the bonus GUI had transparent edges when the vertical scroll bar was visible. more
  • Added workaround for issue with missing icons on macOS with Intel GPUs. more
  • Fixed framerate issues caused by overloading GPU. more
  • Fixed a crash when using some hotkeys while in cutscenes. more
  • Fixed that re-mapping "stack split" didn't work correctly. more
  • Fixed speech bubbles jittering when their target moved across a chunk boundary.
  • Fixed that tank could not drive backwards. more
  • Fixed that rendering.draw_line() sometimes did not render lines. more
  • Fixed that the map wouldn't update during a non-blocking save. more
  • Fixed that LuaPlayer::set_controller() would crash if set to another players character. more
  • Fixed bug where NPE could get stuck in a cutscene. more
Modding
  • Limited maximum number of picture variations that will be loaded from item prototype definition to 16.
  • Added y_offset property to speech_bubble prototype.
Scripting
  • Added a sanity check to LuaForce::chart() that errors on large sizes instead of trying to use 71,000 gigabytes of RAM.
  • Added LuaFlowStatistics::clear().

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Bugfixes
  • Fixed that the game crashed when passing train signal while driving train in manual mode.
  • Fixed that 'station name' and 'player name' map toggles would seemingly randomly toggle on when turning on some options. more
  • Disabled check that prevented loading of some mods. more
  • Fixed crash when saving speech bubbles that had been migrated from old saves. more
  • Fixed NPE crash when Compilatron is boxed while building. more
You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
...