X-Git-Url: https://troll.desast.re/troll.git/blobdiff_plain/055ce8e682c4b82d5b52362e88df2f9d6a7d53d6..3d557e30e1e2007b846449248a11cc3d8367d1f9:/config/statement_en.html?ds=inline diff --git a/config/statement_en.html b/config/statement_en.html index 428577f..35242fa 100644 --- a/config/statement_en.html +++ b/config/statement_en.html @@ -29,37 +29,49 @@ <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 </a> <ul> - <li> + <li><s> Is it even worth publishing? can the problem be totally solved? - </li> + </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. - </li> - <li> - Fog of war? (see only troll position, not enemy throw/stones left) - </li> - <li> - <strong>variable</strong> for of war? (seeing enemy stones - is a boolean decided randomly as part of the map? + 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> <li> - alternative fog of war? (seeing enemy stones only when - troll is close to us?) + <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? @@ -90,13 +102,148 @@ <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> + 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> + <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</dt> + <dd style="margin-left: 6em;"> + reserved for future use, ignore for now + </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-examples"> + <h2> + <span class="icon icon-example"> </span> + <span>Proper RNG seeding examples</span> + </h2> + <table> + <tr> + <th style="border-bottom: 2px dashed #f2bb13;">Language Family</th> + <th style="border-bottom: 2px dashed #f2bb13;">Sample</th> + </tr> + <tr> + <td style="border-bottom: 1px dashed #f2bb13;">JVM</td> + <td style="border-bottom: 1px dashed #f2bb13;"><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> + 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> + </tr> + </table> + </div> <div class="statement-section statement-expertrules"> <h2> <span class="icon icon-expertrules"> </span> @@ -104,25 +251,38 @@ </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><th>Stones</th></tr> - <tr><td><const>6</const></td><td><const>15</const></td></tr> - <tr><td><const>6</const></td><td><const>30</const></td></tr> - <tr><td><const>14</const></td><td><const>30</const></td></tr> - <tr><td><const>14</const></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> - As with anything in this <em>draft</em> statement, this - is <strong>subject to change without notice</strong>. Why do - you think they're provided in the game input? - </p> <p> You can also override them via game - settings <tt>roadLength</tt> and <tt>initialStones</tt>. + settings <var>roadLength</var> and <var>initialStones</var>, + so long as you remember you won't be choosing them for + ranking play. </p> </div> </div> @@ -141,7 +301,7 @@ <p> This draft's last change is: <strong> - game parameters can be overridden. + demo references still existing sprites. </strong> </p> </div> @@ -156,7 +316,7 @@ — J.R.R. Tolkien, <i>The Hobbit</i> </div> </div> - <div class="story-text"> + <div class="story-text" style="margin-top: 4em"> <p> Based on an involuntary suggestion by <span class="card" cg-codingamer-card-popup=""