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.
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.
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.
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 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
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:
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.
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.