Update statement to stabilize rule changes
[troll.git] / config / statement_en.html
index edffecf..38b390f 100644 (file)
        <span>Rule Evolution</span>
      </h2>
      <div class="statement-warning-content">
        <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>
          <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>
          </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>
          </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>
          </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>
    </div>
    <div class="statement-victory-conditions">
          <div class="title">Map Input</div>
          <div class="text">
            <p>
          <div class="title">Map Input</div>
          <div class="text">
            <p>
-             Your first line of input contains three space-separated
+             Your first line of input contains five space-separated
              parameters:
              parameters:
-             <var>roadLength</var> <var>initialStones</var> <var>seed</var>
            </p>
            <dl style="margin: 1em;">
            </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>
              <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>
              <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>
              <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><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 necessarily draw
+               when it plays against itself.
+             </dd>
+             <dt><var>reserved</var></dt>
+             <dd style="margin-left: 6em;">
+               reserved for future use, ignore for now.
+             </dd>
            </dl>
          </div>
        </div>
            </dl>
          </div>
        </div>
            <p>
              At each turn, you are provided with the following three
              space-separated values:
            <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;">
            </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>
              <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>
              <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>
              <dd style="margin-left: 6em;">
                number of stones your opponent has left
              </dd>
          <div class="title">Timing Considerations</div>
          <div class="text">
            <p>
          <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&nbsp;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&nbsp;ms then, but don't
+             quote me on this.
            </p>
          </div>
        </div>
      </div>
    </div>
            </p>
          </div>
        </div>
      </div>
    </div>
+   <div class="statement-section statement-examples">
+     <h2>
+       <span class="icon icon-example">&nbsp;</span>
+       <span>Proper RNG seeding examples</span>
+     </h2>
+     <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>Language Family</th>
+         <th>Inspiration</th>
+       </tr>
+       <tr>
+         <td>JVM</td>
+         <td><code>
+             long mySecretSalt = 0x4242424242424242L;<br>
+             Random random = new Random(gameSeed ^ gameSide ^ mySecretSalt);
+         </code></td>
+       </tr>
+       <tr>
+         <td>C, C++, Perl&hellip;</td>
+         <td><code>
+             srand(gameSeed ^ gameSide ^ 0xdeadb33f);<br>
+             std::srand(gameSeed ^ gameSide ^ 12345);<br>
+             srand( $gameSeed ^ $gameSide ^ 0xCAFE_BABE );
+         </code></td>
+       </tr>
+       <tr>
+         <td>Other</td>
+         <td>Unachievable until proven otherwise</td>
+       </tr>
+     </table>
+   </div>
    <div class="statement-section statement-expertrules">
      <h2>
        <span class="icon icon-expertrules">&nbsp;</span>
    <div class="statement-section statement-expertrules">
      <h2>
        <span class="icon icon-expertrules">&nbsp;</span>
      </h2>
      <div class="statement-expert-rules-content">
        <p>
      </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>
        </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>
          <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>
          </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>
          </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>
          </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>
          </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>
          </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.
          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>
      <p>
        This draft's last change is:
        <strong>
-         game seed is sent in inputs.
+         not taking any more suggestions.
        </strong>
      </p>
    </div>
        </strong>
      </p>
    </div>