I had a friend who loved games but claimed he didn't have the mind for coding and yet he was tricked into doing it via the game Human Resource Machine and some of his solutions were better than my own with years of experience!
This looks like a lot of fun. What ages do you think it's appropriate for?
I think the easy win condition (which is just to break out of the main loop by doing a quick buffer overflow in bug()) is doable for 10-15 years old
My daughter is 12 and we have fun playing it, the hard win condition (which is forcing your opponent to jump to the game_over() function) I think is harder, but I guess within 5-6 months we can get there.
For adults, I am not sure, some people are super scared of assembly like its made by the devil himself, so might be harder to get them to play than kids.
Wait a second. .. .. A table top board game... which involves assembly coding?
Why I never think about this before? :D
Once a 64bits risc-v code path is stable, does a good enough job, is rid of its "buffer overflows"... how they are going to do planned obsolesence without C/c++ always changing syntaxes?? Poor souls...
PL/I did some things right: string/array bounds checking, stack that grows up rather than down.
I'm surprised no one has mentioned that this is very similar to Core War.[0]
Reminds me of Tierra[1], the "virtual life" simulator.
Haven't read the history of Tierra but wouldn't surprise me if he was inspired by Core War when creating it.
CoreWar is definitely one of ideal programming games (since I like assembly coding). Not many games like it these days, unfortunately, perhaps the closest one is Zachtronics' TIS-100.
Because 90% of HN wasn't born until 16 years after the first release?
Core War got boring because there were known good bots that always won.
And, well, Iiiii'm surprised no one mentioned RobotWar which predated Core War, but wasn't as complex.
https://en.wikipedia.org/wiki/RobotWar
;-)
Good game by the way!
CoreWar is a great game!
But I am not sure its very similar, I got a lot of inspiration from the WarGames (1983) movie https://www.imdb.com/title/tt0086567/
The whole project started as an attempt just to teach assembler, and the game was actually zero choice game like Snakes And Ladders, you have 5 instructions per turn, but on certain places you have to roll a dice and follow the branch: https://punkx.org/overflow/build/snakes-and-ladders.pdf
But then after watching WarGames I thought I can make something where you can just write on top of your opponent's memory.
CoreWar has very different dynamics and I think anyone who has not tried it is missing out.
At some point I thought to actually make the game real-time, as in you can move as your opponent moves, (SMP instead of time sharing like it is now, where you get context switched out in 10 moves), but it was too chaotic. Maybe with the esp32 helper it can be done and be fun.
What part of WarGames inspired you? The hacking basically involved war dialing and password research, no stack overflows! :)
... wait a second are you really punkx?
> What part of WarGames inspired you
The part where they made it play tictactoe :)
> wait a second are you really punkx
Not sure what you mean, its just a name I picked to mean 'punk for X' where X is whatever you want.
My favorite HN comment of all time was by cperciva 16 years ago:
cperciva on July 18, 2007
"Did you win the Putnam?"
Yes, I did.
But my new favorite announcement is this post: I made this game to teach
my daughter how buffer
overflows work.
It just doesn’t get more HN than that. Mad props!
Very curious about the context of that first comment, do you have a link?
Very impressive. Maybe most impressive is that you got your 12 year old daughter to play this!
When can I expect the CHERI version? :-D
> When can I expect the CHERI version? :-D
"CHERI has three central design goals aimed at dramatically improving the security of contemporary C-language TCBs, through processor support for fine-grained memory protection and scalable software compartmentalization, whose (at times) conflicting requirements have required careful negotiation in our design."
:) I don't think so
The game is just a lot more difficult, you have to exploit everything as a UAF
Yeah, I were programming 6502 assembly at 12. Not that easy to do for a 12 year old now with today's computers
It's not too hard on a Raspberry Pi or Microbit
There are seveal books on assembly language programming for various Raspberry Pi systems, such as:
https://blog.adafruit.com/2021/09/21/an-interview-with-steph...
They can in the browser like skildrick but turning it into a game is a great motivator.
https://skilldrick.github.io/easy6502/
A typical age to get into computers back in the 8-bit days.
From time to time I watch Jim Butterfield's Commodore 64 tape: https://www.youtube.com/watch?v=J9WnHuGjZ38 and I think just things were much easier
computers now are more like magic, nobody knows where your files are, or which programs you own or where they are even running.
Dylan Cuthbert once argued that machine code is easier for younger minds because each instruction is less abstract.
https://www.gamesindustry.biz/machine-code-is-for-kids-artic...
I agree, though I don't think that core x86 (especially in real mode) is as bad as he seems to think - it started out as a 16-bit extension to the 8080 after all, and can be used that way.
Low-level computing is even more amazing when you learn how to decode and execute simple instructions with a few logic gates.
Beyond that is in many ways a matter of interfacing and scale (at which point abstraction layers can be very useful.)
It's not an unusual age to get into computers now. It's an unusual subject though! Back in the 8 bit days you didn't have the option of writing 3D games and websites and apps and so on.
We had very crude 3D, Elite and Starglider style, and BBS instead.