...
 
Commits (2)
{
"stages": [
{
"title": "Creating an Account",
"description": "Submissions are handled though <a href=\"https://comp.fossgalaxy.com\">Comet</a>. Click on the <a href=\"https://comp.fossgalaxy.com/accounts/signup/\">Sign Up</a> link on the Comet homepage.",
"steps": [
{
"title": "Go to the submission website",
"img": "img/comet_signup.png",
"description": "Enter a username, (optionally) an email address, and create a password. Then click sign up. You will be taken to your user account page."
},
{
"title": "Click on Competitions",
"img": "img/comet_comp.png",
"description": "Click on the competitions link on the top of the page. This will take you to the competitions currently running."
},
{
"title": "Select the track",
"img": "img/comet_enter.png",
"description": "On the competitions page, currently open tracks will have an enter button in their footer. Click on this button for the track you are intrested in."
},
{
"title": "Provide agent details",
"img": "img/comet_create.png",
"description": "Give your agent a name. This should be a valid Java class name (letters and numbers only, CamelCased).</p> <p>You will use this later for your Java class. You can provide a description of your agent here as well, it will be displayed on your agent's profile page. You will need to declare if you are a student or not, this is used for stats purposes.</p><p>Click register to create your agent."
}
]
}
]
}
{
"stages": [
{
"title": "Download the sample agent",
"description": "The sample agent helps you get started quickly, <a href=\"/assets/starter.zip\">download it</a> from the competition website.",
"steps": [
{
"title": "Download zip from homepage",
"img": "img/starter_download.png",
"description": "The 'download starter package' button will download the latest starter package."
},
{
"title": "Extract the zip",
"img": "img/starter_extract.png",
"description": "Extract the zip file into a directory of your chosing. It's recommended to place it in an empty directory."
}
]
},
{
"title": "Open The Project",
"description": "The project you have downloaded uses Maven, this section will show you how to open a maven project in Intellij",
"steps": [
{
"title": "Click open from the file menu",
"img": "img/intellij_open.png",
"description": "Use the standard open option from the file menu in intellij."
},
{
"title": "Navigate to the agent and select the pom",
"img": "img/intellij_pom.png",
"description": "Use the dialog to find the project.</p> <p><strong>important:</strong> You must select the pom.xml file not the folder. Selecting the folder will create an intellij project rather than a maven one, which will not download the dependencies required by the submission."
},
{
"title": "Click 'open as project'",
"img": "img/intellij_open_proj.png",
"description": ""
},
{
"title": "Find the sample agent",
"img": "img/intellij_layout.png",
"description": "The sample package contains some sample agents, a random player and a rule-based agent. App can be used to test your submission before submitting."
}
]
},
{
"title": "Rename Agent",
"description": "The class name should match your agent name on Comet. This part shows you how to rename it in intellij.",
"steps": [
{
"title": "Right click the agent",
"img": "img/intellij_rename.png",
"description": "Right click on the agent name, find refactor on the menu and then click rename on the menu that appears from that. You can also select the class and use the Shift+F6 shortcut."
},
{
"title": "Type the new name in the box",
"img": "img/intellij_rename_dialog.png",
"description": "Type the agent name you entered on Comet in the box. You should also rename the package to match your username (although this is not required for your agent to run)."
},
{
"title": "If prompted, click do refactor",
"img": "img/intellij_rename_refactor.png",
"description": "The agent name is used as a String in App.java, intellij may prompt you to rename this occourance as well. Click do refactor."
}
]
}
]
}
{
"stages": [
{
"title": "Package up submission",
"description": "Before you can submit your agent, you need to package it up as a zip file",
"steps": [
{
"title": "Compress the pom and src folder",
"img": "submit/01_compress.png",
"description": "Create a zip file containing the pom.xml and src folder"
},
{
"title": "Name your Zip",
"img": "submit/02_zip_name.png",
"description": "The zip file name doesn't matter - but naming it after your agent is a good idea. The file must be a zip file (not rar, 7z or tar.gz)."
},
{
"title": "Check Zip structure",
"img": "submit/03_zip_confirm.png",
"description": "The zip file should have the pom.xml file and src in the root of the zip file. There must not be in a subdirectory in the zip file."
}
]
},
{
"title": "Upload to Comet",
"description": "Now you can upload your submission to Comet.",
"steps": [
{
"title": "View your submission",
"img": "submit/10_select.png",
"description": "Navigate to the competitions page and find the track you are submitting to. Select 'View Submission' to go to your submission. If the button says, 'enter', follow the steps on the 'creating an account' page. "
},
{
"title": "Click 'upload view version' on your submission",
"img": "submit/11_agent.png",
"description": "On the right hand side of your agent's page, there will be a button for uploading new versions. You can also edit your agents's details from this page."
},
{
"title": "Click the browse button",
"img": "submit/12_upload.png",
"description": "The form is fairly self-explanitory, click the browse button and find the zip file."
},
{
"title": "Click the Upload Revision button",
"img": "submit/15_upload.png",
"description": "The name of your zip file should be listed now. Click the upload revision button to complete the upload. Depending on server load, this could take a few seconds."
},
{
"title": "Check the version is listed",
"img": "submit/16_done.png",
"description": "Your submission should now be on the server. The status will be 'build pending', indicating that the server hasn't built the submission yet. This is done in the background and you can safely close the page. In the event of build failure, you can click on the pipeline images for the build log."
}
]
}
]
}
......@@ -23,11 +23,12 @@
<div class="collapse navbar-collapse" id="navbarContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item"><a class="nav-link" href="domain.html">Domain Description</a></li>
<li class="nav-item"><a class="nav-link" href="description.html">Competition</a></li>
<li class="nav-item"><a class="nav-link" href="rankings.html">Rankings</a></li>
<li class="nav-item"><a class="nav-link" href="research.html">Research</a></li>
<li class="nav-item"><a class="nav-link" href="builder.html">Builder</a></li>
<li class="nav-item"><a class="nav-link" href="/domain.html">Domain Description</a></li>
<li class="nav-item"><a class="nav-link" href="/description.html">Competition</a></li>
<li class="nav-item"><a class="nav-link" href="/rankings.html">Rankings</a></li>
<li class="nav-item"><a class="nav-link" href="/research.html">Research</a></li>
<li class="nav-item"><a class="nav-link" href="/guide/">Guide</a></li>
<li class="nav-item"><a class="nav-link" href="/builder.html">Builder</a></li>
<li class="nav-item"><a class="nav-link" href="https://comp.fossgalaxy.com" target="_blank">Submit now</a></li>
</ul>
</div>
......
{% extends "_base.html" %}
{% block title %}Description{% endblock %}
{% block title %}Competition{% endblock %}
{% block content %}
<div class="page-header">
<h1>Competition Description</h1>
</div>
<p>Your task for this competition is to write an agent that can play the card game Hanabi. Your agent will be evaluated using our Framework in one of two ways:
<ul>
<li>Paired with a group of unknown agents (Mixed Track)</li>
<li>Play a with copies of your agent (Mirror Track)</li>
</ul>
</p>
Your agent will play on N different seeds, in 2, 3, 4 and 5 player variants of the games. Your score will be the average that you manage to obtain over all of your games, in the event of ties the number of ramaining lives will be taken into account.
<h1>Competition Description</h1>
<h2>Rules</h2>
<ul>
<ol>
<li>Controllers are given <del>40ms</del> <ins>1s</ins> to return a move</li>
<li>Controllers are written in Java</li>
<li>Agents must <strong>not</strong> use any out of band communication</li>
<li>Agents should be submitted as maven projects</li>
<li>Agents cannot use reflection or threading APIs</li>
</ol>
<h2>Tracks</h2>
<p>The competition is divided into three tracks. To compete, write an agent that can compete in one of thes tracks. In all of the tracks, your agent will be playing the 2, 3, 4 and 5 player varients of the game.Your score will be the mean score obtained over all games played in a given track. In the event of ties, the lives remaining will be taken into account.</p>
<h3><a href="https://comp.fossgalaxy.com/competitions/t/18/">Mirror Track</a></h3>
<p>In this track, your agent is paired with copies of itself.</p>
<h3><a href="https://comp.fossgalaxy.com/competitions/t/17/">Mixed Track</a></h3>
<p>In the mixed track, your agent plays with a set of unknown agents. You have no prior knoweldge of these agent's statergies but you will be playing with multiple copies of the same agent (ie. 1 copy of your agent and n-1 copies of the other agent)</p>
<h3><a href="https://comp.fossgalaxy.com/competitions/t/19/">Learning Track</a></h3>
<p>This track pits you against a set of unknown (differing) agents from a pool of agents. You will be given an identifier per agent and will play multiple games with these agents.</p>
<h2>Controller Guideance</h2>
<ul>
<li>Your agent name on Comet should match your <strong>class name</strong>. If your agent is called MyAgent then your submission should be called MyAgent in Comet.</li>
<li>Although 3<sup>rd</sup> party dependencies are allowed, please ensure that you do not use native libaries (if possible) as these will not work.</li>
</ul>
<p><a href="/guide/">View the guide</a></p>
<h3>Maven Dependency</h3>
<pre><code>
&lt;dependency&gt;
......@@ -36,11 +45,6 @@ Your agent will play on N different seeds, in 2, 3, 4 and 5 player variants of t
<p><a href="https://search.maven.org/artifact/com.fossgalaxy.games/fireworks/0.2.2a/jar">View on Maven Central</a></p>
<h3>Controller Guideance</h3>
<ul>
<li>Your agent name on Comet should match your <strong>class name</strong>. If your agent is called MyAgent then your submission should be called MyAgent in Comet.</li>
<li>Although 3<sup>rd</sup> party dependencies are allowed, please ensure that you do not use native libaries (if possible) as these will not work.</li>
</ul>
<h3>Submitting your controller</h3>
<p>Your controller should be submitted though Comet. The three tracks running this year are:</p>
......
{% extends "_base.html" %}
{% block title %}Guide{% endblock %}
{% set tab_bar = [
('/guide/', 'index', 'Creating An Account'),
('/guide/sample.html', 'sample', 'Download Sample Agent'),
('/guide/write.html', 'write', 'Write your agent'),
('/guide/submit.html', 'submit', 'Submit your agent'),
]
-%}
{% set active_page = active_page|default('index') -%}
{% block content %}
<h1>Hanabi Competition Guide</h1>
<p class="lead">This guide will walk you though the process of creating an agent for the competition</p>
<ul class="nav nav-tabs">
{% for href, id, caption in tab_bar %}
<li class="nav-item"><a class="nav-link {% if id==active_page%}active{% endif %}" href="{{href}}">{{caption}}</a></li>
{% endfor %}
</ul>
<section class="py-3">
{% block page_content %}
{% for stage in stages %}
<div class="mb-5">
<h2>{{stage.title}}</h2>
<p class="lead">{{stage.description|safe}}</p>
{% for step in stage.steps %}
<div class="row mb-3">
<div class="col-5 {{ loop.cycle('', 'order-last') }}">
<img src="{{step.img}}" class="img-fluid" />
</div>
<div class="col {{ loop.cycle('', 'order-first') }}">
<h3>{{step.title}}</h3>
<p>{{step.description|safe}}</p>
</div>
</div>
{% endfor %}
</div>
{% if not loop.last %}
<hr />
{% endif %}
{% endfor %}
{% block next_step %}
<p>Congratulations, you've submitted your agent!</p>
{% endblock %}
{% endblock %}
</section>
{% endblock %}
{% extends "guide/_base.html" %}
{% block page_content2 %}
<h2>Go to the submission website</h2>
<p>A submissions are handled though <a href="https://comp.fossgalaxy.com">Comet</a>. Click on the <a href="https://comp.fossgalaxy.com/accounts/signup/">Sign Up</a> link on the Comet homepage.</p>
<p>You can register using your <a href="https://comp.fossgalaxy.com/accounts/github/login/?process=login">Github account</a>, or use the registration form</p>
<img src="img/comet_signup.png" />
<h2>Click on Competitions</h2>
<p>Click on the competitions link on the top of the page.</p>
<img src="img/comet_comp.png" />
<h2>Select the track</h2>
<p>Click on the enter button for the track you are intrested in</p>
<img src="img/comet_enter.png" />
<h2>Enter your agent details</h2>
<p>Enter a name for your agent, this must match the name of the agent you submit.</p>
<img src="img/comet_create.png" />
<p>You are now registered to take part in the competition, you can either register for more tracks or proceed to downloading the sample submission</p>
{% endblock %}
{% block next_step %}
<div class="d-flex justify-content-between">
<p class="text-right">Now you're got an account, lets get started.</p>
<a class="btn btn-primary" href="/guide/sample.html">Downloading the sample agent</a>
</div>
{% endblock %}
{% extends "guide/_base.html" %}
{% set active_page = 'sample' %}
{% block page_content2 %}
<h2>Go to the homepage</h2>
<p>The download link for the starter package is on the homepage.</p>
<img src="img/starter_download.png" />
<h2>Extract the zip file</h2>
<img src="img/starter_extract.png" />
<a id="ide" />
{% block guide_ide %}
<div class="alert alert-primary">This section will be for Intellij IDEA CE, <a href="sample_eclipse.html#ide">Instructions for Eclipse</a></div>
<h2>Open the project in your favourite IDE</h2>
<h3>Select Open</h3>
<img src="img/intellij_open.png" />
<h3>Select the project</h3>
<img src="img/intellij_pom.png" />
<h3>Open as project, if prompted</h3>
<img src="img/intellij_open_proj.png" />
<h3>Navigate to the agent</h3>
<img src="img/intellij_layout.png" />
<h2>Rename the agent to match your submission</h2>
<h3>Rename the agent to match your submission</h3>
<img src="img/intellij_rename.png" />
<h3>Rename the agent to match your submission</h3>
<img src="img/intellij_rename_dialog.png" />
<h3>Rename the agent to match your submission</h3>
<img src="img/intellij_rename_refactor.png" />
{% endblock %}
{% endblock %}
{% block next_step %}
<div class="d-flex justify-content-between">
<p class="text-right">Now you're all set up you can start writing your agent.</p>
<a class="btn btn-primary" href="/guide/write.html">Writing your agent</a>
</div>
{% endblock %}
{% extends "guide/sample.html" %}
{% block guide_ide %}
<div class="alert alert-primary">This section will be for Eclipse, <a href="sample.html#ide">Instructions for Intellij IDEA</a></div>
<h2>Open the project in your favourite IDE</h2>
<img src="eclipse/eclipse_open.png" />
<h2>Locate the project</h2>
<img src="eclipse/eclipse_mvn_step1.png" />
<img src="eclipse/eclipse_mvn_step2.png" />
<img src="eclipse/eclipse_mvn_step3.png" />
<h2>Find the agent</h2>
<img src="eclipse/eclipse_layout.png" />
<h2>Rename the Agent</h2>
<img src="eclipse/eclipse_rename.png" />
<img src="eclipse/eclipse_rename_dia.png" />
{% endblock %}
{% extends "guide/_base.html" %}
{% set active_page = 'submit' %}
{% block page_content %}
{% for stage in stages %}
<div class="mb-5">
<h2>{{stage.title}}</h2>
<p class="lead">{{stage.description|safe}}</p>
{% for step in stage.steps %}
<div class="row mb-3">
<div class="col-5 {{ loop.cycle('', 'order-last') }}">
<img src="{{step.img}}" class="img-fluid" />
</div>
<div class="col {{ loop.cycle('', 'order-first') }}">
<h3>{{step.title}}</h3>
<p>{{step.description|safe}}</p>
</div>
</div>
{% endfor %}
</div>
{% if not loop.last %}
<hr />
{% endif %}
{% endfor %}
<p>Congratulations, you've submitted your agent!</p>
{% endblock %}
{% extends "guide/_base.html" %}
{% set active_page = 'write' %}
{% block page_content %}
<h2>The Interface</h2>
<p class="lead">This page will describe the process by which agents are prompted by the game engine to make moves.</p>
<h3>The Constructor</h3>
<p>Your agent should have a no-arg constructor which is public. This will be used by the game engine to create your agent. You should not use any static state as part of your agent.</p>
<p class="alert alert-info">
For the Mirror and Mixed tracks you can assume that the agent will be re-created for each game played. This is not the case for the learning track however, for this track see the <a href="#advanced">Advanced Methods</a> section below.
</p>
<h3>The doMove Method</h3>
<p>The primary way in which your agent interacts with the game is though the doMove method. This is called every time your agent needs to make a decision. You are passed two arguments, your playerID and a copy of the current game state from your perspective.</p>
<p>Your agent should return a valid move action from this method. If you return an illegal move, the game will end and the result will be recorded as a disqualification.</p>
<pre><code> public Action doMove(int playerID, GameState state)</code></pre>
<div class="alert alert-warning">
<h3>Honour System</h3>
<p>Although we do our best to prevent cheating, the system is not foolproof. If you are caught cheating your account will be banned. If you have come up with a statergy and you are not sure if it is permitted, contact the competition organisers who will be happy to assist you.</p>
</div>
<hr />
<h3 id="advanced">Advanced Methods</h3>
<p class="lead">The agent interface includes some 'advanced' methods that can be used by your agent.</p>
<h4>The receiveID method</h4>
<p>This method is called when the game starts. For most tracks, this will only ever be called once per agent.</p>
<pre><code> public void receiveID(int playerID)</code></pre>
<hr />
{% block next_step %}
<div class="d-flex justify-content-between">
<p class="text-right">Now you're written your agent, you're ready to submit.</p>
<a class="btn btn-primary" href="/guide/submit.html">Submitting your agent</a>
</div>
{% endblock %}
{% endblock %}
{% extends "_base.html" %}
{% block title %}Home{% endblock %}
{% block content %}
<div class="alert alert-primary">
The competition has returned for COG 2019, check the <a href="/description.html">Competition Page</a> for details.
</div>
<div class="row">
<div class="col-md-8">
<img class="img-fluid img-rounded" src="assets/img/hanabi-ui.png" style="width: 750px" alt="#" >
......