Factorio is a game about building and creating automated factories to produce items of increasing complexity, within an infinite 2D world. Use your imagination to design your factory, combine simple elements into ingenious structures, and finally protect it from the creatures who don't really like you.
Recent Reviews:
Overwhelmingly Positive (632) - 96% of the 632 user reviews in the last 30 days are positive.
All Reviews:
Overwhelmingly Positive (19,615) - 98% of the 19,615 user reviews for this game are positive.
Release Date:
Feb 25, 2016

Sign in to add this item to your wishlist, follow it, or mark it as not interested

Early Access Game

Get instant access and start playing; get involved with this game as it develops.

Note: This Early Access game is not complete and may or may not change further. If you are not excited to play this game in its current state, then you should wait to see if the game progresses further in development. Learn more

What the developers have to say:

Why Early Access?

“We have been working on Factorio for over 5 years. The game is very stable and is highly optimised for prolonged gameplay and creating huge factories. We have sold over 110,000 copies on our website, and we feel now is the right time to release to a wider audience.”

Approximately how long will this game be in Early Access?

“Our plans for release come as part of an ongoing process, and we are constantly adding new features and content. When we feel the game is complete we will release the full version, and our current estimate is that this will take 8-12 months.”

How is the full version planned to differ from the Early Access version?

“In the full version we hope to have a polished GUI, a multiplayer matching server, integration of mods for players and servers, and a number of other finishing touches and additions to the core gameplay.”

What is the current state of the Early Access version?

“The game has a very strong content base, rich with interesting mechanics and features. Many players report they are still having fun on their maps even after hundreds of hours of gameplay, alongside multiplayer support, and a dedicated modding community.”

Will the game be priced differently during and after Early Access?

“The price may be increased upon release from early access.”

How are you planning on involving the Community in your development process?

“The community is a vital part of our development process. We announce any planned features far in advance so we have time to read peoples' opinions and comments, and for us to discuss the different points of view players may have. Community suggested ideas are commonly brought up in team discussions, and we value highly the input each individual player can have.”
Read more

Buy Factorio

Downloadable Content For This Game


Recent updates View all (174)

September 15

Friday Facts #208 - Tips and tricks improvement

Hello, it's another Friday, so time for another Friday Facts.

Lets try to unify the crafting categories
As we were discussing the GUI/UX rewrite (which is going to be covered in detail in future FFF), we came across the crafting categories implementation. We have 4 in base game, but with few mods, it can go up to 20+ which is quite hard to manage in a GUI that is still practical and looks nice.

Making its own sub-category for transport belts and putting them there is (probably) fine, but if it is done this way (5dim code), it only moves the vanilla transports belts there. but if some other mod adds transport belts, they will still stay in the old category, making it all messy.

data.raw.item["transport-belt"].subgroup = "transport-belt" data.raw.item["transport-belt"].order = "a" data.raw.item["fast-transport-belt"].subgroup = "transport-belt" data.raw.item["fast-transport-belt"].order = "b" data.raw.item["express-transport-belt"].subgroup = "transport-belt" data.raw.item["express-transport-belt"].order = "c"

This is a typical situation, where the fact that our data definition is done in a scripting language can be taken advantage of. We can just replace the previous code by more generic variant.

for index, recipe in pairs(data.raw.recipe) do -- Assuming the name of the entity is the same as name of the recipe, it could be solved more precisely if data.raw["transport-belt"][recipe.name] then recipe.subgroup = "transport-belt" end end

The code goes through all the recipes and whenever its result is a transport belt, it is moved to the correct category. This way, all the possible other transport belts added by other mods will go there and my change of categories doesn't actually make more problems than it solves. This is a shoutout to the mod devs so they try to be reasonable with the crafting categories, so it doesn't happen that often that <something>-1, <something>-2, <something>-3 is on one place, but <something>-4 is somewhere else, just because it was introduced by a different mod. Either try to keep things in their official categories as long as possible, or recategorize properly.

Tips and tricks improvement
The tips and tricks GUI is perhaps one of the greatest sources to teach players about some of the obscure convenience features we have added to the game over the years:
  • Fast replacing furnaces, inserters, assembling machines etc.
  • Copy-pasting entity information, recipes, schedules etc.
  • How to turn on detailed view (alt-mode).
  • The hotkeys for the quickbar.
  • And the rest...
