Hello everyone!
I would like to talk about the wood leagues with you.
The text and suggestions below are mainly written about the most recent Codingame contest (Summer 2025, Soak Overflow).
However, this is still a topic to discuss the Wood leagues in general. Their purpose, their design, and how we may be able to create some sorts of guidelines to help make them better.
Disclaimer: of course I don’t work at Codingame so there is no guarantee of anything being useful in the end. I still think a collective brainstorming can be useful, though. We don’t know who might lurk in there!
Some context
Before Soak Overflow, my last bot programming contest was the Spider Attack one.
From what I remember, the wood leagues at that time were a smaller subset of the full game rules and each successive wood league enabled more and more rules. We were still fighting other players, though.
In this recent contest (and it’s not the first one like that, from what I’ve read on Discord), the wood leagues were not pvp. We were not playing against the other players but instead trying to solve small puzzles with specific hardcoded scenarios intended to ensure our mastery of game mechanics.
There are two issues with their current approach, I think:
- They’re not PVP but people come here to fight other people
- They don’t encourage you to make generic code because they expect extremely specific things from you
I understand they’re meant to be tutorials and, as such, I would like to make some more specific suggestions to try and improve them.
The absolute main structural problem they had was that they were not built like a pyramid: instead of adding new things on top of the existing stuff, they would sometimes prevent you from doing what you had learned on the previous turn, effectively forcing a rewrite.
Another issue was that the scenarios were so hardcoded that it was important not to do better than what was asked.
I remember being very surprised in wood 3. The instructions explained the shooting and range but the game then showed me a situation that was absolutely impossible to win. I assumed I had to kill the enemies but no, I only had to strictly and exactly do what was asked. This feels bad and a little unfair.
Now let’s talk about each of them specifically.
Wood 4
This league teaches the player how to move.
Important to learn but hardcoding a MOVE 6 1 is quite weird when we’re supposed to make something smart.
This is a game about controlling territory but this info isn’t revealed until Bronze. I think this could have been an opportunity, though. Add an enemy agent that doesn’t move and is at 2/3 of the board, place our agents on the opposite edge and let people figure out that they need to move closer to the enemy to steal cells.
And if you think this is already too complicated, I’d say simply reaching two corners of the map that varies in size is already more interesting than hardcoding a specific position because you actually need to use variables and to dynamically format the output
Wood 3
This league teaches the player how to shoot and what the shooting formula is. Also the death of enemies by eliminating them when wetness >= 100.
The league asked us to specifically target the enemy with the highest wetness using both our agents.
My main problem with this league is that the immediate intuition is to try and kill everyone and to assume they will fight back. Which, presented like it was, would result in a death.
Moreover, the previous league taught us we could move and this league doesn’t care about it.
I understand wanting to keep things simple but this invalidates what you wrote in the previous league which feels a little wasteful.
We are taught about range and how it affects the damage but don’t need to consider it.
I think a goal of “Eliminate the opponent’s agents” would make things a little more engaging.
Make it a real fight with the enemy that fights back using the real shooting rules. This way, we’re learning in the real environment which means we’re actually making a real AI we can use when we reach the arena.
Make it two agents on each sides with a configuration like the following:
- Enemy1 can be shot by Agent1 directly on turn 1 and by Agent2 if it moves first. If they both shoot Enemy1, it dies. If they don’t, it will kill Agent1 on the next turn. (The specific numbers need to be adjusted to account for the simultaneity of the game)
- Enemy2 can be shot by neither of our agents, they need to move to it before it can be shot.
Now, this is a real scenario with real combat logic and target prioritization you can reuse in the arena.
Wood 2
This league teaches the player about covers and how they reduce incoming damage.
This was a huge wall. The difficulty spike was quite extreme, as reflected by the number of people stuck in it. (28% of all players participating in the contest, 1093 out of 3834)
Moreover, the instructions don’t mention that we HAD to aim the enemy in our optimal_range instead of the one with the actual lowest cover.
I’m not entirely sure how to improve this one. The mechanic itself is very complex to code, the instructions are not perfectly clear about how they work and it is something I almost entirely ignored except in this league.
The one piece of advice I give my friends when I play Codingame bot programming with/against them is “Ignore the complex rules until you need them to improve”.
To me, cover absolutely 100% falls in this category. In a real game, trying to aim for covers will quickly make you lose because of the actual scoring system.
I think this should not be taught at all, it is too advanced. The only reason my friends managed to get through is because I showed them the referee code they simply converted to their language. That’s also what I did.
If we consider it an absolutely vital mechanic to teach, I think it should be simplified. The current one gives us two agents with two possible targets each.
The following changes would make it less overwhelming:
- Only one agent to control instead of two.
- Only need to place the agents beind the best cover, no need to shoot.
- Only shoot the most exposed enemy, no need to move. → My favorite because it builds on the previous two
Wood 1
This league teaches the player about throwing bombs.
This one feels very artificial. No shooting, an agent that can’t even move and needs to skip its turn, enemies that simply wait for their death even though their stats show we should die on each turn.
I don’t think this mechanic needs such an hardcoded and precise scenario.
Simply having two enemies close together behind a cover that can be killed instantly with a bomb is already good progress.
Make it so our two agents die if they don’t move out of the way of the “obvious” bomb placement and we’re now teaching bombs in a real plausible scenario.
Also make the enemies shoot. The enemies should never skip their turn and wait for their deaths. Even if they only hit for 1 damage, they should shoot. Their damage can be tweaked to act as a time limit. The rules are very flexible, we can craft a ton of different scenarios to encourage a lot of different ways to play.
And if by mistake we make a scenario that can be beaten without a bomb but by being smart about shots and covers, it’s fine: a player that wins such a scenario is entirely ready to reach the arena, we don’t need to keep them here.
Next steps
As I’ve said at the top of this message, this is merely my feedback with some suggestions.
I hope some people are interested in the topic as well and will take a few minutes to share their own experience or feedback.
My hope is to improve the Wood leagues so they become a great tutorials that helps motivate people stay and work on the contest!
Thank you very much for reading,
Telokis