In BrawlWood, most of the top Ogre scripts are using an unfair strategy to win games. They spawn 1 shaman (30 gold), and two munchkins (6 gold each). They use the shaman to shrink the munchkins and send them for the gold. They run crazy fast while shrunken so they make it to both gold patches wayyyyy before the human team can. They then proceed to pump out a ton of units. Some of the top ranked guys on the Ogre side right now will have 27 total units while I have 5 total only a few seconds in to the game. Once they have this initial spawn all they have to do is have the units take random rushing paths to the base, ignoring everything else, and it’s essentially unstoppable. It also has the effect of leading the burls in towards the human base way earlier than they should be able to. Seeing as the shrinking is meant as a weapon, it’s stupid that they can use it on their own guys to their extreme benefit. I believe the original intention of having the units move that fast when shrunken was to give them a chance to retreat. In my opinion this is a bug that should be fixed to maintain proper balance/competition. I’ve seen several Ogre scripts do very well without the use of this strategy, but they obviously spent much more time on their code. Because of this issue, my human side script that I’ve spent several nights coding different strategies/functions in to can be beaten by an ogre script that was thrown together in 30 minutes or less. I’m ranked 2nd place on the human side right now (was ranked 1st not too long ago) and I can’t even come close to beating most of the guys in the top 10 on the ogre side because several of them are doing this.
I also want to point out that shamans run faster than archers. Right now I’m paying 20 gold per archer (40 gold) and sending them off. Between the two munchkins and the shaman, they are only spending 2 more gold than I am and are absolutely guaranteed to get to both gold patches first with the shrunken munchkins. If this issue were eliminated they would instead have the choice of spawning shamans and sending them to the gold patches, but if they wanted the guarantee of getting both patches they would need to spawn two at the cost of 30 gold each. They may instead opt to only spawn one and hit one gold site then spawn a bunch of munchkins instead. At least then it would be balanced and they wouldn’t have over 5 times as many units as the humans only seconds in to the game.
I am currently the number 1 ranked orge, Aljalasi, and I agree with rmatte that brawlwood is extremely ogre favored right now. Personally I started out playing as human, but then when I saw my nice human strategy lost against some of the most basic of ogre strategies, I tried to see if could make a strong ogre AI instead.
I would argue that more would have to be done than just changing the shrink spell. Right now, I would like to state the following things about balance.
Munchkins seem to be very strong.
Soldiers seem to be pretty useless, as they can simply be ignored for two reasons. Firstly, they have very low damage/(cost*time) i.e. DPS/cost. Secondly, it seems quite impossible to hinder the movement of an opponent in Brawlwood. In a lot of RTSes you see players put a beefy line of “tanks” up front with high dps ranged units behind them. But this fails if the enemy can just walk right past the line of “tanks”. W.r.t. the point of being able to hinder enemy movement (block enemies), I don’t really think this is a design flaw, as it is much easier to get started if movement is flexible.
100 HP for the bases seems very low. Why would you ever want to attack a soldier, if you could kill the base instead (both 100 HP)?
Furthermore, I think there is a bit of a design flaw in how units can communicate with each other (or what information objects have access to). It turns out you do not really need to communicate using say/hear, except for some initialisation, as you can pass references to units instead. In my ogre AI I do not exploit this (there is no need, ogres OP), but I do store a lot of information in my ogre base which it seems I should not have access to. My ogre base will know about all friends and enemies currently on the field and can e.g. query their positions and hp at will. It will know about any enemy any of my minions has ever seen. Also all my minions have a reference to the base, so through this they know all there is to know about all friends and enemies as well. I was planning on using this to spread out my troops and deal with artillery effectively, but it feels pretty cheaty.
Any customly defined state of any enemy could also be read, which is not so nice IMO as it allows you to see your opponents plans.
Ideas for solving this
To prevent communication like described above, the following might be a reasonable solution. I would argue that getEnemies() should yield an array of clones of unit objects, rather than references to the units themselves. We should make clones that only have the standard attributes like pos, id etc and not any custom variables.
It seems the matter of communication between friends is more subtle.
How to beat my AI
Just make sure your artillery and archers are in position to shoot my munchkins as they storm your south tower. If you cannot prevent the tower from falling, try to get the last hit off, to deny me the bounty (I’ve seen this happen by accident when an artillery piece fired at the munckins that were attacking his tower).
If you want to make use of the cheaty data I store (but do not use), you can simply use (assuming your unit can see one of my units) this.getEnemies().base.enemies and this.getEnemies().base.friends, which should give you lists of all my units as well as your own.
Nicely said. I actually specifically engineered my guys to beat you one time for fun, but I found that it sacrificed my overall score to do so because said strategy didn’t work against a lot of other tactics and I would end up losing against many of the lower ranked guys with it. I found that coding an adapatable/“smart” strategy meant I would beat almost everyone except the top 8 ogre scripts which are currently all using the aforementioned strategy. The problem is that it’s virtually impossible to determine someone’s strategy right off the bat and adapt to it. You need to start out like a game of chess, making the best first moves in terms of tactics and then adapting as the game progresses. With this shrunken munchkin tactic that’s really not possible. I think you’re right about the other things that you’ve mentioned as well. I specifically pointed out the shrunken munchkins issue because preventing that would help the humans beat most current ogre scripts, but because of the way the ogres play right now I think that most people are just being lazy with their scripts. More sophisticated scripts would pose a serious challenge, no doubt. At the end of the day though, I really do think fixing the shrink ability would be a good first step, and then they can adapt the other things you mentioned if they are evident issues. We can’t even tell if they are or not right now because the skilled coders just do the shrink rush and there’s no competition between the two races when that’s used.
I agree that this is a great first step. Do you know if shamans occur in other scenarios / games? Do you expect Nick and the other “admins” want the games to be fully consistent, so that the shaman in one game has to be identical to the one in the others? It may be straightforward to fix this ourselves (just removing the speed buff might be fine).
I can also imagine the change would be considered too minor and that other issues like the ones we discussed should be fixed in one go. By the way, it may also be nice to know if your unit is shrunken/slowed.
I hope somebody can provide more information on all of this. I have been reading a little bit about coco. I’ve also downloaded the local tools under “getting started” on github, but I ran into ulimit trouble for the brunch tool (even when sudo-ing). Maybe I will ask a proper question about that.
Maybe I will change my AI to not spend any gold received form coins. That should make it more fair : ). Looking forward to meeting you again in battle (or elsewhere : ) )
Another thing that I’ve noticed which makes no sense is that throwers cost the exact same as archers, have the exact same movement speed, the same health, the same attack range, and yet they deal 11 damage while archers deal 10 and they both have the same firing rate. That works out to 18.33 DPS for throwers and 16.67 DPS for archers. The throwers should have their range reduced because it’s not realistic for someone to be throwing a spear the same distance as an arrow can travel in the first place, and reduced attack range would make up for the extra damage that they can deal and actually give archers a chance when going up against them.
I think the disadvantage throwers have to offset their higher damage is that their missiles travel slower, so that you might dodge them. In the shrunken munchkin rush I’ve seen the shrunken munchkins “dodge” arrows by a great margin, so I guess this should be well possible, especially because an AI can have 0 reaction time.
Interesting, good point. I hadn’t really thought of that.
Yeah, I’m definitely planning on nerfing the shaman shrink munchkin rush, which I only discovered too late. See this thread. It’s more a question of when and how to do nerfs and API changes and other balance fixes, since they will affect everyone’s previously-optimized code, which isn’t very fun. I outlined a few ideas in that other thread. More to come on this soon; suggestions are welcome.
In terms of how to handle nerfing the shrink rush (making it so that shrink can only be used on enemies), I would simply make an email announcement to everyone currently participating in brawlwood advising that it will be nuked and that they have one month to update their scripts not to use it. I think giving them one whole month is quite generous, and then at the end of that month those that either chose not to update their scripts or couldn’t be bothered will end up with broken scripts and the contest will finally be balanced.
Okay, I nerfed it. When shrinking an ally, the ally is no longer sped up. (At some point I’d like to redesign Brawlwood to not have the coins in the corners, then restore the shrink speedup, since it can be interesting.)
There is no point of shrinking your ally anymore.I mean why would I simply shrink my allies to reduce their HP LOL.
The point was to nerf it but do it in such a way that didn’t break people’s existing scripts codewise until they had a chance to fix them. It’s obviously no longer an advantage to shrink your own guys (it shouldn’t have been in the first place).
Dang. Just yesterday I had the idea to try this out.