It is a shame then that this GUI is rarely read by the player, and this is our fault. It is easy to see the main reasons why:
  • It is only shown at the start of a new game, when many of the tips are not relevant.
  • Once it is closed, it cannot be reopened without starting a new game.
  • Many of the tips are outdated, old, or just plain ugly.

So with this in mind, I set to correcting things as best I could. Since the tips and tricks have been in the game for a very long time, this involved moving some of the information around to make it work in multiplayer, but because they don't affect the gamestate, determinism was not a concern. After adding a hotkey to bring the tips back up, it feels very natural now to hit the hotkey on and off just to quickly check them. Another improvement I made was a button to go backwards through the tips, and to loop once you've reached the last one.

Then it comes to the visuals. The biggest flaw is that most of the images are out of date, and taken on differing terrains - many are not even the same size as the others. This not only affects the size of the GUI, but gives the unpolished feel to the whole system. The other issue is the layout of the widgets in the GUI. With an invaluable mock-up from Albert, defining the styles and arranging necessary elements wasn't too much of a struggle. So the main task now is to recapture and go over the images, and recreate them in a consistent visual style.

After freshening up the current tips, I will feel better about adding more, without the worry that "Nobody will ever read them". No doubt the GUI will still change, especially with the GUI rewrite in the works, so I wouldn't get too attached to the exact way it looks now.

End of the guide
Back in 2016 just before Steam launch, we didn't really have a good online guide for the game. We had the wiki but it was somewhat underdeveloped, and not geared towards a new player to the game. So the guide was the perfect resource for us, and it has served our newer players extremely well.

Unfortunately in the 18 months since Its introduction, a lot of the materials on the guide have become outdated. It would no doubt be a losing battle to try to keep it updated as we are continually adding and changing things in the game, so we have decided to take down the guide from public access. The wiki has received a lot of care from Gangsir and Bilka, and is a much better resource for players of all skill levels, so it is now our recommended destination.

As always, let us know what you think on our forum.
31 comments Read more

September 8

Friday Facts #207 - Lua noise specification

Hello, it seems the summer heat has finally subsided, and we have not had to run our AC units the whole week. We mentioned earlier we have had Dominik in for a testing week, and we are happy to say that he is quite qualified for a position here, so will be remaining with us. Tom has also joined us, moving here from the Republic of Ireland, and has been getting settled in working through a lot of the small unassigned tasks. It also seems most of us are back from our vacations, so the pace is picking up again.

Most of the work this week has been on the unentertaining sepctrum, with a lot of internal reworking and refactoring going on. A lot commits related to fixing our compilation after the move to C++17. Many of the GUI and input action functions were broken (such as rebinding keys, switch map editor tabs, setting combinator filters), so its been a team effort to fix these as they are found. Hopefully not many will slip through the cracks and into release.

Lua noise specification
As mentioned in an earlier FFF,one of the planned features for 0.16 is to allow composition of noise functionsfrom Lua code, so that we (and modders) can have more control over how the map is generated.Over the past several weeks I've been getting that workingand playing around with it trying to make a world that has a lot of variationas you explore far away, but is not too crazy near the starting area.

Sometimes it can be hard to visualise what effect changing the noise will have on the resulting map. To give a somewhat more intuitive feel to how the 'elevation' of the noise is affected, I added height shading to the preview. While only used in the game to place water, showing it in this way really helps to see the underlying structure of the noise.

One of the problems I've been tackling is how to allow large bodies of waterwhile ensuring that the player never starts on a tiny island.One way to do this is to add in a web-like structure near the starting area.This can be done by taking some medium-frequency noise with a positive bias(to ensure that there are land bridges to everywhere)but folded back down above a certain elevation to add lakes,subtracting distance from the starting area from that,and then taking the maximum of that and the general world elevation noise.

As a simple example, the Lua code to do create such a noise function looks like:
data:extend{ { type = "noise-expression", name = "starting-area-webbing", expression = noise.define_noise_function( function(x,y,tile,map) reset_seed(map.seed) local continents = new_basis_noise(x,y,32,1/512) local webbing = noise.ridge(new_basis_noise(x,y,16,1/64), -math.huge, 8) return noise.max(continents, webbing - tile.tier) end) } }
The result looks like this in the previewer:

