Alt-F4 #21 - The Ultimate Modding Honour  15-01-2021

Написали stringweasel, Conor_, отредактировали Nanogamer7, Therenas, Firerazer

Содержание

This week, we’re back to our regularly scheduled programming with another episode of our favorite series: The Nauvis Archives! stringweasel cracks open the history books once again to look at some old mods, and how they eventually became part of the vanilla experience. At the end, we have a quick poll for you, dear reader; we’d appreciate it if you could take the two minutes to answer those questions.

Nauvis Archives: From Mod to Vanilla stringweasel

Factorio has a very rich modding community. There’s mods for almost anything you can think of. From complete overhaul mods like Space Exploration or Krastorio 2, to small quality of life mods like Squeak Through, or the ability to listen to KnightRider music while you’re driving. Some mods are more popular than others - some even reaching over a million downloads. The greatest honor a modder can likely achieve however is to have their mod incorporated into the vanilla game. Quick examples of this can be Research Queue or Landfill, or even the mod modder Rseding that was incorporated into the vanilla team.

I downloaded and investigated a few of these mods that were added to the game at some point. You might notice that some of the referenced mod pages link to the Factorio Forums and not the Mod Portal. This is because before Factorio 0.13 (released in June 2016), all mods were hosted on the Factorio Forums. It was only with the launch of Factorio 0.13 that the Mod Portal became available.

Transporting Fluids

Nowadays fluids are very easy to transport. You can use trains with fluid wagons, maybe simple pipes, or even fluid barrels to transport any fluid to any location. However, it wasn’t always this easy. Fluid wagons weren’t added to vanilla until April 2017 with Factorio 0.15. Before that you had to barrel your crude-oil at the outpost and unbarrel it again at your base - which required very careful management of your empty barrels. Or, you could simply download the Rail Tanker mod which was originally made by JamesOFarrell. It was released in November 2014 as an extension of his Wagons mod. At some point Choumiko took over maintanance of the mod and it was moved to the mod portal.

The Railtanker mod as seen in Factorio 0.12 (although it had been released in Factorio 0.11 originally). Notice the old train graphics, and how there is no one-tile-gap between the wagons.

This mod had a few limitations. For example, you could not place any inserters next to the rail tanker because it would remove the fake items inside the tanker and corrupt it. The only way to fill or empty it was by using a maximum of two of the very weak small pumps - there was no regular pump yet. The placement of the pump was also inconsistent, especially after train sizes changed in Factorio 0.13, but the rail tanker’s size remained mostly the same. As an interesting side note, when the vanilla fluid wagon was finally added in Factorio 0.15, you could originally store store three different liquids inside one fluid wagon. Ever wondered why the vanilla fluid wagon has three separate tanks?

The other main way of transporting fluids long distance was using barrels. Barrels were part of Factorio from relatively early on, but initially the player was limited to only barreling crude-oil. The first person to mitigate this problem was a modder nonchalantly named btw with his Liquid Station mod, which was released in March 2014 for Factorio 0.9. In this mod you could to barrel any fluid, but you had to use a special machine - called a Liquid Station - to do so.

The Liquid Station mod as seen in Factorio 0.10. Here, sulphuric acid is moved between two storage tanks

This first mod was not maintained for long. However, it soon prompted a new mod which is much closer to what we know today. This mod was called Fluid Barrels, created by firegrenade and published in January 2015 for Factorio 0.11 (and later transfered to the mod portal). With this mod, any assembler could be used for barreling/unbarreling, which is how it works for vanilla today. It took until April 2017 though, with Factorio 0.15 - three years after the Liquid Station Mod - that any fluid could be barrelled in vanilla Factorio. Another honourable mention for a barreling mod is Omnibarrels by GotLag. The graphics he created most likely inspired vanilla graphics for quite some time after the art was requested from him by the developers:

Conversation between V453000 and GotLag
Conversation between Wube developer V453000 and the modder GotLag (also goes by Stone Cold Jane Austin). It took place on the #friday-facts channel on the offical Factorio Discord. (Link to conversation)

The Picker Tool (The Q-key)

In the olden days, you could not simply press Q while hovering over a building and have it magically appear in your cursor. No, you had to manually find it in your inventory or in your quick bar. If you used your quickbar you also had to search through some unwanted items, since in those days it was a separate inventory and not shortcuts. A modder named Tinyboss saw this constant struggle and made the original Picker mod in August 2015. After a while Tinyboss allowed the renowned modder Nexela to take over the mod’s maintenance, who then created the Picker Extended Mod.

Screenshot of modpage for Picker mod
The mod page of the original Picker mod after it was moved to the Mod Portal. (Tinyboss goes by many descriptive aliases)

