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).
As for becoming a better programmer, it's all about practice. CodeWars might be what you're looking for: https://www.codewars.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
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]
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.
- 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.
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...
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.
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.
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.
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/
>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://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.
Just by trying to automate something like character creation rolls, you'll learn a lot.
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.
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.
I guess, I have to try some of the games that everyone has mentioned.
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.
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.
Learn some boolean logic ;)
The syntax is very C++/Java-ish.
It was my intro into true OO programming. You program literal objects to interact by message passing.
You should be able to pick it up all over the internet. It’s abandonware but has a pretty good community.
The NAND Game, nandgame.com
is "obligatory".
LiveOverflow did a series on it
Go read a book!