Ideas for rebalancing arena levels

When we make a new arena level, we do the best we can to balance it with the strategies that we, in-person playtesters, and Adventurers can come up with, but once everyone brings their might to bear on the level, we often find balance problems. For example, in Dungeon Arena, Tharin is too strong, the Shaman is too weak, bace races are too effective, and the this.say() method of ordering troops is not as good as the new this.command() we developed for Greed.

I think that if we want to do things like rebalancing existing multiplayer levels with lots of solutions, it might help to do so on a rolling basis, where the old levels and leaderboards are still available, but then there are fresh boards with updated versions of the level–new “seasons” as it were–and by default, you just see those. And then with each season, we add things (like extra heroes) and fix balance issues from the last season. So for Dungeon Arena, we’d nerf the base race effectiveness, bring in a couple other heroes, nerf Tharin’s terrify, increase the shaman’s power, maybe up the runtime to 90s, add execution limits, maybe change it from “destroy base” to “destroy all enemies”, switch from say to command for ordering minions, and maybe even allow building a second hero after 30s.

What do you guys think? We would probably want to change APIs around, so we wouldn’t auto-submit solutions from earlier versions of the level to new ones. Whenever we rebalanced (maybe every three months?), you’d probably get an email saying something like, “New version of Greed available with fresh leaderboards and new units; come play and update your strategy!”

Also, if you have a good sense of the strategies for the various levels, what other tweaks would you suggest? I listed some ideas for Dungeon Arena.

For Greed, units are too slow, so defense has too much of an advantage over offense to make any interesting early attacks effective. The Fangrider, Griffin Rider, Brawler, and Captain are too weak. There aren’t enough coins spawning in the saturated peon/peasant scenario to really separate great gold collection strategies from good ones in the late game. And total symmetry, though easier to balance, is not as interesting as having a different mix of human vs. ogre strengths.

In Brawlwood, due to the cheese (which I discovered too late) of the ogres shrinking their munchkins and grabbing all the coin first, ogres are unstoppable. We’d probably skip the early coin grabbing, and maybe try some other form of gold expansion tradeoff. The level also runs really slowly, usually because of the line-of-sight checks around the various obstacles, so we might come up with a new layout that lets us skip those checks. It would also be great to add easier ways to do waypointing. Maybe add another unit type or two, or heroes?

I haven’t actually looked at what the balance is like for Gold Rush. What are some ideas for improving that one?


I hope you don’t mind my very long reply :stuck_out_tongue:

I like the idea of hosting the original level as well as one that keeps changing. Due to the nature of this game, aimed at teaching programming, there are some that would prefer things don’t change at all. It would just be simpler for them to not have to worry about that changing. For those of us that are familiar with programming and find it easy to write this code, it’s great to see it changed for balance. In almost any game that’s not zero-sum, it’s difficult to balance. Games like League of Legends change quite frequently as a result. It’s a great comparison actually, since they have similar issues with characters being under or over powered (where they nerf into the ground or rework respectively to balance). They even have strategy issues, like when they added the shield to towers early game to compensate for fast pushing strategies. Regularly changing your code for balancing reasons seems perfectly fine. The idea isn’t to make any specific strategy unplayable, just to make playing against it possible. There always has to be a “best” strategy, but it has to be possible for people to beat it, while obviously possible that you still lose to it. If you think about the base race strategy now, we need to still be able to use it, but lose to sophisticated defense code.

The UI for each level would have to be clear in stating which version it’s running. The user should have an option to change it relatively easily. If you called the original one Legacy Dungeon Arena, it might be intuitive enough.

I’m definitely all for new champions and abilities. The game becomes rather stagnant, I think, if nothing really changes. We want things to evolve constantly to keep it interesting. Again, for people that don’t like this, they can just play the level that doesn’t change.

As far as seasons go, I feel like a month is a good time frame. Any less and people won’t try out all the heroes, and any more and people will get bored. Since the game is relatively simple compared to many other games that get balance fixes, you have to keep it fresh. I suppose it may be difficult for you guys to get the work done regularly enough whilst working on other levels though.

As far as actual balance fixes go, I think you guys could test the effectiveness with our submissions. Testing enough different submissions should give you an indication of whether things are effective. In particular you can test the base race strategy this time around, and see if fixing terrify or whatnot makes it work out better.

One thing I would really like to see going forward is better API documentation. It’s really not clear all the things I can and can’t do, especially with the say command. Maybe that’s a proponent of the new command() method being better though, and it might already be somewhat fixed.

Another thing I’d really like to see, before any of this is done, is to see the code fixed for all the result errors. There’s so many that are wrong that it’s a serious problem. Hell, today I even saw my friend get a different result than myself with the same code. While I saw several losses against the same opponent, in testing, he saw several wins. I know you guys are working on it, and I appreciate it, but I do think this is the biggest problem with the game right now and needs to have the top priority.

1 Like
  1. In Dungeon Arena there must be a way to monitor your own base (to see its health, for example).
  2. In Brawlwood the most frustrating thing is that you must constantly switch between different code windows and do the same changes in the same functions. I suggest that each player can create an own lib, and in each window this lib is automatically included.
  3. All the parameters must be accessible from code, like map.startX, map.endX, unit.speed, unit.range. It is not fun to hardcode everything manually or clicking the units and copy-pasting the params from ui. This also includes the statement limit and the number of statements used till the moment, frame rate and other things.

The one problem I see with your month idea is that months are different lengths

That shouldn’t matter much. they could simply pick the first of the month every month. or 3rd. and so on as long as it’s not a day right at the end of a month, it’s fine.