Luckily, in Factorio 0.15 some of this mod’s functionality was included in the vanilla game. Even though this mod’s premise is fairly simple, it is very powerful. It’s one of those features that as soon as you get used to it, you cannot imagine playing without it. It should be noted that only a small part of the mod’s functionality was added to vanilla. The mod is still available, and has an extensive set of other useful features.

Personal Roboport

A lot of Factorio players rush for the personal roboport when building a base. It’s hard to imagine Factorio without it. Just thinking about building an entire rail network by hand or having to set up countless outposts makes you long for the help of some friendly construction bots. However, this amazing tool was only added to vanilla Factorio in July 2015 with Factorio 0.12. Before that, they were known only as Pocket Bots, and were only available as a mod.

PocketBots in research menu
The Pocket Bots technology screen as shown in Factorio 0.12

Pocket Bots was released in June 2014 by JamesOFarrell on a Factorio Forums thread called: Pocket Bots: Construction bots for your pocket. And as you can imagine, this mod became very popular and was used by many. To make the mod work in that old version of Factorio, JamesOFarrell had to be clever with hacks. It seems like he had to create a temporary logistic chest at the players feet for the robots to be able to pick up (or drop) the items. There was no other way to pick it up directly from the players inventory. It had other quirks as well, like only working outside your roboport coverage, but that is typically where it was most used.

An example of the pocket bots in use. Notice the temporary creation of a logistic chest at the players feet.

The developers noticed how popular and useful this mod was, and almost exactly a year later the vanilla Personal Roboport was teased in Factorio Friday Facts #92 in preparation for Factorio 0.12. It should be noted that in Factorio 0.12 there was only one personal roboport type, and no upgraded MK2 version. This meant that to have 100 working personal construction robots you had to have 10 personal roboports! It wasn’t until Factorio 0.15, released in February 2019, that we received the Personal Roboport MK2, which allowed you to easily use 100 personal robots using only 4 personal roboports.

The Blueprint String

A blueprint string is used to import and export blueprints to and from your game. This can be anything from nuclear builds, components for a rail network, or perfect-ratio solar blueprints. And as you might guess, this was also a mod before it was built into the game. Blueprints were added with Factorio 0.9, but soon after that people wanted to start sharing their blueprints. As happens so often, a modder came to the rescue. This time it was JamesOFarrell again, the guy that brought us PocketBots, who then created a famous mod called Foreman in November 2014.

Screenshot of Foreman GUI
The Foreman GUI as seen in game (taken from the forum post)

However, technically JamesOFarrell was not the first to implement the blueprint string, even though this mod was most likely its predecessor. Rather, the main feature of the Foreman mod was only the managing of blueprints. There were no blueprint books at that point - they were only added in Factorio 0.13, two years later. This meant each blueprint was saved seperately in your inventory, which would quickly clog it up. Therefore, besides managing blueprints, one of Foreman’s features was a way to import/export these blueprints. But still, it didn’t create blueprint strings originally. It instead created small snippets of Lua code! Below is an example of a reduced piece of the *.blueprint file that it created - that could be read with any text editor.

