[AI Challenge] Capture the Flag

Finished!


Results

  • Team Blueberry (THoeppner)
  • ArrowXRnd (ArowX)
  • Spreader (Oribow)

View Results Recording


Deadline - April 24th, 2017

Participate
Documentation

This is another community AI Challenge! Some may remember the original challenge by @Arowx , this one I hope to keep as consistent as possible and stick to a deadline.

More information is located in the Github Repo and Wiki, here.

I cant wait to see what you guys come up with! Good luck! If you find any issues just post below or contact me.

Rewards ($250+)

Rules

  • You cannot store instances of objects, this includes but is not limited to, IAgent or Soldier classes and IGrabbable or Flag classes. These classes should not be accessed anywhere out of the callbacks provided.

  • Using or Getting components of the following classes is prohibited, (UIManager, TeamManager, CameraManager, Spawn, Flag, Weapon, Soldier, AnimationController, PoolManager, PoolObject)

  • Custom navigation systems are allowed, however the unity navmesh system is not, use the Grid provided to your advantage. (GridManager)

  • You can only move using the MoveTowards and Move methods from the SoldierWrapper class.

  • You cannot call the DropFlag method on any IAgent that does not belong to you.

  • You cannot casts Ray outside of the RayCast method provided by the soldier class unless you have permission.

  • No bug abusing or exploiting. If you see any bugs please notify me as soon as possible!

  • Other prohibitions are specified in the Wiki.

These rules should be self-explanatory for the most part. If you need to break any of these rules go ahead but they may not be allowed through to compete with others depending on the situtation.

Note: The only thing you submit will be your scripts, so editing values of prefabs is fine as they will not be taken into account in the competition.

Judging

  • The game will be judged with team sizes of 8v8.

  • 6 Rounds: The bot with the highest score will move on to the next elimination round.

  • After each round teams alternate. Your bots will play 3 rounds as red, and 3 as blue.

  • During judging your bots will go through a single-elimination tournament. More Info

Credits

  • Denis Sylkin - RTS Camera
  • Unity - Unity Particle Pack
  • Marcelo Fernanadez Music - Music
  • Dogzerx (Jose Diaz) - Cartoon Soldier ( @dogzerx2 <3)
  • Telecaster - Cloth animation based Flag 1.0

Participate

I would appreciate any asset developers who are interested in providing rewards for winners, please contact me.
If any level designers and artists would like to contribute, please contact me.

6 Likes

Looks interesting, you should add screenshots and video and more in depth information or a basic overview of the game, weapon types, number of troops, duration, game rules.

An FAQ maybe… Answers Based On Arowx’s View Of Project.

Is the game 2D or 3D? 3D
What size will the arenas be? < 100m2
How will the game score? Flag Capture or Team Obliteration
How long will a game last? 2 minutes
Will they be 2D or 3D?
If 3D could the be played across multiple floors/levels of buildings? Flat Level Floor With 2m+ Blocking Walls
Will the game have more advanced weapons, troop, equipment types? e.g. Overwatch/MOBA? No Just Guns
Will the game have powerups e.g. Unreal Tournament Rocket Launcher, BFG? No
Will the game have Close Combat, e.g. BF1 daggers/maces/bayonet charges or Kicks / Punches / Strangles / Takedowns? No
Will the game have stealth? No
Does the game use sound for enemy detection? No
What about portals and jump pads? No
Does health regenerate? No
Do the troops have shields that deplete Halo style? No
What about sniper weapons? No
What about grenades? No
Are you using the Blackboard AI approach for the teams? Not Built In
Can teams learn a level and store their version of the map? Should Use In Built Grid Manager
Are maps static or procedural? Currently Static
Will maps have moving objects/platforms/vehicles? No

1 Like

Ah yeah I forgot to put a picture lol. I added one. As for the other questions its just a simple shooter, you can see in the picture. I am uploading a video of the example AI right now. Also enemy detection is based on vision. Its possible to implement communication between your bots so that you can get your other bots to support each other and provide back up.

Some of the other questions are posted in the Wiki and readme.

Thanks for the reply I’m excited to see submissions.

Be careful. This sort of feature creep is exactly what made the last challenge fail.

