Creating a (hopefully) competitive bot using Claude Code.
-
@husky81 said
I am currently trying to build a proper logic for purchase and non combat move.
Have you/ClaudeBot seen TripleA AI logs?
In game
Debug> HardAI> Show Logs
Enable AI Logging =TICK
Log Depth=Finest
Log History To=99AFAIK this is only in memory and not a file.
It shows amongst other things how it categorizes its purchases and how it values the purchase of units and places them where needed.
-
ow Logs
Enable AI Logging =TICKNo, but this is useful information. Am I right to think that this is more about seeing the current hard AI's reasoning? Currently i am attempting to solve the problems on my own (With Opus), I've told it explicitly not to look into the current ai's reasoning because I don't want to reverse engineer that ai at this point in the project.
Of course at some point in the future I could change my philosophy, especially if I either hit a brick wall and run out of ideas to improve my bot, or if i can finally beat triple A's bot, I would be more interested in mining the existing ai for ideas at that point. If there's another reason to look at the ai logs that I'm missing, let me know.
-
s and there counters and then do the same from there. Can see that exploding quite quickly
But instead of just choose between these 3 and 5 ch
I can see the interest in making it do some weird plays, like going for fancy VC play, or doing different versions of KJF. I would definetly be interested in doing that. but currently I'm at the stage of trying to get it to stop doing ridiculous and stupid things like buying all infantry and turtling in moscow, or throwing it's Luftwaffe away trying to kill a naval stack that doesn't even had a single tt under it.
I'm very much at the walk before you can fly stage.
-
@husky81
Does the Claude bot have some simple stacking rules like the following?
Infantry > Artillery
Infantry > Armor
Destroyer > Cruisier
Destroyer > Battleship
Destroyer > Carrier
Destroyer = Transport
As this determines what to buy/place and then move.If attacking it should have Armor in the stack
If attacking 66%+ chance of success, otherwise don't attack.Also if Defending 50%+ chance of success, otherwise retreat
Just so you know , this is not a clone of what the TripleA AI does. It just me putting stuff on the page, for a starting point.
-
The above is only for that map.
It should be based on the units xml contents, not their unit names.So like
Infantry 1-2-1, 3pu as cheapest land unit
Artillery 2-2-1 with artillery" value="true as support/mixed unit
Armour 3-3-1 with Blitz, so an Attack/mixed Unit
Destroyer 2-2-2 8pu as cheap surface sea unit -
@TheDog Currently it a values units by TUV (so cost), but also by "combat power" which is pips + 2.6* hit points, so an infantry is worth 2+2.6=4.6 in a defensive stack, 1 +2.6=3.6 in an attacking stack.
BB's are 4+2*2.6=9.2. This formula was arrived upon by simulating thousands of medium sized (6-12) unit per side land battles, and fitting the value of m in the equation pips + m * hitpoints that best predicted the favorite in the most circumstances. The simulation said that m was pretty flat between 2 and 4, so you could multiply hit points by anything from 2 to 4, then add pips to get a units approximate combat power when in a medium sized stack. (according to Claude)
the attack threshold is 70% to win I believe. Eventually, I want to have this become adjustable by the current board state. Every turn there is a function that the bot runs to test which side is winning, %to win estimate. (currently this function is not great since my training games only involve weak players). but my idea is that the bot will look for trends in the % to win, and if it notices that it's trending downward, or is really low, the bot will lower it's % to win threshold for attacks, choosing the most impactful ones.
So if I can ever get it to work right, it will 1-2 yolo on berlin or Karelia if it thinks it's getting close to the point of no return.
-
@husky81
What do think of having temporary hard ratios for Land, Sea, Air for each nation?
Losses are replaced in these ratios.
For example
Germany Land:80%, Sea:0% Air:20%
Russia Land:80%, Sea:0% Air:20%
Italy Land:50%, Sea:30% Air:20%
You get the idea.This is to see if you can beat your current scores, as maybe your bots focus is too wide?
Ideally these ratios should be dynamic, perhaps based on the nearest VC objectives.
-
n these ratios.
For example
Germany Land:80%, Sea:0% Air:20%
Russia Land:80%, Sea:0% Air:20%
Italy Land:50%, Sea:30% Air:20%
You get the idea.This is to see if you can b
I am not completely opposed to this, but currently the buys don't see to be the problem so much. I think the main issue is having it not leave exposed forces that then get cleaned up cheaply. so the biggest gap is on move planning.
I suppose hard coding objectives could get there, like Japan Maximize pressure on india round 3, Germany take West Russia Round 4. but I would like to not do that if it can be avoided.
-
@husky81 said
like buying all infantry and turtling in moscow,
As Moscow (A capital and VC) has been secured, its 'objective' value should be reduced(halved) , so that the bot AI gives priorities to adjacent TT to secure it even further so it cannot be directly threatened.
the attack threshold is 70% to win I believe
Maybe I'm too aggressive/optimistic, I would reduce this to 66% to see if this is affecting the win ratio.
In the past, this is one of the TripleA improvements I have asked for. In simple terms Germany/Japan is more aggressive than USA/Britain, so a map maker could pick a nations Aggression level to simulate this. -
-
@beelee Yes, Ideally it will be customizable, but all current bots that I am aware of are pretty stupid, mine included.
The developers of tripleA did a great job coding a bot that can play reasonable games (better than mine) without benefit of AI tools, and one that can work on a wide variety of maps. Impressive.But let's face it, at the end of the day, the bot plays some stupid moves. My goal is first to make it play less stupid. At some point it will have tunable agression.
If I ever distribute it, I could look into having some settings that users could control. As is, there are lots of settings in the code that Claude tries to optimize, so I think it would be easy ish to make some of them user facing in a public version.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login