6 karma · joined February 22, 2025
Here I focus instead on sheer performance of your code. You 64k of ram is all you get, every move you do blocks you and you get an equal chance to execute your program – e.g. everyone gets a slice of 10'000 T-states per game iteration. For context, on ZX spectum machine, you get 70'000 T-states between frames. So this, potentially, creates a competitive environment, where a bot that takes 500 T-states less to take decision to move and does so earlier, eats you, it wins.
I've been a witness of competitions when people would take "who can make this problem solved the cheapest" and it's fun. So I figured I should try and take it to extreme.
I have been messing around with Z80 processor for some time and given how it's slow and simple I had to do some really dirtry tricks to make game code efficient, and that made me thinking "hey, this has potential as a benchmark, what if I make a competition where speed of decision making is key". Since Z80 Emulators allow for precise tick control, every bot gets equal chance.
And because of Z80 simplicity I was able to go 100% deterministic route: every game has a seed and it's guaranteed that games with the same seed and players end up the same, so players can debug what happened after they've lost, etc.
There are C compilers for it, but I am also curious if somebody with enough Rust-fu just provides a binding for it, since this is technically not about C, but about machine code.