Giter Club home page Giter Club logo

battlecode2015's People

Contributors

gopenshaw avatar mgerdes avatar

Watchers

 avatar  avatar  avatar  avatar

battlecode2015's Issues

Tactics are too rigid

There are many examples of this in the matches. We are swarming... then one drone dies and we retreat. Then one drone spawns and we go back. On larger maps this wastes a lot of time. We need a more fluid system that can have many things happening at the same time. We can be pestering, attacking, building tanks, etc. all at the same time.

Bug Navigation

There's problems with the bug when players run into each other. They think the robot is like part of some bigger obstacle or something and try and trace around that obstacle, even if their in the middle of nowhere and the other robot is no longer near them. In MarkyMark I hacked a simple solution that ends the "following wall" thing if they have no actual obstacles around them. It kind of works but I'm not sure you'll like it.

Also I changed how bug is initialized. It has one init method that just takes in the robots RobotController at the beginning of the game and then this is never called again. Then when you actually want to bug somewhere you call a method called like startBugTo(MapLocation destination) to actually start the bug. I think this is slightly better but I don't know.

Bug vs. SafeBug

I enhanced the Bug class to avoid certain structures. It is accessed with methods like getSafeDirection...

Currently all of my bots are using this method, and it is very bytecode intensive!

We should have two methods or two classes to split up safe bugging and non safe bugging. I lean towards two classes, but I am not sure which division method would be better.

I imagine that Drones would use safeBugging when they are swarming the enemy, but the would use regular bugging when are doing fortify. Miners and Beavers would never use the safe mode.

I'm not sure what the best solution is for this.

Miners/Beavers work within a radius

I am thinking of a broadcasted value that would be the radius around the HQ where beavers and miners would be. Defenders could patrol this radius with my circle bug.

Circle nav going to places off map - Calculate map size?

When sensing a terrain tile, we can only get OFF_MAP if it is within sensor radius. Otherwise, we are getting UNKNOWN.

This creates problems for CircleNav as it is impossible to go somewhere off the map. The Bug algorithm was updated to switch directions on the wall, so if a bot is circling it just goes back and forth on the wall... The CircleNav deals with this by checking if the robot is close to the wall. If it is, we go back to the "starting" rotation. This seems like a hack to me ๐Ÿ‘Ž

A more elegant solution would be to have data about the edges of the map. It would be a change that would go beyond the CircleNav class, but the data would be helpful for other algorithms as well.

I hope that we could find the closest edges to our HQ and then reflect with the enemyHQ to deduce the map size. There are probably other solutions too. Since this is a larger change, I will not start it now.

Drone swarm micro

Drones are taking on three miners when they are alone, and they are dying. We need them to back off and wait until more drones come.

It may help for them to broadcast that they have spotted an enemy. Other drones could follow this signal instead of the normal navigation.

Miners form a solid wall and block units

If we have enough miners in a small enough area, they form a solid line, and no one can through.

This makes it hard to move units, and it lowers the effective mining rate, because a bunch of miners get stuck.

Broadcast Terrain Tiles Faster

Currently, we go tile by tile and stop if a tile is unknown. Instead, we need to keep going until we run out of bytecodes. We can go back on another pass to get the tiles that we skipped.

Examine options for dividing this among robots if it is happening too slowly.

BFS navigation

We have talked about this a bit. We may want to determine a location that is close to the HQ and all of the towers. It is easy to figure out a path from that point to all of the towers, because we can do that on our side and we know the opponent's structures will have the same layout.

This would allow us to do one main path that would connect the two bases, and we could have smaller paths that would go from those points to the HQ. This is just an idea though...

The real issue is how we will handle the cases when we have unknown squares. I have a scout robot, but it is hard to guarantee exactly when the entire map will be known. We need to have the bot fail gracefully and fall back to other navigation.

Build dependencies

If a job is added but can't be done because dependencies are not met, then make sure dependencies are built.

HQ uses awesome splash

Robots can broadcast if they see an enemy near the HQ. Then the HQ can blow them away with the splashes.

Early map analysis

When do we need to build defense? Is this a map with a tower wall that will block rushes?

Do we see any enemies headed out way? Do we see any enemies being built?

On some tourney matches, we built 20 soldiers for no reason. If we know there is a tower wall, let's go straight to the big guns.

Towers broadcast distress signals

Currently, Miners and Soldiers will broadcast distress signals if they see an enemy.

Let's have towers broadcast distress signals, so we get earlier warning.

Mining ore and miner count

Many teams have a lower limit on the Ore that the miners mine. Currently we do not. If we implement this, we may mine ore faster.

There were many maps in the seeding tournament that had very little ore. On these maps, we should spawn fewer miners and adjust the minimum ore mining threshold.

Lots many classes

All buildings, except for HQ and Tower, simply spawn a specific type of robot so just have one class for all these to spawn. I don't think they'll ever need to do something specific.

Drones need to "sweep" map and pester enemies

The drones wait until they have sufficient numbers, they they barge straight down the middle of the map. In a lot of matches, there were enemy drones that were unprotected on the edges. Picking these off is very valuable.

My idea is that we will constantly have some number of drones "pestering" the enemy. They can do a swam early but have very defensive micro. They can also sweet the edges of the map and destroy miners that are not protected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.