cross-posted from: https://beehaw.org/post/7671504
For a while now, I had this idea in my head of making a small 2D side scroller game that helps people learn programming, and I’m looking for honest opinions and feedback from others. I know that such a game is niche and I wouldn’t expect to earn a lot with it. Spending time on development would only make sense for me, however, if there is at least some interest in playing it. Whether the game will have some success, is not a question that can be answered here, but my hope is, that I’ll be a bit more confident in my decision after hearing more feedback from others.
I have been teaching C/C++ and Python for years now and have developed a small application that gives students, without a specific goal, something to work towards to. It is just a console application that offers various programming tasks to be solved, submitted and compared against previous results. The student just has to run the application, import my interface library and start coding. I usually go over the theory and try to help them while they are figuring it out. Just to give you an example of such a task:
“There is a sequence of N unsorted and unknown numbers. You can compare, whether any number is greater than any other one by specifying their positions in the sequence. You can swap two numbers, save copies of them on a stash, and replace any number in the sequence with stashed ones. Try to sort the sequence of unknown numbers with as little operations as possible.”
The idea of the side scroller would be, to give that application a compelling frontend and to “gamify” these tasks even more. Aside from the usual game mechanics like “find and fetch items”, “talk to this or that person” or “solve simple terrain puzzles”, I want the programming tasks to be the main quest which unlocks new parts of the world and ultimately completes the story line. There will be some kind of quest book that goes into more detail and tries to help the player understand the task and to find solutions. Aside from that, the player is expected to use their own development environment (which can be as simple as: Notepad and GCC/Python Interpreter). The quest book is just meant as a starting point, and players would have to do additional research to learn more about algorithms and how to implement them.
I think, at this point, I have described the rough idea enough, and I apologize for the wall of text so far. For that reason, everything below this is optional TLDR as far as I’m concerned.
The last thing I wanted to mention here is the rough sketch of the lore I had in mind. A medieval world containing steam punk elements that is slowly but surely overtaken by these alien looking artifacts. You, the protagonist, have figured out that some of these artifacts can be controlled by using the language that can be derived from the carvings on them. Around the artifacts, a contamination that destroys everything is slowly spreading. No one has figured out how to stop this, but it becomes clear over the course of the game, that interacting with these artifacts and solving the programming tasks, slowly reverses the spread. The ultimate conclusion is, that an alien species put these artifacts in this world to slowly terraform it. Because they didn’t want to wipe out any intelligent species in the process, they created an off-switch. If a species is intelligent enough to figure out these tasks, the whole terraforming process is terminated.
For context: I’m currently employed as a software engineer, I do consultancy on the side and I previously was a technical lead. Around 15 years of professional experience which includes a lot of mentoring/training.
It’s a cool idea - there are quite a few little things kicking around with some similarities - “advent of code” is the closest thing I can think of. I’m sure it could be very fun and educational.
Personally, and I’m going to be completely honest and frank with you, I don’t think I would play it, (though I’m definitely not the target market), but also, it’s not likely that I would recommend it to someone who wants to learn to code either.
Usually when people want to learn to code, it’s because they have some end goal in mind - they want to make an app, game, website, they want to get a job as a developer, data analyst, QA, etc. or they have something in particular which interests them - such as machine learning, embedded design, blockchain (yes, I know it’s a scam), digital music/art, etc. - and based on what they want to do, I’d recommend them some very different pathways, and it’s very unlikely that your game would be the best use of their time, to be honest.
I think, personally, this kind of learning device is only really good as a starting point for people who want to learn for the sake of learning, people who want to learn programming but have no real idea about what they want to program - this tends to be quite rare, though, because we all interact with technology from such a young age, by the time people are capable of learning programming, there would be something that gets them excited and that they would enjoy working towards.
I think what I would like to suggest to you instead, is something that I think would be - in my opinion - really cool, genuinely helpful as an educational tool, and with a lot more potential for monetisation:
The exact game you described, but rather than the game being the end goal, instead, you focus on the foundations that the game is built upon, and have the game be a tech demo for an educational, learn-to-code driven game engine.
Prioritise all of the game design tools for building the game such as the world/quest editors and make sure you have some way of supporting different languages, allowing custom assets to be easily imported, etc.
Make it nice and easy for people to build on top of - in an ideal world, it should be possible for someone to decide to make a module for an esoteric conlang and whip up a simple proof of concept adventure with your framework in an evening or two.
Then you can provide it as a subscription based online platform with some sort of limited free trial, a selection of pre-made official modules for individuals and organisations who pay, a “module marketplace” where people can design, share, and sell new adventures (where you take a cut, of course) and self-hosted (or separate) instances for schools, colleges, boot camps, and so on. who want to provide a series of adventures as supplementary learning material for classes.
I think if you put some effort into this you could make something really cool and successful. But it’s definitely a huge undertaking. If you want to take on the challenge, let me know, maybe it’s something we can work on together if you’re interested.
Personally, and I’m going to be completely honest and frank with you, I don’t think I would play it, (though I’m definitely not the target market), but also, it’s not likely that I would recommend it to someone who wants to learn to code either.
Usually when people want to learn to code, it’s because they have some end goal in mind - they want to make an app, game, website, they want to get a job as a developer, data analyst, QA, etc. or they have something in particular which interests them - such as machine learning, embedded design, blockchain (yes, I know it’s a scam), digital music/art, etc. - and based on what they want to do, I’d recommend them some very different pathways, and it’s very unlikely that your game would be the best use of their time, to be honest.
I appreciate the honesty, and I see your point about the game not appealing to a lot of the target audience. Your suggestion with the platform-first approach and the monetization options sound like a good idea, but it is not the direction I’d want to take. I definitely have to think about it more and figure out, how to address the points you made while still pursuing a project I fell invested in.
I think the other direction you could go is to aim for a younger demographic than you’re likely thinking of. Maybe something like 12-15 years old. It’s very important to note that I’m not suggesting you make the story/aesthetic “kid friendly”, if anything I’d suggest more the opposite, kids love things that seem really adult - but the actual challenges and content itself, keep it tuned to a younger audience. I think that age group would get the most out of a general-purpose “learning to code” educational game
I think your idea sounds neat! Have you ever played any Zachtronics games? Those games have kind of a “programmer” logic to them, and might be useful to you in getting ideas on how to dress up programming concepts as game mechanics. I could see Zachtronics fans really digging your game idea. One of their games, Exapunks, is literally about being hacker and doing actual (simplified) programming to beat levels. Another called Opus Magnum dresses up the concept as a “transmutation machine” that you must program to create alchemical creations.
I haven’t played any of these games before, but if a find enough time, I’ll look into them. Thanks for the suggestions!
Zachtronics games are on another level, really. I think what sets them apart from “edutainment” games is that they’re not really made for someone to learn programming, they’re a labor of love for people who love to program. And as a result, they just happen to be the most attractive resource to learn programming that I’ve ever seen.
I think that’s a good lesson that all games that want to be educational should take away: don’t feel the need to force material down the player’s throat, instead make a game for someone who loves the subject matter, and the rest will take care of itself.
Have you played other programming related games?
Here’s a search result from Steam: https://store.steampowered.com/tags/en/Programming/?flavor=contenthub_toprated
A few that stick out to me, mostly because I’ve played them and they’re pretty good, are Human Resource Machine, While True: Learn(), Opus Magnum, and Shenzhen I/O. I would say Bitburner too but that’s more-so literally programming.
I think your idea is interesting, but based on the examples I’ve listed, which I must admit is not a huge sample, most of them are played in a sort of GUI experience sort of way. I think it would be very, very difficult to translate the core concepts of programming to a side scroller.
However, as I said, I think it’s a really cool idea, just thought I’d point out some similar games in case you had never heard of them.
I think your idea is interesting, but based on the examples I’ve listed, which I must admit is not a huge sample, most of them are played in a sort of GUI experience sort of way. I think it would be very, very difficult to translate the core concepts of programming to a side scroller.
Unfortunately, I haven’t played any of these games, but I have scrolled through that category myself to see what’s out there. I agree with you, that a side scroller is probably not the best option to introduce programming concepts from a game-mechanic perspective. I think didn’t really communicate well, that the way I envision my game differs a bit from these approaches. I don’t actually want to focus on specialized in-game mechanics that help to visualize algorithms or programming concepts. Instead, the game is meant to be a very mechanically trivial, story focussed frontend, that makes achieving the programming tasks more exciting.
You could maybe make some kind of a lemmings style game where functions change the behaviour of the creatures in order to achieve some kind arbitrary of goal. Like arranging their colours based on the rainbow, or something to that effect. The creatures would be a stand in for data, and the things the players can do manipulate the data to achieve a specific outcome. Is that more what you were thinking?
It’s a zachtronics-like, but in a side-scroller? I like coding games but am not sure the combination works just like that. Personally, I’d expect the coding to be relevant to the world, not an unrelated theoretical exercise. Project Euler randomly tacked onto Mario would be a nope for me, but using coding as a meaningful part of the game, so it does visible, tangible, useful or just cool things? Sign me the fuck up.
If you haven’t tried playing Zachtronics games, I’d give them a try. They’re a major subniche of “coding games” and could be good for some inspiration. They’re all basically coding either in spirit (SpaceChem, Magnum Opus) or directly (TIS-100, Shenzhen IO, Exapunks…), usually with some twist. Their languages tend to be “fake assembly”, simplified and stylized.
Personally I’ve rarely had as much fun coding as in my early ComputerCraft days (computers/robots in Minecraft) because it… did stuff. I was already a coder, but was not used to seeing it translated into “physical” actions. Like the difference of learning/teaching Python with text-based UIs and exercises, vs a “robot” that drives around in the room and does things.
I’ve had some ideas along these lines myself, borrowing a lot of Zachlike inspiration, but I was going to go topdown or just omit the “overworld” entirely.
+1 for computercraft. It was super satisfying getting them to do even trivial things, but a huge reward when you pushed them beyond that.
Though I did find, in order to retain sanity, that I had to remote into the minecraft server and use an IDE rather than the somewhat awful experience of writing lua in game without any IDE tools.
I think there’s something like it someone suggested to me once, but something like an RTS where you code up your units with different behaviors seems to me like something that could be fun for novices and more experienced coders alike if done correctly. You probably wouldn’t want to support a full coding language, but taking something like Python or another scripting language that supports objects and providing a small set of legal commands to include in your unit code would be interesting to me. If the base was a campaign that encouraged creative problem solving to use your hand coded unit behavior, and you added a simple way for players to share code with each other, pit their unassisted bots against each other, and maybe even added the ability to write/pin commands to change behavior patterns for an actual real time head to head, I might play the hell out of it.
I also might play for 5 minutes and never touch it again though.
Allow me to introduce you to Screeps. You’re welcome.
That’s probably the one I’ve seen before. It definitely does look like it has potential.
My biggest issue is actually finding the time to really dive into it among all the other stuff I want to play. I could see absolutely getting into a black hole with it some time I start though.
Thanks for helping me find that to at least put on my wishlist. For now between BG3 and Starfield I don’t need another giant time sink, but I’ll definitely keep it in mind when I’m looking for something different.
It’s not quite similar but you might like to gain inspiration from Else heart.break() on steam
Thanks for the suggestion! I’ll look into it when I find some time.
Wow! This sounds really interesting. I am definitely intrigued by your idea. If this was an existing game today I would for sure give it a chance.
yep, any and all educational games will get played. there are a whole lot of idle young minds out there. i would say the main issue is whether or not you can make money from it. if you’re able to supplement your income while you work on the game, then i would say absolutely go for it.
I don’t see how the gameplay helps with the programming tasks, and I don’t see how the programming tasks enhance the gameplay. Let’s assume the game is already finished, I think the game part would be improved by replacing the programming part with a simpler, more rewarding mechanic. And the programming part could be improved by getting rid of the gameplay, as it would remove distractions. Pulling off educational games that people actually want to play is notoriously hard because of conflicting goals. IMO you should aim for a more integrated experience with in-game “coding” and direct feedback.
This reminds me of Hack ‘n’ Slash, except it’s less about programming and more about changing in-game objects on the fly
deleted by creator