Factorio - Klonan
Read this post on our website

Hello,
the bugfixing period boringly continues, we got down to 159 active bug reports, so in few weeks we should be finally down with this burden. But at least the graphics department has something new to show:

New design for the chemical plant
After some time working on the redesign of the chemical plant, we can finally show the results:



In the old version, we had the problem of not being very clear when the chemical plant was working or not. So apart from the style modernisation and high resolution, this redesign was aimed for solving this readability issue. As an addition, we tried also to be very clear at the time of viewing what kind of chemical recipe the plant is processing.

Finally we came with the solution of adding a big window - pipe style - showing the moving liquids inside with the tinted color, and also adding a chimney releasing smoke when the plant is on.

As you can see in the animation above, the smoke is also taking the tinted color of the processed chemical, so it should be crystal clear what it’s going on now with this entity. This tinted smoke is very experimental, and we need to make more testing before releasing it, the point is to avoid a too colorful pollution, but in terms of concept I find it 'very chemical' having colored smoke, which could fit perfectly with the subject.

Here you can see the four rotations:



Factorio wouldn’t be Factorio if the things would be easy as "rotate the model in 3D and done". Due to readability requirements, camera perspective, and interaction with any other entity in the game, we have to recompose the entity for every rotation. That’s why even rotating the entity 90 degrees the window remains at the front, and the chimney at the back.
Basically every rotation is like a new entity that tries to look like its other rotations, but somehow rotated (!?).

We truly believe that this new design is going to be a good improvement for the game. Slowly but steady, Factorio is getting to its 1.0 release.

As always, let us know what you think on our forum.
Factorio - posila87
Bugfixes
  • Fixed that some noise expression types used by some mods (literal map positions, offset-points, and distance-from-nearest-point) were unimplemented.
  • Fixed that blueprint rotation was not saved for blueprint books in the blueprint library. more
  • Fixed that the focus-search shortcut could be used to bring up the search field when it was disabled. more
  • Fixed that game.reload_script() could break LuaRecipe/LuaPrototype references.
  • Fixed a PvP script error on configuration changed. more
Scripting
  • Added LuaEntityPrototype::item_slot_count read.
  • Added LuaEntity::get_stopped_train().
  • Added "surface_index" to the on_post_entity_died event.

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Changes
  • Improved efficiency of noise program compilation and quality of error messages.
Bugfixes
  • Fixed a crash that would sometimes happen after deleting a blueprint from the library. more
  • Fixed crash related to train schedule containing only temporary stations. more
  • Fixed GUI inspector vertical align value inconsistency (middle instead of center). more
  • Fixed LuaInventory::sort_and_merge when used on cargo wagons with inventory limits set. more
  • Fixed that distractor robots would show in the bonus GUI under the follower robots section. more
  • Fixed that reading invalid chain signals wouldn't work correctly. more
  • Fixed yet another ghost connection error related to consistency checks. more
  • Fixed some cases of multi-layered icons not being scaled correctly. more
  • Fixed power switch connection consistency problem. more
  • Fixed "Confirm Message" key-binding not working when bound to some mouse buttons. more
  • Fixed backwards/forwards max speed fuel modifier related to two-headed trains. more
  • Fixed interactions of assemblers and underground pipe connections blocked by induced fluid mixing. more
  • Fixed setting entity ghosts to minable=false didn't work. more
  • Fixed that the statistics GUI would show count values < 0.5 as "no count". more
  • Fixed a performance problem with high speed idling trains on circular rail networks. more
  • Fixed signal placement visualisation for special cases related to straight diagonal rail. more
  • Fixed that items supposed to be removed on clearing cursor (copy, cut, paste, blueprints from blueprint library etc.) were put into character corpse. more
  • Fixed uranium cannon shells shooting backwards when aimed closed to the tank.more
  • Fixed Programmable Speaker alert textbox not losing focus when pressing ENTER. more
  • Fixed desync caused by setting font colors on buttons. more

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Bugfixes
  • Fixed that hand crafting wouldn't respect the hide_from_flow_statistics property. more
  • Fixed that modded GUI tables did not display borders that were set in their style.
  • Fixed the game would fail on startup if control settings were reset during migration of 0.16 config file. more
  • Fixed that train stop "must be build next to rails" error was not using the name of the train stop. more
  • Fixed that beam damage interval was sometimes not respected properly.
  • Fixed that beams would be immediately created and destroyed when standing very close to max range.
  • Fixed that beams would not show any animation if the target was killed in one hit. more
  • Fixed that laser beams would always aim at player character's feet.
  • Fixed entity hit_visualization_box not working properly.
  • Fixed running out of memory during sprite loading was not handled gracefully. more
  • Fixed a map corruption problem when creating games from scenarios that used difficulties per-entity. more
  • Fixed that some Lua errors wouldn't show proper lua stack traces. more
  • Fixed a crash related to reading pollution statistic values through Lua. more
  • Fixed a crash resulting from building a blueprint of an assembler with a fluid recipe that is not researched yet. more
  • Fixed that temporary blueprints (e.g. from the copy tool) would sometimes go to inventory instead of being destroyed. more
  • Added fluid mixing check to infinity pipe. more
  • Fixed that you could build rail ghosts in the basic rail tutorial. more
  • Fixed special case of dragging station/condition order in the train configure GUI. more
  • Fixed tightspot script error starting the round with flying text on the map. more
