This is similar to how I evolved the AI for my game Hexborne (Think X-Com meets Magic: The Gathering). I had agents designing sets of behavioral heuristics for bots (as "genes"), then enter them into 10k+ match tournaments in an iterative process. After each tournament agents could inspect all the heuristics and try to craft updated heuristics to improve their performance. Winning heuristics got a full statistical validation before being rolled into the baseline set that all agents build on top of.
To multitask I did all this over a multiplayer game server to harden the netcode and ferret out softlocks.
deadbabe 3 hours ago [-]
It’s amazing how people with AI are discovering classic techniques for balancing games (i.e. Monte Carlo methods, genetic algorithms…), but somehow implementing them way less efficiently, and without mathematical rigor, basically just having an LLM do the work of deterministic math functions.
CuriouslyC 3 hours ago [-]
You're being presumptuous, I explicitly was explicitly thinking of a GA when I set this up, and how is it inefficient when the AI reduces the number of non-viable policies (and thus the number of wasted simulations) by multiple orders of magnitude compared to randomized policy generation?
nizarmah 39 minutes ago [-]
There's a lot of information in this world. It's fun stumbling on that information sometimes. For me personally, it makes learning much easier and gradual, than reading about something from a book or LLM answers.
idjdiejciejfj 3 hours ago [-]
…what makes you think people are implementing them less efficiently? I’d be inclined to agree with you but your reply reeks of “no true Scotsman” strawman arguments that it’s hard to take it seriously.
fragmede 6 minutes ago [-]
Someone hasn't seen xkcd 1053 recently enough
PaulStatezny 5 hours ago [-]
The rules:
* Goal: be the last fighter alive.
* Turns: each round every fighter takes one turn. Turn order is randomized every round.
* Actions: Move one cell up/down/left/right, attack an adjacent enemy for 15–24 damage, or wait. An action consumes 1 AP.
* Rocks/Obstacles: 4 random impassable cells.
* Power-ups: Gold +1 AP per turn.
* Kills: the killer gets +1 AP per turn, and heals 50 HP (no over-heal).
(Unclear while watching replays, found in README.)
vessenes 20 minutes ago [-]
Fun! As we know from 2024, these models can play diplomacy relatively well. Might I suggest they are allowed to talk to each other between rounds? Maybe up to two statements and emoji response to a DM. I think you’ll see more interesting gameplay.
isoprophlex 4 hours ago [-]
The more advanced models clearly think ahead; they strategically wait for the others to mess eachother up, edging close to the battle but not so close they get caught up in the inital fighting. Then in most games they can finish off the survivors.
Makes you wonder, with enough intelligence and thinking budget, do they start to try to talk it out amongst eachother, staving off violence for longer and longer?
antoniojtorres 2 hours ago [-]
Might have to add the battle royale storm/gas mechanic that closes in slowly.
This will be a weird rant, but the dialogue here is a perfect example of how SOTA models are so heavily tuned towards "solving agentic tasks" that they're useless at almost everything else - especially creative tasks.
"Coming for you, Crimson!"
"You'll never catch me alive, Azure!"
That's why nobody has been able to stick these things in a video game successfully, even though it seems like the tech is a perfect match.
It's all a game to them. They aren't afraid for their lives. They're making a mockery out of the world you've put them in. Those are not the words of little pixel people fighting to the death, those are AI abominations making "tool calls", LARPing as little pixel people fighting to the death.
I'm 100% serious when I say that you would've gotten cooler outputs with a GPT 3.5-era model, once you managed to beat it into producing structured output. Llama 2 would be giving the other agent a heartwarming story about how if it kills it there would be nobody to take care of its grandma or whatever, and the other agent would probably spare it.
The output is just so bland and devoid of soul. I feel like we would've found a lot of cool use cases for LLMs, had we not completely maimed their output in the pursuit of getting them to output 3% better TypeScript.
JarJarBeatU 5 hours ago [-]
IMO this is because responding within a json response with all those other fields shifts the distribution to text that's staler.
If you told it to roleplay a pixel knight fighting to the death and provided it responses like "Authur (renamed claude sonnet 5) moves west towards you menacingly", the whole thing would come alive.
I've been working on an AI roleplaying game for a while now and it had felt stale until I separated the story output from the plumbing output (importantly, I do story first and then base the plumbing on that). I think the two just have incompatible distributions.
bee_rider 4 hours ago [-]
I’m not sure what good output in this case would look like. I’d expect “good prose” in a book’s fight scene to be action oriented and show something about the character or reflect something about the narrative, so, it should often not involve talking.
I guess realistic fights are just a lot of shouting and semi-coherent thoughts (because people don’t have time to come up with a full clever quip in that sort of situation).
Lerc 5 hours ago [-]
I think much of that is not due to limitations of their capability.
I think the text is bland because they are aiming to produce bland text.
Make it interesting in any particular direction and someone may not like it.
birdsongs 4 hours ago [-]
> Make it interesting in any particular direction and someone may not like it.
The state of so much media and art these days. :/
mariofdistrust 5 hours ago [-]
actually, it's mostly the harness' fault. messages have a character limit of only 50 and messages above that are silently trimmed. there's no space for anything interesting, though they still shouldn't have been that bad.
46469585 5 hours ago [-]
[dead]
rao-v 5 hours ago [-]
I love this and the aesthetic.
I've been jamming on a sort of Corewars (remember?) / Starcraft hybrid battler where LLMs write sandboxed Lua programs to control bots fighting out 10-100 vs 10-100 tank battles. Every quarter the LLM gets a full view of the situation and can reprogram all the bots to better adapt strategy etc.
It's good fun to watch - excited to share soon.
sleda 6 hours ago [-]
Since the page exposes frame-by-frame playback, a shareable replay link would make it easier to compare decisions across the four models.
Where to start? Doesn't have any match. Pressing replay does nothing...
NBJack 5 hours ago [-]
I literally just indulged in some vibe coding to make a battle arena of neural network driven "agents" fighting it out for the rights to proceed and evolve. I managed to get some decently efficient little murder bots out of it. You now make me want to try and throw an actual model at the fight.
falsaberN1 5 hours ago [-]
This amuses me greatly. Nice!
Although it'd be even funnier to have some sort of thing like Omega (1989 programming game) where their programming determines the outcome. Heck, if you don't do it I might, although I don't have any good server infrastructure to host it.
orliesaurus 6 hours ago [-]
Unusable website on Android running Chrome latest (can't scroll)
hp6 5 hours ago [-]
should be hopefully fixed
TomGarden 4 hours ago [-]
This particular itch.io stock graphics asset pack is so widely used it makes my eyes glaze over, but such a fun idea!
TomGarden 4 hours ago [-]
Would love to see it with some custom pixel art for the models, it would also become a lot more readable :)
ThouYS 5 hours ago [-]
holy guac - the one game I watched, fable just sat around and waited for the other agents to drain each others lives. it then picked them out one by one
leoooodias 4 hours ago [-]
Same. A solid strategy.
kouteiheika 6 hours ago [-]
Fun, but considering this puts `claude-sonnet-5` at the first place isn't it a little... iffy when it comes to measuring intelligence?
hp6 5 hours ago [-]
I was also surprised by this, from a proper benchmarks perspective your right, this is iffy. To make it a legit I would have to increase the number of games significantly as well as understand how much of it is random and how much real signal, not to say make the game more complex.
But all of it would kill the fun)
charcircuit 4 hours ago [-]
I watched a battle and the agent walked up to each other one and just killed them while the others didn't attack even once. There is something wrong with how the agents are setup.
coryrc 6 hours ago [-]
Code link didn't work for me.
On mobile, I don't have enough room to scroll the background so I got stuck in a long text box.
hp6 6 hours ago [-]
can't reproduce the bug, could you share your phone model and browser name?
hp6 6 hours ago [-]
code should be public now
6 hours ago [-]
michaelastreiko 5 hours ago [-]
Nice — an actual match to watch instead of another leaderboard screenshot. Curious how readable the "why that agent won" signal stays after a few rounds.
josh-wrale 5 hours ago [-]
Bug: Music skips around in autoplay.
Mistletoe 5 hours ago [-]
So that I can see the future we shall all enjoy, can you do this with the superpowers of earth and their known nuclear weapons and armies?
Rendered at 22:23:55 GMT+0000 (Coordinated Universal Time) with Vercel.
To multitask I did all this over a multiplayer game server to harden the netcode and ferret out softlocks.
* Goal: be the last fighter alive.
* Turns: each round every fighter takes one turn. Turn order is randomized every round.
* Actions: Move one cell up/down/left/right, attack an adjacent enemy for 15–24 damage, or wait. An action consumes 1 AP.
* Rocks/Obstacles: 4 random impassable cells.
* Power-ups: Gold +1 AP per turn.
* Kills: the killer gets +1 AP per turn, and heals 50 HP (no over-heal).
(Unclear while watching replays, found in README.)
Makes you wonder, with enough intelligence and thinking budget, do they start to try to talk it out amongst eachother, staving off violence for longer and longer?
"Coming for you, Crimson!"
"You'll never catch me alive, Azure!"
That's why nobody has been able to stick these things in a video game successfully, even though it seems like the tech is a perfect match.
It's all a game to them. They aren't afraid for their lives. They're making a mockery out of the world you've put them in. Those are not the words of little pixel people fighting to the death, those are AI abominations making "tool calls", LARPing as little pixel people fighting to the death.
I'm 100% serious when I say that you would've gotten cooler outputs with a GPT 3.5-era model, once you managed to beat it into producing structured output. Llama 2 would be giving the other agent a heartwarming story about how if it kills it there would be nobody to take care of its grandma or whatever, and the other agent would probably spare it.
The output is just so bland and devoid of soul. I feel like we would've found a lot of cool use cases for LLMs, had we not completely maimed their output in the pursuit of getting them to output 3% better TypeScript.
If you told it to roleplay a pixel knight fighting to the death and provided it responses like "Authur (renamed claude sonnet 5) moves west towards you menacingly", the whole thing would come alive.
I've been working on an AI roleplaying game for a while now and it had felt stale until I separated the story output from the plumbing output (importantly, I do story first and then base the plumbing on that). I think the two just have incompatible distributions.
I guess realistic fights are just a lot of shouting and semi-coherent thoughts (because people don’t have time to come up with a full clever quip in that sort of situation).
I think the text is bland because they are aiming to produce bland text.
Make it interesting in any particular direction and someone may not like it.
The state of so much media and art these days. :/
I've been jamming on a sort of Corewars (remember?) / Starcraft hybrid battler where LLMs write sandboxed Lua programs to control bots fighting out 10-100 vs 10-100 tank battles. Every quarter the LLM gets a full view of the situation and can reprogram all the bots to better adapt strategy etc.
It's good fun to watch - excited to share soon.
Although it'd be even funnier to have some sort of thing like Omega (1989 programming game) where their programming determines the outcome. Heck, if you don't do it I might, although I don't have any good server infrastructure to host it.
But all of it would kill the fun)
On mobile, I don't have enough room to scroll the background so I got stuck in a long text box.