[HN Gopher] Ask HN: Which programming games helped you become a ...
       ___________________________________________________________________
        
       Ask HN: Which programming games helped you become a better
       programmer?
        
       There are numerous programming games available that claim to teach
       you how to code. However, I couldn't find any posts on HN that
       confirmed or denied their usefulness. Except this one, but it's
       from 5 years ago: https://news.ycombinator.com/item?id=13566247  1.
       Are there any good beginner programming games in widely used
       programming languages (like C, C++, C#, Java, JavaScript, Python,
       PHP)?  2. Are there any programming games that have helped you
       become a more advanced programmer (or a better programmer)?  I am
       interested in games that are not just fun, but also teach you
       programming useful in the real world (maybe not directly, since
       it's a game, but still).
        
       Author : gpa
       Score  : 58 points
       Date   : 2022-06-05 15:27 UTC (7 hours ago)
        
       | chaabani wrote:
       | I've developed Recursive [0], a programming puzzles game that
       | helps understand and master recursion, which is, I think, a topic
       | that many developers have difficulty with.
       | 
       | I'll be glad to send an AppStore promo code for those who'd like
       | to play it for free (email in website [1]).
       | 
       | Also, I don't use any analytics tools. So your direct feedback is
       | welcome and highly appreciated.
       | 
       | [0] https://apps.apple.com/app/recursive/id1550504475
       | 
       | [1] https://www.kidori.com
        
         | Zhyl wrote:
         | On a similar note is recursed, a puzzle platformer that isn't
         | about programming, but it is absolutely about programming.
         | 
         | https://store.steampowered.com/app/497780/Recursed/
        
       | mdp2021 wrote:
       | Let us also remember that before programming:
       | 
       | The NAND Game, nandgame.com
       | 
       | is "obligatory".
        
       | lesam wrote:
       | I started programming with "learn to program basic", a series of
       | animated programming tutorials in BASIC lightly disguised as a
       | game.
        
       | xtagon wrote:
       | Playing Battlesnake has helped me become a better programmer.
       | I've used it to gain experience in multiple new (to me)
       | programming languages as a freeform way to practice without
       | deadlines, I've learned new algorithms and how they apply to game
       | solving, and I am beginning to understand how many game-solving
       | algorithms can be applied to more practical applications since
       | "games" in the game-theoretic sense can just as easily be models
       | of real-world situations where the players are rational people
       | instead of "game" participants. For example, "pathfinding" and
       | "decision making" has many parallels.
       | 
       | Learning game tree searches such as minimax, MCTS and CFR is
       | teaching me about tree/graph algorithms and data structures, how
       | to work with, reason about, and test explosive search spaces
       | where the entire tree can't be feasibly completely exhausted, in
       | the process of researching these things I've learned to read
       | whitepapers in the literature that would otherwise be scary to me
       | as a developer and actually care to understand the math, it
       | inspired me to tinker with Formal Methods including TLA+, and all
       | the while having fun and making friends.
       | 
       | Learning Goal Oriented Action Planning, or GOAP (which I actually
       | didn't apply to Battlesnake in the end, but I never would have
       | found it if I wasn't looking) helped me optimize my real-world
       | productivity by translating the concepts from game AI to personal
       | task planning. In my head there is an analogy now between
       | handling backlogs according to the current working context, and a
       | GOAP-like stack based finite state machine. Learning a simple
       | game algorithm helped me procrastinate less.
       | 
       | For newer developers, you'll also out of necessity learn many
       | real-world web development and ops concepts because the way
       | Battlensnake works is that you run your own web server conforming
       | to their move API. So you have to keep your snake AI up and
       | reachable, responding to each request within the allotted
       | timeout, and know the basics of HTTP on day one. Games can also
       | run concurrently so you learn how to deal with concurrent games
       | and whether to make them stateful or stateless between turns,
       | which can be a different experience on different web
       | frameworks/languages and might teach you about things like
       | threading or the actor model or distributed systems.
       | 
       | For advanced developers, there's always somewhere to go next.
       | Your snake AI can be anything from hard-coded rules to tree
       | searches (as mentioned above) to deep reinforcement learning.
       | 
       | https://play.battlesnake.com/
        
       | gpa wrote:
       | I've already mentioned it in another comment, but (being unable
       | to edit my question already) this is what I was thinking when I
       | asked the question: an addictive game with progressive complexity
       | and (possibly) time-limited challenges that make you feel like
       | you didn't waste (hours of) time because of the knowledge
       | (skills) you've gained.
       | 
       | I guess, I have to try some of the games that everyone has
       | mentioned.
        
       | optimalsolver wrote:
       | Core War:
       | 
       | >Core War is a 1984 programming game created by D. G. Jones and
       | A. K. Dewdney in which two or more battle programs (called
       | "warriors") compete for control of a virtual computer. These
       | battle programs are written in an abstract assembly language
       | called Redcode.
       | 
       | https://en.wikipedia.org/wiki/Core_War
        
         | [deleted]
        
       | styluss wrote:
       | The Typing of the Dead
        
       | heliophobicdude wrote:
       | Factorio.
       | 
       | Factorio doesn't exactly have code. However, it's very much a
       | game about systems, and how to efficiently build and manage them.
       | 
       | In fact, Shopify expensed the game for their employees [1]
       | 
       | 1: https://twitter.com/tobi/status/1294330081452666882
        
         | falcolas wrote:
         | I think of Factorio as a circuit board designing game more than
         | programming. Still fun as heck though.
        
           | marginalia_nu wrote:
           | Dunno, I think it captures several of the skills needed in
           | programming, not the actual writing code, but both
           | refactoring and optimization are translated fairly
           | accurately.
        
             | alophawen wrote:
             | Meh, lol. From my spaghetti factory you would never have
             | guessed i was a software dev by day.
        
       | js8 wrote:
       | I learned Forth thanks to Minecraft RedPower2 mod. Whether it
       | actually made me a better programmer can be disputed.
       | 
       | I don't think any game will make you a better programmer. It can
       | get you interested, sure, but becoming a better programmer is
       | only so much related to having in-game fun, and is often a matter
       | of more self-discipline.
        
       | Stevvo wrote:
       | There are plenty of games that helped me become a better
       | programmer, but none of them were programming games. You can
       | choose games you enjoy that are open to modding and have your fun
       | programming mods.
        
       | bobinux wrote:
       | Well, I've enjoyed these games as for fun, but they did provide
       | an intellectual challenge: TIS-100
       | https://store.steampowered.com/app/370360/TIS100/ SHENZEN I/O
       | https://store.steampowered.com/app/504210/SHENZHEN_IO/ Hacknet
       | https://store.steampowered.com/app/365450/Hacknet/ Uplink
       | https://store.steampowered.com/app/1510/Uplink/
       | 
       | As for becoming a better programmer, it's all about practice.
       | CodeWars might be what you're looking for:
       | https://www.codewars.com/
        
         | dathinab wrote:
         | > all about practice
         | 
         | and communication, and writing simple readable code
         | 
         | for a lot of programmers solving "tricky" algorithmic questions
         | are more the exception then the norm
         | 
         | In turn while it's a must have skill for senior programmers for
         | mid level programmers improving skills around communication,
         | writing simple easy to read and understand code often is much
         | more useful.
         | 
         | Edit: and being able to abstract properly/see beyond the
         | marketing (especially for web).
        
         | Dayshine wrote:
         | Codewars is a poor recommendation for becoming a better
         | programmer, the solutions are sorted by popularity and so
         | generally "cool" solutions are at the top. I've yet to see a
         | clear/good python solution anywhere near the top.
         | 
         | I suppose you could just do the tasks and ignore the website
         | itself.
        
       | Claude_Shannon wrote:
       | I got more confident in my Assembly skills after playing a lot of
       | TIS-100.
        
       | defterGoose wrote:
       | MHRD. Cool little game about Hardware Description Languages.
       | Takes you from designing basic logic gates all the way up to a
       | microprocessor.
        
       | damagednoob wrote:
       | Not programming games but Starcraft and Quake (keys set to esdf
       | instead of wasd). They taught my left hand where to be on the
       | home row and I credit them for indirectly teaching me touch
       | typing.
        
       | breckenedge wrote:
       | Any game that supports extension via modding is a potential to
       | learn more about programming. I think when programming is the
       | game, it's kinda boring and feels too much like work.
        
       | erkmene wrote:
       | It doesn't seem to exactly fit your description but Python
       | Challenge (http://www.pythonchallenge.com/) has been incredibly
       | fun and rewarding for me back in the day.
       | 
       | It's a series of riddles that are meant to be solved using the
       | python language. It's really old now but I'm hoping that some
       | library specific riddles are still relevant. Apart from those
       | few, most of them should be language agnostic as well.
       | 
       | I've always wanted to create a similar thing to replicate the
       | experience in JS but never gotten around to it.
       | 
       | Edit: oh also completely agree with most of the recommendations
       | here. Particularly with TIS-100, Factorio and Human Resource
       | Machine.
        
         | qsort wrote:
         | Okay, I've been nerd-sniped, there goes my Sunday night.
         | 
         | Counter-snipe: https://challenge.synacor.com
        
           | gkbrk wrote:
           | I can second the Synacor challenge. After writing the VM and
           | completing the challenge, I ended up writing my own assembler
           | and small compiler for it. Very fun.
        
       | jamal-kumar wrote:
       | I like CTF stuff. I tried this one called yolo space hacker:
       | 
       | https://store.steampowered.com/app/1341450/Yolo_Space_Hacker...
       | 
       | I like it because now I have something gameified to recommend to
       | people who want to break into computer security. It was REALLY
       | easy for me as someone who's been mired in that world for a long
       | time, though I'm probably going to buy the other missions to see
       | if they pose more of a challenge.
       | 
       | Make sure to download the performance DLC. It runs in a VM but
       | it's better off with virtualbox in my experience than the other
       | options. Opt for compiled tools rather than old perl and python
       | scripts if you want missions to go faster.
        
         | gpa wrote:
         | How does the game helps to get into computer security?
        
           | jamal-kumar wrote:
           | The goal of the game is hacking into a facility.
        
       | ttanev wrote:
       | I'll reply mostly on 2. - most of these were already mentioned in
       | the previous thread - [0] Grasshopper, [1] SpaceChem (awhile
       | ago), [2] 7 billion humans (haven't finished it yet, and haven't
       | played for a while), [3] Human Resource Machine and [4] TIS-100.
       | They mostly help to build habits, and persistency, not just being
       | fun.
       | 
       | The "real world" always provides much more interesting
       | "gameplay", but it is sometimes with a too steep learning curve.
       | :)
       | 
       | Edit: And I've been ninja'd by another user, but just remembered
       | that there is another in my wishlist - [5] Baba is you (haven't
       | played it, though)
       | 
       | [0] https://grasshopper.app/ [1]
       | https://zachtronics.com/spacechem/ [2]
       | https://tomorrowcorporation.com/7billionhumans [3]
       | https://tomorrowcorporation.com/humanresourcemachine [4]
       | https://zachtronics.com/tis-100/ [5]
       | https://www.hempuli.com/baba/
        
         | Jtsummers wrote:
         | Adding to the Zachtronics' game TIS-100, there's also EXAPUNKS
         | which is a fun programming puzzle game. You write programs for
         | one or more bots which can then spawn more and communicate with
         | each other. I haven't finished the game because I just play it
         | on random occasions, but the challenges are interesting. There
         | are also some head-to-head challenges with other players that
         | fit a bit into the Core War vein, trying to maintain control of
         | a television broadcast or similar things with points given for
         | how long your video plays and points deducted for things like
         | killing your opponent's process outright (versus just more
         | clever and faster programs).
        
       | QuadmasterXLII wrote:
       | For 2, Codingame's bot programming challenges are excellent. To
       | get high on the leaderboards you need to write super well
       | optimized code and have clever ideas, which is about as fun as a
       | programming challenge gets. To get started, I'd recommend their
       | TRON lightcycle game, which has a great combination of
       | approachable ruleset and deep gameplay.
       | 
       | https://www.codingame.com/multiplayer/bot-programming/line-r...
       | 
       | If you prefer floating point math over integers, their pod racing
       | game is awesome: at one point my algorithm was fourth in the
       | world at it.
       | 
       | https://www.codingame.com/multiplayer/bot-programming/mad-po...
       | 
       | As a bonus, you can use just about any language you want: I know
       | they have at least python, C, c++, rust, Go, Java, javascript,
       | bash...
        
         | ramtatatam wrote:
         | +1 for CodinGame, I loved their Sprint 2022 challenge (which is
         | now available as multiplayer game). This challenge motivated me
         | to purchase a book about writing intelligent agents and to
         | start studying the subject more in depth.
        
       | beprogrammed wrote:
       | https://www.pwnadventure.com
       | 
       | LiveOverflow did a series on it
        
       | DylanSp wrote:
       | I'm not sure if it qualifies as a programming game vs. a gamified
       | way of teaching programming concepts, but I liked The Deadlock
       | Empire for exploring concurrency issues:
       | https://deadlockempire.github.io/.
        
       | jayski wrote:
       | the game of having bills to pay.
        
       | Bondi_Blue wrote:
       | The very best suggestions, such as Core War and the Zachtronics
       | games, are already in this thread. One fun little gem that hasn't
       | been mentioned: https://www.unixgame.io/unix50
        
       | kubi07 wrote:
       | OverTheWire wargames. I played first 10 levels, it's kinda fun,
       | kinda frustrating but it made me read manuals of 'grep' and
       | 'find' commands on bash. So it made me a better programmer for
       | sure. https://overthewire.org/wargames/
        
       | robotburrito wrote:
       | I never understood the point of games that emulate the
       | programming experience. Whenever I play them I feel like I'm
       | wasting my time and I could be making something real.
        
         | mdp2021 wrote:
         | If an exercise kit is well done, it condenses experience. Think
         | of a mathematics exercise book - gradual progress from basics
         | to limit revealing tricks and consolidating artfulness exercise
         | by exercise. It's doable.
        
         | carlhjerpe wrote:
         | This is where modding scenes shine, you learn a language
         | because you wanna edit a game. My IT career comes entirely from
         | wanting to run my own private WoW server, the open-source ones
         | were written in C++ so I started with that, might not have been
         | the best first language but at least it was something. Now I
         | work with DevOps.
         | 
         | I did manage to run a server with about 140 peak online
         | simultaneously where the USP was a unique PvP experience with
         | cross-faction battlegrounds (to my knowledge my implementation
         | was the first open source one), respawns in FFA areas and such
         | for classic (1.12.1) WoW.
         | 
         | None of this was ever really "real", but it taught me a fair
         | deal about both computers, programming, running a community and
         | life in general.
         | 
         | The open-source project for running WoW servers I used was
         | "cmangos"(gh).
        
         | gpa wrote:
         | That's why I've asked the question - about games that make you
         | feel not wasting your time. Because this will be a
         | breakthrough.
        
         | craggyjaggy wrote:
         | Also, I don't particularly love the act of writing code itself,
         | I like the results (problems getting solved or fun things
         | happening) of which there are none in most of these games.
         | 
         | Interestingly it seems it's the exact opposite for games
         | simulating other kinds of jobs. I hate driving, I do it to get
         | somewhere and nothing else. But trucking simulators? Endless
         | fun and relaxation. Same thing with chopping onions, which I
         | only do to make a nice meal. But in a burger joint simulator?
         | I'll gladly slice tomatoes for two hours!
        
         | [deleted]
        
         | wly_cdgr wrote:
         | Zachtronics games don't emulate the horror of the ACTUAL
         | programming experience. They distill away a ton of the most
         | tedious, frustrating aspects and let you focus on the fun part:
         | system design and optimization
        
         | passivate wrote:
         | You're absolutely right, it is extremely hard to emulate the
         | programming experience via such games. If you break down the
         | skills you need in most (with obvious caveats) programming
         | related jobs - reading others' code, explaining your code to
         | others, designing, documenting, brainstorming, breaking down
         | problems, etc, etc, it is difficult to train for those. In the
         | abstract, it makes sense to practice those skills since for
         | many programmers there isn't anything exciting happening day-
         | to-day, and there is a lot of grunt work maintaining existing
         | code bases.
         | 
         | In most physical fields (athletics being an easy example) there
         | is an amazing amount of carry-over from training into
         | performance. Training being where you build up skills and
         | performance being when you apply said learned skill to the
         | performance. But in more abstract and cognition-heavy fields
         | its muddy and vague.
        
         | agersant wrote:
         | I've played a couple of these games (Opus Magnum, EXAPUNKS).
         | What I liked about them is that they distill the experience of
         | software engineering to "just the fun problem solving" part.
         | 
         | In these games, you don't write RFC, set up CI for your
         | project, do code reviews or battle old dependencies. It's just
         | you, a clear goal and all the right tools to reach it -
         | somewhat similar to assembling Lego (or Ikea furniture) but
         | with the fun of problem solving added.
         | 
         | Making something real would definitely net you a more
         | satisfying end result, but maybe wouldn't be as entertaining.
         | Obviously this depends a lot on what you find fun in
         | programming and how smooth your real projects go!
        
       | jmconfuzeus wrote:
       | If you want to learn assembly or how computers work at a lower
       | level, play TIS-100 by Zachtronics.
        
       | dcchambers wrote:
       | Not specifically programming, but I firmly believe that playing
       | Roller Coaster Tycoon as a kid dramatically helped spur my
       | interest in STEM and learning in general.
       | 
       | It was my first introduction to: physics, accounting and finance,
       | data visualizations, and more.
       | 
       | Roller Coaster Tycoon 2 holds up remarkably well today, either
       | natively or via OpenRCT2. Highly recommend it to anyone and
       | everyone.
        
       | Night_Thastus wrote:
       | I highly enjoyed TIS-100 and Shenzhen-IO, though I'm not even
       | close to completing either. They wouldn't make you better at a
       | specific language (even assembly, since they use a pseudo-
       | assembly) but I think they'd be useful to get better at problem
       | solving and breaking down algorithms into their most basic parts.
        
       | jleyank wrote:
       | Super Star Trek, chess and Conway's game of life. Taught about
       | code size and efficiency and how to tailor the approach to the
       | problem.
        
       | jstimpfle wrote:
       | To the list of Zachtronics games, I'll add Opus Magnum, which is
       | the one that I found most rewarding.
        
         | Zhyl wrote:
         | Opus Magnum is the Zachtronics game that resonated most with
         | me. It's visual, like SpaceChem, but I also like the setting
         | and find the solutions to be very satisfying.
        
       | Apreche wrote:
       | Does Advent of Code count?
        
         | gpa wrote:
         | It seems that it counts by reading the description: "small
         | programming puzzles for a variety of skill sets and skill
         | levels that can be solved in any programming language you like.
         | People use them as a speed contest, interview prep, company
         | training, university coursework, practice problems, or to
         | challenge each other." But since I haven't used it, you or
         | someone else can have the final say. I was thinking of an
         | addictive game with progressive complexity and time-limited
         | challenges that make you feel like you didn't waste time
         | because of the knowledge you've gained.
        
       | opheliate wrote:
       | More applicable for kids, although certainly of interest to
       | adults too: Minecraft. Any interest in Redstone will push players
       | towards learning the basics of binary logic, without even
       | realising what they're learning will be applicable down the line.
       | Plus, it has (I assume) the largest modding scene of any game -
       | there's a lot of people out there who have learned Java just so
       | they can target Minecraft/CraftBukkit.
        
       | latency-guy wrote:
       | If you're willing to be charitible of where exactly programming
       | comes in while playing a game - I would say creating cheats or
       | bots for video games.
       | 
       | These days, you will most likely have your account restricted and
       | banned from an entire ecosystem of games if you try this, but
       | back in the days where flash was dominant you could do lots of
       | fun things with little risk. Many fun times in Runescape making
       | dollars off my bots that ran air runecrafting bots, or Fist of
       | Guthix bots in F2P and selling the GP I got for the rewards. Does
       | not need to be very complicated either IMO.
       | 
       | For a direct answer, I think Minecraft has a lot of options for
       | learning programming without really learning programming. I have
       | never played it but I have seen what others have done in what I
       | believe is creative/builder mode.
        
         | QuadmasterXLII wrote:
         | Back in college our CS group had an ongoing competition,
         | getting high scores in facebook's chat minigames. Skullduggery
         | was highly encouraged
         | https://www.youtube.com/watch?v=TnJyc3oFsSM
        
       | adamredwoods wrote:
       | The inverse worked for me: I wrote a game to become a better
       | programmer.
       | 
       | I recommend most beginners to start with a simple solitaire card
       | game, make a polished card game, complete with tutorial, pausing,
       | win/lose conditions. The reason is the graphics and flow of the
       | game are already a common thing, so planning it is minimal and
       | the focus is on the coding.
        
       | [deleted]
        
       | MarioPython wrote:
       | 2 games come to mind...
       | 
       | - Turing complete: helped me understand how a computer works, how
       | binary works and what the instructions and operations look like
       | at the hardware level
       | 
       | - Factorio: helped me understand broader aspects like
       | availability, fault tolerance, decoupling, team management,
       | prioritization.
        
       | encrux wrote:
       | Many good suggestions in here already, so I'm just gonna add
       | Space Engineers.
       | 
       | It's a voxel-based spaceship building game, where you can quite
       | literally design your spaceship from scratch. If that's not
       | enough for you, you can interact with your creation by writing
       | c#-scripts that are stored in physically accessible programmable
       | blocks.
       | 
       | There's also a large modding community you can get into.
        
       | dllthomas wrote:
       | Both are somewhat obliquely related to programming, but I really
       | enjoyed incredible.pm and (the demo of) vim-adventures.com
        
       | lordkrandel wrote:
       | None
        
       | itake wrote:
       | leetcode.com is an interesting puzzle game and is language
       | agnostic.
        
       | mlcrypto wrote:
        
       | jzellis wrote:
       | Goretek and the Microchips, but y'all probably a little young for
       | that. :-D
        
       | 32kfjh23 wrote:
       | Check out flexbox froggy. There are good games about git too. I
       | tried the Twilio games but I think those are better for young
       | kids. It takes too long.
        
         | claytonjy wrote:
         | For git specifically, I quite like
         | https://learngitbranching.js.org/. Helps connect the
         | visual/spatial understanding with the raw CLI commands.
        
       | syngrog66 wrote:
       | the programming game
        
       | pdenton wrote:
       | Kids these days...
       | 
       | Go read a book!
        
       | madmax108 wrote:
       | Maybe not an exact answer to the question being asked, but when
       | flexbox was first introduced a few years back, I remember being
       | quite overwhelmed by it, but the game that helped me "grok" it
       | was Flexbox Froggy: https://flexboxfroggy.com/
       | 
       | Even now, when I am working with frontend designs, I sometimes am
       | mentally picturing my elements as frogs that need to be placed in
       | the right place :D
        
         | cjbprime wrote:
         | I learned flexbox from a game too! I think it was Flexbox Tower
         | Defense.
        
       | hitpointdrew wrote:
       | While this game doesn't teach you to code, I would argue that
       | Portal (1 and 2), teach you how to solve programming like
       | problems.
        
       | gediz wrote:
       | I think some of the Zachtronics games may be helpful to learn
       | about Assembly.
        
       ___________________________________________________________________
       (page generated 2022-06-05 23:02 UTC)