Mod portal 2.0 progress
Over the summer, we have had a French student Lucien working with us in the office. As a part of his internship, he was helping us develop the new version of the mod portal. It took a long time, as I (Martin) had many other things to work on, and couldn't fully dedicate myself to finishing this long-overdue project, but we are nearing the end. We're hoping to release the new version this month.

Apart from speed and performance improvements, there will probably not be many more changes on release, but we'll start working on new features right away. This new version gives us a much more solid foundation to work from. You can let us know on our Mod portal discussion sub-forum which features/improvements are the most important to you, and there will proobably make a poll later on to see which we should focus on.

As always, let us know what you think on our forum.
47 comments Read more
See all discussions

Report bugs and leave feedback for this game on the discussion boards

About This Game

Factorio is a game in which you build and maintain factories. You will be mining resources, researching technologies, building infrastructure, automating production and fighting enemies. In the beginning you will find yourself chopping trees, mining ores and crafting mechanical arms and transport belts by hand, but in short time you can become an industrial powerhouse, with huge solar fields, oil refining and cracking, manufacture and deployment of construction and logistic robots, all for your resource needs. However this heavy exploitation of the planet's resources does not sit nicely with the locals, so you will have to be prepared to defend yourself and your machine empire.

Join forces with other players in cooperative Multiplayer, create huge factories, collaborate and delegate tasks between you and your friends. Add mods to increase your enjoyment, from small tweak and helper mods to complete game overhauls, Factorio's ground-up Modding support has allowed content creators from around the world to design interesting and innovative features. While the core gameplay is in the form of the freeplay scenario, there are a range of interesting challenges in the form of Scenarios. If you don't find any maps or scenarios you enjoy, you can create your own with the in-game Map Editor, place down entities, enemies, and terrain in any way you like, and even add your own custom script to make for interesting gameplay.

Discount Disclaimer: We don't have any plans to take part in a sale or to reduce the price for the foreseeable future.

What people say about Factorio

  • No other game in the history of gaming handles the logistics side of management simulator so perfectly. - Reddit
  • I see conveyor belts when I close my eyes. I may have been binging Factorio lately. - Notch, Mojang
  • Factorio is a super duper awesome game where we use conveyor belts to shoot aliens. - Zisteau, Youtube

System Requirements

Mac OS X
SteamOS + Linux
    • OS: Windows 10, 8, 7, Vista (64 Bit)
    • Processor: Dual core 3Ghz+
    • Memory: 4 GB RAM
    • Graphics: 512MB Video Memory
    • Storage: 1 GB available space
    • Additional Notes: Low sprite resolution and Low VRAM usage.
    • OS: Windows 10, 8, 7 (64 Bit)
    • Processor: Quad core 3Ghz+
    • Memory: 8 GB RAM
    • Graphics: 2GB Video memory
    • Storage: 1 GB available space
    • OS: macOS Sierra, OSX El Capitan, Yosemite, Mavericks, Mountain Lion, Lion
    • Processor: Dual core 3Ghz+
    • Memory: 4 GB RAM
    • Graphics: 512MB Video Memory
    • Storage: 1 GB available space
    • Additional Notes: Low sprite resolution and Low VRAM usage
    • OS: macOS Sierra, OSX El Capitan, Yosemite, Mavericks, Mountain Lion, Lion
    • Processor: Quad core 3GHz+
    • Memory: 8 GB RAM
    • Graphics: 2GB Video memory
    • Storage: 1 GB available space
    • OS: Linux (tarball installation)
    • Processor: Dual core 3Ghz+
    • Memory: 4 GB RAM
    • Graphics: 512MB Video Memory
    • Storage: 1 GB available space
    • Additional Notes: Low sprite resolution and Low VRAM usage
    • OS: Linux (tarball installation)
    • Processor: Quad core 3GHz+
    • Memory: 8 GB RAM
    • Graphics: 2GB Video memory
    • Storage: 1 GB available space
Customer reviews Learn More
High Volume of Negative Reviews Detected:
Exclude  or  View Only
Review Type

Purchase Type


Date Range
To view reviews within a date range, please click and drag a selection on a graph above or click on a specific bar.

Show graph

Display As:
Show graph
Hide graph
Showing 12,843 reviews that match the filters above ( Overwhelmingly Positive )
There are no more reviews that match the filters set above
Adjust the filters above to see other reviews
Loading reviews...