<div class="statement-warning-content">
The following ideas are still in flux, waiting for some
opinions. Please drop a word on the
- <a href="https://www.codingame.com/contribute/view/507070b7925f661e2d2835c14f950b9d157e">
- contribution's page
- </a>
+ <a href="https://www.codingame.com/contribute/view/507070b7925f661e2d2835c14f950b9d157e">contribution's page</a>
or
<a href="https://forum.codingame.com/t/troll-vs-castles-brainstorm/184827?u=jbm">
on the forum
</s></li>
<li>
More maps? (a map is a {road length} × {initial stone count} pair)
+ → Yes, there will be more maps.
</li>
<li>
- Leagues? I could conceive the referee being permissive
- (allow 0 stones thrown) in the first one, and then strict.
- Off the top of my head:
+ Leagues
<ol>
- <li>single small map, cheating is tolerated, boss plays 1</li>
- <li>the four maps, no cheating, boss plays tit for tat</li>
- <li>full map continuum</li>
+ <li>
+ single small map, cheating is tolerated, boss plays tit
+ for tat (9/10) or cheats (1/10)
+ </li>
+ <li>
+ rock troll and ice troll unlocked; multiple rounds;
+ four maps available; no cheating; boss plays well but
+ not perfect
+ </li>
+ <li>
+ all races unlocked; map continuum, no boss but default
+ AI doesn't lose.
+ <!-- I've actually got plans on a generic way to do
+ that. It's going to need many many hacks and a
+ viewer module. It's not planned for too soon. -->
+ </li>
</ol>
+ For the WIP phase of this draft, I'll likely merge the last
+ two leagues into one because we need data on what makes the
+ games interesting.
</li>
<li>
- Fog of war? (see only troll position, not enemy
- throw/stones left) Probably not in this game, be it simple,
- variable (seeing enemy stones is a boolean decided randomly
- as part of the map) or by distance.
+ <s>Fog of war?</s> Cancelled. Not in this game.
</li>
<li>
- Praise for my artistic skillz
+ Praise for my artistic skillz. There can never be enough
+ of that.
</li>
<li>
Other remarks?
<span>I/O Protocol</span>
</h2>
<div class="statement-protocol-content">
- Just read the sample code. You can figure this out.
- <br>
- You're currently allowed the default SDK timings. I think it's
- one second for the first turn and 50 ms then, but don't
- quote me on this.
+ <p style="margin-bottom: 1em">
+ This place used to read: “Just read the sample code. You can
+ figure this out.” Here are the formalities for <em>that
+ other</em> part of the audience.
+ </p>
+ <div class="blk">
+ <div class="title">Map Input</div>
+ <div class="text">
+ <p>
+ Your first line of input contains space-separated
+ parameters:
+ <var>roadLength</var> <var>initialStones</var>
+ <var>gameSeed</var> <var>gameSide</var>
+ <var>reserved1</var> … <var>reservedN</var>
+ </p>
+ <dl style="margin: 1em;">
+ <dt>roadLength</dt>
+ <dd style="margin-left: 6em;">
+ distance between both castles, between <const>6</const>
+ and <const>14</const>.
+ </dd>
+ <dt>initialStones</dt>
+ <dd style="margin-left: 6em;">
+ number of stones a castle starts the day with,
+ between <const>0</const> and <const>50</const>.
+ </dd>
+ <dt>gameSeed</dt>
+ <dd style="margin-left: 6em;">
+ the game's seed. The game AIs use it to provide you
+ with reproducible matches even when they use stochastic
+ algorithms, and you're encouraged to do the same! See
+ examples section below for simple ways to achieve that.
+ </dd>
+ <dt>gameSide</dt>
+ <dd style="margin-left: 6em;">
+ which side you're on, as <const>-1</const>
+ or <const>1</const>. It's not supposed to make a
+ difference to how you handle the rest of the game, but
+ you can XOR it to your <code>gameSeed</code> to have a
+ (reproducible) random that doesn't mecessarily draw
+ when it plays against itself.
+ </dd>
+ <dt>reserved<em>N</em></dt>
+ <dd style="margin-left: 6em;">
+ one or more parameters, reserved for future use
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="blk">
+ <div class="title">Turn Input</div>
+ <div class="text">
+ <p>
+ At each turn, you are provided with the following three
+ space-separated values:
+ <var>trollDistance</var>
+ <var>stones</var>
+ <var>opponentStones</var>
+ </p>
+ <dl style="margin: 1em;">
+ <dt>trollDistance</dt>
+ <dd style="margin-left: 6em;">
+ distance between the troll and your castle
+ </dd>
+ <dt>stones</dt>
+ <dd style="margin-left: 6em;">
+ number of stones you have left
+ </dd>
+ <dt>opponentStones</dt>
+ <dd style="margin-left: 6em;">
+ number of stones your opponent has left
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="blk">
+ <div class="title">Turn Output</div>
+ <div class="text">
+ <p>
+ After having received your turn input, you are to output
+ a single integer <var>stones</var>: the number of stones
+ you wish to throw at the troll.
+ </p>
+ <p style="margin-top: 1ex">
+ You may optionally provide a <em>message</em> you wish
+ your castle to yell at the troll or at your opponent.
+ Just append it to your output, being sure to separate it
+ with at least one space.
+ <!-- It has no incidence on the game whatsoever. Unless
+ you're god, that is. -->
+ </p>
+ </div>
+ </div>
+ <div class="blk">
+ <div class="title">Timing Considerations</div>
+ <div class="text">
+ <p>
+ You're currently allowed the default SDK timings. I
+ think it's one second for the first turn and 50 ms
+ then, but don't quote me on this.
+ </p>
+ </div>
+ </div>
</div>
</div>
<div class="statement-section statement-expertrules">
</h2>
<div class="statement-expert-rules-content">
<p>
- The following maps are currently available and randomly yet
- extremely fairly (you wouldn't believe the effort that went
- into this) chosen uniformly at random among the following:
+ In the lower leagues, the following maps are currently
+ available and randomly yet extremely fairly (you wouldn't
+ believe the effort that went into this) chosen uniformly at
+ random among the following:
</p>
- <table>
- <tr><th>Road length</th><td>│</td><th>Stones</th></tr>
- <tr><td>──────────</td><td>┼</td><td>──────</td></tr>
- <tr><td><const>6</const></td><td>│</td><td><const>15</const></td></tr>
- <tr><td><const>6</const></td><td>│</td><td><const>30</const></td></tr>
- <tr><td><const>14</const></td><td>│</td><td><const>30</const></td></tr>
- <tr><td><const>14</const></td><td>│</td><td><const>50</const></td></tr>
+ <table style="margin: 1ex">
+ <tr>
+ <th style="border-bottom: 2px dashed #f2bb13; min-width: 6em;">Road length</th>
+ <th style="border-bottom: 2px dashed #f2bb13; min-width: 6em;">Stones</th>
+ </tr>
+ <tr>
+ <td style="border-bottom: 1px dashed #f2bb13"><const>6</const></td>
+ <td style="border-bottom: 1px dashed #f2bb13"><const>15</const></td>
+ </tr>
+ <tr>
+ <td style="border-bottom: 1px dashed #f2bb13"><const>6</const></td>
+ <td style="border-bottom: 1px dashed #f2bb13"><const>30</const></td>
+ </tr>
+ <tr>
+ <td style="border-bottom: 1px dashed #f2bb13"><const>14</const></td>
+ <td style="border-bottom: 1px dashed #f2bb13"><const>30</const></td>
+ </tr>
+ <tr>
+ <td style="border-bottom: 1px dashed #f2bb13"><const>14</const></td>
+ <td style="border-bottom: 1px dashed #f2bb13"><const>50</const></td>
+ </tr>
</table>
<p>
You can also override them via game
- settings <tt>roadLength</tt> and <tt>initialStones</tt>, so
- long as you remember forget you won't be choosing them for
+ settings <var>roadLength</var> and <var>initialStones</var>,
+ so long as you remember you won't be choosing them for
ranking play.
</p>
</div>
<p>
This draft's last change is:
<strong>
- game parameters can be overridden.
+ game seed is sent in inputs.
</strong>
</p>
</div>