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
How do I sign up?
First you must
create an individual account
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
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
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
. 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