BerryBots forums

My berrybots fork
Page 1 of 1

Author:  sadd [ Sat Jul 06, 2019 10:59 pm ]
Post subject:  My berrybots fork

So I guess basically nobody will ever read this, but anyway.

I've made my own berrybots fork as a mentioned in another thread. I think I will do quite a bit more of changes to the game, since I think it will improve the experience. Of course I love the game in general :).

Github link is

Changes are mainly
- Wall and ship-ship collision calculation is much more accurate now. Bots like my markII-B and Frohman's Sanic kind of abused this before, since it was very difficult and unintuitive to predict enemy position after a wall collision. Now it follows "continuous time" or "real life" logic.
- Time stepping in general is more accurate now; mainly this affects lasers. It was possible previously that fast flying bots "jumped" over lasers in-between integer time steps, since laser-bot-collisions were only calculated once each time step. Again bots could abuse this by just going really fast. But now the game physics include laser-bot-collisions basically in a continuous time sense, like one (or at least I as a new player did) would expect.
- Despite the two previous points the run time is a little bit faster, or at the very least not slower as far as I can tell. Not that the physics part of the game really matters, but anyway...
- Wall collision damage and ship-ship collision damage is included now, but can be turned off by the stage if desired. Combined with the previous points this really makes "reckless" wall bouncing not a viable strategy anymore, since I don't think it promotes any clever ideas.
- I included relativistic kinematics. Mainly I did this to limit velocities in a natural way. Again this is switchable by the stage. I'm still fine-tuning some aspects of it (e.g. what the "speed of light" should be, and if lasers should actually travel with "speed of light" or not, i.e. Star Wars "lasers" or real lasers ;) ).

Just putting it out there. I would be pretty thrilled if anyone would chime in :), but I continue anyway... I'm pretty convinced that most idea or implementations I've done are the right way to go for the game, but in some aspects I'm not so sure. I'm open for ideas in any case :).


Author:  sadd [ Mon Jul 08, 2019 1:32 pm ]
Post subject:  Re: My berrybots fork

So, here my current thoughts.

Aside from some cosmetics (like some sparks when colliding with walls to visualize something happened/damage was dealt) I'd like to have more depth to "tools" available to the bots in battle. Obviously it's difficult to not compare berrybots with robocode, so hopefully people can forgive me for that :). I never really played robocode though, so I might misunderstand some things.

As of there are no defensive tools in berrybots aside from dodging. Robocode has "bullet shielding" (one can destroy enemy bullets with their bullets). I'd like to either include that, most likely in form of a new weapon in addition to laser and torpedos, or some form of "shield". The shield could partly or fully shield from some or all damage, could restrict firing weapons while on, could use some sort of resource (I would say energy, but that's what berrybots' health is named, but maybe even the health?), could slowly replenish over time, could be directional only, etc...

Other than that I don't like that there is not much drawback for firing lasers. They don't cost any resource (robocode bullets cost health, but I don't really like that, especially that you get health back when actually hitting the enemy), so you fire basically always when the laser gun is ready. Especially considering all lasers have the same speed and deal the same damage. So there is no choice regarding not firing (unless I would hit myself) or how strong.

Torpedos don't seem to be strong enough to be significant in strategies. I think every bot who registers a fired enemy torpedo should kind of think "oh shit, now I really have to dodge/defend properly". So I would probably increase damage, but limit number of torpedos each bot has (maybe 5 or 10), so firing them should not be done too willy-nilly either.

It's kind of difficult to judge how those different ideas would play out in the end, i.e. how they would affect game play in the long run. I don't know how a good work flow would look like, but it's a lot of work just to implement those ideas just to check them out... So I would appreciate any thoughts on this :). Otherwise I guess I just make a decision by myself.


Author:  sadd [ Wed Jul 10, 2019 9:40 pm ]
Post subject:  Re: My berrybots fork

Here is how I proceeded:

I introduced "power" for the bots, which is a resource every action -- firing lasers or torpedos and thrusters -- costs. Balance-wise I started such that a beginner bot which fires all the time when gun heat is low enough and uses the thruster at full throttle basically uses almost all power. This means beginners can just start as in the "vanilla" berrybots and don't have to care about power at first. As a side note it's a little bit unlucky berrybots uses the word "energy" for hit points, and now I have "power" as well...

Then I introduced shields. A bot can charge shields by pumping power into them to mitigate damage from all sources. It's not super easy though, since the power in the shields dissipates fairly quickly (40% each tick as of now), so charging shields has to be timed well. Shielding never completely negates damage either and has diminishing returns if a lot of power is pumped into them. But I want to promote well timed damage predictions as well as short aggressive strategic moves, but not just easily mitigate damage overall just by blindly shielding. The numbers probably need some tuning in the future, but overall I think it's a nice approach. As mentioned above power is already sparse when firing lasers, torpedos and thrusters all the time, and this is intentionally so "old" bots without shielding are still pretty viable.

I changed torpedos to an ammo system (10 per round) and reduced the torpedo heat (to 40 from 100 for now). So in theory one can fire more torpedos in a short time. but is limited in total per round. As I said I want the bots/players to have the option to have short time strategies within a battle, instead of exclusively the continuous orbiting and wave surfing (but obviously not too much eiter). Think of a bot which charges up shields heavily, charges towards the target bots and thus forces most target bots to orbit in a specific direction, then fires multiple torpedoes in the target bot's path. At least I'm hoping that this way different strategies will evolve and responses to those strategies, etc.

I added animations for wall and ship-ship collisions, and for the shields (but not in the replays yet).

There are probably some things I missed or have to be cleaned up a bit.

My next goal would be to probably refine the laser "gameplay" a little bit. I want to have more of a choice than just fire yes/no and angle. Robocode has variable strength and health drain/return (but cost health as well). Maybe variable strength is it, but I'm not sure yet.

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group