The Games Programmers Play
An anonymous reader writes "Cort Stratton, a developer who has worked on graphics code for many first-party PS3 games, wrote an article about the kinds of games that appeal to programmers. He covers coding-friendly games of varying depth, mentioning basics like RoboRally, RoboSport and Frozen Synapse before moving on to more complex options. Quoting: 'On the surface, SpaceChem has nothing to do with programming; it's merely a futuristic puzzle game in which you build factories that convert one or more input molecules into one or more output molecules. Each factory contains a pair of independent molecule manipulators (the game calls them "waldos") which follow a fixed path through the work area. Waldos can grab, drop, and rotate molecules, make and break chemical bonds between atoms, request new input molecules and submit output molecules. ... Don't be fooled! This isn't a game about chemistry; it's actually the closest thing I've ever seen to a low-level SPU programming simulator! Each factory is an SPU running a single task. The two waldos are the SPU's dual execution pipelines. Moving and editing molecules is analogous to reading, writing and operating on data in local store.'"
I'm a programmer, and I play first person shooters. Not everybody likes to solve the same problems on their downtime as they do at work.
https://www.eff.org/https-everywhere
I always like the game Mastermind as a quick game to play when I have a few spare minutes.
Ryans Tutorials - A collection of technology tutorials.
Wikipedia and TV Tropes have more examples of these "programming games". But they forgot to mention WarioWare DIY, a tool for creating four- to eight-second microgames that runs on a Nintendo DS. The "dojo" missions are to complete the last line of a game's logic.
I've heard people talk about playing a game and being unable to see the game for the involuntary analysis of programming, organizational, or stylistic choices crowding on their brains.
It happens to writers too. Eventually they end up unable to see the plot for the plot devices, character devices, etc. It ruins your life in the same way that TV Tropes allegedly does.
And when something breaks you're not supposed to move on or work around it; your job is to break it again and again and again until you can document how, when, and maybe even why it breaks for the developers.
Which is exactly what Aspies like me are good at.
The professional programmers in the same building as me at work are currently playing a lot of GOW3 multiplayer modes. Sometimes they even let a hardware guy like me join them. ;-) These are serious coders who do avionics where code bugs kill people.
No mention of Portal/Portal II? Both great games. As a programmer, I would have to say that TFA doesn't really represent me. I think I have spent far more time playing Halo 3/ODST/Reach and Black Ops than any of the games mentioned.
This sig is definitive. Reality is frequently inaccurate.
I hack Wii games in my spare time. Cheat codes, like infinite life and infinite health but more complex.
It really is a game in itself. How will you find your health value? Is it a float or an integer? 16-bit or 32-bit integer? How can you make yourself invincible while still allowing enemies to die? What is this piece of ASM trying to do with my health value?
You can do some pretty crazy things. One fellow Wii hacker made the F-Zero GX game into a 3D game, by finding the camera object in memory and manipulating it so that it wiggles back and forth every frame, creating left- and right-eye images.
:(){
Hell, I'm like that just from playing video games for over 30 years now. It doesn't hurt my enjoyment, though, and even helps me beat a game sometimes.
So odd... As you said, when a programmer (like me) wants to program. We CODE!
Games I have played in the last year (which I don't think have anything to do with me being a programmer) in no particular order:
I think I play those games for reasons non-programmers play them: they suit my taste & temperment. I think each programmer will have their own list of games they enjoy to play which, again, have nothing to do with being a programmer. 'Cause we can CODE if we want to scratch that itch. ;-)
The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
Haven't heard anyone mention RoboSport in a long time. I remember playing at a friend's house, taking turns carefully laying out our moves and then listening closely to his headphones as it processed the turn - it would play the sound effects for what was happening while processing the turn, but you couldn't actually watch until it was finished, which lead to great anticipation as you tried to figure out if that horrible death you just heard was your robot or your enemy's. I might have to check out Frozen Synapse to see how it stack's up - this kind of simultaneous turn-based game has seen precious little development over the years, and I found it quite enjoyable.
I prefer games that do not feel like programming such as tower defense games like Sol Survivor or sandbox games like Just Cause 2.
I am a game programmer and I generally prefer console games, as hammy as possible (if things explode gratuitously, bonus points)..more like arcade genres, such as shmups, beat'em-ups, platformers and fighting. Although I play roguelikes as well, if that counts as programmer games (do they?). And I don't care if it's kiddy stuff, I indulge in pokemon when I get the time. I used to like console puzzles like Tetris, Puyopuyo or Panel de Pon, but I don't see anything new on the field since that Puzzle Quest thingy.
Then again, the type of games I make are either roguelike-ish or arcade-ish, and things do explode gratuitously, so maybe there's a relation there.
I've heard people talk about playing a game and being unable to see the game for the involuntary analysis of programming, organizational, or stylistic choices crowding on their brains.
I think it really only happens when the product is bad or just so so, cause on the other hand when it is really good and you can see how well it's been done it's even more of a pleasure.
First "programming game" I think I ever played was the MECC classic, Robot Odyssey When I went to play it a number of years back it just made me recall how easy games are these days - I think I was able to get through this one faster as a kid than as an adult. Then again I was playing around a lot more this time instead of just trying to beat the game... Don't forget that Frozen Synapse is currently headlining the Humble Frozen Bundle! with about 4 days left to purchase!
"There are people who do not love their fellow human being, and I _hate_ people like that!" - Tom Lehrer
Sometimes working in a field ruins it as fun for a person. That is the reason I'm not a video game tester. I considered it as a career and I think I'd be pretty good. I've good problem solving skills, I know quite about about how computers and programming works so I can think logically about why a problem might occur and so on, and I enjoy games. However, testing is work, not fun. It is trying to break the games.
Well I'm worried that would make games not fun for me at home, and they are my favourite form of entertainment. As such it is not a career I'll ever pursue.
As an example I currently work doing systems and network support, and I rather like my work. However I've found I have little tolerance for system problems at home. I just want my shit to work. There was a time when I enjoyed messing with overclocking and so on and solving the problems could be fun. However I do computer problem solving at work now, at home I just want a system that runs well so I don't mess with it. It removed the fun from system building.
Of course not everyone is like me, some people can have work and fun be the same thing, but I'm not the only one like this.
Meh, I know how games work, but I still can get immersed in them. Maybe it's because I know well enough about how they work that I don't really have to have it crowding in on my brain.
It does frustrate me to see really crappy AI in games and know that I could do a better job (spent a few years as a teenager programming bots for Counter-Strike, and also messed about making Quake 3 mods for a while), but a good game is still a good game.
I guess you are right to an extent though. When I was a teenager I used to wonder if I could build some program to simulate waves lapping on a sea shore. I still haven't actually tried that, and I still would be interested to try it.. though actually now that I think about it, I already know how I'd do it. I have problems with not even trying things because I already know how I'd do it.
One other thing I'd been wondering for a while was if I could make a decent AI for Tetris. I decided to do a project combining lots of new factors to me - using Ruby, using QT, building the game Tetris, and doing AI for it, thinking that I could teach the computer to play better than I can myself. I was disappointed when I built the game in an afternoon, and built a working AI algorithm for it in another day (having never looked at any already existing AIs). I think by that point it could play better than me (and I can play better than all my friends). I was hoping the project would last me for a week or two! Since then I haven't been able to think of any home projects that would interest me enough to start them. Perhaps doing some race-car AI, that occasionally interests me - though again I already know I could create an AI driver that can race better than I can round a track by itself (and I got all golds on all the license tests in GT5, twice :p ). Adding in things like overtaking, or figuring out how to get the car to do controlled drifts on dirt tracks would be the interesting parts.. if anyone has any fun ideas for small game/AI projects I'd be happy to hear them!
which is totally what she said
Thanks for reading! A few clarifications:
My goal for this article was simply to draw some attention to a handful of games that distill some of the art of programming into an enjoyable gameplay mechanic. I never meant to imply that these are the only games programmers should ever play, and that if you don't love them you don't deserve to call yourself a REAL programmer. Believe me, I regularly play a pile of not-even-remotely-programming-related games; I've clocked more time into WoW and LoL than I care to admit. If you'd rather spend your downtime with an FPS, or an RPG, or maybe even IRL, great!
Nor was the list meant to be exhaustive. Don't get upset if I forgot your favorite programming game; instead, post a link! I've already been introduced to at least a dozen new games since the article was first posted.
Nethack or GTFO!
Part of the Second American Revolution!
I'm a programmer and I don't play games any more :(. Not sure what happened. In college, I damn near flunked out because I played Quake too much. But ever since I started working professionally (10 years now), I simply don't have the motivation to load up a game and play it.
Frozen Synapse and SpaceChem? What a coincidence! Both are part of the latest Humble Bundle! I wonder if the anonymous submitter knew that...
Careful with that SpaceChem game. It's a lot harder than you'd think at first, and you can lose many hours of your life per level on the later ones. I just barely pulled myself away from it, and I still feel the urge to start playing again, months later.
"If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
Manufactoria
http://pleasingfungus.com/
That is all.
You cannot mention programming games without bringing up Core Wars. The original programmers game.
Creeper World... one of my casual favorites.
Dwarf fortress is right up there with morrowind and nethack for best game of all time.
"People don't want to learn linux" hasn't been a valid excuse since '03.
Don't pity us. Like, yeah, its hard work, but it's creative and flexible and fun. Its better than any other job I could imagine.
Coding is a game. It's a great big puzzle of interlocking pieces and shifting requirements that make a Rubik's Cube look like the primitive toy it is.
I enjoy what I do. Programming is far more challenging and fun than any artificial gaming environment I've ever encountered (despite many years of FPS gaming.)
That said, I've no interest in actual puzzle games. They have all the frustration of a debug session without the satisfaction of delivery to the users.
I do not fail; I succeed at finding out what does not work.
I play progress quest cause i don't have to do anything
Are you sure about that? Don't you think you are talking about SIMD rather than pipelining? Well, it has been a long time, but I was under the impression that SPEs are stripped of all branch prediction, pipelining etc to overcome the powerwall. Data transfer and execution is software pipelined, yes, but there is no level of pipelining in the hardware. I could be talking total bs though.
The guy who made SpaceChem released several other free games, mostly flash games. He calls the series "games for engineers". Very geeky cool.
The codex of alchemical engineering where you program robotic arms to assemble molecules.
The sequel: The codex of alchemical engineering magnum opus challenge
Bureau of steam engineering where you use steam valves and pipes to build control logic for steampunk battle robots.
A downloadable EXE game Ruckingenur II (requires Microsoft's DotNET 2.0 to be installed). The idea is that you use logic probes and stuff to hack electronic circuits. It's kinda cool and it's pretty realistic, but your options are fairly limited. It's more of a puzzle game than a simulator.
And then there's my favorite:
Kohctpyktop engineer of the people.
This one is definitely the geekiest and most intellectually sophisticated of them all. The idea of the game is that you have to build transistor circuits. You are given a blank playfield to draw circuitry, and the game does a full electric/logic simulation of your circuit. If the game board were arbitrarily large you could literally build an entire working CPU in there! If you manage complete the game you will have a very deep understanding of how computers work at the transistor level.
Unfortunately Kohctpyktop has almost no instructions, the help tab is a link to a tutorial video that is only marginally helpful, and it has a seriously steep learning curve. If anyone wants to give it a try be sure to use pause during the help video, it goes by really fast. You also need to know that you need to hold shift to switch from red to yellow silicon, and in delete mode hold shift to delete metal. For further help look for me in the Echo Hall chatroom on Kongregate. If I'm not there you can try asking for Kohctpyktop help in general chat - there are several Echo Hall regulars who know the game.
-
- - You can't take something off the Internet! That's like trying to take pee out of a swimming pool.
I take it you're not an emacs user, then?
As a programmer, I typically find these "programming games" quickly overly constraining. A poor choice of expressiveness, and an inability to develop sophisticated control describes the vast majority from space chem to carnage heart to ogre.
Where's my text editor?
I can last a little while on games where I can actually program reasonably properly, but this leaves me cold as well because there's no practical value. If i was writing practical code, I'd be happier.
-josh
It depends on what's being programmed. If you are doing something you have passion for or even something cool and challenging, great. However if you are just maintaining some crusty old database system hooked into old DOS program written in PASCAL by some high school-dropout who interned there in the 80's because it is "too expensive" to port the data and rewrite it in a more modern language then it is probably not as creative, fun, or flexible.
As for game programming, from all the horror stories I hear about the game industry, there is no way anyone would get me near any major developer. Smaller or independent developers maybe but not the big boys.
Slow Down Cowboy! It's been 1 hour, 47 minutes since you last successfully posted a comment
I second that, although I appreciate the escapism/relaxation it provides. The last time I played games was as a youngster on C64 -- but even then I'd get bored and return to hacking 6502 assembly... waay more fun.
I'm not really a programmer, but I work in a scientific field, and I hack on my spare time. I'm not much into games either; in recent years I've taken up some board games and retro platformers, but mostly as a social activity. When I need time off from some intense technical work, I switch to another keyboard to play something. At best, I've been working on a new song and a new coding/electronics project at the same time, and each provides a break from the other.
These days, I sometimes hear people wondering why I don't play something like chess or go -- you're a science geek, so obviously you should be good at such games. I've had times when I've spent some time learning chess with a couple of friends, and I did notice some improvement, but I never really got interested. The same has happened with RPGs.
As a teacher, I've come across the idea of learning games. The prevailing wisdom seems to be that in the past, good teachers were the ones who could do things in a playful way. Many teachers are not like this, but we could fix the situation by letting kids learn through FPSs, for example. I'm not sure this is really the way, since at some point you're going to have to do some real work, and find the playful attitude in that. I consider myself playful in many of the things I do, and it's probably the reason why I don't like typical games. IMHO, games highlight an artificial distinction between "work" and "play". I do use some level of role playing in my teaching, for example, but it's an integral part of the subject and not some separate piece of fun in the midst of work.
Escher was the first MC and Giger invented the HR department.
Well, there's only three games I actually like:
- Braid (Modify the flow of time to solve puzzles: In this video, a lever opens a distant door for a short time, so the solution is to create two parallel timelines, one where you run to the lever and pull it and one where you run to the door and go through: http://www.youtube.com/watch?v=vUMYvD4d-_0&feature=related)
- Portal (Modify space using portals to solve puzzles: http://www.youtube.com/watch?v=TluRVBhmf8w)
- Minecraft ("Immortal Robinson Crusoe" simulation, do whatever you want: http://www.youtube.com/results?search_query=minecraft&aq=f)
Since Braid and Portal are games that you only play once and Minecraft is getting boring to me, I don't actually play anything right now: For me, a game has to present me with something new, but it seems that you only find such a game every couple of years.
I don't really see the point in "programmer" games: If I do real programming, the reward is something that actually does something and is useful to me and maybe other people. If I solve a programming challenge in a game, the reward is a "you win" message on the screen, which just makes it feel like I wasted my time.
Having said that, I must confess that I actually DID build a little 8 bit calculating thing in Minecraft, just to check out what you can do with the logic bits (in Minecraft you can dig out a special ore that you can use to make wires and NOR gates), but in retrospect I must say that it wasn't really a fulfilling thing to do.
So if I want to solve programming problems, I don't do it in a game.
My CS bots may have been rudimentary as you say (though out of all bots back then they were regarded as 2nd place on average - they had an awful lot of "minor crap" tweaks for things like radio communication, stealth, basic teamwork, grenades/flashbangs, etc) but they were still far better than the pap in many single player games today. It's very disappointing.
The simulating waves thing I was just imagining in 2D space, not even 3D. I wouldn't want to use pre-made algorithms, just mess around with my own ideas. After I'd tried it myself, then I'd look at more formal solutions. Same with basic physics, seeing if I can model solid and elastic shapes and collisions between them in a 2D environment before looking at more well established code.
which is totally what she said
And beta testing...God. You think you're getting paid to play games and it turns out you're getting paid to play *broken* games. And when something breaks you're not supposed to move on or work around it; your job is to break it again and again and again until you can document how, when, and maybe even why it breaks for the developers.
Obligatory Penny Arcade
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
Sure. You're not really helping me to find something worth my while though.
which is totally what she said
Oh, and having Googled for that cartoon, I also came across an interesting accompanying article (which explains the strip better as well).
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
While saying that I'm better than my friends at Tetris and pointing out I got all golds on GT5 wasn't strictly necessary (I just mentioned them because I thought some readers would think "yeah but you suck at games, so making an AI play better than yo would be easy), I guess I'll point out one thing which some might assume to be arrogant if they've never looked into race AI or racing physics:
Making an AI that races around a track consistently better than a human is already known to be quite simple. Even the best of human drivers still occasionally make mistakes,. Getting AI to drive round a track well in bad/variable weather would be more of a challenge, but in the end it's still something that computers are well suited to.
which is totally what she said
If you click on "News" when you're on a specific penny arcade comic, it takes you to the news for that strip you're looking at. Easy peasy!
News is the middle icon to the immediate upper left of the strip.
Karnal
I was a gamer before I was a programmer, learning to program did not change my taste in games. that being said I'd rather play action-rpg games
Any sufficiently advanced incompetence is indistinguishable from malice.
Us emacs coders play soccer in our spare time.
"The Schemaverse is a space-based strategy game implemented entirely within a PostgreSQL database. Compete against other players using raw SQL commands to command your fleet."
Is anyone out there playing it?
Make a MMORPG world like Asheron's Call. Encourage people to bot. See what happens.
To me it was fun to see how far my PVP bot could get around the world, just running around randomly and fighting anything that got close to him.
It should also be designed to be an enjoyable screensaver if you click an option to turn off the hud.
Another game I thought of would have been a First Person Shooter, where you get a variety of different bots, and you need to write the AI for the bots that fight along side you.
God spoke to me
I just remembered: Carnage Heart for the PS1 and 2. You had to program giant robots for combat using a graphical programming environment.
I'm not just a programmer, I make video games for a living! I've been involved in Triple-A RPGs, a third person shooter, and recently, a kinect fitness game.
I play games on my iPhone. I play Dungeons of Dreadmore and Angband (both roguelikes). I enjoyed Portal, but haven't bothered playing Portal 2 yet. I spent years playing WoW, and I'll play the living crap out of Diablo III when it comes out. I like racing games, but I tend not to buy them; I don't have a racing wheel or the time to be good at the games. I loved Batman: Arkham Asylum, especially for the way the game solves such common game problems. I enjoy a lot of games both for the pure enjoyment of them and also to figure out how they solved certain problems common in my industry.
Really, the claim that these are 'games programmers play' is ridiculous. What about the sports programmers play? The foods programmers eat? Man, we're all just individual people. Today, I played a bit of Tiny Tower on my iPhone, and a card game called Ascension, and did a bike race in the afternoon. What does THAT mean?
What's that? We're all different? And there are many different kinds of programmers? And pigeonholing a group is the worst sort of abuse of statistics, AT BEST?
Abstractly, it sounds like the game might be neat, but that's a stupid title for the story.
I'm going to get modded down just like you ... but the main reason you've experienced that is mostly because the gaming experience on Linux is really fucking shitty.
You of course are just a troll trying to be all high and mighty, when all you really do is show everyone your age, or lack there of. All you've really shown anyone is that you're a self absorbed douche.
So who are you Mr AC? 15 years of Linux coding puts you pretty much in it since the beginning of any point of usefulness out of it. There weren't many 'professional Linux coders' back then, everyone of them probably knows every other one of them actually. And 'coders' ... seriously? Who talks that way?
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
Up until the end of wow days, I was writing and tweaking macros. I'll be honest it was incredibly fun to get castsequence macros for all types of moves. Even more fun for dual boxing where a healer would heal whomever the opponent was attacking while both of my toons would attack the same target. I used to play pvp and I loved it when people would complain "omg the bot has the flag" and hear someone else yell in response "yah but its kicking ass too." Also I wrote my own LUA add-ons to get events that used to alert me with a message, audible sound and spell icon when certain bonus spells had proc'd. For instance a druids natures grace has proc'd and the next cast was going to be instant cast. I used my 45 year old ass to qualify for arena titles and the paid arena tourney title as well. Gotta love it when and old guy with bad eyesight and some code can beat down a twitchy 15 year old kid with faster reflexes. Pity I got a temporary ban for botting in battlegrounds when all it was excellent macroing and lua. Rather than argue, I quit and saved a ton of money and time to do something else with my programming skills. fwiw, here is a 2v2 video which played solo with a guild mate. You can see the cast sequences on the keys. No UI mods here.
Well, good programmer should be able to come up with solutions even when his hands are tied with constraints. As for practical value - whatever makes you "happy", I guess.
Yeah, at least board games don't glow. And some of them are square instead of rectangle?
The Quirkz Handbook of Self-Improvement for People Who Are Already Pretty Okay
Some of the guys at PA + Scott Kurtz made an an entire comic about game testers. Rather entertaining so far. Also, the real-life stories are both funny and sad at the same time.
Irony: Agile development has too much intertia to be abandoned now.