Changes
  • Changed the mods GUI so it lists mod settings by mod alphabetically using natural ordering.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - Klonan
Blog thoughts
As the time goes on, the nature of our weekly FFF post has changed. At the very beginning (FFF-1) it was to let people know that "we're still alive and working on the game", and over time we've grown into covering a range of different topics:
  • Communicating our progress and roadmap of the next releases.
  • Showing new features and gathering community feedback on them.
  • Diving into the technical side of game development and particular challenges we face.
  • 'Meta-posts' about the company and the changes outside of the game.
  • Community spotlights and interesting Factorio related news.

It is always an interesting challenge each week to determine what topics we might be able to cover in the FFF. During the weeks of rapid development the FFF can feel like a triumphant reveal of what we have been working on, and we excitedly await the community response. Other times, such as when most of the team is on bugfixing, we can take the oppourtunity to explore other points of discussion, such as the marketing post last week.

The graph of the FFF readership over the last year is quite informative to look into:



We had a good run back in January and February, we had week after week of really interesting posts and a build-up of excitement for the 0.17 release. Now after the release, the readership has stabilized at around 40-45,000 views a week (note, that the graph does not include people reading the blog post through Steam).

The FFF is close to its 300th post now, with no signs of stopping soon, and the continued audience of dedicated readers each week help to keep us on track and focused on our quest towards 1.0. As we get closer to completion of the game, the general nature of the blog post will no doubt change even further. The good times of showing a new feature each week might be over, but I hope we will be able to provide interesting insights into the game and our development processes. I would also like to thank all the players/readers who share their thoughts with us each week, it is really great to have so much support and care for our project.

Lua API documentation improvements
The Lua API documentation is one of the most valuable resources for modders: It is generated directly from the game's source code, so it completely covers all scripting functionalities. Furthermore, additional pages cover some general concepts such as in what order mod files are loaded or how to store persistent data. However, a big issue with these pages was that they were linked at the very bottom of the main page, below two long lists of classes and events. This means that they were very easy to miss.

To remedy this, all additional pages are now linked at the top of the main page and accompanied by a short description of the structure of the API. To further support getting a quick overview, I added a page about general Lua libraries that Factorio changes. These changes could be frustrating traps where it would take users a very long time to find out that some functions, such as getting the current real time, were not available. The new main page organization should serve well to highlight this new page to make the discovery of these changes much easier.

As always, let us know what you think on our forum.
Factorio - posila87
Changes
  • When a train performs path finding while in a chain signal sequence, the pathfinding will have a constraint to not go through reserved block before exiting the chain sequence. This solves a problem of train intersections being possible to be deadlocked even with proper chain signals usage in cases of using temporary stops or when path is changed because of station is being enabled/disabled by a circuit network. (more) This also allowed us to to let train recalculate path spontaneously even in chain signal sequence, as it shouldn't break anything now.
  • When a temporary blueprint(e.g. blueprint from copy) is placed in the quickbar, the blueprint won't be destroyed when clearing the cursor and instead moved to the inventory. more
  • Separated incompatible mods from dependencies in browse mods GUI.
