Questions we think you will (or should) ask...

If a date precedes a question, that is the date it was added to this FAQ.

What is Operation: Code Clash?

Operation: Code Clash (OCC) is a team-based programing competition. It takes place entirely on-line. The goal of Operation: Code Clash is to provide a fun yet challenging competition for everyone that is often only available at the university/college level.
Operation: Code Clash is different from most other competitions in that teams compete against one another on a virtual field of play. Teams are presented with a single mission - a game - and must create a program to play the game. In some ways, it is a virtual version of popular robotics competition formats such as FIRST Robotics Competition and is inspired by college-level competitions such as MIT's Battlecode.

How do I sign up?

First you must create an individual account for yourself. Next, you need to form a team. Gather up to three others to form a team. Then you register a team. Team members can sign up themselves either before or after the team has been registered.

How big is a team?

Each team is composed of up to 4 students each. Everyone can only be a member of one team.

Must the work on a team be split a certain way?

No. The team can decide how they want to split up the work.

Who is eligible?

The competition is open to anyone over 13 years of age. Team members do not have to attend the same school - any group of students that would like to form a team may do so.

What does it cost to participate?

Nothing. Zero. Zilch. Yes, it's free.

How does the competition work?

The game is played between two players (each a team) on a field of play. Each player controls one or more virtual actors. The idea is to write a program to control the virtual actors so as to score as many points against your opponent as possible. The game manual will describe the rules of the game including how to score points.
Once the game is released, the teams will have approximately 3 months to write a player that will compete against other players. During this time, teams may submit their players on-line to compete with other players that have been submitted. A more detailed schedule (to be released with the game manual) will explain when teams may upload players and when they will start counting toward overall rankings. At the end of the play period, the top 20-25% ranked teams will play in a virtual playoff until a winner is crowned. The code for the playoffs will be the final code that was submitted within the 6 week window.
When the game is released, teams will also be able to download sample players, and test their code by connecting to the server from remote. This allows teams to develop and test their players locally before submitting them to the website. The sample players provide examples of how to write the code and are also a simple opponent to play against.

Can you give us an example of a game scenario?

Each year's game is secret until the game kickoff. However, to give you a sense of the type of game, we explain a simple example. In this example, each player would control 4 military units. Your player scores points by moving the units around a battlefield to destroy targets and damage the enemy. The field has obstacles to make movement difficult and has objects of various value that can be obtained and used (e.g., extra ammunition). Maximum points are scored by coordinating the movement and actions of the different units, some perhaps playing offense while others play defense.
A game is usually played over the course of 100-200 rounds where a round is where each player supplies a set of specific commands for each virtual actor. Then a game engine executes the commands and reports back to each player the new state of the game.

How do I get the results of a match?

The results of matches that are played on the website are shown on a public leaderboard. This allows everyone to see where they stand.
The results of each match are also available in the form of an animation. That is, you can watch the game being played out in a graphical visualization so that it is easier to understand what happened so that you can possibly adjust your strategy. Note that the ability to view a match is part of the game engine, so you will be able to watch your own test matches as well.

What programming languages can I use?

Entries can be written in either Java or Python.

Where is the competition held?

The entire competition is held on-line, in the vaunted cloud. There is no travel and there are no restrictions on time of day. Once you have players that are ready to compete against other teams, you just upload your code onto the Operation: Code Clash website where matches will be staged and the results will be reported on the leaderboard.

When is this year's competition going to be played?

On August 18, 2020, we will release a game description via this website. At that time, teams can download the game manual, the game engine, and sample players, and can begin writing their players. The player submission phase will end on December 6, 2020 at 5pm EST. At that point, the playoffs will be staged and a winner announced shortly thereafter.

How do you benefit from participating in OCC?

Well, let's see..
  • You get an opportunity to enhance your ability to program
  • You will have the opportunity to compete in something that's not commonly offered in high school
  • You will gain experience in Java
  • You will have fun competing with team from across the country

How can you get involved in OCC?

