This game is like crack for programmers.

This has been the most popular game at my LAN parties (http://kentonshouse.com) for the last year and a half. Here's a review I wrote in December 2014 that still applies (original at https://plus.google.com/+KentonVarda/posts/YHayo6sj42n):

My new favorite game is Factorio (http://factorio.com). It's like a cross between Minecraft, SimCity, and Civilization, and the result is massively better than any of them. The game is currently in "alpha", but I'm not sure why; it's far more polished and less buggy than many finished professional games I've played.

Overhead view. Like Minecraft, you start out punching trees for wood to craft a pickaxe with which you can then mine some ore to craft other things. But soon, you are building an automatic mining drill, then a conveyor belt to bring the ore to a smelting furnace, then robot arms to insert the ore into the furnace and take the smelted bars out, then more conveyor belts to bring those to other places where thy can be used. Eventually you can build power plants, labs to research new technologies, walls and turrets to defend against attackers, oil refineries, robot delivery drones, trains, and more.

The game is incredibly addictive (especially for programmers?). But what really impresses me is how the game illustrates the complexity of the real world. Factorio is a lesson in how logistics trump tactics and strategy ("strategy is for amateurs, logistics are for professionals"), and in how to build a complex system for changing requirements. The lessons are broadly applicable to the real world.

It's fairly easy to analogize Factorio to city planning. In your first game, you will quickly discover that the city you built for the early game is all wrong for the late game -- and then you realize: every real-life big city is a horrible mess and this is exactly why.

I also find myself comparing Factorio to software, especially distributed systems and networks. I find myself constantly using phrases like "buffer", "flow control", "back pressure", "throughput", "refactor", "under-utilized", etc.

One transition I find particularly interesting: around the middle of the game, you research the ability to build "logistics drones", which are basically like Amazon's quadcopter delivery drones. They can transport materials from point to point around your base -- you set up "request" points and "supply" points, and the drones pick up whatever items land in the supply points and bring them directly to whichever requester is requesting that item.

Up until this point, you mostly use conveyor belts for this task. When you first get logistics drones, you think "These are WAY more expensive than conveyor belts and have much lower throughput. Why would I ever want them?" But you quickly realize that the advantage of drones is that they are rapidly reconfigurable. Once your base is entirely drone-based, you can switch factories to build different items on a whim -- no need to re-route any conveyor belts. This gets more and more important in the late game as the number of different types of things you are building -- all with different input ingredients -- increases, and maintaining a spaghetti of conveyors becomes infeasible. This is tricky to grasp until you do it.

For a while, of course, you'll have part of your base running on drones while another part is still based on conveyors. It's like using Google Flights in your browser to search for airline tickets, while on the back end it is integrating with 60's-era mainframe-based flight scheduling software.

I can't help but imagine that conveyor belts and logistics drones represent two different programming languages (or, maybe, programming language paradigms). Choosing your programming language based on how easy it is to do something simple is totally wrong. The true measure of a good language is how it handles massive complexity and -- more importantly -- reconfiguration over time.

Another thought: In 10-20 years, when we have everything delivered to our houses via drones and self-driving taxis populating every major street, will we be able to just get rid of small residential side-roads? You won't need to drive a car up to your house anymore: it's easy enough to walk a couple blocks to the nearest major street and hop in a cab, or better yet to a train station. You don't need to carry cargo since it's delivered by drones. Delivery trucks: also replaced by drones. Will we suddenly be able to reclaim a ton of inner-city space? What will we do with it?

In any case, thanks to +Michael Powell and +Brian Swetland for introducing me to this game!

PS. Factorio is multiplayer! We've been having a lot of fun with it at LAN parties, and I just completed a coop game with +Jade Q Wang, who is also addicted. We tend to forget to do things like eat or sleep when we're playing.﻿