Bugfixes
  • Fixed a crash when trying to build locomotives near water/edges of the map. more
  • Fixed players getting a new player character when they connect twice to a paused game. more
  • Fixed that entity tooltips did not show negative emissions. more
  • Fluid assembler ghosts now show correct pipe connections.
  • Fixed a crash when trying to write auto trash filters with not-a-table.
  • Fixed possible fluid mixing from reviving fluid assembler ghost by higher version. more
  • Disabled areas of new map GUI are set correctly on exchange string import. more
  • Fixed that script rendering sprites loaded from files would disappear on save/load. more
  • Fixed that LuaForce::reset_technology_effects() wouldn't preserve things in the research queue. more
  • Fixed that using an upgrade planner on a blueprint wouldn't upgrade configured modules. more
  • Fixed cross-platform issues related to the Lua bit library. more
  • Fixed crash when changing controller in multiplayer and changing your selection at the same time.
  • Fixed that blueprint shortcuts in action bar would become magically available when they are destroyed, if they originated from the blueprint library. more
  • Fixed that technology tooltips could sometimes end up behind the technology screen. more
  • Fixed that target leading would not take into account any slowdown modifiers on units. more
  • Fixed that the favorite button for servers wouldn't work correctly if the server was already selected. more
  • Fixed that rocket silos would show an unhelpful status in the tooltip. more
  • Fixed PvP crash when loading save games before "player" -> "character" rename. more
  • Fixed PvP crash when importing old configs. more
  • Fixed that only some parts of the current research info panel would open the technology tree when clicked. more
Scripting
  • Added LuaTechnology::visible_when_disabled read/write.

You can get experimental releases by selecting the '0.17.x' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Bugfixes
  • Fixed acid splashes were blocking placement of buildings. more
  • Fixed that acid splashes would have a burning sound effect.
  • Fixed typo in font name that would cause crash in Cyrillic locales on Linux. more
  • Fixed that script changing train path as a reaction to train created event could break the rolling-stock connection process. more
  • Fixed that scroll panes empty areas of the mod GUI was blocking the mouse interaction with the map. more
  • Fixed that ghost rail building didn't avoid ghost buildings properly. more
  • All unused control inputs are saved in the config file, to preserve mod key bindings even when the mod is disabled and enabled again. more
  • Fixed that zooming in the train preview window didn't respect the zooming key binding settings. more
  • Fixed that train with no path changed from NO_PATH to PATH_LOST and back to NO_PATH every few seconds. more
  • Fixed that train waiting at the signal changed from WAIT_SIGNAL to ARRIVE_SIGNAL and back to WAIT_SIGNAL every few seconds. more
  • Fixed a crash that would sometimes happen when two players were connecting to a server at the same time and one of them quit before the map finished saving. more
  • Fixed a crash related to modded deconstruction item filters. more
  • Fixed performance issues in mipmap generation routines causing the game to freeze or crash at 95% of sprite loading. more
  • Fixed traditional Chinese font being used for simplified Chinese. more
  • Fixed that pollution would not be shown in entity tooltip when using a void energy source. more
  • Fixed PvP re-roll round button not generating a different map with only a single team.
  • Fixed PvP state when playing Last silo standing with only a single team.
  • Fixed PvP DEFCON mode interaction with research queue.
  • Fixed screenshot rendering could crash when using LuaScriptRendering API to draw a sprite from file. more
Modding
  • Added CraftingMachinePrototype::entity_info_icon_shift.
  • Added CraftingMachinePrototype::draw_entity_info_icon_background.
Scripting
  • Included "item" in on_built_entity event when ghost cursor building.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - wheybags
Graphics
  • Added new specific remnants for various entities. (Work in progress)