I’m keen to participate. I don’t anticipate being able to produce anything by the deadline, two weeks isn’t a long time for anyone to complete a side project. I would suggest stretching it out to allow more people to have a go.

2 Likes

I won’t be participating because I don’t have the time at the moment. I just wanted to say that it’s pretty cool that you took your time to create this for the community. Hats off to you sir.

Yeah, don’t worry I don’t play on this being extended past what I have right now. Everything is modular however so you won’t need to change your AI too much if I decide to change weapons (Highly unlikely) lol.

I extended the deadline to a month and 4 days from today (April 24th) to give more time to participants.

Thank you, I should confess my selfishness however… Some of this was done to test my skills with creating something like this lol

I extended the deadline so I hope to get you to reconsider but otherwise I understand. :slight_smile:

2 Likes

24 Bots!

In! Thanks for organising this.

Are we allowed to do raycasting from arbitrary points, or only from the soldiers POV?

Like raycasting from another point in space? No. I should add that to the rules list…

You cannot Raycast outside of the soldier’s 70 degrees of sight. I’m adding in a raycast handler to the SoldierWrapper class right now. Thank you for pointing it out.

When you say we can’t store instances of the classes, does this mean e.g. if a soldier raycasts ahead and finds a teammate, this teammate cannot be stored as a reference by its class?

If not, can the information be stored as abstract variables, e.g.

Class TeamMate{
    int index;
    Cell lastPosition;
}

List<TeamMate> teamMates;

Where the list is populated by doing a bunch of raycasts from each soldier?

Any rules around this? Or can I just hand around direct references to all of my units and the information they have obtained?

Obviously, I am not setting the rules (lol) but I think you’d have to be able to do this because this is what you’d do in real life. I think he is just saying don’t cheat which is what storing references to the other entities is. Basically seems like he wants to see real AI like what you could have if you programmed some mini robots in the real world. They could store data collected such as team members and their locations.

Of course, if communication is allowed as long as it is messaging (headsets, radio, etc)… :slight_smile:

You should not have to raycast forward yourself, wrapper should do it for you otherwise I added this to the SoldierWrapper just now. https://github.com/1samuel411/CaptureFlagAIChallenge/wiki/SoldierWrapper#raycast

It’ll handle any raycasts out of the view cone.

Your code is fine, I mean holding the actual Agent interface allowing you to call IAgent.GetLocation() anytime you’d like, holding their last known position is fine though. :slight_smile:

Yeah, I didn’t see the post that said we could communicate, thought maybe the soldiers were supposed to have a one frame memory span.

One thing that bothers me a bit (if the challenge is to make a flexible AI) is that it would not be too difficult to hard-code some values that are driven by to the level layout, even indirectly. @Samuel411 I think maybe you should consider generating a similar but non-identical level at competition time, that would really test adaptability which is a huge part of making interesting AI.

1 Like

Also, since I can see the rules are driven by realism, it would be great to get a breakdown of what sort of communication options are allowed. A static information reference might sound unrealistic but if all the soldiers were within earshot, it’s all the same. Otherwise, how can we pass information around?

One more thing :slight_smile: can we change the TeamManager class to spawn different prefabs with different specializations, or are all soldiers supposed to be the same at the start?

Got you covered like just now :slight_smile: https://github.com/1samuel411/CaptureFlagAIChallenge/wiki/SoldierWrapper#get-team-soldiers. Going to have to clone and copy over the SoldierWrapper.cs file to get the new version.

Returns a list of SoldierWrapper classes for your team mates which allows you to get your own component, move them around, shoot for them, etc. Lets just say they have a mic in their helmets :wink:

You can do anything you want in your project version however when I judge them currently the plan is to just drop your scripts onto them and any other scripts you might have for your soldier. All soldiers right now should be the same. I think I know what you mean though, and no, I think that might complicate it a little bit.

A random level generator is something I’d definitely like to implement, might be a little too time consuming though. Perhaps pre-designed levels and cycling through those. Something for the future though, I think changing what I have now might make some things complicated.

I can definitely say I’m learning a lot from this experience, seeing how I implemented two new functions in the last hour lol

Sorry what I meant is that maybe you should make a different level for the competition, like by hand. I think it would help to keep people’s stuff flexible.

Specialisation should be trivially easy to manage from your own code without needing to modify the TeamManager.

1 Like