do local blueprintData={icons={[1]="fast-transport-belt",[2]="boiler"},entities={[1]={type="transport-belt",position={x=-8.5,y=-3.5},name="fast-transport-belt",orientation=0,direction=4,entitynumber=1},[2]={type="transport-belt",position={x=-8.5,y=-4.5},name="fast-transport-belt",orientation=0,direction=4,entitynumber=2},[3]={type="pipe-to-ground",position={x=-7.5,y=-4.5},name="pipe-to-ground",orientation=0,direction=2,entitynumber=3},[4]={type="inserter",direction=4,filters={[1]={index=1},[2]={index=2},[3]={index=3},[4]={index=4},[5]={index=5}},conditions={red={count=5,operator=">",name="raw-wood"},logistics={operator=">",count=1},green={operator=">",count=1}},entitynumber=4,orientation=0,connections={red={[1]=74},green={}},name="smart-inserter",position={x=-6.5,y=-3.5}},[5]={type="boiler",position={x=-6.5,y=-4.5},name="boiler",orientation=0,direction=0,entitynumber=5}, ... name="PowerSmart"};return blueprintData;end

And as you might imagine, this resulted in very large blueprint files and it became quite unwieldly. There were discussions about how reduce the blueprint’s footprint, for example by using zip files, but nothing resulted in a robust implementation while maintaining ease-of-use. However, less than two weeks after Foreman was released, a famous modder called DaveMcW solved this problem. (If you don’t know this name yet, see this article). He solved the blueprint size problem by compressing the mentioned code snippet using a gzip + base64 format, and thus created the now-famous Blueprint String.

Screenshot of Blueprint String GUI
The easy-to-use Blueprint String GUI as seen in game (taken from the forum post)

Soon after this mod was released DaveMcW likely helped JamesOFarrell to support blueprint strings in Foreman as well. These two mods ruled the blueprint landscape. If you wanted to share blueprints, you used Blueprint Strings, and if you wanted a better blueprint management tool, you used Foreman. At some point Choumiko took over maintenance of Foreman. It wasn’t until Factorio 0.15 - released April 2017, more than two years later - that blueprint strings were added to the game. The format of the code snippet changed slightly (which resulted in this mod), but the compression method was still the same as the one DaveMcW created.

Blueprints

Now, what are personal roboports or blueprint strings without the actual blueprints? It was on the wishlist a long time for Factorio’s creator, kovarex. This can be seen in his forum post from 2013 - when Factorio was still in infancy - where they were still deciding in what direction to take the game. It turns out that it was not the developers who managed to implement it first. No, the original creator was a modder named drs9999 and he made it a technology that you had to unlock.

Blueprints in research menu
The Blueprints technology screen as shown in Factorio 0.7. The little yellow robot is the old Robotics Technology icon. It’s also used as the mod’s nanobots - more on that later.

This mod was first posted on the Factorio Forums in March 2013 - just over a month after kovarex mentioned blueprints in the aforementioned forum and before Factorio 0.4. These blueprints did not work nearly as intuitively as they do today. This is simply because the game was just over a year old at the time. There was no selection tool. There weren’t even construction bots back then, not to even mention roboports. (The lonely logistic bots just hovered around when not in use.) Most importantly though, mod functionality were not nearly as extensive as it is today.

To circumvent these limitations, the creator created markers that you could place down. These markers were used to designate an area to either save as blueprint or to place down a saved blueprint. Saved blueprints were saved inside the mod in a specific number of slots, and not as items like they are today. There even was an option to select an area to upgrade. You then required nanobots (the little yellow bots in the picture above) in your inventory that were consumed to build the blueprint in the designated area. The creator made a YouTube tutorial for more information, but I put together a very quick demo:

Example use of the first blueprints. (Redacted slightly for demonstration purposes). Notice some of the old graphics, and which ones are still in use today.

Blueprints were added to vanilla in February 2014 with Factorio 0.9, which means this mod was the only way to duplicate any part of your factory for over a year. And although it was deprecated quite quickly, it’s most likely a direct ancestor to other massive mods that became very popular. Things like Nanobots by Nexela and Upgrade Planner by kds71 both work on premises that were first shown in this mod. As a side note, more blueprint features were modded before vanilla as well, like blueprinting trains by DaveMcW and mirroring blueprints by NovaM.

Concluding Thoughts

Factorio has a very healthy and active modding community. This greatly increase the replayability of Factorio and expands the game to fit more playing styles. The fact that we have such an amazing modding scene is mostly because it was cultivated by the developers. They encourage modders to continue what they’re doing, and even go out of their way occasionally to give modders the tools they need to create their amazing mods. This doesn’t mean that the developers are lazy and delegating work they don’t want to do. Rather, they are always focused on the game’s core gameplay first - things like optimization, interface, game mechanics, etc. There simply isn’t always time to implement and experiment with new and exciting features. The fact that a healthy modding ecosystem evolved around the developers helps them decide in which direction to take the game, while the players get to experiment with all kinds of fun gameplay mechanics.

SovietWomble has a great video essay series explaining a similar situation where multitudes of mods in different configurations made clear what aspects the players enjoyed - similar to evolution and survival of the fittest. However, in his particular story, the developers sadly didn’t use this information correctly. In stark contrast, the Wube team is an excellent example of how to apply this information correctly. They are building and expanding Factorio based on what the players enjoy, all while empowering the talented modders. This is likely part of the reason why Factorio is currently the 3rd best rated game on Steam.

Tell us about you! Conor_

The Alt-F4 Team has been working with a few assumptions up until now which we’d like to update with some hard data. These assumptions came from poor user reporting tools that we used previously, so instead of relying on those, we’re asking you to answer a couple of anonymous polls to tell us more about you! No personally identifiable data is being collected, and all the results are publicly viewable. We’ll use this data to help us guide the direction of Alt-F4 in the future.

First, we’d like to know which type of device you read Alt-F4 on so we can continue to optimize the website’s layout and accessibility.

Our translation teams put a huge amount of effort into localising the website and we want to know which language you usually ready Alt-F4 in.

Finally, we’d like to know what you want to see more of on Alt-F4.

Contributing

As always, we’re looking for people that want to contribute to Alt-F4, be it by submitting an article or by helping with translation. If you have something interesting in mind that you want to share with the community in a polished way, this is the place to do it. If you’re not too sure about it we’ll gladly help by discussing content ideas and structure questions. If that sounds like something that’s up your alley, join the Discord to get started!