Bugfixes
  • Fixed that ghosts could be built in fog of war.
  • Fixed a stack overflow when merging large electric networks (149'000+ electric poles). more
  • Fixed some achievements not counting their requirements properly. more
  • Changed worm and spitter acid attack so they do not create acid splashes on water. more
  • Changed fonts for Asian languages (Chinese, Japanese, Korean).
  • Fixed that power switch connections weren't restored by undo. more
Modding
  • Added "check_buildability" to "create-fire" trigger effect definition.
  • Added "tile_collision_mask" to "create-entity" and "create-fire" trigger effect definitions as faster alternative to full buildability check.
  • Added "trigger_created_entity" to "create-fire" and "create-sticker" trigger effect definitions.
Scripting
  • Added "item" to the on_built_entity event.

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.

More remnants
As for the conclusion of the topic opened in the FFF-288 we finally decided to go for a balanced solution in which the player can recognize what entity was destroyed and also walk through them. The solution of going up in the Z-axis is really attractive for designing the destroyed models, but it gives a lot of headaches to the game designers due its need of a bounding box.

We are planning also a generic set of remnants for the modders who don’t feel like making the destroyed version of their own machines.
Here an example of how a factory can look after a biter attack:



These remnants are still a work in progress, many of them are not yet finished and we are planning more iterations with this subject. By now you'll find a sneak peek in today's release (0.17.36).

Marketing plan for 1.0
The 1.0 will be a one time opportunity to drive the sales of Factorio, and as with the steam release, we don't want to leave its potential untapped.

I want to call myself a "Idealist Capitalist". This means, that I truly believe in capitalism as long as it is done in a fair way. I want to do as much as I can, to give good credit to capitalism by doing the right things myself.

The famous quote of "Do unto others as you would have them do unto you" and also "No bullshit policy" is something we take very seriously all the time during the development since the early days. Things like pricing $30 instead of $29.99, no sales, no micro-transactions, game stability over features, no selling-out to big companies that would use the game as cash grab while destroying the brand (we actually declined to negotiate "investment opportunities" like this several times already, no matter what the price would be), the same would be when it would potentially come to any exclusivity deals, which is its own subject...

We should also be true to this when it comes to marketing. In my eyes, there are good and bad aspects of marketing.

What I truly hate is banners and forced ad-videos, or radio spots that are just screaming at me and trying to get into my head without my consent. The idea, that I would basically pay for the ad that annoys me by buying the product feels deeply humiliating. So you can understand, that I don't want to pay marketing companies to do this to others.

On the other hand, there are a lot of marketing strategies that I'm okay with. I'm okay with media covering a commercial product, as long as I find it interesting. It is a very subjective definition, but it basically means, that it is not about pushing a product into your face, but offering you something that might give you some value even if you never buy that product. Articles about stories of companies, interviews with book/film/game creators are often very interesting, and piqued my interest in products many times before.

There are a lot of interesting themes that could be covered about Factorio, its creation story, its mindset of automation and conscious self-observation of what is the biggest time-stealing thing, the programming/engineering parallels and stories of people who consider their carrier path because of it. It also has a potential appeal to the big crowd of gamers from the past, who think that games are just mindless shooters with lootboxes these days.

This is the kind of content that I would be interested to read about the game if I didn't know about Factorio, and this would be the best advertising for us. So our goal would be to convince as many related media as we can to write about us when the time comes.

I'm talking about the kind of media that covers content related to the themes that Factorio tickles. So anything related to games, technical stuff, engineering, software development, teaching, networking, business, etc. And here comes the moment where I'm turning to you. You could give us pointers, what kind of magazines do you read that could be suitable? Let us know. Do you know anyone related to a media outlet that could cover us? Let us know. Do you have other ideas of what could we do for the release that is still true to our principles? We would like to know.

Another way is to make an interesting story that spreads itself, these are the examples:
Breaking all the mods
We released version 0.17.35 yesterday, and it included a change that broke a lot of mods:
Renaming the entity 'player' to 'character'.

Inside of the game engine, the previous naming scheme was a huge inconsistency, because the terms are generally well defined:
  • Player - The concept of the person controlling the game, doing input, playing the game.
  • Character - The 'real' little dude running around in the world.
A player can exist without a character, such as playing sandbox, and similarly a character (which is an entity) can exist with or without an attached player.

Having the character entity named 'player' led to a massive amount of collective confusion over the years, especially in regards to which methods can be called on the LuaEntity and LuaPlayer objects at runtime.

Another problem is in the naming of some 'defines' (constant values exposed for Lua scripting). If you want to access a characters main inventory, the value was called 'inventory.player_main'. This makes it sound like it gives the main inventory of the player, but no, it gives the main inventory of the character. If you are in sandbox mode, using 'inventory.player_main' will not give the correct inventory, you will need to use 'inventory.god_main'.

Ok, so taking a step back, why are we making these breaking changes now? The short answer is that there is no better option for us:
  • Change it for 0.18 - This would mean waiting months and months to make the changes, and push any bugs it creates further down the line. In the meantime, another major version of Factorio modding will have these inconsistencies.
  • Change it after we have 0.17 stable - We want stable to also be stable for modders. If you write a mod that works with the stable version, you wouldn't expect it to break in another stable version.
  • You should have changed it for 0.17.0 - Well yes probably, that would have been more ideal, but that was several months ago now.
  • Change during 0.17 experimental - This is the option we have chosen, it breaks some mods in the short term, and discourages people from updating, but long term its consequences are small.

We might make some more mod breaking changes in upcoming experimental releases. We'd like to thank all the mod authors and experimental players for their understanding and patience as we work towards the full game.

As always, let us know what you think on our forum.
Factorio - wheybags
Changes
  • Increased the maximal length of station name to 1024, mainly to allow wider usage of multiple tags in the name. more
Bugfixes
  • Fixed that making blueprints of locomotive ghosts wouldn't include the schedules. more
  • Fixed that worms and spitters didn't show attack parameters in description.
  • Fixed that the game would crash if it was closed when Sound Settings was opened. more
  • Limited the manual rail building distance to 3 times the normal building distance.
  • Fixed dangling tooltip bug related to widget reorganization in map generator GUI and possibly other places. more
  • Fixed that the train time condition label wasn't properly set to squashable resulting in wrong layouting in certain languages. more
  • Fixed truncation of labels containing rich text. more
  • Fixed PvP and Wave defense starting base entities wouldn't spawn if a mod added a tile with a certain collision mask and a name which sorted alphabetically above dirt.
  • Fixed PvP production score error when a mod or script adds another force during a round.
  • Fixed PvP error when using DEFCON mode.
  • Fixed that the shortcut bar selection list wasn't scrollable until the window was resized. more
  • Making disabling of features in map generator more clear by adding checkboxes for it. more
  • The wagon door opening animation (that is only available for horizontal/vertical direction) is now chosen based on the drawing sprite of the wagon selected instead of the orientation of the wagon. This means, that orientations really close to horizontal/vertical still use the animation. more
  • Fixed that changing map size didn't mark the map preset as modified. more
  • Fixed label text not updating correctly when cleared and had non-zero minimal width and height. more
  • Improved handling of whitespace characters in technology count formula parsing.
  • Checking that only the l (or L) variable used in the technology formula on startup, to avoid errors later on. more
  • Fixed NPE error at startup that could occur when using mods. more
  • Fixed GUI window of an entity not updating when pasting settings to that entity. more
  • Fixed error in consistency check of ghost connections related to multiple connections to entities only in the undo queue. more
  • Fixed train condition fulfilling indication for artillery wagon. more
  • IDXGIOutput::FindClosestMatchingMode returning an error is not treated as critical failure anymore. more
  • Fixed that the Mods GUI go-to-dependency buttons wouldn't work in some scenarios. more
  • Fixed that ghost building mode works the same as ghost building (with shift) when it comes to rail building. more
  • Fixed that upgrading entities in would leave invalid module requests. more
  • Fixed, that sorting changes were moving the scrolled position in the browse game gui. It is now consistent with the mods gui. more
  • Fixed some achievements being given to players while the save game is loading, not respecting player online time. more
  • Fixed LuaTransportLine::output_line read for right-hand output lines of a lonely splitter. more
  • Fixes to make tabbed pane work properly when it comes to squashing in different situations. more
  • Tweaked the algorithm that is putting trains on rails to work properly in junctions when constrained by the direction caused by blueprint/ghost train building. more
Modding
  • Renamed the character entity type and name from "player" to "character" to make it consistent with how we call/access it in all other places.
  • Renamed the technology personal-roboport-equipment-2 to personal-roboport-mk2-equipment and gave it corresponding icon to be consistent with other technologies of this kind.
  • Renamed the technology power-armor-2 to power-armor-mk2 to be consistent with other technologies of this kind.
  • Added optional storage tank prototype property "scale_info_icons".
  • Added "manual_rail_building_reach_modifier" to the utility-constants.
  • MapGenPresets' advanced_settings.difficulty_settings.research_queue_setting now works. more
Scripting
  • Mod GUI root elements (top/left/center/goal) are now contained in scroll panes, so when there is not enough space, it will become scrollable instead of being cut off. With enough space, it looks the same as before, the only change is, that the mod GUI contents can now not expect to be squashed by the screen, as it will just make a scroll bar instead.
  • Added LuaCircuitNetwork::connected_circuit_count read.
  • Added LuaEntity::time_to_live read/write for highlight box entities.
  • Added LuaEntity::allow_dispatching_robots read/write.
  • Added LuaEntity::toggle_equipment_movement_bonus().
  • Added LuaEquipmentGrid::inhibit_movement_bonus read/write.
  • Added optional 'radius' to LuaSurface 'find_xyz' functions.
  • Added defines.inventory.editor_main, editor_guns, editor_ammo, editor_armor.
  • AutoplaceSpecification::control is always included in property tree, even for non-peak-based autoplace specifications. more
  • Fixed a save corruption problem when using LuaSurface::clone_area(). more
  • Renamed defines.inventory.player_main, player_guns, player_ammo, player_armor, player_vehicle and player_trash to defines.inventory.character_main, character_guns, character_ammo, character_armor, character_vehicle and character_trash.
  • Removed LuaStyle::title_top_padding, title_right_padding, title_bottom_padding and title_left_padding.
You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
...