<span>Rule Evolution</span>
</h2>
<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>
- or
- <a href="https://forum.codingame.com/t/troll-vs-castles-brainstorm/184827?u=jbm">
- on the forum
- </a>
- <ul>
- <li><s>
- Is it even worth publishing? can the problem be totally solved?
- </s></li>
- <li>
- More maps? (a map is a {road length} × {initial stone count} pair)
- → Yes, there will be more maps.
- </li>
- <li>
- Leagues
- <ol>
- <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>
+ <p>
+ The game isn't finished, but I'm not taking any more
+ suggestions at this time, the path is now determined. There
+ will be three leagues:
+ </p>
+ <ol>
<li>
- <s>Fog of war?</s> Cancelled. Not in this game.
+ single small map, cheating is tolerated, boss plays tit for
+ tat (9/10) or cheats (1/10)
</li>
<li>
- Praise for my artistic skillz. There can never be enough
- of that.
+ rock troll and ice troll unlocked; multiple rounds;
+ four maps available; no cheating; boss plays well but
+ not perfect
</li>
<li>
- Other remarks?
+ 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>
- </ul>
+ </ol>
+ <p>
+ 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.
+ </p>
+ <p>
+ You're still welcome to discuss the game
+ <a href="https://forum.codingame.com/t/troll-vs-castles-brainstorm/184827?u=jbm">
+ on the forum
+ </a>
+ or report a bug
+ <a href="https://www.codingame.com/contribute/view/507070b7925f661e2d2835c14f950b9d157e">
+ on the contribution's page.
+ </a>
+ </p>
</div>
</div>
<div class="statement-victory-conditions">
<div class="blk">
<div class="title">Map Input</div>
<div class="text">
- <p>
- This section's HTML gets messed up somewhere in the SDK
- pipeline. <a href="https://forum.codingame.com/t/misleading-html-in-the-sdk-skeleton/184828/8?u=jbm">I reported it there;</a> and there
- you'll be able to find a readable representation of this
- block. Sorry about the inconvenience…
- </p>
<p>
Your first line of input contains five space-separated
parameters:
- <var>roadLength</var> <var>initialStones</var>
- <var>gameSeed</var> <var>gameSide</var>
- <var>reserved</var>
</p>
<dl style="margin: 1em;">
- <dt>roadLength</dt>
+ <dt><var>roadLength</var></dt>
<dd style="margin-left: 6em;">
distance between both castles, between <const>6</const>
and <const>14</const>.
</dd>
- <dt>initialStones</dt>
+ <dt><var>initialStones</var></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>
+ <dt><var>gameSeed</var></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>
+ <dt><var>gameSide</var></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
+ (reproducible) random that doesn't necessarily draw
when it plays against itself.
</dd>
- <dt>reserved</dt>
+ <dt><var>reserved</var></dt>
<dd style="margin-left: 6em;">
- reserved for future use, ignore for now
+ reserved for future use, ignore for now.
</dd>
</dl>
</div>
<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>
+ <dt><var>trollDistance</var></dt>
<dd style="margin-left: 6em;">
distance between the troll and your castle
</dd>
- <dt>stones</dt>
+ <dt><var>stones</var></dt>
<dd style="margin-left: 6em;">
number of stones you have left
</dd>
- <dt>opponentStones</dt>
+ <dt><var>opponentStones</var></dt>
<dd style="margin-left: 6em;">
number of stones your opponent has left
</dd>
<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.
+ You're 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>
<span class="icon icon-example"> </span>
<span>Proper RNG seeding examples</span>
</h2>
- <table>
+ <style>
+ table.jbm-statement th { border-bottom: 2px dashed #f2bb13 }
+ table.jbm-statement td { border-bottom: 1px dashed #f2bb13 }
+ </style>
+ <table class="jbm-statement">
<tr>
- <th style="border-bottom: 2px dashed #f2bb13;">Language Family</th>
- <th style="border-bottom: 2px dashed #f2bb13;">Sample</th>
+ <th>Language Family</th>
+ <th>Inspiration</th>
</tr>
<tr>
- <td style="border-bottom: 1px dashed #f2bb13;">JVM</td>
- <td style="border-bottom: 1px dashed #f2bb13;"><code>
+ <td>JVM</td>
+ <td><code>
long mySecretSalt = 0x4242424242424242L;<br>
Random random = new Random(gameSeed ^ gameSide ^ mySecretSalt);
</code></td>
</tr>
<tr>
- <td style="border-bottom: 1px dashed #f2bb13;">C, C++, Perl…</td>
- <td style="border-bottom: 1px dashed #f2bb13;"><code>
+ <td>C, C++, Perl…</td>
+ <td><code>
srand(gameSeed ^ gameSide ^ 0xdeadb33f);<br>
std::srand(gameSeed ^ gameSide ^ 12345);<br>
srand( $gameSeed ^ $gameSide ^ 0xCAFE_BABE );
</code></td>
</tr>
<tr>
- <td style="border-bottom: 1px dashed #f2bb13;">Other</td>
- <td style="border-bottom: 1px dashed #f2bb13;">Unachievable until proven otherwise</td>
+ <td>Other</td>
+ <td>Unachievable until proven otherwise</td>
</tr>
</table>
</div>
</h2>
<div class="statement-expert-rules-content">
<p>
- 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:
+ In the lower leagues, the following maps are 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 style="margin: 1ex">
+ <style>
+ table#jbm-maps th {
+ min-width: 6em;
+ text-align: right;
+ }
+ table#jbm-maps td {
+ text-align: right;
+ padding-right: 1em;
+ }
+ </style>
+ <table class="jbm-statement" id="jbm-maps" 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>
+ <th>Road length</th>
+ <th>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>
+ <td><const>6</const></td>
+ <td><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>
+ <td><const>6</const></td>
+ <td><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>
+ <td><const>14</const></td>
+ <td><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>
+ <td><const>14</const></td>
+ <td><const>50</const></td>
</tr>
</table>
<p>
- You can also override them via game
+ You may also override them via game
settings <var>roadLength</var> and <var>initialStones</var>,
so long as you remember you won't be choosing them for
ranking play.
<p>
This draft's last change is:
<strong>
- early game termination.
+ not taking any more suggestions.
</strong>
</p>
</div>