First, you should gather your team of 1-4 fellow nerds. Then each member of your team must make an account here. Finally, you need to create a team here. That's it.

What knowledge is needed for OCC?

This competition is aimed at students who have had at least some introduction to programming. Frankly, the language isn't that important. You do not need to know any of the esoteric features of Java in order to win. Instead, this competition is really about how well you can solve problems, come up with strategies, execute tactics all in the confines of a software program. All you really need to know is basic control structures, conditionals and methods to store groups of data (e.g., arrays, lists, sets, etc.).
You will also need to know how to read and write from/to standard input and output, but this code is given in the sample players, so you could literally cut and paste that code (and probably should anyway).

How will I know what team I'm on?

If you have already been added to a team, then you will be told the team you are on after you register. If you have not been added to a team, then you know you are on a team when you log in and see your team status in the top right of the screen (in the navigation bar). It will either say "You are not on a team" or it will tell you the team you are on.

If you are assigned to a team while you are logged in, you may not see the update to your team status until you log out and then log back in.

If you create your own team, then you will be automatically added as the first member of the new team.

Can I register a team of one person?

While we recommend that you have at least two people on your team, teams of one are acceptable. We just think it will be more fun collaborating with others to build your player.

When is the registration deadline?

Registration remains open during most of the competition. The deadline to register a team is November 30, 2020, at noon EST. This gives prospective teams time to watch the launch video, download the materials and see what Operation: Code Clash is all about.

How does the tournament work after I submit code?

Once you submit code, a match will be queued between your new (just uploaded) player and the most recently uploaded player from every other team who has uploaded a working player. Hence you will play n-1 matches, where n is the number of teams who have uploaded working players.

From the time you upload, it could take up to 1 minute before the matches will start being played. During this time, the record that is shown in the leaderboard and on your team matches played page will be incorrect. However, once all the matches have been played, your record should be accurate.

Please realize that your player only plays when a team uploads a working player. When you do it, you play everyone else. When someone else does it, you will play just that team. So your record can change any time anyone uploads a new player.

How is my record computed?

Your record is a result of only your most recent matches played using your latest uploaded player. Each time you upload a new player, your old record is erased and a new record is computed based on how your new player fairs against all the other working players.

You will notice on your Matches Played page that every match you ever played will be shown (in order of most recent to least recent). But your record that is shown reflects only those matches that were played with your most recent upload against each other team's most recent upload. So, normally, your record will not add up to the number of matches shown. Instead, your record should always add up to the number of teams minus 1.

What maps are used?

There are an assortment of different maps that are available for each match. The particular map for a match is randomly chosen from the set of available maps. We will be adding new maps throughout the qualification round. Once the playoffs begin, the same maps are used for each round of the playoffs to ensure that all teams that make the playoffs are playing on even fields.

What if my score is zero after a match is played?

Normally a score of 0 indicates that your player did not properly start when the game engine invoked it. Please check your code for the following:

  • Make sure your player runs correctly on your local machine against the network test player.
  • Make sure you are not trying to open any files (e.g., log files) or use any network resources.
  • Make sure that you are reading the entire game state and then sending four actions on each turn.
  • Make sure your player is running in the default package (if using Java). This means there should be np package statements in your submitted Java source code.

At the end of a match, I have a negative bonus. How can that be?

This means that your player started the match, but died somewhere in the middle. When your player dies you basically forfeit the match by losing all your points, hence it looks like a negative bonus.

If your player dies in the match, it usually means you threw an unhandled exception (e.g., NullPointerException). You can see any errors that were returned by going to your team match played page. If you see a Runtime Errors link next to a match, it means your player generated an error (e.g., a stack dump) during that match and this will show you what was generated. Hint: The tournament uses different maps than you have been practicing with. It is likely that the new map is causing your player some grief. While you can't directly download the map, you can recreate it on your own by looking at the image from the viewer and then encoding it as a text file in your favorite text editor. The symbols are defined in the manual.