I've been replaying a game recently on Steam called Spacechem. I had never realized it before but this game does an excellent job of simulating programming. For example:
- Creating small, modular components that can be used in conjunction to create more complex systems
- Multiple processes run in parallel and need to be managed concurrently
- Bugs in your dependent modules that were tested individually can break when incorporated into larger systems if not thoroughly tested
I could go on but you get the idea. The premise of the game has nothing to do with programming but, fundamentally, it is requires the same skills and techniques to be successful. It's amazing because when I started playing this game 6 or 7 years ago I never thought of it as, basically, a training module for building complex applications.
What are some of the games that you found invaluable in learning to program? I am not specifically talking about the obvious ones like CodeCombat, which are great games in their own right, where the primary objective is to teach programming. I am referring to those that are more subtle and teach you the techniques while not ultimately being a coding exercise disguised as a game.
- BG
Top comments (20)
Zachtronics have more programming oriented games as well! Some are abstracted logical thinking games where it will teach programmatic thinking, others are more literal low level coding games.
Abstracted
zachtronics.com/infinifactory
zachtronics.com/opus-magnum
Assembly style programming
zachtronics.com/shenzhen-io
zachtronics.com/tis-100
You also have Human Resource Machine, which is somewhere between the 2 types.
store.steampowered.com/app/375820/...
Then if you want to lose all your free time to a game that benefits from programmatic thinking you can try Factorio. I'd try the demo first but it's £21 very well spent, with more content and value for money in early access than most fully released games. An example of early access done very right.
store.steampowered.com/app/427520/...
The developers also release a weekly blog describing what they're working on, which often features lots of C++ and game design discussions.
factorio.com/blog/
The assembly language set are a bridge too far for me (if I want to write code for fun I'll write code for fun) but Opus Magnum is phenomenal. The use of independent armatures instead of Spacechem's waldos really emphasizes reuse, multitasking, and parallelization in ways that are difficult-to-impossible for strictly procedural programs.
I'll have to give Opus Magnum a try. I played Spacechem, but I was disappointed by the lack of any real reusability. For me it basically highlighted why effectful procedural programming makes reuse impossible.
I did play through TIS-100, and it was a bit too far for me as well. But it taught me a couple of things. 1) Pushing through that feeling of "this is impossible", which was a frequent experience. 2) Modern languages/compilers/cpus are freaking amazing feats of engineering.
I started playing Shenzhen IO. Then I found this, and my brain exploded.
InfiniFactory is on my wish list.
Factorio is amazing, but I now find it hard to play through from the beginning, because there is so much to get through to arrive at automated construction with drones. I feel like it really needs an early game automated construction mechanism. I've been meaning to leave feedback with some ideas about that, but they suggest doing so through their forums. And I never want to leave feedback on forums ever again.
Factorio has been in my Stram wish list for months. Maybe it is time to bite the bullet and buy it.
Its too time consuming that I have to issue a refund :/
No reason to not try the demo. It can last you a few hours and gives you a good experience of the gameplay through some structured objectives and maps.
I downloaded the demo last night. So far I am enjoying it.
In addition to Zachtronics games and Factorio mentioned in comments, here are a few others, most of which are only slightly related to programming.
Mobile games
Cargo Bot - procedural programming a cargo crane, iPad only tho
Trainyard - more of a puzzle/simulation game but definitely has planning and problem solving aspects.
PC Games
I find that tower defense games have somewhat an element of programming with planning your tactics to accomplish the goal. Perhaps they are more like Ops since there is a live element after the initial setup. Along those lines, one of my favorite games -- considered "FPS tower defense" -- is called "Orcs Must Die!" (here it is on Steam).
Another, but maybe a slightly different dimension of "programming".
X3:Terran Conflict or its successor X3:Albion Prelude. This game seems impossible / terrible to start, and still has outstanding bugs. But it has such rich and deep gameplay if you push past that. The part I really like is the economy simulation aspect, where you can build space factory complexes and vast trading networks between them and the rest of the universe. You can "script" your supply/delivery fleet to run automatically -- the in game "ship software" to do this are called CLS (Commodity Logistics Software) and CAG (Commercial Agent). The first hour I played X3:TC I thought buying the game was a mistake. But rather than stop playing, I wanted to find the fun that people were talking about. I ended up playing it for 6 months solid -- as in multiple times a week, hours at a time where possible. I still go back and play it now and again to try to get the last 2 achievements.
Design games
Design / UX is an integral part of good products.
Empyrion - Galactic Survival. The core mechanic is to survive with food, water, heat, oxygen, health on potentially inhospitable and hostile planets (first person style). However, one of the real gems of this game is that you build your space craft and bases (space or terrestrial) out of blocks. They have some pre-mades you can spawn and use, but I have had a lot of fun making my own in creative mode. It has really showed me how terrible I am at designing things. I have a couple of things on the workshop that I do think look decent and are very functional (after a lot of iteration). Like this.
I've heard that Space Engineers is similar to Empyrion in the way you design things. Not sure beyond that.
Eh, I like games. I really want to build a game that combines the best aspects of some of these.
Those are some heavy games. Nice choices.
Well this game is not related to programming but it teaches you how to properly use VIM shortcuts :)
vim-adventures.com/
I’ve played this before. It’s a clever way to teach Vim.
Oh yeah, another game I'm looking forward to being released is Satisfactory. It looks to be along the lines of Factorio, but first person. Looks amazing.
Those Goat Simulator guys aren't messing around.
I just realized that I've played Counter Strike ever since I was a kid. Its console is pretty much my first exposure to a CLI, so there's that :)
There are definitely a lot of aspects of games that lend themselves to learning the tools we use everyday. I think this could be a discussion in and of itself.
On a higher level, this shouldn't come as a surprise. We are software developers, and games are, erm, software themselves. But it really is amazing how the complexity is hidden with the entertainment that we easily and happily consume.
Probably why there is so much overlap between developer and gamers :)
It seems like no one mentionned Hacknet
I haven’t played Hacknet but it sounds very reminiscent of Uplink.
The app boasts a clean and intuitive interface, making it easy for both beginners and experienced players to navigate and enjoy the game.