<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>piecepackr: Board game graphics</title><link href="https://trevorldavis.com/piecepackr/" rel="alternate"></link><link href="https://trevorldavis.com/piecepackr/feeds/all.atom.xml" rel="self"></link><id>https://trevorldavis.com/piecepackr/</id><updated>2026-04-25T00:00:00-07:00</updated><entry><title>Dice</title><link href="https://trevorldavis.com/piecepackr/dice.html" rel="alternate"></link><published>2023-03-20T00:00:00-07:00</published><updated>2023-03-20T00:00:00-07:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2023-03-20:/piecepackr/dice.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with built-in configurations for a variety of dice via the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; function.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#traditional-six-sided-pipped-dice" id="toc-entry-1"&gt;Traditional six-sided pipped&amp;nbsp;dice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#polyhedral-dice" id="toc-entry-2"&gt;Polyhedral&amp;nbsp;dice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#fudge-fate-dice" id="toc-entry-3"&gt;Fudge/Fate&amp;nbsp;dice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#piecepack-dice" id="toc-entry-4"&gt;Piecepack&amp;nbsp;dice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chess-dice" id="toc-entry-5"&gt;Chess&amp;nbsp;dice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#custom-dice" id="toc-entry-6"&gt;Custom&amp;nbsp;dice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with built-in configurations for a variety of dice via the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; function.&lt;/p&gt;
&lt;div class="section" id="traditional-six-sided-pipped-dice"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Traditional six-sided pipped&amp;nbsp;dice&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;Chinese dominoes were introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.13.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;tt class="docutils literal"&gt;dice&lt;/tt&gt; configuration provides standard pipped dice in six colors with the suit controlling the color and the rank controlling the number of pips &lt;a class="footnote-reference" href="#footnote-1" id="footnote-reference-1"&gt;[1]&lt;/a&gt;.  The &lt;tt class="docutils literal"&gt;dominoes_chinese&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;dominoes_chinese_black&lt;/tt&gt; configurations provide &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Dice#Arrangement"&gt;Asian-style dice&lt;/a&gt; (and &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chinese_dominoes"&gt;Chinese dominoes&lt;/a&gt;).  &lt;tt class="docutils literal"&gt;dominoes_chinese&lt;/tt&gt; has a white background with black and red pips while &lt;tt class="docutils literal"&gt;dominoes_chinese_black&lt;/tt&gt; has a black background with white and red&amp;nbsp;pips.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_chinese&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_chinese_black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;length.out&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Traditional pipped dice (Western and Asian-style)" src="https://trevorldavis.com/piecepackr/images/knitr/games-dice-traditional-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Traditional pipped dice (Western and&amp;nbsp;Asian-style)&lt;/p&gt;
&lt;/div&gt;
&lt;table class="docutils footnote" frame="void" id="footnote-1" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;The die pieces in other configurations such as the various &amp;#8220;dominoes&amp;#8221; configurations may also contain standard six-sided dice when appropriate.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="polyhedral-dice"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Polyhedral&amp;nbsp;dice&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The polyhedral dice were introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.13.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;tt class="docutils literal"&gt;dice_d4&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dice_numeral&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dice_d8&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dice_d10&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dice_d10_percentile&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dice_d12&lt;/tt&gt;, and &lt;tt class="docutils literal"&gt;dice_d20&lt;/tt&gt; configurations provide the seven &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Dice#Polyhedral_dice"&gt;polyhedral dice&lt;/a&gt; most commonly used by wargames, roleplaying games, and trading card games in six colors controlled by&amp;nbsp;suit.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dice_&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;d4&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;numeral&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;d8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;d10_percentile&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;d10&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;d12&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;d20&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Polyhedral dice" src="https://trevorldavis.com/piecepackr/images/knitr/games-dice-polyhedral-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Polyhedral&amp;nbsp;dice&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="fudge-fate-dice"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Fudge/Fate&amp;nbsp;dice&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The Fudge dice were introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.11.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;tt class="docutils literal"&gt;dice_fudge&lt;/tt&gt; configuration use the six-sided &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Fudge_(role-playing_game_system)#Fudge_dice"&gt;Fudge dice&lt;/a&gt; with two plus, two minus, and two blank faces most commonly used in the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Fudge_(role-playing_game_system)"&gt;Fudge&lt;/a&gt; and &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Fate_(role-playing_game_system)"&gt;Fate&lt;/a&gt; roleplaying&amp;nbsp;games.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dice_fudge&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Fudge dice" src="https://trevorldavis.com/piecepackr/images/knitr/games-dice-fudge-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Fudge&amp;nbsp;dice&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="piecepack-dice"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Piecepack&amp;nbsp;dice&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The inverted piecepack was introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.10.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;tt class="docutils literal"&gt;piecepack&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dual_piecepacks_expansion&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;playing_cards_expansion&lt;/tt&gt;, and &lt;tt class="docutils literal"&gt;piecepack_inverted&lt;/tt&gt; configurations provide &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; dice &lt;a class="footnote-reference" href="#footnote-2" id="footnote-reference-2"&gt;[2]&lt;/a&gt;.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dual_piecepacks_expansion&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;playing_cards_expansion&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack_inverted&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Piecepack dice" src="https://trevorldavis.com/piecepackr/images/knitr/games-dice-piecepack-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Piecepack&amp;nbsp;dice&lt;/p&gt;
&lt;/div&gt;
&lt;table class="docutils footnote" frame="void" id="footnote-2" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;There are also piecepack dice in the &lt;tt class="docutils literal"&gt;hexpack&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;subpack&lt;/tt&gt; configurations but these are just small versions of the &lt;tt class="docutils literal"&gt;piecepack&lt;/tt&gt; dice.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="chess-dice"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Chess&amp;nbsp;dice&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The &lt;tt class="docutils literal"&gt;chess1&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;chess2&lt;/tt&gt; configurations were introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.6.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;tt class="docutils literal"&gt;chess1&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;chess2&lt;/tt&gt; configurations provide chess&amp;nbsp;dice.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Chess dice" src="https://trevorldavis.com/piecepackr/images/knitr/games-dice-chess-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Chess&amp;nbsp;dice&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="custom-dice"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Custom&amp;nbsp;dice&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; allows for custom six-sided dice.  One can use &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configurations&lt;/a&gt; and &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;custom grob functions&lt;/a&gt; to customize the faces of the dice and use the &lt;tt class="docutils literal"&gt;die_arrangement&lt;/tt&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt; to customize the ordering, rotation, and size of the faces when visualized in a &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/3d-projections.html"&gt;3D projection&lt;/a&gt; or arranged in a &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/pages/print-and-play-pdfs.html"&gt;Print &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Play&lt;/a&gt;&amp;nbsp;layout.&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="other-game-systems"></category></entry><entry><title>Licenses FAQ</title><link href="https://trevorldavis.com/piecepackr/licenses-faq.html" rel="alternate"></link><published>2020-11-28T00:00:00-08:00</published><updated>2022-02-04T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-11-28:/piecepackr/licenses-faq.html</id><summary type="html">&lt;p class="first last"&gt;Information (and opinions) on piecepack game&amp;nbsp;licenses.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;This article contains some of my thoughts and opinions on piecepack game licenses.  Note however that I am not a lawyer and this should not be construed as legal advice.  Also, as I am a citizen of the United States, these opinions are heavily informed by American law and may be poorly suited for residents of other&amp;nbsp;countries.&lt;/p&gt;
&lt;div class="admonition warning"&gt;
&lt;p class="first admonition-title"&gt;Warning&lt;/p&gt;
&lt;p class="last"&gt;I am not a lawyer.  My legal opinions should not be construed as legal&amp;nbsp;advice.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#how-can-i-protect-the-intellectual-property-in-my-piecepack-game" id="toc-entry-1"&gt;How can I protect the intellectual property in my piecepack&amp;nbsp;game?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#what-license-should-i-use-for-my-piecepack-game" id="toc-entry-2"&gt;What license should I use for my piecepack game?&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#why-not-use-a-license-with-a-non-commercial-clause" id="toc-entry-3"&gt;Why not use a license with a non-commercial&amp;nbsp;clause?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#why-not-use-a-license-with-a-no-derivatives-clause" id="toc-entry-4"&gt;Why not use a license with a no-derivatives&amp;nbsp;clause?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#why-not-use-a-custom-license" id="toc-entry-5"&gt;Why not use a custom&amp;nbsp;license?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#why-not-use-an-earlier-creative-commons-license" id="toc-entry-6"&gt;Why not use an earlier Creative Commons&amp;nbsp;license?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#can-i-offer-individuals-more-than-one-choice-of-licenses-they-can-use" id="toc-entry-7"&gt;Can I offer individuals more than one choice of licenses they can&amp;nbsp;use?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#why-is-the-cc-by-sa-4-0-license-better-than-the-gfdl" id="toc-entry-8"&gt;Why is the &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 4.0 license better than the &lt;span class="caps"&gt;GFDL&lt;/span&gt;?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#piecepackr-is-licensed-under-the-mit-license-is-its-output-automatically-mit-licensed-too" id="toc-entry-9"&gt;piecepackr is licensed under the &lt;span class="caps"&gt;MIT&lt;/span&gt; license,  is its output automatically &lt;span class="caps"&gt;MIT&lt;/span&gt; licensed&amp;nbsp;too?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#footnotes" id="toc-entry-10"&gt;Footnotes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="section" id="how-can-i-protect-the-intellectual-property-in-my-piecepack-game"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;How can I protect the intellectual property in my piecepack&amp;nbsp;game?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In the United States there are four forms of protection for piecepack&amp;nbsp;games:&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;Technically games may be protected by &lt;a class="reference external" href="https://www.boardgamegeek.com/geeklist/20416/board-and-card-game-patents"&gt;utility or design patent&lt;/a&gt;.  However patenting a game using just the piecepack components may no longer be possible after the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Alice_Corp._v._CLS_Bank_International"&gt;Alice Corporation Pty Ltd. v. &lt;span class="caps"&gt;CLS&lt;/span&gt; Bank Int&amp;#8217;l&lt;/a&gt; decision which made it harder to patent mere ideas (e.g. see &lt;a class="reference external" href="https://ipspotlight.files.wordpress.com/2014/11/ex-parte-kuester.pdf"&gt;Ex Parte Kuester&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://www.copyright.gov/fls/fl108.pdf"&gt;Copyright does not offer much protection for board games&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Copyright does not protect the idea for a game, its name or title, or the method or methods for playing it. Nor does copyright protect any idea, system, method, device, or trademark ma­terial involved in developing, merchandising, or playing a game. Once a game has been made public, nothing in the copyright law prevents others from developing another game based on similar principles. Copyright protects only the particular manner of an author’s expression in literary, artistic, or musical&amp;nbsp;form.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;However&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Material prepared in connection with a game may be subject to copyright if it contains a sufficient amount of literary or pictorial expression. For example, the text matter describing the rules of the game or the pictorial matter appearing on the gameboard or container may be&amp;nbsp;registrable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Elements of a board game may be &lt;a class="reference external" href="https://www.americanbar.org/groups/intellectual_property_law/publications/landslide/2014-15/march-april/not-playing-around-board-games-intellectual-property-law/"&gt;protected by&amp;nbsp;trademark&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As noted above, game names are an obvious option for trademark protection, but game designers and publishers have also sought to register and protect trade dress in game board designs, distinctive card layouts, and even game&amp;nbsp;tokens.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;#8217;m not sure though how much effective trademark protection is actually provided for a game using public domain piecepack components especially if it is being offered for free download and isn&amp;#8217;t being sold commercially.  How much protection is there for new card games playable with a standard deck of playing cards or for chess&amp;nbsp;variants?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Although not enforceable by American law, probably the most effective form of protection against piecepack game &amp;#8220;theft&amp;#8221; are actually the norms within the piecepack community in particular and more broadly the board game (designer) community against &amp;#8220;stealing&amp;#8221; (other designers&amp;#8217;) games.  This form of &lt;span class="caps"&gt;IP&lt;/span&gt; is similar to how &lt;a class="reference external" href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1138376"&gt;comedians protect their jokes&lt;/a&gt; and &lt;a class="reference external" href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1005564&amp;amp;rec=1&amp;amp;srcabs=1138376&amp;amp;pos=1"&gt;magicians protect their tricks&lt;/a&gt;.
This means that although piecepack games can generally be legally cloned (e.g. see the court case of &lt;a class="reference external" href="https://strebecklaw.com/court-rules-favor-cloned-tabletop-game-no-protection-us-copyright-law/"&gt;Bang! versus Legends of the Three Kingdoms&lt;/a&gt;) such cloning may likely be rare since it violates community norms and would likely be socially&amp;nbsp;sanctioned.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="what-license-should-i-use-for-my-piecepack-game"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;What license should I use for my piecepack&amp;nbsp;game?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you want individuals to be able to do whatever they want with your game choose the Creative Commons &lt;a class="reference external" href="https://creativecommons.org/publicdomain/zero/1.0/"&gt;&lt;span class="caps"&gt;CC0&lt;/span&gt; 1.0 Universal Public Domain Dedication&lt;/a&gt; (&lt;span class="caps"&gt;CC0&lt;/span&gt; 1.0) &lt;a class="footnote-reference" href="#publicdomain" id="footnote-reference-1"&gt;[1]&lt;/a&gt;.  If you want to be very permissive about what individuals can do with your game, but want them to give you credit then choose the Creative Commons &lt;a class="reference external" href="https://creativecommons.org/licenses/by/4.0/"&gt;Attribution 4.0 International&lt;/a&gt; license (&lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt; 4.0).  If you want individuals who adapt your game to have to give their users the same freedom you gave them then choose the Creative Commons &lt;a class="reference external" href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;Attribution-ShareAlike 4.0 International&lt;/a&gt; license (&lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt;&amp;nbsp;4.0).&lt;/p&gt;
&lt;div class="section" id="why-not-use-a-license-with-a-non-commercial-clause"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Why not use a license with a non-commercial&amp;nbsp;clause?&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;It prevents certain use cases without offering much more protection from commercial explotaition than a &amp;#8220;copyleft&amp;#8221; &amp;#8220;ShareAlike&amp;#8221; license and does not actually legally prevent all scenarios where individuals may &amp;#8220;profit&amp;#8221; from the&amp;nbsp;work:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://www.opensourcejahrbuch.de/download/jb2006/chapter_06/osjb2006-06-02-en-moeller.pdf"&gt;http://www.opensourcejahrbuch.de/download/jb2006/chapter_06/osjb2006-06-02-en-moeller.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://creativecommons.org/2017/02/24/update-great-minds-v-fedex-office-litigation-involving-nc-sa/"&gt;https://creativecommons.org/2017/02/24/update-great-minds-v-fedex-office-litigation-involving-nc-sa/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Note most piecepack games can generally be legally &amp;#8220;cloned&amp;#8221; regardless of chosen license (at least in the United States) so
in particular a &amp;#8220;noncommercial&amp;#8221; license does not offer much protection in our specific use&amp;nbsp;case.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;What exactly non-commercial means is not well&amp;nbsp;defined:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://www.cnet.com/news/does-the-noncommercial-creative-commons-license-make-sense/"&gt;https://www.cnet.com/news/does-the-noncommercial-creative-commons-license-make-sense/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://wiki.creativecommons.org/wiki/Defining_Noncommercial"&gt;https://wiki.creativecommons.org/wiki/Defining_Noncommercial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Certain free culture distribution channels (like free software repos) refuse to distribute media with a non-commercial clause,
so your game is less likely to be included in a collection of good free culture piecepack&amp;nbsp;games.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="why-not-use-a-license-with-a-no-derivatives-clause"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Why not use a license with a no-derivatives&amp;nbsp;clause?&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Given that most piecepack games can generally be legally &amp;#8220;cloned&amp;#8221; regardless of chosen license what is your goal in preventing derivatives?  In particular what is the harm discouraging your game being translated into another language for players who don&amp;#8217;t know English, it being enhanced with additional diagrams, or it being converted into a pamphlet that can be distributed at a game convention or&amp;nbsp;library?&lt;/li&gt;
&lt;li&gt;Note however though a Creative Commons license with a no-derivatives clause is better than the default &amp;#8220;All Rights Reserved&amp;#8221; since it allows the game to be preserved and shared by third parties (such as the &lt;a class="reference external" href="ludism.org/ppwik"&gt;piecepack wiki&lt;/a&gt;) so is to be recommended for game designers who really don&amp;#8217;t want to use a more permissive license (even if&amp;nbsp;&amp;#8220;copyleft&amp;#8221;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="why-not-use-a-custom-license"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Why not use a custom&amp;nbsp;license?&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;People do not like spending time trying to understand a custom&amp;nbsp;license.&lt;/li&gt;
&lt;li&gt;Custom licenses are often ambiguous or contain legal mistakes.  In particular with custom licenses in old piecepack games, it is often not clear whether derivatives are allowed at&amp;nbsp;all.&lt;/li&gt;
&lt;li&gt;Custom licenses are often not compatible with other free cultural work&amp;nbsp;licenses.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="why-not-use-an-earlier-creative-commons-license"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Why not use an earlier Creative Commons&amp;nbsp;license?&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;The 4.0 branch of Creative Commons license are the &lt;a class="reference external" href="https://wiki.creativecommons.org/wiki/License_Versions#Compatibility_mechanism_in_BY-SA_licenses"&gt;latest and greatest Creative Commons licenses&lt;/a&gt; and incorporates wisdom learned implementing the earlier&amp;nbsp;licenses.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;In particular with &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 4.0 has a very forward-looking ShareLike compatibility mechanism that greatly simplifies future license compliance when combining assets
from &lt;a class="reference external" href="https://creativecommons.org/share-your-work/licensing-considerations/compatible-licenses"&gt;&amp;#8220;compatible&amp;#8221; licenses&lt;/a&gt; since users only need to comply with the terms of the last license applied instead of needing to read and comply with every license in the &amp;#8220;license&amp;nbsp;stack&amp;#8221;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://wiki.creativecommons.org/wiki/ShareAlike_compatibility"&gt;https://wiki.creativecommons.org/wiki/ShareAlike_compatibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This means your game is more likely to stay relevant decades into the&amp;nbsp;future.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="can-i-offer-individuals-more-than-one-choice-of-licenses-they-can-use"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;Can I offer individuals more than one choice of licenses they can&amp;nbsp;use?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Yes, this known as &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Multi-licensing"&gt;multi-licensing&lt;/a&gt;.  In the common case of offering exactly two license choices this is known as &amp;#8220;dual-licensing&amp;#8221;.  &lt;a class="reference external" href="http://www.ludism.org/ppwiki/RelicensedGames"&gt;Dual-licensing an old piecepack game under a modern Creative Commons license&lt;/a&gt; can be done after the fact by a declaration by the author without manually editing all the old games.  Technically under American law any author of a jointly authored game can &lt;a class="reference external" href="https://info.legalzoom.com/article/joint-authorship-and-copyright"&gt;unilaterally dual license their game under a Creative Commons license&lt;/a&gt;. &lt;a class="footnote-reference" href="#joint" id="footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="why-is-the-cc-by-sa-4-0-license-better-than-the-gfdl"&gt;
&lt;span id="gfdl"&gt;&lt;/span&gt;&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;Why is the &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 4.0 license better than the &lt;span class="caps"&gt;GFDL&lt;/span&gt;?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Both the Creative Commons Attribution-ShareAlike and the &lt;a class="reference external" href="https://www.gnu.org/licenses/fdl-1.3.html"&gt;&lt;span class="caps"&gt;GNU&lt;/span&gt; Free Documentation License&lt;/a&gt; (&lt;span class="caps"&gt;GFDL&lt;/span&gt;) licenses are &lt;a class="reference external" href="https://freedomdefined.org/Definition"&gt;Free Cultural Works&lt;/a&gt; copyleft licenses &lt;a class="footnote-reference" href="#invariant" id="footnote-reference-3"&gt;[3]&lt;/a&gt;.  Why is the &lt;span class="caps"&gt;GFDL&lt;/span&gt; license more of a hassle to work with than the &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 4.0&amp;nbsp;license?&lt;/p&gt;
&lt;p&gt;Lets consider the following use case, a fan wants to adapt your ruleset by adding some illustrations, condensing it into a easy to handout one-page leaflet, and then hand out 101 copies for free at a local game convention (maybe translating into the local language).  Here is a table of some requirements that are more of a hassle with the &lt;span class="caps"&gt;GFDL&lt;/span&gt; license than the &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 4.0&amp;nbsp;license:&lt;/p&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Leaflet adaption requirements&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="50%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;span class="caps"&gt;GFDL&lt;/span&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 4.0&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;They must include the text of the entire &lt;span class="caps"&gt;GFDL&lt;/span&gt; license in the leaflet. &lt;a class="footnote-reference" href="#gfdllicense" id="footnote-reference-4"&gt;[4]&lt;/a&gt;  Note that &lt;span class="caps"&gt;GFDL&lt;/span&gt; v1.3 is 3,691 words long and such a leaflet may need to devote more space to the license than your game&amp;#8230;&lt;/td&gt;
&lt;td&gt;One may include a &lt;span class="caps"&gt;URI&lt;/span&gt; (hyperlink) to the &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 4.0 license instead of the full text of the license. &lt;a class="footnote-reference" href="#bysalicense" id="footnote-reference-5"&gt;[5]&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Beginning of the leaflet cannot be the name of the game (assuming you put the name of the game on top of your ruleset). &lt;a class="footnote-reference" href="#gfdltitle" id="footnote-reference-6"&gt;[6]&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Putting the name of the game at the top of the leaflet is fine.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;They must either bundle with each single-page leaflet a physcial copy of the electronic source (e.g. attach a flash drive or burnt &lt;span class="caps"&gt;CD&lt;/span&gt; to each single-page leaflet) or include a link to a website with the electronic source that they must keep up for at least one year after the convention. &lt;a class="footnote-reference" href="#gfdlcode" id="footnote-reference-7"&gt;[7]&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;No legal need to offer electronic source but may not apply any &amp;#8220;Effective Technological Measures&amp;#8221; to make it hard to copy/modify the leaflet. &lt;a class="footnote-reference" href="#bysadrm" id="footnote-reference-8"&gt;[8]&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="piecepackr-is-licensed-under-the-mit-license-is-its-output-automatically-mit-licensed-too"&gt;
&lt;span id="piecepackr-output"&gt;&lt;/span&gt;&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;piecepackr is licensed under the &lt;span class="caps"&gt;MIT&lt;/span&gt; license,  is its output automatically &lt;span class="caps"&gt;MIT&lt;/span&gt; licensed&amp;nbsp;too?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Although the &lt;strong&gt;code&lt;/strong&gt; of piecepackr is licensed under the &lt;a class="reference external" href="https://opensource.org/licenses/MIT"&gt;&lt;span class="caps"&gt;MIT&lt;/span&gt; license&lt;/a&gt; under American law the graphical &lt;strong&gt;output&lt;/strong&gt; will probably either be the copyright of the creator or not sufficiently creative to warrant copyright protection.  In general under American law copyright is assigned to the software &lt;strong&gt;user&lt;/strong&gt; and not the software program (which as an algorithm is not considered a &lt;em&gt;creative&lt;/em&gt; agent).  However there may be conditions where the graphical &lt;strong&gt;output&lt;/strong&gt; of &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; is protected by someone else&amp;#8217;s copyright (or&amp;nbsp;trademark):&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Although the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Intellectual_property_protection_of_typefaces#United_States"&gt;copyright protection of typefaces&lt;/a&gt; varies internationally, under American law &lt;strong&gt;typefaces&lt;/strong&gt; cannot be protected by copyright but software &lt;strong&gt;fonts&lt;/strong&gt; can be protected by copyright.  In a couple of graphic devices (in particular &lt;tt class="docutils literal"&gt;cairo_pdf&lt;/tt&gt;) &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; will &lt;em&gt;embed&lt;/em&gt; copyrightable font software into the resulting image.  For example in the &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/chess.html"&gt;chess&lt;/a&gt; demo I had to get written permission from the author, Hans Bodlaender, to use the &lt;a class="reference external" href="https://www.chessvariants.com/d.font/utrecht.html"&gt;Chess Utrecht&lt;/a&gt; font in one of my&amp;nbsp;designs.&lt;/li&gt;
&lt;li&gt;It is possible with a &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;custom grob function&lt;/a&gt; to embed images, depending on which images you embed you could easily fall afoul of copyright/trademark law.  The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/triactor-jcd-piecepack.html"&gt;Triactor demo&lt;/a&gt; is an example of embedding images in a game diagram which required me to comply with the &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;NC&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 2.0 license of the Triactor rule&amp;nbsp;set.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt; (especially with &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;custom grob function&lt;/a&gt;) is sufficiently flexible that one could configure and use a board game design that is protected under someone else&amp;#8217;s copyright/trademark. For example the spin-off package &lt;a class="reference external" href="https://github.com/piecepackr/piecenikr"&gt;piecenikr&lt;/a&gt; generates images for Looney Labs&amp;#8217; patented and trademarked &lt;a class="reference external" href="https://www.looneylabs.com/looney-pyramids"&gt;Looney Pyramids&lt;/a&gt; game&amp;nbsp;system.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that the &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s built-in &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configurations&lt;/a&gt; returned by the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; command should avoid any of these potential&amp;nbsp;issues:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Uses fonts which should allow you to embed them in images/documents without even requiring&amp;nbsp;attribution.&lt;/li&gt;
&lt;li&gt;Does not embed any outside copyrighted images. &lt;a class="footnote-reference" href="#meeple" id="footnote-reference-9"&gt;[9]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Only contains public domain game systems (which should not suffer from copyright / trademark&amp;nbsp;issues).&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- 2. Even if the game diagrams for some reason had to be CC BY-SA 4.0, that doesn't mean the entire rule set needs to be under a CC BY-SA 4.0.  If you clearly attribute and license just the game diagrams under the CC BY-SA 4.0 the rest of the rule set can be under any other license.  This is known as a "collective work" and such use has been successfully defended under American law (i.e. `Drauglis v. Kappa Map Group, LLC &lt;https://wiki.creativecommons.org/wiki/Drauglis_v._Kappa_Map_Group,_LLC&gt;`_). --&gt;
&lt;/div&gt;
&lt;div class="section" id="footnotes"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-10"&gt;Footnotes&lt;/a&gt;&lt;/h2&gt;
&lt;table class="docutils footnote" frame="void" id="publicdomain" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Not all countries recognize dedicating into the public domain, the &lt;span class="caps"&gt;CC0&lt;/span&gt; acts as a &amp;#8220;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Public-domain-equivalent_license"&gt;public domain equivalent license&lt;/a&gt;&amp;#8221; in such jurisdictions.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="joint" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;This is not true in all countries, for example &lt;a class="reference external" href="https://www.britishcopyright.org/information/co-authors-or-joint-authors-of-books/"&gt;in the United Kingdom all joint authors must agree to dual-license a rule set&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="invariant" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-3"&gt;[3]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Assuming the &lt;span class="caps"&gt;GFDL&lt;/span&gt; work doesn&amp;#8217;t have any &lt;em&gt;invariant&lt;/em&gt; sections (and zero of the piecepack games released under the &lt;span class="caps"&gt;GFDL&lt;/span&gt; have an &lt;em&gt;invariant&lt;/em&gt; section).&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="gfdllicense" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-4"&gt;[4]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;#8220;you must do these things in the Modified Version&amp;#8230; Include an unaltered copy of this License.&amp;#8221;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="bysalicense" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-5"&gt;[5]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;#8220;You must include the text of, &lt;strong&gt;or the &lt;span class="caps"&gt;URI&lt;/span&gt; or hyperlink to&lt;/strong&gt;, the Adapter&amp;#8217;s License You apply.&amp;#8221; (emphasis mine)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="gfdltitle" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-6"&gt;[6]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;#8220;you must do these things in the Modified Version: &amp;#8230; Use &amp;#8230; a title distinct from that of the Document&amp;#8221;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="gfdlcode" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-7"&gt;[7]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;#8220;you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.&amp;#8221;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="bysadrm" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-8"&gt;[8]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;#8220;You may not &amp;#8230; apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter&amp;#8217;s License You apply.&amp;#8221;  Merely printing a &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; work on paper is not considered to be an &amp;#8220;Effective Technological Measure&amp;#8221; but deliberately using &amp;#8220;security printing&amp;#8221; technology like &amp;#8220;simulated watermarking&amp;#8221; to make it harder to photocopy/scan a document may qualify.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="meeple" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-9"&gt;[9]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;The outline for meeple shape used in the &amp;#8220;meeples&amp;#8221; configuration (also used in some face cards in the playing cards) was extracted (converted into a dataset of normalized x, y coordinates) from &lt;a class="reference external" href="https://game-icons.net/1x1/delapouite/meeple.html"&gt;Meeple icon&lt;/a&gt; by &lt;a class="reference external" href="https://delapouite.com/"&gt;Delapouite&lt;/a&gt; / &lt;a class="reference external" href="http://creativecommons.org/licenses/by/3.0/"&gt;&lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt; 3.0&lt;/a&gt;.  Since &amp;#8220;simple shapes&amp;#8221; nor data can be copyrighted under American law this meeple outline is not copyrightable in the United States.  However, in other legal jurisdictions with stricter copyright laws you may need to give the proper &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt; attribution if you use any of the meeples.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</content><category term="Articles"></category></entry><entry><title>Essential elements of a piecepack</title><link href="https://trevorldavis.com/piecepackr/essential-elements-of-a-piecepack.html" rel="alternate"></link><published>2020-11-15T00:00:00-08:00</published><updated>2020-11-15T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-11-15:/piecepackr/essential-elements-of-a-piecepack.html</id><summary type="html">&lt;p class="first last"&gt;Thoughts on the essential elements of a&amp;nbsp;piecepack.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;In 2001 James &amp;#8220;Kyle&amp;#8221; Droscha invented the piecepack and laid out a &amp;#8220;prescriptive&amp;#8221; &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a Piecepack&lt;/a&gt; standard with design decisions further described in a &lt;a class="reference external" href="http://www.ludism.org/ppwiki/DesignFAQ"&gt;&lt;span class="caps"&gt;FAQ&lt;/span&gt;&lt;/a&gt;.  As &lt;a class="reference external" href="https://piecepack.net/piecepack"&gt;others have noted&lt;/a&gt;, there are several &lt;a class="reference external" href="http://www.ludism.org/ppwiki/Downloadable_Piecepack_Sets"&gt;piecepack designs&lt;/a&gt; that do not strictly follow the prescriptive &amp;#8220;Anatomy of a piecepack&amp;#8221; standard but it is still possible to play most piecepack games with them anyways.  This begs the question: &amp;#8220;What are the essential elements of a&amp;nbsp;piecepack?&amp;#8221;.&lt;/p&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#essential-information-sets-of-a-piecepack" id="toc-entry-1"&gt;Essential information sets of a&amp;nbsp;piecepack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#footnotes" id="toc-entry-2"&gt;Footnotes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="essential-information-sets-of-a-piecepack"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Essential information sets of a&amp;nbsp;piecepack&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here is my &lt;strong&gt;opinion&lt;/strong&gt; of the essential elements of a piecepack &lt;a class="footnote-reference" href="#warning" id="footnote-reference-1"&gt;[1]&lt;/a&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;4 &amp;#8220;suits&amp;#8221; and 6 &amp;#8220;ranks&amp;#8221; &lt;a class="footnote-reference" href="#extra" id="footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;24 square &amp;#8220;tiles&amp;#8221; (one for each pairing of suit and rank) &lt;a class="footnote-reference" href="#hexagonal" id="footnote-reference-3"&gt;[3]&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;The &amp;#8220;face&amp;#8221; of the tile reveals its suit, rank, and direction &lt;a class="footnote-reference" href="#alien" id="footnote-reference-4"&gt;[4]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The &amp;#8220;back&amp;#8221; of the tile hides its suit, rank, and direction &lt;a class="footnote-reference" href="#hidden" id="footnote-reference-5"&gt;[5]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;24 circular &amp;#8220;coins&amp;#8221; (one for each pairing of suit and rank) &lt;a class="footnote-reference" href="#circle" id="footnote-reference-6"&gt;[6]&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;The &amp;#8220;face&amp;#8221; of the coin reveals its rank and direction while hiding its suit &lt;a class="footnote-reference" href="#hiddensuit" id="footnote-reference-7"&gt;[7]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The &amp;#8220;back&amp;#8221; of the coin reveals its suit and direction while hiding its&amp;nbsp;rank&lt;/li&gt;
&lt;li&gt;Must fit within a quarter of a&amp;nbsp;tile&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;4 &amp;#8220;pawns&amp;#8221; (one for each suit)&lt;ul&gt;
&lt;li&gt;Each pawn reveals its&amp;nbsp;suit&lt;/li&gt;
&lt;li&gt;Each pawn may (but need not) reveal a&amp;nbsp;direction&lt;/li&gt;
&lt;li&gt;Must fit within a quarter of a&amp;nbsp;tile&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;4 dice (one for each suit)&lt;ul&gt;
&lt;li&gt;The 6 &amp;#8220;ranks&amp;#8221; are mapped onto the six &amp;#8220;faces&amp;#8221; of each die and each &amp;#8220;face&amp;#8221; reveals the suit and rank &lt;a class="footnote-reference" href="#null" id="footnote-reference-8"&gt;[8]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;One may (but need not) make the direction of the die obvious &lt;a class="footnote-reference" href="#diedirection" id="footnote-reference-9"&gt;[9]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Must fit within a quarter of a tile &lt;a class="footnote-reference" href="#diesize" id="footnote-reference-10"&gt;[10]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="footnotes"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Footnotes&lt;/a&gt;&lt;/h2&gt;
&lt;table class="docutils footnote" frame="void" id="warning" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Note although adhering to the below information sets will make it &lt;strong&gt;possible&lt;/strong&gt; to play any piecepack game,  having your piecepack more closely adhere to the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a Piecepack&lt;/a&gt; standard may lead to better &lt;strong&gt;ergonomics&lt;/strong&gt; with existing piecepack games (e.g. themes will match, there may be less hassle mapping game rulesets to your piecepack, etc.).&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="extra" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Additional suits and/or ranks are fine and descriptively not uncommon.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="hexagonal" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-3"&gt;[3]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Hexagonal &amp;#8220;tiles&amp;#8221; (and triangular &amp;#8220;coins&amp;#8221;) leads to a &lt;a class="reference external" href="https://boardgamegeek.com/boardgameexpansion/35424/hexpack"&gt;Hexpack&lt;/a&gt;, a related game system.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="alien" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-4"&gt;[4]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Descriptively not all piecepack designs reveal an unambiguous direction on every tile face.  However, the arguably the most popular piecepack game, Alien City, depends on the tile faces having an unambiguous direction.  In particular since the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a piecepack&lt;/a&gt; standard indicates direction by placing a suit symbol in the upper left corner of each tile face Alien City is best played on piecepack tiles with a specially marked corner on each tile face.  Additionally, descriptively some piecepack designs have tile faces that reveal multiple directions.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="hidden" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-5"&gt;[5]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Descriptively, although all piecepack tile backs hide suit and rank, many piecepack design tile backs do not fully hide direction (i.e. they have &amp;#8220;checkered&amp;#8221; backs which &amp;#8220;leak&amp;#8221; information about the direction of the front).  However any piecepack that follows the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a piecepack&lt;/a&gt; standard will have tile backs which hide the direction of the front while visually dividing the piece into four quadrants via a &lt;tt class="docutils literal"&gt;+&lt;/tt&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="circle" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-6"&gt;[6]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;There exist dexterity games that assume a circular game piece (for multidirectional flicking).  Circular game pieces may also be used to play hexagonal games.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="hiddensuit" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-7"&gt;[7]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Descriptively some piecepacks have coin faces that do not hide the suit but this generally seems to be regarded as a mistake.  However extra game pieces that reveal both suit and rank are a &amp;#8220;common accessory&amp;#8221; (e.g. piecepack pyramids or the tiles from a matching &amp;#8220;mini&amp;#8221; piecepack)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="null" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-8"&gt;[8]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Technically in the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a Piecepack&lt;/a&gt; standard the &amp;#8220;null&amp;#8221; face is completely blank and one needs to infer its suit by looking at the sides of the die.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="diedirection" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-9"&gt;[9]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Unlike some piecepack pawns which may not have a &amp;#8220;direction&amp;#8221;, one may always assign a &amp;#8220;direction&amp;#8221; to a piecepack die i.e. the direction of the highest ranked die side.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="diesize" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-10"&gt;[10]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;This requirement is not in the standard but instead is suggested in James &amp;#8220;Kyle&amp;#8221; Droscha&amp;#8217;s piecepack design &lt;span class="caps"&gt;FAQ&lt;/span&gt;.  However, descriptively all piecepack designs seem to comply with this, some piecepack games depend on this, and practically speaking a die would need to be unusually large to not comply.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</content><category term="Articles"></category></entry><entry><title>Go</title><link href="https://trevorldavis.com/piecepackr/go.html" rel="alternate"></link><published>2020-09-03T00:00:00-07:00</published><updated>2025-03-25T00:00:00-07:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-09-03:/piecepackr/go.html</id><summary type="html">&lt;p class="first last"&gt;Version 1.5.2 of &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with built-in configurations for &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Go_(game)"&gt;Go&lt;/a&gt; boards and stones in a variety of colors and sizes via the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; function.  Here are some example diagrams for a game of &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Go_variants#Multi-player_Go"&gt;Multi-player go&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;Version 1.5.2 of &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with built-in configurations for &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Go_(game)"&gt;Go&lt;/a&gt; boards and stones in a variety of colors and sizes via the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; function.  Here is an example diagram for a game of &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Go_variants#Multi-player_Go"&gt;Multi-player go&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.2.0-13&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.15.0-9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;dfb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;go_board&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;dfB&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;go_bits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;dfR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;go_bits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;dfY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;go_bits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;dfG&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;go_bits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;green&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep.int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;dfK&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;go_bits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep.int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dfW&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;go_bits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep.int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1L&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dfb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dfB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dfR&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dfY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dfG&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dfK&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dfW&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;shading&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;burlywood&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="2D Multi-player Go diagram" src="https://trevorldavis.com/piecepackr/images/knitr/games-go-grid-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;2D Multi-player Go&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="other-game-systems"></category></entry><entry><title>Relativity</title><link href="https://trevorldavis.com/piecepackr/relativity.html" rel="alternate"></link><published>2020-05-08T00:00:00-07:00</published><updated>2025-01-13T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-05-08:/piecepackr/relativity.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="http://www.ludism.org/ppwiki/Relativity"&gt;Relativity&lt;/a&gt; is a &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; game by Ron and Marty Hale-Evans.  It is a two-player abstract game with interesting movement mechanics.  Being able to distinguish ranks is important while being able to distinguish suits is not important so a piecepack design optimized for playing this game may consider coloring &lt;em&gt;ranks&lt;/em&gt; instead of &lt;em&gt;suits&lt;/em&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.ludism.org/ppwiki/Relativity"&gt;Relativity&lt;/a&gt; is a &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; game by Ron and Marty Hale-Evans.  It is a two-player abstract game with interesting movement mechanics.  Being able to distinguish ranks is important while being able to distinguish suits is not important so a piecepack design optimized for playing this game may consider coloring &lt;em&gt;ranks&lt;/em&gt; instead of &lt;em&gt;suits&lt;/em&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.r1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#E69F00&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.r2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#56B4E9&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.r3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#009E73&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.r4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#F0E442&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.r5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#D55E00&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.r6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#F079A7&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;ppn_file&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;system.file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn/relativity.ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;read_ppn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppn_file&lt;/span&gt;&lt;span class="p"&gt;)[[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="nf"&gt;animate_game&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;relativity.gif&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;annotate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;n_transitions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n_pauses&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Animation of a Relativity game" src="https://trevorldavis.com/piecepackr/images/knitr/relativity.gif" /&gt;
&lt;p class="caption"&gt;Animation of a round of a game of&amp;nbsp;Relativity&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepack-games"></category></entry><entry><title>Looney Pyramids</title><link href="https://trevorldavis.com/piecepackr/looney-pyramids.html" rel="alternate"></link><published>2020-03-30T00:00:00-07:00</published><updated>2020-08-14T00:00:00-07:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-03-30:/piecepackr/looney-pyramids.html</id><summary type="html">&lt;p class="first last"&gt;Looney Pyramids aka Icehouse pieces is a game system invented by Andrew Looney.
The package &lt;a class="reference external" href="https://github.com/piecepackr/piecenikr"&gt;piecenikr&lt;/a&gt; provides a &lt;tt class="docutils literal"&gt;looney_pyramids()&lt;/tt&gt; function that provides an &lt;tt class="docutils literal"&gt;icehouse_piceces&lt;/tt&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt;
to make Looney Pyramids graphics with &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#intro" id="toc-entry-1"&gt;Intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#martian-chess" id="toc-entry-2"&gt;Martian&amp;nbsp;Chess&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="intro"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Intro&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Looney Pyramids aka Icehouse pieces is a game system invented by Andrew
Looney. The following are good sites of information about Looney&amp;nbsp;Pyramids:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://www.looneylabs.com/looney-pyramids"&gt;https://www.looneylabs.com/looney-pyramids&lt;/a&gt; (official&amp;nbsp;site)&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://www.icehousegames.org/wiki/index.php?title=Main_Page"&gt;https://www.icehousegames.org/wiki/index.php?title=Main_Page&lt;/a&gt;
(unofficial&amp;nbsp;wiki)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The package &lt;a class="reference external" href="https://github.com/piecepackr/piecenikr"&gt;piecenikr&lt;/a&gt; provides a &lt;tt class="docutils literal"&gt;looney_pyramids()&lt;/tt&gt; function that provides an &lt;tt class="docutils literal"&gt;icehouse_piceces&lt;/tt&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt;
to make Looney Pyramids graphics with &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecenikr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tibble&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;looney_pyramids&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;icehouse_pieces&lt;/span&gt;

&lt;span class="n"&gt;dft&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dfp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pyramid_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pyramid_left&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pyramid_right&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pyramid_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;360&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dft&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dfp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;dft&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dfp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pyramid_top&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;630&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dft&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dfp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Looney Pyramids (2D)" src="https://trevorldavis.com/piecepackr/images/knitr/games-looney-pyramids-looney_pyramids-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Looney Pyramids&amp;nbsp;(2D)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="martian-chess"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Martian&amp;nbsp;Chess&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here are some example 4-player setup diagrams for Andy Looney&amp;#8217;s game &lt;a class="reference external" href="https://www.looneylabs.com/rules/martian-chess"&gt;Martian Chess&lt;/a&gt; drawn in various projections using &lt;a class="reference external" href="https://github.com/piecepackr/piecenikr"&gt;piecenikr&lt;/a&gt; and &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecenikr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piecenikr&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;df_martian_chess&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_players&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;seed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;42&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;looney_pyramids&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Setup for Andy Looney's Martian Chess (2D)" src="https://trevorldavis.com/piecepackr/images/knitr/games-looney-pyramids-martian_chess_2d-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Setup for Andy Looney&amp;#8217;s Martian Chess&amp;nbsp;(2D)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Setup for Andy Looney's Martian Chess (3D oblique)" src="https://trevorldavis.com/piecepackr/images/knitr/games-looney-pyramids-martian_chess_op-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Setup for Andy Looney&amp;#8217;s Martian Chess (3D&amp;nbsp;oblique)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;sans3d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;looney_pyramids&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rgl&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;open3d&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;silent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;bg3d&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;Sys.which&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;wmctrl&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;wmctrl -r RGL -e 0,-1,-1,1080,1080&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;view3d&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;phi&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;-30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;zoom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piece3d&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Setup for Andy Looney's Martian Chess (3D rgl)" src="https://trevorldavis.com/piecepackr/images/knitr/martian_chess_rgl.png" style="width: 80%;" /&gt;
&lt;p class="caption"&gt;Setup for Andy Looney&amp;#8217;s Martian Chess (3D&amp;nbsp;rgl)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="other-game-systems"></category></entry><entry><title>Checkers</title><link href="https://trevorldavis.com/piecepackr/checkers.html" rel="alternate"></link><published>2020-02-19T00:00:00-08:00</published><updated>2025-03-25T00:00:00-07:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-02-19:/piecepackr/checkers.html</id><summary type="html">&lt;p class="first last"&gt;Version 1.3 of &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with built-in configurations for checker boards and checkers in a variety of colors and sizes via the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; function.  Here is an example of the setup for Dan Troyka&amp;#8217;s game &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Breakthrough_(board_game)"&gt;Breakthrough&lt;/a&gt; as well as Robert Abbott&amp;#8217;s game &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Crossings_(game)"&gt;Crossings&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;Version 1.3 of &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with built-in configurations for checker boards and checkers in a variety of colors and sizes via the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; function.  The boards for the &lt;tt class="docutils literal"&gt;checkers1&lt;/tt&gt; configuration has 1&amp;#8221; cells and the &lt;tt class="docutils literal"&gt;checkers2&lt;/tt&gt; configuration has 2&amp;#8221; cells.  Number of rows/columns is controlled by the &lt;tt class="docutils literal"&gt;board&lt;/tt&gt; component&amp;#8217;s rank and the color of the board and checker &lt;tt class="docutils literal"&gt;bit&lt;/tt&gt; components are controlled by the suit.  The &lt;tt class="docutils literal"&gt;face&lt;/tt&gt; of the &lt;tt class="docutils literal"&gt;board&lt;/tt&gt; has checkers and the &lt;tt class="docutils literal"&gt;back&lt;/tt&gt; has lines.  Here is an example of the setup for Dan Troyka&amp;#8217;s game &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Breakthrough_(board_game)"&gt;Breakthrough&lt;/a&gt; as well as Robert Abbott&amp;#8217;s game &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Crossings_(game)"&gt;Crossings&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.2.0-13&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.15.0-9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;df_board&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;checker_board&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;df_w&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;checker_bits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df_b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;checker_bits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df_board&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Setup for Dan Troyka's *Breakthrough* as well as Robert Abbott's *Crossings*" src="https://trevorldavis.com/piecepackr/images/knitr/games-checkers-breakthrough-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Setup for Dan Troyka&amp;#8217;s &lt;em&gt;Breakthrough&lt;/em&gt; as well as Robert Abbott&amp;#8217;s &lt;em&gt;Crossings&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="other-game-systems"></category></entry><entry><title>Dominoes</title><link href="https://trevorldavis.com/piecepackr/dominoes.html" rel="alternate"></link><published>2020-02-16T00:00:00-08:00</published><updated>2023-03-06T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-02-16:/piecepackr/dominoes.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with built-in configurations for double-18 dominoes in six color schemes as well as Chinese dominoes in two color schemes via the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; function.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#western-dominoes-and-dice" id="toc-entry-1"&gt;Western dominoes and&amp;nbsp;dice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chinese-dominoes-and-dice" id="toc-entry-2"&gt;Chinese dominoes and&amp;nbsp;dice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with built-in configurations for double-18 dominoes in six color schemes as well as Chinese dominoes in two color schemes via the &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; function.&lt;/p&gt;
&lt;div class="section" id="western-dominoes-and-dice"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Western dominoes and&amp;nbsp;dice&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;Double-12 dominoes were introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; v1.3 and were extended to double-18 dominoes in&amp;nbsp;v1.9.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;There are seven dominoes configurations: &lt;tt class="docutils literal"&gt;dominoes&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dominoes_black&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dominoes_blue&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dominoes_green&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dominoes_red&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dominoes_white&lt;/tt&gt;, and &lt;tt class="docutils literal"&gt;dominoes_yellow&lt;/tt&gt; with the &amp;#8220;rank&amp;#8221; controlling the number of pips on the &amp;#8220;top&amp;#8221; side and the &amp;#8220;suit&amp;#8221; controlling the number of pips on the &amp;#8220;bottom&amp;#8221; side.  Currently there is no difference in appearance between the &lt;tt class="docutils literal"&gt;dominoes&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;dominoes_white&lt;/tt&gt; configurations returned by &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; &lt;a class="footnote-reference" href="#footnote-1" id="footnote-reference-1"&gt;[1]&lt;/a&gt;.  The &lt;tt class="docutils literal"&gt;dice&lt;/tt&gt; configuration provides standard six-sided dice with the suit controlling the color and the rank controlling the number of pips &lt;a class="footnote-reference" href="#footnote-2" id="footnote-reference-2"&gt;[2]&lt;/a&gt;.  Here is an example&amp;nbsp;diagram:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tibble&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;df_dominoes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;18+1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                                   &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;green&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="n"&gt;df_dice&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dice&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df_dominoes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_dice&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Double-18 dominoes and standard 6-sided dice" src="https://trevorldavis.com/piecepackr/images/knitr/games-dominoes-diagram-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Double-18 dominoes and standard 6-sided&amp;nbsp;dice&lt;/p&gt;
&lt;/div&gt;
&lt;table class="docutils footnote" frame="void" id="footnote-1" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Semantically the &amp;#8220;dominoes&amp;#8221; is meant to represent a more general notion of a dominoes set.  &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt; implements it as a dominoes set with black pips on white tiles but users could theoretically replace it with alternative dominoes set implementations such as tiles with colored numbers.  Semantically the various colored dominoes sets are meant to be visually distinct with each other and to visually match the pieces from other game systems-in particular the &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; game &lt;a class="reference external" href="https://www.ludism.org/ppwiki/Japan"&gt;Japan&lt;/a&gt; assumes two different double-6 dominoes sets that match two of the piecepack suits.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="footnote-2" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Technically, each of the dominoes configurations also has matching six-sided &amp;#8220;die&amp;#8221; pieces.  These are equivalent to the pipped six-sided dice in &lt;tt class="docutils literal"&gt;dice&lt;/tt&gt; when using the configurations returned by &lt;tt class="docutils literal"&gt;game_systems()&lt;/tt&gt;.  However semantically they need not be equivalent e.g. if you had a modified &amp;#8220;dominoes&amp;#8221; configuration with colored numbers instead of pips and also updated its &amp;#8220;die&amp;#8221; pieces to also use colored numbers instead of pips then these dice may no longer match the dice from the &amp;#8220;dice&amp;#8221; configuration.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="chinese-dominoes-and-dice"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Chinese dominoes and&amp;nbsp;dice&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;Chinese dominoes were introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.13.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The configurations &lt;tt class="docutils literal"&gt;dominoes_chinese&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;dominoes_chinese_black&lt;/tt&gt; provide &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chinese_dominoes"&gt;Chinese dominoes&lt;/a&gt; and &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Dice#Arrangement"&gt;Asian-style dice&lt;/a&gt;.  &lt;tt class="docutils literal"&gt;dominoes_chinese&lt;/tt&gt; has a white background with black and red pips while &lt;tt class="docutils literal"&gt;dominoes_chinese_black&lt;/tt&gt; has a black background with white and red&amp;nbsp;pips.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tibble&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;df1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6L&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4L&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3L&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_chinese&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_chinese_black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_chinese&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7L&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3L&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6.5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7L&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_chinese&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_chinese_black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dominoes_chinese&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2L&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7.25&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Chinese dominoes and 6-sided dice" src="https://trevorldavis.com/piecepackr/images/knitr/games-dominoes-chinese-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Chinese dominoes and 6-sided&amp;nbsp;dice&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="other-game-systems"></category></entry><entry><title>Generating alternative textures for James H. Vipond’s piecepack components</title><link href="https://trevorldavis.com/piecepackr/generating-alternative-textures-for-james-h-viponds-piecepack-components.html" rel="alternate"></link><published>2020-02-08T00:00:00-08:00</published><updated>2020-02-08T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-02-08:/piecepackr/generating-alternative-textures-for-james-h-viponds-piecepack-components.html</id><summary type="html">&lt;p class="first last"&gt;James H. Vipond is a 3D artist who has created high quality &lt;a class="reference external" href="http://vipondweb.byethost3.com/gameroom/PoserPiecepack.html?i=1"&gt;Wavefront &lt;span class="caps"&gt;OBJ&lt;/span&gt; files and associated textures of piecepack game pieces&lt;/a&gt;. Although Vipond has created some nice png textures to go with his &lt;span class="caps"&gt;OBJ&lt;/span&gt; files you may want to be able to use other piecepack designs.  Here is some example code that given a particular &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt; will allow one to generate appropriate png textures for use with Vipond&amp;#8217;s &lt;span class="caps"&gt;OBJ&lt;/span&gt;&amp;nbsp;assets.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;James H. Vipond is a 3D artist who has created high quality &lt;a class="reference external" href="http://vipondweb.byethost3.com/gameroom/PoserPiecepack.html?i=1"&gt;Wavefront &lt;span class="caps"&gt;OBJ&lt;/span&gt; files and associated textures of piecepack game pieces&lt;/a&gt;.  &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Wavefront_.obj_file"&gt;Wavefront &lt;span class="caps"&gt;OBJ&lt;/span&gt;&lt;/a&gt; files allow one to make 3D graphics with a variety of software programs.  Although Vipond has created some nice png textures to go with his &lt;span class="caps"&gt;OBJ&lt;/span&gt; files you may want to be able to use other piecepack designs.  Here is some example code that given a particular &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt; will allow one to generate appropriate png textures for use with Vipond&amp;#8217;s &lt;span class="caps"&gt;OBJ&lt;/span&gt;&amp;nbsp;assets.&lt;/p&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#code" id="toc-entry-1"&gt;Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#configuration-notes" id="toc-entry-2"&gt;Configuration&amp;nbsp;notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="code"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Code&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;save_3d_textures&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tempdir&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as_pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;n_suits&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nf"&gt;write_die_texture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nf"&gt;write_pawn_texture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nf"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;n_ranks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nf"&gt;write_coin_texture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nf"&gt;write_tile_texture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;invisible&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;write_pawn_texture&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tempdir&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;file.path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_belt_s&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;.png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;png&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;265&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;189&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;belt_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;use_pictureGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;dev.off&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;write_coin_texture&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tempdir&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;file.path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_s&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;_r&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;.png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;png&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;pushViewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;off&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;use_pictureGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;popViewport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;dev.off&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;write_die_texture&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tempdir&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;file.path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_s&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;.png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;png&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;get_piece_opt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grid.rect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;use_pictureGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;dev.off&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;write_tile_texture&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tempdir&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;file.path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face_s&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;_r&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;.png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;png&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;250&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;250&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;use_pictureGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;dev.off&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="configuration-notes"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Configuration&amp;nbsp;notes&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here are some tips for creating good configurations to work well with Vipond&amp;#8217;s&amp;nbsp;assets:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Don’t use border lines. You can achieve this by setting &lt;tt class="docutils literal"&gt;border_color = &amp;quot;transparent&amp;quot;&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Note the height to width ratio of Vipond&amp;#8217;s pawn belts are 265 to 189 whereas the default for piecepackr is 0.5&amp;#8221; to 2.356194&amp;#8221; (in order to fully wrap around a 3/4&amp;#8221; diameter pawn). You may consider setting &lt;tt class="docutils literal"&gt;belt_face.width=1, belt_face.height=265/189&lt;/tt&gt; if using&amp;nbsp;save_3d_textures.&lt;/li&gt;
&lt;li&gt;You may want to put thought into your edge color for certain pieces like tiles and coins. To simulate a black laser-cut burned look perhaps use &lt;tt class="docutils literal"&gt;edge_color.tile = &amp;quot;black&amp;quot;, edge_color.coin = &amp;quot;black&amp;quot;&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content><category term="Articles"></category></entry><entry><title>Reversi</title><link href="https://trevorldavis.com/piecepackr/reversi.html" rel="alternate"></link><published>2020-01-05T00:00:00-08:00</published><updated>2025-01-14T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2020-01-05:/piecepackr/reversi.html</id><summary type="html">&lt;p class="first last"&gt;In the game of &lt;a class="reference external" href="http://www.ludism.org/ppwiki/Reversi"&gt;Reversi&lt;/a&gt; one player is represented by the suited side of piecepack components while the other player is represented by the unsuited side of piecepack components.  A reversi-friendly piecepack design makes it easier to distinguish between the suited and unsuited sides of piecepack components.  We also show how to play reversi with a piecepack&amp;nbsp;stackpack.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#reversi-friendly-piecepack-design" id="toc-entry-1"&gt;Reversi-friendly piecepack&amp;nbsp;design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#playing-reversi-with-a-piecepack-stackpack" id="toc-entry-2"&gt;Playing reversi with a piecepack&amp;nbsp;stackpack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="reversi-friendly-piecepack-design"&gt;
&lt;span id="reversi1"&gt;&lt;/span&gt;&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Reversi-friendly piecepack&amp;nbsp;design&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In the game of &lt;a class="reference external" href="http://www.ludism.org/ppwiki/Reversi"&gt;Reversi&lt;/a&gt; one player is represented by the suited side of piecepack components while the other player is represented by the unsuited side of piecepack components.  A reversi-friendly piecepack design makes it easier to distinguish between the suited and unsuited sides of piecepack components.  One simple option would be to design a piecepack where the background of the suited sides are black and those of the unsuited sides are&amp;nbsp;white.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.suited&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey20&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#D55E00,white,gold,#56b4e9&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;edge_color.coin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;edge_color.tile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#E69F00&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;dejavu_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from the font Dejavu Sans.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://dejavu-fonts.github.io/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://dejavu-fonts.github.io/License.html&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dejavu_credit&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Reversi-friendly piecepack&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2020 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;reversi1_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;NULL&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;NULL&lt;/span&gt;
&lt;span class="n"&gt;reversi1_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.suited&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;reversi1_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reversi1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;reversi1_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of a reversi-friendly piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/games-reversi-preview-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of a reversi-friendly&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="playing-reversi-with-a-piecepack-stackpack"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Playing reversi with a piecepack&amp;nbsp;stackpack&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A single piecepack (24 coins) lacks enough pieces to play the full 8x8 version of Reversi but a piecepack &lt;a class="reference external" href="http://ludism.org/ppwiki/StackPack"&gt;stackpack&lt;/a&gt; has enough pieces (24 supercoins plus 24 subtiles plus 24&amp;nbsp;subcoins).&lt;/p&gt;
&lt;!-- Example from https://bonaludo.com/2018/06/04/othello-tutorial-p-5-endings-how-to-not-fail-in-last-few-moves/ --&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dplyr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;warn.conflicts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tibble&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;reversi1_borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;subpack&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;to_subpack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reversi1_borders&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;df_pt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;piecepack_rect_board_tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nrow&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ncol&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df_pt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;df_btf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;subpack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df_btb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;subpack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df_pcb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df_pcf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df_bcb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;subpack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df_bcf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;subpack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;bind_rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df_pt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_btf&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_btb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_pcb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_bcb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_pcf&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_bcf&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="End diagram for a game of Reversi" src="https://trevorldavis.com/piecepackr/images/knitr/games-reversi-end-diagram-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;End diagram for a game of&amp;nbsp;Reversi&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="print-and-play"></category><category term="piecepack-games"></category></entry><entry><title>Triactor (JCD Piecepack)</title><link href="https://trevorldavis.com/piecepackr/triactor-jcd-piecepack.html" rel="alternate"></link><published>2019-11-15T00:00:00-08:00</published><updated>2025-01-14T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-11-15:/piecepackr/triactor-jcd-piecepack.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="http://www.ludism.org/ppwiki/JonathanDietrich"&gt;Jonathan C. Dietrich&lt;/a&gt; is a notable piecepack designer who has written several piecepack games, developed &lt;a class="reference external" href="http://www.ludism.org/ppwiki/VassalModule"&gt;&lt;span class="caps"&gt;VASSAL&lt;/span&gt;&amp;#8217;s piecepack module&lt;/a&gt;, and designed the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/JCD.html"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&lt;/a&gt;.  In this demo we&amp;#8217;ll be making a starting diagram for the game &lt;a class="reference external" href="http://www.piecepack.org/rules/Triactor.pdf"&gt;Triactor&lt;/a&gt; that he co-authored using a &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt; that directly uses his &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/JCD.html"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&lt;/a&gt; images contained in &lt;a class="reference external" href="http://www.ludism.org/ppwiki/VassalModule"&gt;&lt;span class="caps"&gt;VASSAL&lt;/span&gt;&amp;#8217;s piecepack module&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.ludism.org/ppwiki/JonathanDietrich"&gt;Jonathan C. Dietrich&lt;/a&gt; is a notable piecepack designer who has written several piecepack games, developed &lt;a class="reference external" href="http://www.ludism.org/ppwiki/VassalModule"&gt;&lt;span class="caps"&gt;VASSAL&lt;/span&gt;&amp;#8217;s piecepack module&lt;/a&gt;, and designed the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/JCD.html"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&lt;/a&gt;.  In this demo we&amp;#8217;ll be making a starting diagram for the game &lt;a class="reference external" href="http://www.piecepack.org/rules/Triactor.pdf"&gt;Triactor&lt;/a&gt; that he co-authored using a &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt; that directly uses his &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/JCD.html"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&lt;/a&gt; images contained in &lt;a class="reference external" href="http://www.ludism.org/ppwiki/VassalModule"&gt;&lt;span class="caps"&gt;VASSAL&lt;/span&gt;&amp;#8217;s piecepack module&lt;/a&gt;.&lt;/p&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#jcd-piecepack-configuration" id="toc-entry-1"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&amp;nbsp;configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#triactor-1" id="toc-entry-2"&gt;Triactor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="jcd-piecepack-configuration"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&amp;nbsp;configuration&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;I contacted Jonathon C. Dietrich and he wrote that it is fine to use the &lt;span class="caps"&gt;VASSAL&lt;/span&gt; piecepack module images in game diagrams but that attribution is&amp;nbsp;required.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The strategy for our &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/JCD.html"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&lt;/a&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration&lt;/a&gt; will be to extract the gif images from &lt;a class="reference external" href="http://www.ludism.org/ppwiki/VassalModule"&gt;&lt;span class="caps"&gt;VASSAL&lt;/span&gt;&amp;#8217;s piecepack module&lt;/a&gt; (which is actually a zip file) and then use &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s &lt;tt class="docutils literal"&gt;picturePieceGrobFn&lt;/tt&gt; to make a &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;grob function&lt;/a&gt; that directly uses those images.  If you don&amp;#8217;t want checkered tile backs set &lt;tt class="docutils literal"&gt;checkered=&lt;span class="caps"&gt;FALSE&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;file.exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Piecepack_v0_15_BUNDLE.zip&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;download.file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://www.vassalengine.org/mediawiki/images/6/6a/Piecepack_v0_15_BUNDLE.zip&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;z1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Piecepack_v0_15_BUNDLE.zip&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;z2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;unzip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;z1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack/piecepack.mod&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;exdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;tempdir&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="nf"&gt;unzip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;z2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;exdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;tempdir&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;file.path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;tempdir&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;images&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;jcd_filename_fn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;checkered&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;switch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;s&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;playing_cards_expansion&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;h&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;p&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;b&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;four_seasons_expansion&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;f&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;w&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;u&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.character&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;fp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suffix&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nf"&gt;file.path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suffix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;.gif&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suits&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ranks&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;sr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nf"&gt;switch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;coin_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;die_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sr&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;pawn_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;pawn_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;tile_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;ifelse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;checkered&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;back1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;back2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;tile_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;fp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sr&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;This piecepack uses JCD Piecepack images from the VASSAL piecepack module by Jonathan C. Dietrich&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttp://www.piecepack.org/JCD.html&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttp://www.vassalengine.org/wiki/Module:Piecepack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.ludism.org/ppwiki/JonathanDietrich&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.ludism.org/ppwiki/VassalModule&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grob_fn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;picturePieceGrobFn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;jcd_filename_fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#c54242,#8c8c7b,#bdb53a,#429cc5,black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_lex.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;border_lex.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.125&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;width.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;52&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;55&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;shape.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;concave5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape_r.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;edge_color.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#c5945a&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;edge_color.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#c5945a&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;edge_color.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;pce&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;
&lt;span class="n"&gt;pce&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;grob_fn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;picturePieceGrobFn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;jcd_filename_fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;playing_cards_expansion&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;pce&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#c03a3a,#848473,#848473,#c03a3a,black&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;fse&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;
&lt;span class="n"&gt;fse&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;grob_fn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;picturePieceGrobFn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;jcd_filename_fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;four_seasons_expansion&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;fse&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#e9bf60,#eee0cd,#9ce0dc,#eb88c4,black&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;jcd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;playing_cards_expansion&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pce&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;four_seasons_expansion&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fse&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="triactor-1"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Triactor&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.piecepack.org/rules/Triactor.pdf"&gt;Triactor&lt;/a&gt;: A Day at the Piecepack Downs is a game by &lt;a class="reference external" href="http://www.ludism.org/ppwiki/JonathanDietrich"&gt;Jonathan C. Dietrich&lt;/a&gt;, Julie Taylor, and Ken MacKeigan that won &amp;#8220;Best Eye Candy&amp;#8221; in the &lt;a class="reference external" href="http://www.ludism.org/ppwiki/GroupProjects"&gt;6th piecepack game design competition &amp;#8220;Group Projects&amp;#8221;&lt;/a&gt;.  We&amp;#8217;ll make a starting diagram for &lt;a class="reference external" href="http://www.piecepack.org/rules/Triactor.pdf"&gt;Triactor&lt;/a&gt; including embedding the optional Print-and-Play playmat that comes with&amp;nbsp;it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;magick&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;suppressPackageStartupMessages&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;file.exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Triactor.pdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;download.file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://www.piecepack.org/rules/Triactor.pdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pdftools&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;suppressPackageStartupMessages&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;install.packages&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pdftools&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# dependency for &amp;#39;image_read_pdf&amp;#39;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;playmat&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rasterGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;as.raster&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;image_read_pdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Triactor.pdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;

&lt;span class="nf"&gt;png&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;../share/rules/triactor.png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;72&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pushViewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;11.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;grid.draw&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;playmat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;popViewport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_triactor&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;jcd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;invisible&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;dev.off&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Starting diagram for Triactor.  Uses &amp;quot;JCD piecepack&amp;quot; (http://www.piecepack.org/JCD.html) graphics contained in VASSAL's piecepack module (http://www.vassalengine.org/wiki/Module:Piecepack) by Jonathan C. Dietrich (https://www.ludism.org/ppwiki/JonathanDietrich) and the Triactor (http://www.piecepack.org/rules/Triactor.pdf) playmat by Jonathan C. Dietrich, Julie Taylor, and Ken MacKeigan / &amp;quot;CC BY-NC-SA 2.0&amp;quot; (http://creativecommons.org/licenses/by-nc-sa/2.0)." src="https://trevorldavis.com/piecepackr/share/rules/triactor.png" style="width: 80%;" /&gt;
&lt;p class="caption"&gt;Starting diagram for &lt;a class="reference external" href="http://www.piecepack.org/rules/Triactor.pdf"&gt;Triactor&lt;/a&gt;.  Uses &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/JCD.html"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&lt;/a&gt; images contained in &lt;a class="reference external" href="http://www.ludism.org/ppwiki/VassalModule"&gt;&lt;span class="caps"&gt;VASSAL&lt;/span&gt;&amp;#8217;s piecepack module&lt;/a&gt; by &lt;a class="reference external" href="http://www.ludism.org/ppwiki/JonathanDietrich"&gt;Jonathan C. Dietrich&lt;/a&gt; and the &lt;a class="reference external" href="http://www.piecepack.org/rules/Triactor.pdf"&gt;Triactor&lt;/a&gt; playmat by Jonathan C. Dietrich, Julie Taylor, and Ken MacKeigan / &lt;a class="reference external" href="http://creativecommons.org/licenses/by-nc-sa/2.0"&gt;&lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;NC&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt;&amp;nbsp;2.0&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepack-games"></category></entry><entry><title>Game starting arrangement functions</title><link href="https://trevorldavis.com/piecepackr/game-starting-arrangement-functions.html" rel="alternate"></link><published>2019-10-25T00:00:00-07:00</published><updated>2025-01-13T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-10-25:/piecepackr/game-starting-arrangement-functions.html</id><summary type="html">&lt;p class="first last"&gt;The package &lt;a class="reference external" href="https://github.com/piecepackr/ppdf"&gt;ppdf&lt;/a&gt; contains functions that generate the starting piece arrangements for several &lt;a class="reference external" href="http://www.ludism.org/ppwiki/Games"&gt;piecepack games&lt;/a&gt;.  These functions return data frames that can be used directly with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;piecepackr::pmap_piece()&lt;/span&gt;&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ppcli::cat_piece()&lt;/span&gt;&lt;/tt&gt; to generate &lt;a class="reference external" href="http://www.ludism.org/ppwiki/Games"&gt;piecepack game&lt;/a&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/tag/piecepack-games.html"&gt;diagrams&lt;/a&gt; or they can be used with &lt;a class="reference external" href="https://github.com/piecepackr/ppn"&gt;ppn&lt;/a&gt;&amp;#8216;s &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/portable-piecepack-notation.html"&gt;Portable Piecepack Notation&lt;/a&gt; parser &lt;tt class="docutils literal"&gt;read_ppn()&lt;/tt&gt; to initially setup the game&amp;nbsp;pieces.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;The package &lt;a class="reference external" href="https://github.com/piecepackr/ppdf"&gt;ppdf&lt;/a&gt; contains functions that generate the starting piece arrangements for several &lt;a class="reference external" href="http://www.ludism.org/ppwiki/Games"&gt;piecepack games&lt;/a&gt;.  These functions return data frames that can be used directly with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;piecepackr::pmap_piece()&lt;/span&gt;&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ppcli::cat_piece()&lt;/span&gt;&lt;/tt&gt; to generate &lt;a class="reference external" href="http://www.ludism.org/ppwiki/Games"&gt;piecepack game&lt;/a&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/tag/piecepack-games.html"&gt;diagrams&lt;/a&gt; or they can be used with &lt;a class="reference external" href="https://github.com/piecepackr/ppn"&gt;ppn&lt;/a&gt;&amp;#8216;s &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/portable-piecepack-notation.html"&gt;Portable Piecepack Notation&lt;/a&gt; parser &lt;tt class="docutils literal"&gt;read_ppn()&lt;/tt&gt; to initially setup the game&amp;nbsp;pieces.&lt;/p&gt;
&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#directly-generating-starting-diagrams" id="toc-entry-1"&gt;Directly generating starting&amp;nbsp;diagrams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#use-with-portable-piecepack-notation" id="toc-entry-2"&gt;Use with Portable Piecepack&amp;nbsp;Notation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#supported-game-start-functions" id="toc-entry-3"&gt;Supported Game Start Functions&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#contained-in-ppdf" id="toc-entry-4"&gt;Contained in ppdf&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#alquerque-games" id="toc-entry-5"&gt;Alquerque&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#checkers-games" id="toc-entry-6"&gt;Checkers&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chess-games" id="toc-entry-7"&gt;Chess&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#domino-games" id="toc-entry-8"&gt;Domino&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#go-games" id="toc-entry-9"&gt;Go&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#morris-games" id="toc-entry-10"&gt;Morris&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#piecepack-games-1" id="toc-entry-11"&gt;Piecepack&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#reversi-games" id="toc-entry-12"&gt;Reversi&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#stackpack-games" id="toc-entry-13"&gt;Stackpack&amp;nbsp;Games&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#contained-in-piecenikr" id="toc-entry-14"&gt;Contained in&amp;nbsp;piecenikr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="directly-generating-starting-diagrams"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Directly generating starting&amp;nbsp;diagrams&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The game start functions all return a data frame that can be used directly with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;piecepackr::pmap_piece()&lt;/span&gt;&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ppcli::cat_piece()&lt;/span&gt;&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppcli&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;cat_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_fide_chess&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;
&lt;img alt="Unicode text diagram for Chess" class="align-center" src="https://trevorldavis.com/share/piecepack/unicode_piecepack_alt_5.png" /&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;download.file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;https://trevorldavis.com/piecepackr/share/demo_cfgs.RData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;new.env&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;demo_cfgs.RData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_fide_chess&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;chess5_borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;img alt="3D diagram for Chess" class="align-center" src="https://trevorldavis.com/piecepackr/share/rules/fide-chess.png" /&gt;
&lt;/div&gt;
&lt;div class="section" id="use-with-portable-piecepack-notation"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Use with Portable Piecepack&amp;nbsp;Notation&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The game start functions can also be used with &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/portable-piecepack-notation.html"&gt;Portable Piecepack Notation&lt;/a&gt; to initially set the game pieces via the metadata field &lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
GameType: Four Field Kono

1. b1:b3 1... d3:b3 2. c1:c3 2... a3:c3 3. c2-c1 3... b4:b2 4. a1-b1 4... b3:b1
5. d1:b1 5... c3-c2 6. a2-a3 6... b2:d2 7. a3-b3 7... c4-c3 8. c1-d1 8... d4-d3
9. b1-b2 9... d2:b2 10. b3-a3 10... b2-b1 {Player 1's loss is assured with the
 separation of their two remaining pieces and they should resign in a real game}
11. a3-a2 11... b1-c1 12. d1-d2 12... c1-d1 13. a2-a3 13... a4-b4
14. a3-a4 14... b4-c4 15. a4-b4 15... c4-d4 16. b4-a4 16... d4:d2 {Player 2 wins}
&lt;/pre&gt;
&lt;img alt="Four Field Kono example" src="https://www.trevorldavis.com/share/piecepack/four_field_kono_example.gif" /&gt;
&lt;p&gt;It is also possible to pass in arguments to the game start function by passing a &amp;#8220;mapping&amp;#8221; to the &lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt; field:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType:
  Name: Fujisan
  Coins: &amp;quot;44452n24n3aa/a25335325ann&amp;quot;
...
1. a1-b1 2. n2-k2 3. b1-e1 4. e1-j1 5. j1-j2 6. j2-l2 7. k2-m2
8. m2-m1 9. l2-l1 10. n1-k1 11. m1-i1 12. i1-d1 13. d1-d2 14. l1-i1
15. i1-i2 16. k1-k2 17. k2-e2 18. i2-c2 19. a2-f2 20. e2-h2 21. h2-g2
22. c2-h2 23. h2-h1 24. d2-h2 25. f2-b2 26. b2-b1 27. b1-g1
&lt;/pre&gt;
&lt;img alt="Animation of a Fuji-san game" class="align-center" src="https://trevorldavis.com/piecepackr/images/knitr/fujisan.gif" /&gt;
&lt;p&gt;In particular for supported games playable with either a &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; or another game system (like a checkers board) one can inform &lt;span class="caps"&gt;PPN&lt;/span&gt; of the alternative game system to use via a &lt;tt class="docutils literal"&gt;System&lt;/tt&gt; argument to the &lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt; field:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType:
  Name: Four Field Kono
  System: Checkers
...
1. b1:b3 1... d3:b3 2. c1:c3 2... a3:c3 3. c2-c1 3... b4:b2 4. a1-b1 4... b3:b1
5. d1:b1 5... c3-c2 6. a2-a3 6... b2:d2 7. a3-b3 7... c4-c3 8. c1-d1 8... d4-d3
9. b1-b2 9... d2:b2 10. b3-a3 10... b2-b1 {Player 1's loss is assured with the
 separation of their two remaining pieces and they should resign in a real game}
11. a3-a2 11... b1-c1 12. d1-d2 12... c1-d1 13. a2-a3 13... a4-b4
14. a3-a4 14... b4-c4 15. a4-b4 15... c4-d4 16. b4-a4 16... d4:d2 {Player 2 wins}
&lt;/pre&gt;
&lt;img alt="Four Field Kono example using checkers and a board instead of a piecepack" src="https://www.trevorldavis.com/share/piecepack/four-field-kono-trad.gif" /&gt;
&lt;/div&gt;
&lt;div class="section" id="supported-game-start-functions"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Supported Game Start&amp;nbsp;Functions&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="contained-in-ppdf"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Contained in&amp;nbsp;ppdf&lt;/a&gt;&lt;/h3&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Some games supported in ppdf" src="https://trevorldavis.com/piecepackr/images/knitr/piecepack_games.gif" /&gt;
&lt;p class="caption"&gt;Some games supported in&amp;nbsp;ppdf&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="alquerque-games"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Alquerque&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for alquerque sets&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Alquerque"&gt;Alquerque&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;alquerque_alquerque()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Bagh-chal"&gt;Bagh-chal&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;alquerque_baghchal()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="checkers-games"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Checkers&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for checkers/draughts sets&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Draughts"&gt;(American) Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; (English) Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_american_checkers()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;checker_english_checkers()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;checker_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://draughts.github.io/american-pool-checkers.html"&gt;American Pool Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_american_pool_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Bashni"&gt;Bashni &lt;span class="caps"&gt;AKA&lt;/span&gt; Column Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_bashni()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;checker_column_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Brazilian_draughts"&gt;Brazilian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Brazilian Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_brazilian_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Breakthrough_(board_game)"&gt;Breakthrough&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_breakthrough()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Canadian_checkers"&gt;Canadian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Canadian Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_canadian_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://brainking.com/en/GameRules?tp=30"&gt;Corner Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Corner Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_corner_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Crossings_(game)"&gt;Crossings&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_crossings()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Czech_draughts"&gt;Czech Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Czech Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_czech_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Dameo"&gt;Dameo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_dameo()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://boardgamegeek.com/boardgame/948/dao"&gt;Dao&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_dao()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Dodgem"&gt;Dodgem&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_dodgem()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Focus_(board_game)"&gt;Focus&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_focus()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Four_Field_Kono"&gt;Four Field Kono&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_four_field_kono()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Frisian_draughts"&gt;Frisian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Frisian Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_frisian_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://mlwi.magix.net/bg/gothiccheckersvariants.htm"&gt;Gothic Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Gothic Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_gothic_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.cyningstan.com/game/71/grasshopper"&gt;Grasshopper&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_grasshopper()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/International_draughts"&gt;International Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; International Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_international_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Italian_draughts"&gt;Italian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Italian Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_italian_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://web.archive.org/web/20230605023244/http://poolcheckers.com/jamaica/"&gt;Jamaican Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Jamaican Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_jamaican_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Jul-Gonu"&gt;Jul-Gonu&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_julgonu()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://boardgamegeek.com/boardgame/6132/kangaroo-the-jumping-game"&gt;Kangaroo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_kangaroo()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.lasca.org"&gt;Lasca&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_lasca()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Lines_of_Action"&gt;Lines of Action&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_lines_of_action()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://brainking.com/en/GameRules?tp=31"&gt;Malaysian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Singaporean Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_malaysian_checkers()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;checker_singaporean_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://brainking.com/en/GameRules?tp=31"&gt;One Way Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; One Way Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_one_way_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.fpdamas.pt/regras/"&gt;Portuguese Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Portuguese Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_portuguese_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Russian_draughts"&gt;Russian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Russian Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_russian_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://mindsports.nl/index.php/on-the-evolution-of-draughts-variants/draughts-variants/497-dama_s"&gt;Spanish Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Spanish Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_spanish_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://checkers.fandom.com/wiki/Mak-hot"&gt;Thai Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Thai Draughts &lt;span class="caps"&gt;AKA&lt;/span&gt; Mak-hot &lt;span class="caps"&gt;AKA&lt;/span&gt; Makhos&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_thai_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Turkish_draughts"&gt;Turkish Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Turkish Draughts &lt;span class="caps"&gt;AKA&lt;/span&gt; Dama&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_turkish_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://wiegerw.github.io/pdn/gametype.html"&gt;Unified Pool Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_unified_pool_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://wiegerw.github.io/pdn/gametype.html"&gt;Zimbabwean Pool Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;checker_zimbabwean_pool_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="chess-games"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;Chess&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for chess sets&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.chessvariants.com/diffsetup.dir/fischer.html"&gt;Fischer Random Chess &lt;span class="caps"&gt;AKA&lt;/span&gt; Chess960&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;chess_fischer_random_chess()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;chess_chess960()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://lichess.org/variant/horde"&gt;Horde Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;chess_horde_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chess"&gt;(International) Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;chess_international_chess()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;chess_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://wunderland.com/WTS/Andy/Games/monochess.html"&gt;Monochrome Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;chess_monochrome_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.chessvariants.com/diffobjective.dir/racing.html"&gt;Racing Kings&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;chess_racing_kings()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="domino-games"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;Domino&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for sets of dominoes&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://donkirkby.github.io/donimoes/rules.html#bee-donimoes"&gt;Bee Donimoes&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_bee_donimoes()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.domino-play.com/Games/Concentration.htm"&gt;Concentration&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_concentration()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://donkirkby.github.io/donimoes/rules.html#domino-finder"&gt;Domino Finder&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_finder()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://donkirkby.github.io/donimoes/rules.html#fujisan"&gt;(Domino) Fuji-san&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_fujisan()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.domino-play.com/Games/Patience.htm"&gt;(Domino) Patience&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_patience()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://donkirkby.github.io/donimoes/rules.html#domino-runners"&gt;Domino Runners&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_runners()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.pagat.com/invented/domfreecell.html"&gt;Dominoes Freecell&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_freecell()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.domino-play.com/Games/Luzon.htm"&gt;Luzon&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_luzon()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.domino-play.com/Games/Jubilee.htm"&gt;The Jubilee&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_the_jubilee()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.domino-play.com/Games/Sultan.htm"&gt;The Sultan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;domino_the_sultan()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="go-games"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;Go&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for go sets&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Go_(game)"&gt;Go&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;go_go()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Gomoku"&gt;Gomoku&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;go_gomoku()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="morris-games"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-10"&gt;Morris&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for morris sets&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Nine_men%27s_morris#Six_men's_morris"&gt;Five Men&amp;#8217;s Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;morris_five_mens_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Nine_men%27s_morris"&gt;Nine Men&amp;#8217;s Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;morris_nine_mens_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Nine_men%27s_morris#Six_men's_morris"&gt;Seven Men&amp;#8217;s Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;morris_seven_mens_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://boardgamegeek.com/boardgame/25702/six-mens-morris"&gt;Six Men&amp;#8217;s Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;morris_six_mens_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Nine_men%27s_morris#Lasker_morris"&gt;Ten Men&amp;#8217;s Morris aka Lasker Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;morris_ten_mens_morris()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;morris_lasker_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Three_men%27s_morris"&gt;Three Men&amp;#8217;s Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;morris_three_mens_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Morabaraba"&gt;Twelve Men&amp;#8217;s Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;morris_twelve_mens_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="piecepack-games-1"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-11"&gt;Piecepack&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; sets&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://boardgamegeek.com/boardgame/154644/12345ive"&gt;12345ive!&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_12345ive()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Achi_(game)"&gt;Achi&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_achi()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Alice_chess"&gt;Alice Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_alice_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/AlienCity"&gt;Alien City&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_alien_city()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Alquerque"&gt;Alquerque &lt;span class="caps"&gt;AKA&lt;/span&gt; Qirkat&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_alquerque()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Checkers"&gt;(American) Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; (English) Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_american_checkers()&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;piecepack_english_checkers()&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;piecepack_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://draughts.github.io/american-pool-checkers.html"&gt;American Pool Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_american_pool_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Awithlaknannai_Mosona"&gt;Awithlaknannai Mosona&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_awithlaknannai_mosona()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Backgammon"&gt;Backgammon&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_backgammon()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Bagh_Chal"&gt;Bagh-chal&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_baghchal()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Bashni"&gt;Bashni &lt;span class="caps"&gt;AKA&lt;/span&gt; Column Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_bashni()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_column_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/BlackPawnTrucking"&gt;Black Pawn Trucking&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_black_pawn_trucking()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/BrainBurn"&gt;Brain Burn&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_brain_burn()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.cyningstan.com/game/125/brandub"&gt;Brandubh &lt;span class="caps"&gt;AKA&lt;/span&gt; Brandub&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_brandubh()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Brazilian_draughts"&gt;Brazilian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Brazilian Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_brazilian_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Breakthrough_(board_game)"&gt;Breakthrough&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_breakthrough()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Burbuja"&gt;Burbuja&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_burbuja()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://ludism.org/ppwiki/CardinalsGuards"&gt;Cardinal&amp;#8217;s Guards&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_cardinals_guards()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/CellManagement"&gt;Cell Management&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_cell_management()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/ChangeChange"&gt;Change Change&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_change_change()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Chariots"&gt;Chariots&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_chariots()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Chaturaji"&gt;Chaturaji&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_chaturaji()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/ChineseCheckers"&gt;Chinese Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; (Piecepack) Halma&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_chinese_checkers()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_halma()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/ClimbingMan"&gt;Climbing Man&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_climbing_man()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/CoinCollectors"&gt;Coin Collectors&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_coin_collectors()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://brainking.com/en/GameRules?tp=30"&gt;Corner Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Corner Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_corner_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Cribbage"&gt;Cribbage&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_cribbage()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_cribbage_board()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/CrocodileHop"&gt;Crocodile Hop&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_crocodile_hop()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Crossings_(game)"&gt;Crossings&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_crossings()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Czech_draughts"&gt;Czech Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Czech Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_czech_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://boardgamegeek.com/boardgame/948/dao"&gt;Dao&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_dao()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.cyningstan.com/game/148/dara"&gt;Dara&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_dara()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Desfases"&gt;Desfases&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_desfases()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Dodgem"&gt;Dodgem&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_dodgem()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://ludism.org/ppwiki/Dominoids"&gt;Dominoids&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_dominoids()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/EasySlider"&gt;Easy Slider&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_easy_slider()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Evade"&gt;Evade&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_evade()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Everest"&gt;Everest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_everest()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.chessvariants.com/diffsetup.dir/fischer.html"&gt;Fischer Random Chess &lt;span class="caps"&gt;AKA&lt;/span&gt; Chess960&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_fischer_random_chess()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_chess960()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/FourBlindMice"&gt;Four Blind Mice&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_four_blind_mice()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/FourFieldKono"&gt;Four Field Kono&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_four_field_kono()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.chessvariants.com/historic.dir/4seiz.html"&gt;Four Seasons Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_four_seasons_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/FroggyBottom"&gt;Froggy Bottom&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_froggy_bottom()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Fuji-san"&gt;Fuji-san&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_fujisan()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/GalaxyExpress"&gt;Galaxy Express&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_galaxy_express()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://mlwi.magix.net/bg/gothiccheckersvariants.htm"&gt;Gothic Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Gothic Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_gothic_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.cyningstan.com/game/71/grasshopper"&gt;Grasshopper&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_grasshopper()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/IceFloe"&gt;Ice Floe&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_ice_floe()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Iceberg"&gt;Iceberg&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_iceberg()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Chess"&gt;(International) Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_international_chess()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Italian_draughts"&gt;Italian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Italian Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_italian_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://web.archive.org/web/20230605023244/http://poolcheckers.com/jamaica/"&gt;Jamaican Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Jamaican Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_jamaican_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Japan"&gt;Japan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_japan()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/JulGonu"&gt;Jul-Gonu&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_julgonu()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://boardgamegeek.com/boardgame/6132/kangaroo-the-jumping-game"&gt;Kangaroo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_kangaroo()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.logygames.com/english/kingsvalley.html"&gt;King&amp;#8217;s Valley&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_kings_valley()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/LabRats"&gt;Lab Rats&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_lab_rats()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Landlocked"&gt;Landlocked&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_landlocked()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://youtu.be/LWuVDFmPkZs"&gt;Leapfrog&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_leapfrog()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/LeyLines"&gt;Ley Lines&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_ley_lines()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Lines_of_Action"&gt;Lines of Action&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_lines_of_action()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ludo_(board_game)"&gt;Ludo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_ludo()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://ludism.org/ppwiki/Lukawan"&gt;Lukawan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_lukawan()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Mathrix"&gt;Mathrix&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_mathrix()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Minishogi"&gt;Minishogi&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_minishogi()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Nine_men%27s_morris"&gt;Nine Men&amp;#8217;s Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_nine_mens_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/OneManThrag"&gt;One Man Thrag!&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_one_man_thrag()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://brainking.com/en/GameRules?tp=31"&gt;One Way Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; One Way Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_one_way_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/PassTheFood"&gt;Pass the Food&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_pass_the_food()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://ludism.org/ppwiki/PawnsCrossing"&gt;Pawns Crossing&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_pawns_crossing()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/PieceGaps"&gt;Piece Gaps&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_piece_gaps()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/PiecePackingPirates"&gt;Piece Packing Pirates&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_piece_packing_pirates()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://ludism.org/ppwiki/PiecepackKlondike"&gt;(Piecepack) Klondike&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_klondike()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Piecepackman"&gt;Piecepackman&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_piecepackman()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;Currently only supports the &amp;#8220;Roundabout&amp;#8221; variant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/PlansOfAction"&gt;Plans of Action&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_plans_of_action()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.fpdamas.pt/regras/"&gt;Portuguese Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Portuguese Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_portuguese_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Quatri"&gt;Quatri&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_quatri()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.chessvariants.com/diffobjective.dir/racing.html"&gt;Racing Kings&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_racing_kings()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Relativity"&gt;Relativity&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_relativity()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Russian_draughts"&gt;Russian Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Russian Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_russian_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Salta_(game)"&gt;Salta&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_salta()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/SanAndreas"&gt;San Andreas&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_san_andreas()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Sarcophagus"&gt;Sarcophagus&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_sarcophagus()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.cyningstan.com/game/120/seega"&gt;Seega&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_seega()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://ludism.org/ppwiki/Ship_It"&gt;Ship It!&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_ship_it()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Shogi"&gt;Shogi &lt;span class="caps"&gt;AKA&lt;/span&gt; Japanese Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_shogi()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_japanese_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/ShoppingMall"&gt;Shopping Mall&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_shopping_mall()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Skyscrapers"&gt;Skyscrapers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_skyscrapers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/SlidesOfAction"&gt;Slides of Action&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_slides_of_action()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://mindsports.nl/index.php/on-the-evolution-of-draughts-variants/draughts-variants/497-dama_s"&gt;Spanish Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Spanish Draughts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_spanish_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://ludism.org/ppwiki/SpeedyTowers"&gt;Speedy Towers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_speedy_towers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;Currently only supports the two players variant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://ludism.org/ppwiki/Steppin'_Stones"&gt;Steppin&amp;#8217; Stones&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_steppin_stones()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.cyningstan.com/game/229/tablan"&gt;Tablan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_tablan()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Tablut"&gt;Tablut&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_tablut()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Tariffs"&gt;Tariffs&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_tariffs()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://checkers.fandom.com/wiki/Mak-hot"&gt;Thai Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Thai Draughts &lt;span class="caps"&gt;AKA&lt;/span&gt; Mak-hot &lt;span class="caps"&gt;AKA&lt;/span&gt; Makhos&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_thai_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/TheInCrowd"&gt;The &amp;#8220;In&amp;#8221; Crowd&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_the_in_crowd()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/The_Magic_Bag"&gt;The Magic Bag&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_the_magic_bag()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/PenguinGame"&gt;The Penguin Game&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_the_penguin_game()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://boardgamegeek.com/boardgame/21861/three-musketeers"&gt;Three Musketeers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_three_musketeers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Tic-tac-toe"&gt;Tic-tac-toe&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_tic_tac_toe()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Tornado_vs._Trailer_Park"&gt;Tornado vs. Trailer Park&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_tornado_vs_trailer_park()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/TowerOfBabel"&gt;Tower of Babel &lt;span class="caps"&gt;AKA&lt;/span&gt; (Piecepack) Accordion&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_tower_of_babel()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_accordion()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Tracers"&gt;Tracers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_tracers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Triactor"&gt;Triactor&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_triactor()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Tula"&gt;Tula&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_tula()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;Also supports Tim Schutz&amp;#8217;s variants 1&amp;#8211;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Turkish_draughts"&gt;Turkish Checkers &lt;span class="caps"&gt;AKA&lt;/span&gt; Turkish Draughts &lt;span class="caps"&gt;AKA&lt;/span&gt; Dama&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_turkish_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.cyningstan.com/game/111/twelve-mens-morris"&gt;Twelve Men&amp;#8217;s Morris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_twelve_mens_morris()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Baroque_chess"&gt;Ultima &lt;span class="caps"&gt;AKA&lt;/span&gt; Baroque Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_ultima()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_baroque_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://wiegerw.github.io/pdn/gametype.html"&gt;Unified Pool Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_unified_pool_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Wormholes"&gt;Wormholes&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_wormholes()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Xiangqi"&gt;Xiangqi &lt;span class="caps"&gt;AKA&lt;/span&gt; Chinese Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_xiangqi()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;piecepack_chinese_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Yot%C3%A9"&gt;Yoté&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_yote()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://wiegerw.github.io/pdn/gametype.html"&gt;Zimbabwean Pool Checkers&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;piecepack_zimbabwean_pool_checkers()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="reversi-games"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-12"&gt;Reversi&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for reversi sets&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://boardgamegeek.com/boardgame/40573/ming-mang"&gt;Ming Mang&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;reversi_ming_mang()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Reversi"&gt;Reversi&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;reversi_reversi()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="stackpack-games"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-13"&gt;Stackpack&amp;nbsp;Games&lt;/a&gt;&lt;/h4&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for &lt;a class="reference external" href="http://ludism.org/ppwiki/StackPack"&gt;stackpack&lt;/a&gt; sets&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Alice_chess"&gt;Alice Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_alice_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Chaturaji"&gt;Chaturaji&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_chaturaji()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.chessvariants.com/diffsetup.dir/fischer.html"&gt;Fischer Random Chess &lt;span class="caps"&gt;AKA&lt;/span&gt; Chess960&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_fischer_random_chess()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;stackpack_chess960()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.chessvariants.com/historic.dir/4seiz.html"&gt;Four Seasons Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_four_seasons_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://lichess.org/variant/horde"&gt;Horde Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_horde_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Chess"&gt;(International) Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_international_chess()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;stackpack_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Salta_(game)"&gt;Salta&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_salta()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Shogi"&gt;Shogi aka Japanese Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_shogi()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;stackpack_japanese_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Baroque_chess"&gt;Ultima aka Baroque Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_ultima()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;stackpack_baroque_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.ludism.org/ppwiki/Xiangqi"&gt;Xiangqi &lt;span class="caps"&gt;AKA&lt;/span&gt; Chinese Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;stackpack_xiangqi()&lt;/tt&gt; aka &lt;tt class="docutils literal"&gt;stackpack_chinese_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="contained-in-piecenikr"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-14"&gt;Contained in&amp;nbsp;piecenikr&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Please note some Looney Pyramids / piecepack hybrids like &lt;a class="reference external" href="https://www.ludism.org/ppwiki/AlienCity"&gt;Alien City&lt;/a&gt; are contained in the &lt;a class="reference external" href="https://github.com/piecepackr/ppdf"&gt;ppdf&lt;/a&gt;&amp;nbsp;package.&lt;/p&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Setups for the Looney Pyramid game system&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="20%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;game&lt;/th&gt;
&lt;th class="head"&gt;methods&lt;/th&gt;
&lt;th class="head"&gt;comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;a class="reference external" href="https://www.looneylabs.com/rules/martian-chess"&gt;Martian Chess&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;tt class="docutils literal"&gt;icehouse_martian_chess()&lt;/tt&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepack-games"></category></entry><entry><title>Chess</title><link href="https://trevorldavis.com/piecepackr/chess.html" rel="alternate"></link><published>2019-10-12T00:00:00-07:00</published><updated>2025-01-13T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-10-12:/piecepackr/chess.html</id><summary type="html">&lt;p class="first last"&gt;Some demos of chess-ranked piecepacks as well as the starting diagrams of several chess variants playable with a&amp;nbsp;piecepack.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;This article includes some demos of chess-ranked piecepacks as well as the starting diagrams of several chess variants playable with a&amp;nbsp;piecepack.&lt;/p&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#print-and-play-chess-ranked-piecepacks" id="toc-entry-1"&gt;Print-and-play chess-ranked piecepacks&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chess-ranked-piecepack" id="toc-entry-2"&gt;Chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#french-suited-chess-ranked-piecepack" id="toc-entry-3"&gt;French-suited chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#mirrored-color-scheme-chess-piecepacks" id="toc-entry-4"&gt;Mirrored-color-scheme chess piecepacks&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#black-suited-mirrored-color-scheme-chess-ranked-piecepack" id="toc-entry-5"&gt;Black-suited mirrored-color-scheme chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#red-suited-mirrored-color-scheme-chess-ranked-piecepack" id="toc-entry-6"&gt;Red-suited mirrored-color-scheme chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#both-piecepack-and-chess-ranked-piecepack" id="toc-entry-7"&gt;Both-piecepack-and-chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#some-chess-variants-playable-with-a-piecepack" id="toc-entry-8"&gt;Some chess variants playable with a piecepack&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#alice-chess" id="toc-entry-9"&gt;Alice&amp;nbsp;Chess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chaturaji" id="toc-entry-10"&gt;Chaturaji&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#international-chess" id="toc-entry-11"&gt;(International)&amp;nbsp;Chess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#four-seasons-chess" id="toc-entry-12"&gt;Four seasons&amp;nbsp;chess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#ultima" id="toc-entry-13"&gt;Ultima&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#xiangqi-chinese-chess" id="toc-entry-14"&gt;Xiangqi (Chinese&amp;nbsp;Chess)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#some-chess-variants-playable-with-a-piecepack-stackpack" id="toc-entry-15"&gt;Some chess variants playable with a piecepack stackpack&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chaturaji-2" id="toc-entry-16"&gt;Chaturaji&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#international-chess-2" id="toc-entry-17"&gt;(International)&amp;nbsp;Chess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#shogi-japanese-chess" id="toc-entry-18"&gt;Shogi (Japanese&amp;nbsp;Chess)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#xiangqi-chinese-chess-1" id="toc-entry-19"&gt;Xiangqi (Chinese&amp;nbsp;Chess)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="print-and-play-chess-ranked-piecepacks"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Print-and-play chess-ranked&amp;nbsp;piecepacks&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="chess-ranked-piecepack"&gt;
&lt;span id="chess1"&gt;&lt;/span&gt;&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The simplest chess-ranked piecepack would be to simply swap in the six chess rank symbols for the six piecepack rank&amp;nbsp;symbols.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from Google Noto Fonts. OFL 1.1.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.google.com/get/noto/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;🌞,🌜,👑,⚜,꩜&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♟,♞,♝,♜,♛,♚&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;This is a chess-ranked piecepack that swaps in the six chess rank symbols for the six piecepack rank symbols.&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Chess-ranked piecepack&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2020 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess1_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess1_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;chess1_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess1_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Chess-ranked piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-preview1-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Chess-ranked&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="french-suited-chess-ranked-piecepack"&gt;
&lt;span id="chess2"&gt;&lt;/span&gt;&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;French-suited chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;This custom grob function uses the function &lt;tt class="docutils literal"&gt;pp_shape()&lt;/tt&gt; which was introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.5.1&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;If you use a &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;custom grob function&lt;/a&gt; one can easily add checkers to either the tile face or back.  Using the French (playing card) suits may make it easier to play two-player games (like many chess variants).  Since we aren&amp;#8217;t using the suit symbol as the ace symbol we can move the tile face rank symbol to the lower right for aesthetic reasons without loss of essential piecepack information (can still always tell which is the &amp;#8220;special&amp;#8221; corner and what are the tile&amp;#8217;s suit and&amp;nbsp;rank).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;checkeredPieceGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as_pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;get_piece_opt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;back&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;checkers_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;checkers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;gridline_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_ps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_ps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_dm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dm_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_dm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;checkers_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;gTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;children&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,dimgrey,hotpink2,grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♥,♠,♣,♦,&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♟,♞,♝,♜,♛,♚&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_text.s5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;꩜&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily.s5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_cex.s5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;gridline_color.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;ps_t.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;-45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_r.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.3535534&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;grob_fn.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;checkeredPieceGrob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;This is a French-suited chess-ranked piecepack.&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;French-suited chess-ranked piecepack&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2020 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess2_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess2_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;chess2_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess2_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="French-suited chess-ranked piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-preview2-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;French-suited chess-ranked&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="mirrored-color-scheme-chess-piecepacks"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Mirrored-color-scheme chess&amp;nbsp;piecepacks&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Having two piecepacks with a mirror-color-scheme makes it really easy to play games like Bughouse chess or Reversi/Othello.  Here we&amp;#8217;ll design one piecepack with six &amp;#8220;black&amp;#8221; suits and another with six &amp;#8220;red&amp;#8221;&amp;nbsp;suits.&lt;/p&gt;
&lt;div class="section" id="black-suited-mirrored-color-scheme-chess-ranked-piecepack"&gt;
&lt;span id="chess3"&gt;&lt;/span&gt;&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Black-suited mirrored-color-scheme chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♠,♣,🌜,⚓,,,★&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols,Noto Sans Symbols,Noto Sans Symbols2,DejaVu Sans,Quivira,Quivira,Noto Sans Symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1,1,0.8,0.8,1,1,1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black,black,black,black,black,black,darkred&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;grob_fn.tile_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;checkeredPieceGrob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_text.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♟&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;suit_cex.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;dm_text.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♠,♣,🌜,⚓,,,★&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;dm_fontfamily.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols,Noto Sans Symbols,Noto Sans Symbols2,DejaVu Sans,Quivira,Quivira,Noto Sans Symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;dm_cex.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1,1,0.8,1,1,1,1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;dm_text.coin_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;★&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♟,♞,♝,♜,♛,♚&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;This is a chess-ranked piecepack with a mirrored-color-scheme.&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Black-suited mirrored-color-scheme chess-ranked piecepack&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2020 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess3_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess3_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;chess3_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess3_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Black-suited mirrored-color-scheme chess-ranked piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-preview3-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Black-suited mirrored-color-scheme chess-ranked&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="red-suited-mirrored-color-scheme-chess-ranked-piecepack"&gt;
&lt;span id="chess4"&gt;&lt;/span&gt;&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Red-suited mirrored-color-scheme chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess3&lt;/span&gt;
&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♥,♦,🌞,♚,,,★&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols,Noto Sans Symbols,Noto Emoji,Noto Sans Symbols,Quivira,Quivira,Noto Sans Symbols&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1,1,0.8,1,1,1,1&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,darkred,darkred,darkred,darkred,darkred,black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_text.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♥,♦,🌞,♚,,,★&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_fontfamily.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols,Noto Sans Symbols,Noto Emoji,Noto Sans Symbols,Quivira,Quivira,Noto Sans Symbols&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_cex.coin_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1,1,0.8,1,1,1,1&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Red-suited mirrored-color-scheme chess-ranked piecepack&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;chess4_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess4_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;chess4_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess4_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Red-suited mirrored-color-scheme chess-ranked piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-preview4-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Red-suited mirrored-color-scheme chess-ranked&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="both-piecepack-and-chess-ranked-piecepack"&gt;
&lt;span id="chess5"&gt;&lt;/span&gt;&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;Both-piecepack-and-chess-ranked&amp;nbsp;piecepack&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;This custom grob function uses the function &lt;tt class="docutils literal"&gt;pp_shape()&lt;/tt&gt; which was introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.5.1&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;With a &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;custom grob function&lt;/a&gt; and the &lt;a class="reference external" href="https://www.chessvariants.com/d.font/utrecht.html"&gt;right chess font&lt;/a&gt; one can make a piecepack that has both the piecepack ranks and the chess&amp;nbsp;ranks.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;chessRankGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as_pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;get_piece_opt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;back&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Background&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_bg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lwd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;1.13&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_bg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mat_width&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_bg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Gridlines, Mat&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_gl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;gridline_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;gridline_lex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;1.13&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;gl_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;gridlines&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp_gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mat_width&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;gl_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;gridlines&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp_gl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;mat_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;mat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mat_width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mat_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Primary symbol&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess_ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;P&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;N&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;B&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;R&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Q&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;K&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;hjusts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.52&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.48&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.52&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.48&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.52&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%in%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;gp_ps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_ps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;coin_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;70&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;coin_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;70&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;die_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="n"&gt;matchstick_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pyramid_left&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pyramid_right&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;chess_rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;ifelse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;P&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess_ranks&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;gp_c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;]],&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Chess Utrecht&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;c_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chess_rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hjust&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;ifelse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chess_rank&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;P&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hjusts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hjusts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grobTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;gp_ps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_ps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Directional mark&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_dm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dm_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_dm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Border&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gl_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;gTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;children&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U0001f31e,\U0001f31c,\U0001f451,\u269c,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 🌞,🌜,👑,⚜,꩜&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.90,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;colors&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ps_color.s2.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_color.s2.coin_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_color.s2.die_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;invert_colors.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;mat_width.tile_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_color.tile_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;invert_colors.matchstick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;invert_colors.pyramid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;border_color.matchstick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color.s2.pyramid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox_ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,\uaa5c,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;use_suit_as_ace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily.r2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_cex.r2.matchstick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;misc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grob_fn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chessRankGrob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;dm_text.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_text.die&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;ps_cex.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.r2.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.s4.r2.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;ps_cex.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.coin_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.r2.coin_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;ps_cex.die_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.r2.die_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.s4.r2.die_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;ps_t.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;-90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_r.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_r.coin_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;ps_t.die&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;-90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_r.die&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_t.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;-90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_r.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox_ranks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;misc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;This is a piecepack that has both the piecepack ranks and the chess ranks.&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;utrecht_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from the Chess Utrecht font.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\t\u00a9 1996 by Hans Bodlaender.  Use of the font is free.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.chessvariants.com/d.font/utrecht.html&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from Google Noto Fonts. OFL 1.1.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.google.com/get/noto/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;utrecht_credit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Piecepack-and-chess-ranked piecepack&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2020 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;edge_color.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;edge_color.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess5_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chess5_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;chess5_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chess5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess5_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A piecepack with both piecepack and chess ranks" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-preview5-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A piecepack with both piecepack and chess&amp;nbsp;ranks&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="some-chess-variants-playable-with-a-piecepack"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;Some chess variants playable with a&amp;nbsp;piecepack&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="alice-chess"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;Alice&amp;nbsp;Chess&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/alice-chess.pdf"&gt;Alice Chess&lt;/a&gt; is chess variant invented in 1953 by &lt;span class="caps"&gt;V.R.&lt;/span&gt; Parton played on two&amp;nbsp;boards.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_alice_chess&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess5_borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Alice Chess starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-alice-chess-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Alice Chess starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="chaturaji"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-10"&gt;Chaturaji&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/chaturaji.pdf"&gt;Chaturaji&lt;/a&gt; (aka Chaturanga for four players aka Choupat) is an old four-person chess&amp;nbsp;variant.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_chaturaji&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess5_borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Chaturaji starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-chaturaji-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Chaturaji starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="international-chess"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-11"&gt;(International)&amp;nbsp;Chess&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/international_chess.pdf"&gt;(International) Chess&lt;/a&gt; is a classic board game playable with a single&amp;nbsp;piecepack.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_international_chess&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess5_borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="(FIDE) Chess starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-international-chess-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;(&lt;span class="caps"&gt;FIDE&lt;/span&gt;) Chess starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="four-seasons-chess"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-12"&gt;Four seasons&amp;nbsp;chess&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/four-seasons-chess.pdf"&gt;Four seasons chess&lt;/a&gt; is an old 4 player chess variant recorded in the &lt;em&gt;Acedrex de Los Quatros Tiempos&lt;/em&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_four_seasons_chess&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess5_borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Four seasons chess starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-four-seasons-chess-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Four seasons chess starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="ultima"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-13"&gt;Ultima&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/ultima.pdf"&gt;Ultima&lt;/a&gt; is chess variant invented by Robert Abbot and published in Recreational Mathematics Magazine in August 1962 under the name Baroque&amp;nbsp;chess.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_ultima&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess5_borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Ultima starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-ultima-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Ultima starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="xiangqi-chinese-chess"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-14"&gt;Xiangqi (Chinese&amp;nbsp;Chess)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/xiangqi.pdf"&gt;Xiangqi&lt;/a&gt; (also called Chinese chess) is a popular board game in Chinese communities and is a member of the chess family of&amp;nbsp;games.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_xiangqi&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;chess5_borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Xiangqi (Chinese Chess) starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-xiangqi-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Xiangqi (Chinese Chess) starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="some-chess-variants-playable-with-a-piecepack-stackpack"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-15"&gt;Some chess variants playable with a piecepack&amp;nbsp;stackpack&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A piecepack &lt;a class="reference external" href="http://ludism.org/ppwiki/StackPack"&gt;stackpack&lt;/a&gt; is also handy for playing several chess variants since every player&amp;#8217;s pieces can then be&amp;nbsp;suited.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;two_player_scheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;🌞,🌜,👑,⚜,꩜&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#D55E00,#000000,#F0E442,#0072B2,#009E73&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#000000,#D55E00,#0072B2,#F0E442,white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.coin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;border_color.tile_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#009E73&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_lex.tile_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;
&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;two_player_stackpack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;two_player_scheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                             &lt;/span&gt;&lt;span class="n"&gt;subpack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;to_subpack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;two_player_scheme&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="section" id="chaturaji-2"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-16"&gt;Chaturaji&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;stackpack_chaturaji&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;two_player_stackpack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Chaturaji diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-chaturaji-stackpack-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Chaturaji&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="international-chess-2"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-17"&gt;(International)&amp;nbsp;Chess&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;stackpack_international_chess&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;two_player_stackpack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Chess starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-international-chess-stackpack-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Chess starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="shogi-japanese-chess"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-18"&gt;Shogi (Japanese&amp;nbsp;Chess)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;stackpack_shogi&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;two_player_stackpack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Shogi starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-shogi-stackpack-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Shogi starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="xiangqi-chinese-chess-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-19"&gt;Xiangqi (Chinese&amp;nbsp;Chess)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;stackpack_xiangqi&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;two_player_stackpack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Xiangqi starting diagram" src="https://trevorldavis.com/piecepackr/images/knitr/demos-chess-xiangqi-stackpack-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Xiangqi starting&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="print-and-play"></category><category term="piecepack-games"></category></entry><entry><title>Everest</title><link href="https://trevorldavis.com/piecepackr/everest.html" rel="alternate"></link><published>2019-10-07T00:00:00-07:00</published><updated>2025-01-13T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-10-07:/piecepackr/everest.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="http://www.ludism.org/ppwiki/Everest"&gt;Everest&lt;/a&gt; is a piecepack game by Mark A. Biggar featuring programmed movement.  It is a &amp;#8220;King of the Hill&amp;#8221; game that features a visually striking board with the tiles physically arranged as a hill.  Here is the starting diagram for it using an &amp;#8220;icy&amp;#8221; piecepack tile color scheme to match its snowy Himalayan Yeti&amp;nbsp;theme:&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.ludism.org/ppwiki/Everest"&gt;Everest&lt;/a&gt; is a piecepack game by Mark A. Biggar featuring programmed movement.  It is a &amp;#8220;King of the Hill&amp;#8221; game that features a visually striking board with the tiles physically arranged as a hill.  Here is the starting diagram for it using an &amp;#8220;icy&amp;#8221; piecepack tile color scheme to match its snowy Himalayan Yeti&amp;nbsp;theme:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;icy_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,darkblue&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="n"&gt;edge_color.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;edge_color.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;lightblue&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U0001f31e,\U0001f31c,\U0001f451,\u269c,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;icy_colorscheme&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_everest&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Starting diagram for a game of Everest" src="https://trevorldavis.com/piecepackr/images/knitr/games-everest-starting-diagram-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Starting diagram for a game of&amp;nbsp;Everest&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepack-games"></category></entry><entry><title>Unicode piecepack diagrams</title><link href="https://trevorldavis.com/piecepackr/unicode-piecepack-diagrams.html" rel="alternate"></link><published>2019-09-02T00:00:00-07:00</published><updated>2025-01-14T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-09-02:/piecepackr/unicode-piecepack-diagrams.html</id><summary type="html">&lt;p class="first last"&gt;This article includes details on how to make &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; game diagrams using just Unicode.
The &lt;a class="reference external" href="https://github.com/piecepackr/ppcli"&gt;ppcli&lt;/a&gt; R packages has a prototype function &lt;tt class="docutils literal"&gt;cat_piece()&lt;/tt&gt; which generates piecepack Unicode text diagrams.
&lt;a class="reference external" href="https://github.com/trevorld/game-bit-font"&gt;Game Bit&lt;/a&gt; Mono and Duo are a pair of bitmap fonts with with special piecepack support in its Private Use&amp;nbsp;Area.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;This article includes details on how to make &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; game diagrams using just Unicode.  There is another article full of tables of useful piecepack &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/unicode-piecepack-symbols.html"&gt;Unicode symbols&lt;/a&gt;.&lt;/p&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#unicode-text-diagram-theory" id="toc-entry-1"&gt;Unicode text diagram theory&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#rank-and-suit-symbols" id="toc-entry-2"&gt;Rank and Suit symbols&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#rotation" id="toc-entry-3"&gt;Rotation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#color" id="toc-entry-4"&gt;Color&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#coins" id="toc-entry-5"&gt;Coins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#dice" id="toc-entry-6"&gt;Dice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#pawns" id="toc-entry-7"&gt;Pawns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#tiles" id="toc-entry-8"&gt;Tiles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#functions-to-generate-unicode-diagrams" id="toc-entry-9"&gt;Functions to generate Unicode&amp;nbsp;diagrams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#game-bit-fonts" id="toc-entry-10"&gt;Game Bit&amp;nbsp;Fonts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="unicode-text-diagram-theory"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Unicode text diagram&amp;nbsp;theory&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="rank-and-suit-symbols"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Rank and Suit&amp;nbsp;symbols&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The standard (and many non-standard) piecepack suit and rank symbols are available in Unicode.  See the &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/unicode-piecepack-symbols.html"&gt;Unicode symbols&lt;/a&gt; article for tables of piecepack Unicode suit and rank&amp;nbsp;symbols.&lt;/p&gt;
&lt;div class="section" id="rotation"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Rotation&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Although Unicode in general doesn&amp;#8217;t support character rotations for some rank/suit symbols Unicode also has glyphs that are (or look like they are) &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Transformation_of_text"&gt;rotated versions of those glyhps&lt;/a&gt; (i.e. both ☾ and ☽ (crescent) moons and both † and ⸸ daggers) or are symbols that are symmetric across certain (or all) axes of rotation such as the (alchemical) sun symbol ☉.  For some piecepack game diagrams you&amp;#8217;ll want to have rotated versions of your rank/suit symbols in order to indicate rotated coins, tiles, dice, and perhaps directional pawns.  Often Unicode will only have (if any) one or two rotations but will sometimes have more rotations - in particular Unicode 12.0 includes all 45 degree rotations of &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chess_Symbols_(Unicode_block)"&gt;chess piece glyphs&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="color"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Color&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In general Unicode itself doesn&amp;#8217;t encode color.  But many text platforms do support coloring individiual characters such as&amp;nbsp;terminals:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/ANSI_escape_code#Colors"&gt;https://en.wikipedia.org/wiki/ANSI_escape_code#Colors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux"&gt;https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And web&amp;nbsp;pages:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://www.w3schools.com/csS/css_text.asp"&gt;https://www.w3schools.com/csS/css_text.asp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://www.w3schools.com/cssref/css_colors_legal.asp"&gt;https://www.w3schools.com/cssref/css_colors_legal.asp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If on such a platform you could color the suit/rank symbols in the appropriate suit color or perhaps &lt;a class="reference external" href="https://boardgamegeek.com/article/32587586#32587586"&gt;(as suggested by Michael Van Biesbrouck)&lt;/a&gt; use color to indicate levels of&amp;nbsp;height.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="coins"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Coins&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To represent a piecepack coin simply take the relevant (potentially rotated) suit/rank symbol and combine with the &amp;#8220;Combining Enclosing Circle&amp;#8221; U+&lt;span class="caps"&gt;20DD&lt;/span&gt;.  Theoretically Unicode also supports adding a directional mark to the suit/rank symbol with one of the several &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Combining_character"&gt;Combining Diacritical Marks&lt;/a&gt; (should be done before adding the enclosing circle) but I couldn&amp;#8217;t get such a glyph combination to look nice in any of the (monoscale) fonts I&amp;nbsp;tried.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="dice"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Dice&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To represent a piecepack die simply take the relevant (potentially rotated) suit/rank symbol and combine with the &amp;#8220;Combining Enclosing Square&amp;#8221; U+&lt;span class="caps"&gt;20DE&lt;/span&gt;.  If you need to support 45/135/225/315 degree rotations there is also &amp;#8220;Combining Enclosing Diamond&amp;#8221; U+&lt;span class="caps"&gt;20DF&lt;/span&gt; (although depending on your aesthetics you may want to use that for your pawn).  Piecepack dice that follow the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a piecepack&lt;/a&gt; standard don&amp;#8217;t have directional/suit marks but if you really want some one possibility found in Unicode&amp;#8217;s  &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Combining_character"&gt;Combining Diacritical Marks&lt;/a&gt; are the s, m, c, and a&amp;nbsp;superscripts.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="pawns"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;Pawns&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Depending on your aesthetics (and whether you need directional pawns and/or need to be able to distinguish pawns without aid of color) there are different options for&amp;nbsp;pawns:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Combine the relevant (potentially rotated) suit symbol with the &amp;#8220;Combining Enclosing Diamond&amp;#8221; U+&lt;span class="caps"&gt;20DF&lt;/span&gt;.  This supports rotation in 90 degree rotations and lets you use your suit&amp;nbsp;symbol.&lt;/li&gt;
&lt;li&gt;Combine the relevant suit symbol with the &amp;#8220;Combining Enclosing Upward Pointing Triangle&amp;#8221; U+20E4.  Still lets you use your suit symbol but doesn&amp;#8217;t support any rotations (but standard piecepack pawns are not inherently directional&amp;nbsp;anyways).&lt;/li&gt;
&lt;li&gt;Use the (chess) pawn symbol ♟ U+265F.  Hard to distinguish suits unless you can apply color (and the people reading your diagrams aren&amp;#8217;t color-blind).  With Unicode 12.0 can rotate the pawn symbol in all 45 degree&amp;nbsp;rotations.&lt;/li&gt;
&lt;li&gt;Use the two chess pawn symbols and two chess bishop symbols for the four piecepack pawns.  Even if can&amp;#8217;t apply color should be visually distinct (although maybe hard to remember which goes with each suit) and with Unicode 12.0 can rotate in all 45 degree&amp;nbsp;rotations.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="tiles"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;Tiles&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Tiles are drawn using &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Box-drawing_character"&gt;box-drawing characters&lt;/a&gt;.  An individual tile is drawn with 5x5 (for a total of 25) characters but when other tiles are placed &amp;#8220;adjacently&amp;#8221; they will &amp;#8220;share&amp;#8221; border characters (so for example 2x2 tiles will be 9x9 characters).  When placing pieces in the &amp;#8220;cells&amp;#8221; of the tile place them on the even rows/columns of the tile.  When placing pieces on the &amp;#8220;points&amp;#8221; of the tile place them on the odd rows/columns of the&amp;nbsp;tile.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="functions-to-generate-unicode-diagrams"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;Functions to generate Unicode&amp;nbsp;diagrams&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://github.com/piecepackr/ppcli"&gt;ppcli&lt;/a&gt; R packages has a prototype function &lt;tt class="docutils literal"&gt;cat_piece()&lt;/tt&gt; which generates piecepack Unicode text diagrams given data frame input (the same data frame input supported by &lt;tt class="docutils literal"&gt;pmap_piece()&lt;/tt&gt;).  The diagrams generated by it look okay (but not perfect) with my terminal set to use &lt;a class="reference external" href="https://www.gnu.org/software/freefont/"&gt;&lt;span class="caps"&gt;GNU&lt;/span&gt; FreeMono&lt;/a&gt; (with a couple other fonts implicitly providing glyph backup&amp;nbsp;support):&lt;/p&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppcli&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;cat_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_fide_chess&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;
&lt;img alt="Unicode text diagram for Chess" class="align-center" src="https://trevorldavis.com/share/piecepack/unicode_piecepack_alt_5.png" /&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;cat_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_xiangqi&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;
&lt;img alt="Unicode text diagram for Xiangqi" class="align-center" src="https://trevorldavis.com/share/piecepack/unicode_xiangqi.png" /&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;cat_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_backgammon&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;
&lt;img alt="Unicode text diagram for Backgammon" class="align-center" src="https://trevorldavis.com/share/piecepack/unicode_backgammon.png" /&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://github.com/piecepackr/ppn"&gt;ppn&lt;/a&gt; &lt;a class="reference external" href="https://cran.r-project.org/"&gt;R&lt;/a&gt; package also can generate &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; Unicode text diagrams of moves in a game recorded in &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/portable-piecepack-notation.html"&gt;Portable Piecepack Notation&lt;/a&gt; (&lt;span class="caps"&gt;PPN&lt;/span&gt;) files with the function &lt;tt class="docutils literal"&gt;cat_move()&lt;/tt&gt; (it is a wrapper around &lt;tt class="docutils literal"&gt;cat_piece()&lt;/tt&gt;):&lt;/p&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;ppn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;read_ppn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;system.file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn/relativity.ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ppn&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;cat_move&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="game-bit-fonts"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-10"&gt;Game Bit&amp;nbsp;Fonts&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/trevorld/game-bit-font"&gt;Game Bit&lt;/a&gt; Mono and Duo are a pair of bitmap fonts with with special piecepack support in its Private Use&amp;nbsp;Area:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;strong&gt;Game Bit Duo&lt;/strong&gt; is a fixed-width &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Duospaced_font"&gt;duospaced font&lt;/a&gt;.
&amp;#8220;Fullwidth&amp;#8221; Characters intended for use in diagrams are square whereas some blocks such as &lt;em&gt;Basic Latin&lt;/em&gt; are &amp;#8220;halfwidth&amp;#8221; to better support text rendering.  &lt;strong&gt;Game Bit Mono&lt;/strong&gt; is the same as &lt;strong&gt;Game Bit Duo&lt;/strong&gt; except &lt;strong&gt;all&lt;/strong&gt; characters are&amp;nbsp;square.&lt;/li&gt;
&lt;li&gt;Has support for several public domain game systems both in Unicode proper and its Private Use Area.  In particular in its Private Use Area has the important piecepack rank/suit symbols including support for all rotated versions of the glyphs. These symbols look nice when combined with various combining/enclosing marks to create piecepack coins, dice, and&amp;nbsp;pawns.&lt;/li&gt;
&lt;li&gt;Supports all &lt;em&gt;Box Drawing&lt;/em&gt; and &lt;em&gt;Block Elements&lt;/em&gt; characters. These combine well with the game bits so it looks like those pieces are truly on top of the tiles (i.e. no lines going through the &amp;#8220;edge&amp;#8221; of piecepack coins, dice, pawns or awkward gaps between lines and piece &amp;#8220;edges&amp;#8221;).  Includes additional box-drawing characters in its Private Use&amp;nbsp;Area.&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="Four seasons chess setup with a piecepack" src="https://raw.githubusercontent.com/trevorld/game-bit-font/main/png/piecepack-four-seasons-chess_mono.png" /&gt;
&lt;/div&gt;
</content><category term="Articles"></category></entry><entry><title>Unicode Piecepack Symbols</title><link href="https://trevorldavis.com/piecepackr/unicode-piecepack-symbols.html" rel="alternate"></link><published>2019-08-29T00:00:00-07:00</published><updated>2019-11-13T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-08-29:/piecepackr/unicode-piecepack-symbols.html</id><summary type="html">&lt;p class="first last"&gt;Tables of potentially useful Unicode symbols for making &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt;&amp;nbsp;graphics.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;This article includes tables of potentially useful Unicode symbols for making &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; graphics.  There is another article with more info on making piecepack &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/unicode-piecepack-diagrams.html"&gt;Unicode diagrams&lt;/a&gt;.&lt;/p&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#suit-symbols" id="toc-entry-1"&gt;Suit Symbols&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#neutral-wild-unsuit" id="toc-entry-2"&gt;Neutral/Wild&amp;nbsp;Unsuit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#piecepack-suits" id="toc-entry-3"&gt;Piecepack&amp;nbsp;suits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#french-suits" id="toc-entry-4"&gt;French&amp;nbsp;suits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#swiss-german-suits" id="toc-entry-5"&gt;Swiss/German&amp;nbsp;suits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#latin-suits" id="toc-entry-6"&gt;Latin&amp;nbsp;suits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#elements-suits" id="toc-entry-7"&gt;Elements&amp;nbsp;Suits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#seasons-suits" id="toc-entry-8"&gt;Seasons&amp;nbsp;Suits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#piecepack-ranks" id="toc-entry-9"&gt;Piecepack Ranks&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#null" id="toc-entry-10"&gt;Null&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#ace" id="toc-entry-11"&gt;Ace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#dozenal-extensions" id="toc-entry-12"&gt;Dozenal&amp;nbsp;Extensions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chess-1" id="toc-entry-13"&gt;Chess&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#zodiac-symbols" id="toc-entry-14"&gt;Zodiac&amp;nbsp;Symbols&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#how-to-use-with-piecepackr" id="toc-entry-15"&gt;How to use with&amp;nbsp;piecepackr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#footnotes" id="toc-entry-16"&gt;Footnotes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="suit-symbols"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Suit&amp;nbsp;Symbols&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="neutral-wild-unsuit"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Neutral/Wild&amp;nbsp;Unsuit&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;&lt;a class="reference external" href="https://www.google.com/get/noto/"&gt;Noto Sans Cham&lt;/a&gt; is one of the few fonts that support the &amp;#8220;Cham Punctuation Spiral&amp;#8221; (arguably the best spiral in&amp;nbsp;Unicode).&lt;/p&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Spirals&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;꩜&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;AA5C&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Cham Punctuation Spiral&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🍥&lt;/td&gt;
&lt;td&gt;U+1F365&lt;/td&gt;
&lt;td&gt;Fish Cake with Swirl Design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&amp;#64;&lt;/td&gt;
&lt;td&gt;U+0040&lt;/td&gt;
&lt;td&gt;At Sign&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;☯&lt;/td&gt;
&lt;td&gt;U+262F&lt;/td&gt;
&lt;td&gt;Yin Yang&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌀&lt;/td&gt;
&lt;td&gt;U+1F300&lt;/td&gt;
&lt;td&gt;Cyclone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;∂&lt;/td&gt;
&lt;td&gt;U+2202&lt;/td&gt;
&lt;td&gt;Partial Differential&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;໑&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;0ED1&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Lao Digit One&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Joker Stars&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;★&lt;/td&gt;
&lt;td&gt;U+2605&lt;/td&gt;
&lt;td&gt;Black Star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;☆&lt;/td&gt;
&lt;td&gt;U+2606&lt;/td&gt;
&lt;td&gt;White Star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;✪&lt;/td&gt;
&lt;td&gt;U+272A&lt;/td&gt;
&lt;td&gt;Circled White Star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;✯&lt;/td&gt;
&lt;td&gt;U+272F&lt;/td&gt;
&lt;td&gt;Pinwheel Star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;0E00A&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Black Joker Symbol (Quivira &lt;span class="caps"&gt;PUA&lt;/span&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;0E00B&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;White Joker Symbol (Quivira &lt;span class="caps"&gt;PUA&lt;/span&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="piecepack-suits"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Piecepack&amp;nbsp;suits&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/orthodox-pnp.html"&gt;orthodox&lt;/a&gt; demo gives an example of an &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a piecepack&lt;/a&gt; standard&amp;nbsp;piecepack.&lt;/p&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Suns&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;☉&lt;/td&gt;
&lt;td&gt;U+2609&lt;/td&gt;
&lt;td&gt;sun&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌞&lt;/td&gt;
&lt;td&gt;U+1f31e&lt;/td&gt;
&lt;td&gt;sun with face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;☀&lt;/td&gt;
&lt;td&gt;U+2600&lt;/td&gt;
&lt;td&gt;black sun with rays&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;☼&lt;/td&gt;
&lt;td&gt;U+263c&lt;/td&gt;
&lt;td&gt;white sun with rays&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⛅&lt;/td&gt;
&lt;td&gt;U+26c5&lt;/td&gt;
&lt;td&gt;sun behind cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;✺&lt;/td&gt;
&lt;td&gt;U+273a&lt;/td&gt;
&lt;td&gt;sixteen pointed asterisk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;❂&lt;/td&gt;
&lt;td&gt;U+2742&lt;/td&gt;
&lt;td&gt;circled open centre eight pointed star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;❊&lt;/td&gt;
&lt;td&gt;U+274a&lt;/td&gt;
&lt;td&gt;eight teardrop-spoked propeller asterisk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;❋&lt;/td&gt;
&lt;td&gt;U+274b&lt;/td&gt;
&lt;td&gt;heavy eight teardrop-spoked propeller asterisk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;✹&lt;/td&gt;
&lt;td&gt;U+2739&lt;/td&gt;
&lt;td&gt;twelve pointed black star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🟒&lt;/td&gt;
&lt;td&gt;U+1f7d2&lt;/td&gt;
&lt;td&gt;light twelve pointed black star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🟓&lt;/td&gt;
&lt;td&gt;U+1f7d3&lt;/td&gt;
&lt;td&gt;heavy twelve pointed black star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⛯&lt;/td&gt;
&lt;td&gt;U+26ef&lt;/td&gt;
&lt;td&gt;map symbol for lighthouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⛭&lt;/td&gt;
&lt;td&gt;U+26ed&lt;/td&gt;
&lt;td&gt;gear with hub&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Moons&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;☽&lt;/td&gt;
&lt;td&gt;U+263d&lt;/td&gt;
&lt;td&gt;first quarter moon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;☾&lt;/td&gt;
&lt;td&gt;U+263e&lt;/td&gt;
&lt;td&gt;last quarter moon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⏾&lt;/td&gt;
&lt;td&gt;U+23fe&lt;/td&gt;
&lt;td&gt;power sleep symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌑&lt;/td&gt;
&lt;td&gt;U+1f311&lt;/td&gt;
&lt;td&gt;new moon symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌒&lt;/td&gt;
&lt;td&gt;U+1f312&lt;/td&gt;
&lt;td&gt;waxing crescent moon symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌓&lt;/td&gt;
&lt;td&gt;U+1f313&lt;/td&gt;
&lt;td&gt;first quarter moon symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌔&lt;/td&gt;
&lt;td&gt;U+1f314&lt;/td&gt;
&lt;td&gt;waxing gibbous moon symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌕&lt;/td&gt;
&lt;td&gt;U+1f315&lt;/td&gt;
&lt;td&gt;full moon symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌖&lt;/td&gt;
&lt;td&gt;U+1f316&lt;/td&gt;
&lt;td&gt;waning gibbous moon symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌗&lt;/td&gt;
&lt;td&gt;U+1f317&lt;/td&gt;
&lt;td&gt;last quarter moon symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌘&lt;/td&gt;
&lt;td&gt;U+1f318&lt;/td&gt;
&lt;td&gt;waning crescent moon symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌙&lt;/td&gt;
&lt;td&gt;U+1f319&lt;/td&gt;
&lt;td&gt;crescent moon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌚&lt;/td&gt;
&lt;td&gt;U+1f31a&lt;/td&gt;
&lt;td&gt;new moon with face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌛&lt;/td&gt;
&lt;td&gt;U+1f31b&lt;/td&gt;
&lt;td&gt;first quarter moon with face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌜&lt;/td&gt;
&lt;td&gt;U+1f31c&lt;/td&gt;
&lt;td&gt;last quarter moon with face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌝&lt;/td&gt;
&lt;td&gt;U+1f31d&lt;/td&gt;
&lt;td&gt;full moon with face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;◐&lt;/td&gt;
&lt;td&gt;U+25d0&lt;/td&gt;
&lt;td&gt;circle with left half black&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;◑&lt;/td&gt;
&lt;td&gt;U+25d1&lt;/td&gt;
&lt;td&gt;circle with right half black&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Crowns&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;👑&lt;/td&gt;
&lt;td&gt;U+1f451&lt;/td&gt;
&lt;td&gt;crown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♛&lt;/td&gt;
&lt;td&gt;U+265b&lt;/td&gt;
&lt;td&gt;black chess queen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♚&lt;/td&gt;
&lt;td&gt;U+265a&lt;/td&gt;
&lt;td&gt;black chess king&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♕&lt;/td&gt;
&lt;td&gt;U+2655&lt;/td&gt;
&lt;td&gt;white chess queen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♔&lt;/td&gt;
&lt;td&gt;U+2654&lt;/td&gt;
&lt;td&gt;white chess queen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ȸ&lt;/td&gt;
&lt;td&gt;U+0238&lt;/td&gt;
&lt;td&gt;small letter db digraph&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;According to the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a Piecepack&lt;/a&gt; standard the &amp;#8220;Fleur-de-lis&amp;#8221; should be used for the Arms symbol but the popular &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/JCD.html"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&lt;/a&gt; uses an &amp;#8220;Anchor&amp;#8221; &lt;a class="footnote-reference" href="#anchor" id="footnote-reference-1"&gt;[1]&lt;/a&gt; and I&amp;#8217;ve tinkered with using the &amp;#8220;Dagger&amp;#8221; &lt;a class="footnote-reference" href="#dagger" id="footnote-reference-2"&gt;[2]&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Arms&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;⚜&lt;/td&gt;
&lt;td&gt;U+269c&lt;/td&gt;
&lt;td&gt;fleur-de-lis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⚓&lt;/td&gt;
&lt;td&gt;U+2693&lt;/td&gt;
&lt;td&gt;anchor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;†&lt;/td&gt;
&lt;td&gt;U+2020&lt;/td&gt;
&lt;td&gt;Dagger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Ϯ&lt;/td&gt;
&lt;td&gt;U+03ee&lt;/td&gt;
&lt;td&gt;Coptic capital letter dei&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="french-suits"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;French&amp;nbsp;suits&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/dual-piecepacks-pnp.html"&gt;dual piecepacks&lt;/a&gt; demo has examples of French-suited&amp;nbsp;piecepacks.&lt;/p&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;French&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;♠&lt;/td&gt;
&lt;td&gt;U+2660&lt;/td&gt;
&lt;td&gt;Black Spade Suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♤&lt;/td&gt;
&lt;td&gt;U+2664&lt;/td&gt;
&lt;td&gt;White Spade Suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♥&lt;/td&gt;
&lt;td&gt;U+2665&lt;/td&gt;
&lt;td&gt;Black Heart Suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♡&lt;/td&gt;
&lt;td&gt;U+2661&lt;/td&gt;
&lt;td&gt;White Heart Suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♦&lt;/td&gt;
&lt;td&gt;U+2666&lt;/td&gt;
&lt;td&gt;Black Diamond Suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♢&lt;/td&gt;
&lt;td&gt;U+2662&lt;/td&gt;
&lt;td&gt;White Diamond Suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♣&lt;/td&gt;
&lt;td&gt;U+2663&lt;/td&gt;
&lt;td&gt;Black Club Suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♧&lt;/td&gt;
&lt;td&gt;U+2667&lt;/td&gt;
&lt;td&gt;White Club Suit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="swiss-german-suits"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Swiss/German&amp;nbsp;suits&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;These symbols aren&amp;#8217;t in Unicode proper but are in &lt;a class="reference external" href="http://www.quivira-font.com/"&gt;Quivira&lt;/a&gt;&amp;#8216;s &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Private_Use_Areas"&gt;Private Use Area&lt;/a&gt;.  The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/dual-piecepacks-pnp.html"&gt;dual piecepacks&lt;/a&gt; demo has examples of Swiss-suited&amp;nbsp;piecepacks.&lt;/p&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Swiss/German suits in Quivira&amp;#8217;s Private Use Area&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E000&lt;/td&gt;
&lt;td&gt;German Playing Card Symbol Acorns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E001&lt;/td&gt;
&lt;td&gt;German Playing Card Symbol Leaves&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E002&lt;/td&gt;
&lt;td&gt;German Playing Card Symbol Hearts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E003&lt;/td&gt;
&lt;td&gt;German Playing Card Symbol Bells&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E004&lt;/td&gt;
&lt;td&gt;Swiss Playing Card Symbol Shields&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E005&lt;/td&gt;
&lt;td&gt;Swiss Playing Card Symbol Roses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Possible Swiss suits in Unicode proper&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;⛨&lt;/td&gt;
&lt;td&gt;U+26E8&lt;/td&gt;
&lt;td&gt;Black Cross on Shield&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🛡&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F6E1&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Shield&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⛊&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;26CA&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Turned Black Shogi Piece&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⛉&lt;/td&gt;
&lt;td&gt;U+26C9&lt;/td&gt;
&lt;td&gt;Turned White Shogi Piece&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌹&lt;/td&gt;
&lt;td&gt;U+1F339&lt;/td&gt;
&lt;td&gt;Rose&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⚘&lt;/td&gt;
&lt;td&gt;U+2698&lt;/td&gt;
&lt;td&gt;Flower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;❀&lt;/td&gt;
&lt;td&gt;U+2740&lt;/td&gt;
&lt;td&gt;White Florette&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌰&lt;/td&gt;
&lt;td&gt;U+1F330&lt;/td&gt;
&lt;td&gt;Chestnut&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🔔&lt;/td&gt;
&lt;td&gt;U+1F514&lt;/td&gt;
&lt;td&gt;Bell&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🎐&lt;/td&gt;
&lt;td&gt;U+1F390&lt;/td&gt;
&lt;td&gt;Wind Chime&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="latin-suits"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Latin&amp;nbsp;suits&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;These symbols aren&amp;#8217;t in Unicode proper but are in &lt;a class="reference external" href="http://www.quivira-font.com/"&gt;Quivira&lt;/a&gt;&amp;#8216;s &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Private_Use_Areas"&gt;Private Use Area&lt;/a&gt;.  The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/dual-piecepacks-pnp.html"&gt;dual piecepacks&lt;/a&gt; demo has an example of a Latin-suited&amp;nbsp;piecepacks.&lt;/p&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Latin suits in Quivira&amp;#8217;s Private Use Area&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E006&lt;/td&gt;
&lt;td&gt;Spanish Playing Card Symbol Clubs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E007&lt;/td&gt;
&lt;td&gt;Spanish Playing Card Symbol Swords&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E008&lt;/td&gt;
&lt;td&gt;Spanish Playing Card Symbol Cups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;
&lt;td&gt;U+0E009&lt;/td&gt;
&lt;td&gt;Spanish Playing Card Symbol Coins&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Possible Latin suits in Unicode proper&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;⚚&lt;/td&gt;
&lt;td&gt;U+2624&lt;/td&gt;
&lt;td&gt;Caduceus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⚕️&lt;/td&gt;
&lt;td&gt;U+2695&lt;/td&gt;
&lt;td&gt;Medical Symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🗡️&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F5E1&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Dagger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;𐃉&lt;/td&gt;
&lt;td&gt;U+100C9&lt;/td&gt;
&lt;td&gt;Linear B Ideogram B233 Sword&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⚔&lt;/td&gt;
&lt;td&gt;U+2694&lt;/td&gt;
&lt;td&gt;Crossed Swords&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🏆&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F3C6&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Trophy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🥤&lt;/td&gt;
&lt;td&gt;U+1F964&lt;/td&gt;
&lt;td&gt;Cup With Straw&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;☕&lt;/td&gt;
&lt;td&gt;U+2615&lt;/td&gt;
&lt;td&gt;Hot Beverage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;𐇛&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;101DB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Phaistos Disc Sign Shield&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;💰&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F4B0&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Money Bag&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="elements-suits"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;Elements&amp;nbsp;Suits&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/chinese-zodiac-ranked-piecepack-pnp.html"&gt;Chinese zodiac demo&lt;/a&gt; uses some Element symbols as&amp;nbsp;suits.&lt;/p&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Elements symbols&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;🜁&lt;/td&gt;
&lt;td&gt;U+1F701&lt;/td&gt;
&lt;td&gt;Alchemical Symbol for Air&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;☁️&lt;/td&gt;
&lt;td&gt;U+2601&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌪️&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F32A&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Cloud with Tornado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;💨&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F4A8&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Dashing Symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌀&lt;/td&gt;
&lt;td&gt;U+1F300&lt;/td&gt;
&lt;td&gt;Cyclone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌬️&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F32C&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Wind Blowing Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌥️&lt;/td&gt;
&lt;td&gt;U+1F325&lt;/td&gt;
&lt;td&gt;Sun Behind Large Cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌦️&lt;/td&gt;
&lt;td&gt;U+1F326&lt;/td&gt;
&lt;td&gt;Sun Behind Rain Cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌨️&lt;/td&gt;
&lt;td&gt;U+1F328&lt;/td&gt;
&lt;td&gt;Cloud with Snow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌩️&lt;/td&gt;
&lt;td&gt;U+1F329&lt;/td&gt;
&lt;td&gt;Cloud with Lightning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🜂&lt;/td&gt;
&lt;td&gt;U+1F702&lt;/td&gt;
&lt;td&gt;Alchemical Symbol for Fire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🔥&lt;/td&gt;
&lt;td&gt;U+1F525&lt;/td&gt;
&lt;td&gt;Fire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🜃&lt;/td&gt;
&lt;td&gt;U+1F703&lt;/td&gt;
&lt;td&gt;Alchemical Symbol for Earth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⛰️&lt;/td&gt;
&lt;td&gt;U+26F0&lt;/td&gt;
&lt;td&gt;Mountain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌋&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F30B&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Volcano&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌲&lt;/td&gt;
&lt;td&gt;U+1F332&lt;/td&gt;
&lt;td&gt;Evergreen Tree&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;💎&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F48E&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Gem Stone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🜄&lt;/td&gt;
&lt;td&gt;U+1F704&lt;/td&gt;
&lt;td&gt;Alchemical Symbol for Water&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌊&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F30A&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Water Wave&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="seasons-suits"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;Seasons&amp;nbsp;Suits&lt;/a&gt;&lt;/h3&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Seasons symbols&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;⛄&lt;/td&gt;
&lt;td&gt;U+26C4&lt;/td&gt;
&lt;td&gt;Snowman Without Snow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;❄️&lt;/td&gt;
&lt;td&gt;U+2744&lt;/td&gt;
&lt;td&gt;Snowflake&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌼&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F33C&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Blossom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🥒&lt;/td&gt;
&lt;td&gt;U+1F952&lt;/td&gt;
&lt;td&gt;Cucumber&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🍐&lt;/td&gt;
&lt;td&gt;U+1F350&lt;/td&gt;
&lt;td&gt;Pear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🍏&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F34F&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Green Apple&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🥑&lt;/td&gt;
&lt;td&gt;U+1F951&lt;/td&gt;
&lt;td&gt;Avocado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🍈&lt;/td&gt;
&lt;td&gt;U+1F348&lt;/td&gt;
&lt;td&gt;Melon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌴&lt;/td&gt;
&lt;td&gt;U+1F334&lt;/td&gt;
&lt;td&gt;Palm Tree&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🍉&lt;/td&gt;
&lt;td&gt;U+1F349&lt;/td&gt;
&lt;td&gt;Watermelon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌾&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F33E&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Sheaf of Rice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🌽&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F33D&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Ear of Corn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🎃&lt;/td&gt;
&lt;td&gt;U+1F383&lt;/td&gt;
&lt;td&gt;Jack-O-Lantern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🍂&lt;/td&gt;
&lt;td&gt;U+1F342&lt;/td&gt;
&lt;td&gt;Fallen Leaf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🍁&lt;/td&gt;
&lt;td&gt;U+1F341&lt;/td&gt;
&lt;td&gt;Maple Leaf&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="piecepack-ranks"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;Piecepack&amp;nbsp;Ranks&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="null"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-10"&gt;Null&lt;/a&gt;&lt;/h3&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Null Symbol&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;U+0020&lt;/td&gt;
&lt;td&gt;Space&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;U+004E&lt;/td&gt;
&lt;td&gt;Latin Capital letter N&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;n&lt;/td&gt;
&lt;td&gt;U+006E&lt;/td&gt;
&lt;td&gt;Latin Small letter n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;∅&lt;/td&gt;
&lt;td&gt;U+2205&lt;/td&gt;
&lt;td&gt;Empty Set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;U+0030&lt;/td&gt;
&lt;td&gt;Digit Zero&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="ace"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-11"&gt;Ace&lt;/a&gt;&lt;/h3&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Ace Symbol&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;U+0041&lt;/td&gt;
&lt;td&gt;Latin Capital letter A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;a&lt;/td&gt;
&lt;td&gt;U+0061&lt;/td&gt;
&lt;td&gt;Latin Small Letter A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&amp;#64;&lt;/td&gt;
&lt;td&gt;U+0040&lt;/td&gt;
&lt;td&gt;At sign&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;U+0031&lt;/td&gt;
&lt;td&gt;Digit One&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- * ⚀ (U2680) "Die Face-1" --&gt;
&lt;!-- * ⚁ (U2681) "Die Face-2" --&gt;
&lt;!-- * ⚂ (U2681) "Die Face-3" --&gt;
&lt;!-- * ⚃ (U2682) "Die Face-4" --&gt;
&lt;!-- * ⚄ (U2683) "Die Face-5" --&gt;
&lt;!-- * ⚅ (U2685) "Die Face-6" --&gt;
&lt;!-- * · (U00B7) "Middle Dot" --&gt;
&lt;!-- * : --&gt;
&lt;!-- * ⁚ (U205A) "Two Dot Punctuation" --&gt;
&lt;!-- * 🝆 (U1F746) "Alchemical Symbol for Oil" --&gt;
&lt;!-- * ⸫ (U2E2B) "One Dot Over Two Dots Punctuation" --&gt;
&lt;!-- * ⸬ (U2E2C) "Squared Four Dot Punctuation" --&gt;
&lt;!-- * ⁙ (U2059) "Five Dot Punctuation" --&gt;
&lt;!-- * ⸭ (U2E2D) "Five Dot Mark" --&gt;
&lt;!--  --&gt;
&lt;!-- * 𝍠 (U1D360) "Counting Rod Unit Digit One" --&gt;
&lt;!-- * 𝍡 (U1D361) "Counting Rod Unit Digit Two" --&gt;
&lt;!-- * 𝍢 (U1D362) "Counting Rod Unit Digit Three" --&gt;
&lt;!-- * 𝍤 (U1D363) "Counting Rod Unit Digit Four" --&gt;
&lt;!-- * 𝍤 (U1D364) "Counting Rod Unit Digit Five" --&gt;
&lt;!-- * 𝍩 (U1D369) "Counting Rod Tens Digit One" --&gt;
&lt;!-- * 𝍪 (U1D36A) "Counting Rod Tens Digit Two" --&gt;
&lt;!-- * 𝍫 (U1D36B) "Counting Rod Tens Digit Three" --&gt;
&lt;!-- * 𝍬 (U1D36C) "Counting Rod Tens Digit Four" --&gt;
&lt;!-- * 𝍭 (U1D36D) "Counting Rod Tens Digit Five" --&gt;
&lt;!-- * I --&gt;
&lt;!-- * II --&gt;
&lt;!-- * III --&gt;
&lt;!-- * IV --&gt;
&lt;!-- * V --&gt;
&lt;!--  --&gt;
&lt;!-- * 一 --&gt;
&lt;!-- * 二 --&gt;
&lt;!-- * 三 --&gt;
&lt;!-- * 四 --&gt;
&lt;!-- * 五 --&gt;
&lt;/div&gt;
&lt;div class="section" id="dozenal-extensions"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-12"&gt;Dozenal&amp;nbsp;Extensions&lt;/a&gt;&lt;/h3&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Dozenal Symbols&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;X&lt;/td&gt;
&lt;td&gt;U+2169&lt;/td&gt;
&lt;td&gt;Roman Numeral Ten&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;↊&lt;/td&gt;
&lt;td&gt;U+218B&lt;/td&gt;
&lt;td&gt;Turned Digit 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;↋&lt;/td&gt;
&lt;td&gt;U+218B&lt;/td&gt;
&lt;td&gt;Turned Digit 3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="chess-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-13"&gt;Chess&lt;/a&gt;&lt;/h3&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Chess Symbols&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;♚&lt;/td&gt;
&lt;td&gt;U+265A&lt;/td&gt;
&lt;td&gt;Black Chess King&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♛&lt;/td&gt;
&lt;td&gt;U+265B&lt;/td&gt;
&lt;td&gt;Black Chess Queen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♜&lt;/td&gt;
&lt;td&gt;U+265C&lt;/td&gt;
&lt;td&gt;Black Chess Rook&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♝&lt;/td&gt;
&lt;td&gt;U+265D&lt;/td&gt;
&lt;td&gt;Black Chess Bishop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♞&lt;/td&gt;
&lt;td&gt;U+265E&lt;/td&gt;
&lt;td&gt;Black Chess Knight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♟&lt;/td&gt;
&lt;td&gt;U+265F&lt;/td&gt;
&lt;td&gt;Black Chess Pawn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♔&lt;/td&gt;
&lt;td&gt;U+2654&lt;/td&gt;
&lt;td&gt;White Chess King&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♕&lt;/td&gt;
&lt;td&gt;U+2655&lt;/td&gt;
&lt;td&gt;White Chess Queen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♖&lt;/td&gt;
&lt;td&gt;U+2656&lt;/td&gt;
&lt;td&gt;White Chess Rook&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♗&lt;/td&gt;
&lt;td&gt;U+2657&lt;/td&gt;
&lt;td&gt;White Chess Bishop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♘&lt;/td&gt;
&lt;td&gt;U+2658&lt;/td&gt;
&lt;td&gt;White Chess Knight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♙&lt;/td&gt;
&lt;td&gt;U+2659&lt;/td&gt;
&lt;td&gt;White Chess Pawn&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="zodiac-symbols"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-14"&gt;Zodiac&amp;nbsp;Symbols&lt;/a&gt;&lt;/h2&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Western Zodiac&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;♈︎&lt;/td&gt;
&lt;td&gt;U+2648&lt;/td&gt;
&lt;td&gt;Aries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♉︎&lt;/td&gt;
&lt;td&gt;U+2649&lt;/td&gt;
&lt;td&gt;Taurus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♊︎&lt;/td&gt;
&lt;td&gt;U+264A&lt;/td&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♋︎&lt;/td&gt;
&lt;td&gt;U+264B&lt;/td&gt;
&lt;td&gt;Cancer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♌︎&lt;/td&gt;
&lt;td&gt;U+264C&lt;/td&gt;
&lt;td&gt;Leo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♍︎&lt;/td&gt;
&lt;td&gt;U+264D&lt;/td&gt;
&lt;td&gt;Virgo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♎︎&lt;/td&gt;
&lt;td&gt;U+264E&lt;/td&gt;
&lt;td&gt;Libra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♏︎&lt;/td&gt;
&lt;td&gt;U+264F&lt;/td&gt;
&lt;td&gt;Scorpio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♐︎&lt;/td&gt;
&lt;td&gt;U+2650&lt;/td&gt;
&lt;td&gt;Sagittarius&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♑︎&lt;/td&gt;
&lt;td&gt;U+2651&lt;/td&gt;
&lt;td&gt;Capricorn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♒︎&lt;/td&gt;
&lt;td&gt;U+2652&lt;/td&gt;
&lt;td&gt;Aquarius&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;♓︎&lt;/td&gt;
&lt;td&gt;U+2653&lt;/td&gt;
&lt;td&gt;Pisces&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/chinese-zodiac-ranked-piecepack-pnp.html"&gt;Chinese zodiac demo&lt;/a&gt; uses Chinese zodiac symbols as rank&amp;nbsp;symbols.&lt;/p&gt;
&lt;/div&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Chinese Zodiac&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Glyph&lt;/th&gt;
&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;🐀&lt;/td&gt;
&lt;td&gt;U+1F400&lt;/td&gt;
&lt;td&gt;Rat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐁&lt;/td&gt;
&lt;td&gt;U+1F401&lt;/td&gt;
&lt;td&gt;Mouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐭&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F42D&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Mouse Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐂&lt;/td&gt;
&lt;td&gt;U+1F402&lt;/td&gt;
&lt;td&gt;Ox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐃&lt;/td&gt;
&lt;td&gt;U+1F403&lt;/td&gt;
&lt;td&gt;Water Buffalo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐄&lt;/td&gt;
&lt;td&gt;U+1F404&lt;/td&gt;
&lt;td&gt;Cow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐮&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F42E&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Cow Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐅&lt;/td&gt;
&lt;td&gt;U+1F405&lt;/td&gt;
&lt;td&gt;Tiger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐯&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F42F&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Tiger Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐇&lt;/td&gt;
&lt;td&gt;U+1F407&lt;/td&gt;
&lt;td&gt;Rabbit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐰&lt;/td&gt;
&lt;td&gt;U+1F430&lt;/td&gt;
&lt;td&gt;Rabbit Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐉&lt;/td&gt;
&lt;td&gt;U+1F409&lt;/td&gt;
&lt;td&gt;Dragon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐲&lt;/td&gt;
&lt;td&gt;U+1F432&lt;/td&gt;
&lt;td&gt;Dragon Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐍&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F40D&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Snake&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐎&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F40E&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Horse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐴&lt;/td&gt;
&lt;td&gt;U+1F434&lt;/td&gt;
&lt;td&gt;Horse Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐏&lt;/td&gt;
&lt;td&gt;U+&lt;span class="caps"&gt;1F40F&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Ram&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐐&lt;/td&gt;
&lt;td&gt;U+1F410&lt;/td&gt;
&lt;td&gt;Goat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐑&lt;/td&gt;
&lt;td&gt;U+1F411&lt;/td&gt;
&lt;td&gt;Ewe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐒&lt;/td&gt;
&lt;td&gt;U+1F412&lt;/td&gt;
&lt;td&gt;Monkey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐵&lt;/td&gt;
&lt;td&gt;U+1F435&lt;/td&gt;
&lt;td&gt;Monkey Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐓&lt;/td&gt;
&lt;td&gt;U+1F413&lt;/td&gt;
&lt;td&gt;Rooster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐔&lt;/td&gt;
&lt;td&gt;U+1F414&lt;/td&gt;
&lt;td&gt;Chicken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐕&lt;/td&gt;
&lt;td&gt;U+1F415&lt;/td&gt;
&lt;td&gt;Dog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐶&lt;/td&gt;
&lt;td&gt;U+1F436&lt;/td&gt;
&lt;td&gt;Dog Face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐖&lt;/td&gt;
&lt;td&gt;U+1F416&lt;/td&gt;
&lt;td&gt;Pig&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐗&lt;/td&gt;
&lt;td&gt;U+1F417&lt;/td&gt;
&lt;td&gt;Boar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;🐷&lt;/td&gt;
&lt;td&gt;U+1F437&lt;/td&gt;
&lt;td&gt;Pig Face&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="how-to-use-with-piecepackr"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-15"&gt;How to use with&amp;nbsp;piecepackr&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Assuming you have appropriate fonts on your system, in order to use a particular Unicode glyph with &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration lists&lt;/a&gt; you prepend the Unicode hexadecimal code with a &lt;tt class="docutils literal"&gt;\u&lt;/tt&gt; if the Unicode hexadecimal code is 4 &amp;#8220;digits&amp;#8221; long and &lt;tt class="docutils literal"&gt;\U&lt;/tt&gt; if the Unicode hexadecimal form is more than 4 &amp;#8220;digits&amp;#8221; long.  If your locales and encodings are set-up properly you can also just directly use the Unicode character&amp;nbsp;directly.&lt;/p&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;ranks_noto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;n,a,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U0001f31e,\U0001f31c,\U0001f451,\u269c,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 🌞,🌜,👑,⚜,꩜&lt;/span&gt;&lt;span class="w"&gt;
                        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                        &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ranks_noto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of the piecepack-suited piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dual-preview1-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of the piecepack-suited&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Some characters have both a text and emoji form.  You can force the text form or the emoji form by adding the appropriate &amp;#8220;Variation Selector&amp;#8221; after the&amp;nbsp;code.&lt;/p&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Variation Selectors&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="50%" /&gt;
&lt;col width="50%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;Code&lt;/th&gt;
&lt;th class="head"&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;U+&lt;span class="caps"&gt;FE0E&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;text variation selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;U+&lt;span class="caps"&gt;FE0F&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;emoji variation selector&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U1f31e\ufe0e\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;pre class="literal-block"&gt;
## 🌞︎
&lt;/pre&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U1f31e\ufe0f\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;pre class="literal-block"&gt;
## 🌞️
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="footnotes"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-16"&gt;Footnotes&lt;/a&gt;&lt;/h2&gt;
&lt;table class="docutils footnote" frame="void" id="anchor" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;For compatibility with the Anchor-and-Crowns suited Empire Deck.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="dagger" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Unicode has a Turned version of the Dagger which is useful for making Unicode text diagrams.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</content><category term="Articles"></category></entry><entry><title>Portable Piecepack Notation</title><link href="https://trevorldavis.com/piecepackr/portable-piecepack-notation.html" rel="alternate"></link><published>2019-08-01T00:00:00-07:00</published><updated>2026-04-25T00:00:00-07:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-08-01:/piecepackr/portable-piecepack-notation.html</id><summary type="html">&lt;p class="first last"&gt;Portable Piecepack Notation (&lt;span class="caps"&gt;PPN&lt;/span&gt;) is a human-readable plaintext file format for storing board games.  The default Movetext parser is designed to be provide a fairly flexible notation system out of the box for playing a large variety of games but the structure is designed allow support for parsing alternative notation systems in the future as well.  Originally intended for notating piecepack games, it also provides some support for other game systems as well.  There is a &lt;a class="reference external" href="https://trevorldavis.com/R/ppn/dev/reference/read_ppn.html"&gt;prototype parser&lt;/a&gt; for this file format written in R that can be used to generate &lt;a class="reference external" href="https://trevorldavis.com/R/ppn/dev/reference/plot_move.html"&gt;2D/3D graphical images&lt;/a&gt;, &lt;a class="reference external" href="https://trevorldavis.com/R/ppn/dev/reference/cat_move.html"&gt;plaintext Unicode diagrams&lt;/a&gt;, and &lt;a class="reference external" href="https://trevorldavis.com/R/ppn/dev/reference/animate_game.html"&gt;animations&lt;/a&gt; for the games saved in this file&amp;nbsp;format.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;strong&gt;Version:&amp;nbsp;0.14.2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Portable Piecepack Notation (&lt;span class="caps"&gt;PPN&lt;/span&gt;) is a human-readable plaintext file format for storing board games.  The default Movetext parser is designed to be provide a fairly flexible notation system out of the box for playing a large variety of games but the structure is designed allow support for parsing alternative notation systems in the future as well.  Originally intended for notating piecepack games, it also provides some support for other game systems as well.  There is a &lt;a class="reference external" href="https://trevorldavis.com/R/ppn/dev/reference/read_ppn.html"&gt;prototype parser&lt;/a&gt; for this file format written in R that can be used to generate &lt;a class="reference external" href="https://trevorldavis.com/R/ppn/dev/reference/plot_move.html"&gt;2D/3D graphical images&lt;/a&gt;, &lt;a class="reference external" href="https://trevorldavis.com/R/ppn/dev/reference/cat_move.html"&gt;plaintext Unicode diagrams&lt;/a&gt;, and &lt;a class="reference external" href="https://trevorldavis.com/R/ppn/dev/reference/animate_game.html"&gt;animations&lt;/a&gt; for the games saved in this file&amp;nbsp;format.&lt;/p&gt;
&lt;div class="admonition warning"&gt;
&lt;p class="first admonition-title"&gt;Warning&lt;/p&gt;
&lt;p class="last"&gt;The &amp;#8220;Portable Piecepack Notation&amp;#8221; is in alpha development and the specification is not likely to remain stable.  I&amp;#8217;d appreciate alpha testers to test things out but probably not a good idea to start storing large amount of games in the format just&amp;nbsp;yet.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#examples" id="toc-entry-1"&gt;Examples&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chess-1" id="toc-entry-2"&gt;Chess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#checkers" id="toc-entry-3"&gt;Checkers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#desfases" id="toc-entry-4"&gt;Desfases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#four-field-kono" id="toc-entry-5"&gt;Four Field&amp;nbsp;Kono&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#fuji-san" id="toc-entry-6"&gt;Fuji-san&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#ice-floe" id="toc-entry-7"&gt;Ice&amp;nbsp;Floe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#japan" id="toc-entry-8"&gt;Japan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#martian-chess" id="toc-entry-9"&gt;Martian&amp;nbsp;Chess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#plans-of-action" id="toc-entry-10"&gt;Plans of&amp;nbsp;Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#relativity" id="toc-entry-11"&gt;Relativity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#tablut" id="toc-entry-12"&gt;Tablut&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#tic-tac-toe" id="toc-entry-13"&gt;Tic-Tac-Toe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#ppn-file-structure" id="toc-entry-14"&gt;&lt;span class="caps"&gt;PPN&lt;/span&gt; File Structure&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#metadata" id="toc-entry-15"&gt;Metadata&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#movetext" id="toc-entry-16"&gt;Movetext&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#default-movetext-parser" id="toc-entry-17"&gt;Default Movetext Parser&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#setup" id="toc-entry-18"&gt;Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#parser-options" id="toc-entry-19"&gt;Parser&amp;nbsp;options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#macros" id="toc-entry-20"&gt;Macros&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#comments" id="toc-entry-21"&gt;Comments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#movenumbers" id="toc-entry-22"&gt;MoveNumbers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#moves" id="toc-entry-23"&gt;Moves&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#piecespec" id="toc-entry-24"&gt;PieceSpec&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#piece-type" id="toc-entry-25"&gt;Piece&amp;nbsp;(type)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#side-up" id="toc-entry-26"&gt;Side&amp;nbsp;Up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#suit-and-configuration" id="toc-entry-27"&gt;Suit and&amp;nbsp;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#rank" id="toc-entry-28"&gt;Rank&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#angle" id="toc-entry-29"&gt;Angle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#assumptions" id="toc-entry-30"&gt;Assumptions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#examples-1" id="toc-entry-31"&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#location" id="toc-entry-32"&gt;Location&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#cartesian-coordinates" id="toc-entry-33"&gt;Cartesian&amp;nbsp;coordinates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#chess-algebraic-style-coordinates" id="toc-entry-34"&gt;Chess-algebraic-style&amp;nbsp;coordinates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#relative-coordinates" id="toc-entry-35"&gt;Relative&amp;nbsp;coordinates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#get-location-from-pieceid" id="toc-entry-36"&gt;Get location from&amp;nbsp;PieceId&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#pieceid" id="toc-entry-37"&gt;PieceId&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#movetoken" id="toc-entry-38"&gt;MoveToken&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#adding-new-pieces" id="toc-entry-39"&gt;Adding new&amp;nbsp;pieces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#removing-pieces" id="toc-entry-40"&gt;Removing&amp;nbsp;pieces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#moving-pieces" id="toc-entry-41"&gt;Moving&amp;nbsp;pieces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#updating-replacing-pieces" id="toc-entry-42"&gt;Updating/replacing&amp;nbsp;pieces&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#appendix" id="toc-entry-43"&gt;Appendix&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#default-macros" id="toc-entry-44"&gt;Default&amp;nbsp;Macros&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#extending-the-ppn-r-parser" id="toc-entry-45"&gt;Extending the &lt;span class="caps"&gt;PPN&lt;/span&gt; R parser&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#adding-a-new-game-setup" id="toc-entry-46"&gt;Adding a new game&amp;nbsp;(setup)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#adding-a-new-game-notation-parser" id="toc-entry-47"&gt;Adding a new game notation&amp;nbsp;parser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="examples"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Examples&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="chess-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Chess&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://ludism.org/ppwiki/Chess"&gt;chess&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType: International Chess
...
{&amp;quot;The Immortal Game: Adolf Anderssen - Lionel Kieseritzky, 1851&amp;quot;}
1. e2-e4 1... e7-e5 2. f2-f4 2... e5:f4
3. f1-c4 3... d8-h4 4. e1-f1 4... b7-b5
5. c4:b5 5... g8-f6 6. g1-f3 6... h4-h6
7. d2-d3 7... f6-h5 8. f3-h4 8... h6-g5
9. h4-f5 9... c7-c6 10. g2-g4 10... h5-f6
11. h1-g1 11... c6:b5 12. h2-h4 12... g5-g6
13. h4-h5 13... g6-g5 14. d1-f3 14... f6-g8
15. c1:f4 15... g5-f6 16. b1-c3 16... f8-c5
17. c3-d5 17... f6:b2 18. f4-d6 18... c5:g1
19. e4-e5 19... b2:a1 20. f1-e2 20... b8-a6
21. f5:g7  21... e8-d8 22. f3-f6 22... g8:f6
23. d6-e7 {checkmate!}
&lt;/pre&gt;
&lt;img alt="Animation of a chess game" class="align-center" src="https://trevorldavis.com/piecepackr/images/knitr/international-chess.gif" /&gt;
&lt;/div&gt;
&lt;div class="section" id="checkers"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Checkers&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://ludism.org/ppwiki/Checkers"&gt;checkers&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType: American Checkers
...
1. e3-d4 1... d6-e5 2. d2-e3 2... h6-g5
3. g3-h4 3... e7-d6 4. f2-g3 4... b6-a5
5. g3-f4 5... e5-g3;*f4 6. h2-f4;f4-h6;*g3*g5 6.... c7-b6
7. c1-d2 7... f6-e5 8. d4-f6;*e5 8... g7-e5;*f6
9. e3-d4 9... e5-f4 10. d4-e5 10... d6-c5
11. c3-b4 11... c5-d4 12. d2-e3 12... f4-d2;*e3
13. e1-c3;*d2 13... d4-e3 14. c3-d4 14... e3-d2
15. b4-c5 15... d2-e1;Mv&amp;#64;e1 16. b2-c3 16... 2e1-d2
17. a3-b4 17... 2d2-e3 18. a1-b2 18... d8-c7
19. b2-a3 19... f8-e7 20. c5-d6 20... e7-c5;*d6
21. b4-d6;*c5 21... 2e3-c5;2c5-e7;*d4*d6 22. g1-f2 22... 2e7-d6
23. e5-f6 23... b6-c5 24. f2-e3 24... a7-b6
25. h4-g5 25... 2d6-e5 26. f6-e7 26... b8-a7
27. e7-d8;A&amp;#64;d8 27... c5-d4  28. e3-c5;*d4 28... b6-d4;d4-b2;*c3*c5
29. 2d8-b6;*c7 29... a7-c5;*2b6 30. g5-f6 30... 2e5-g7;*f6
31. h6-f8;*2g7 C&amp;#64;f8 31... b2-c1;Sv&amp;#64;c1 32. 2f8-e7 32... a5-b4
33. 2e7-d6 33... b4-c3 34. 2d6-b4;2b4-d2;*c3*c5 34.... 2c1-e3;*2d2
35. a3-b4 35... 2e3-d4 36. b4-a5 36... 2d4-c5
37. a5-b6 37... 2c5-a7;*b6
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="desfases"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Desfases&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://ludism.org/ppwiki/Desfases"&gt;Desfases&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType:
    Name: Desfases
    Seed: 42
...
1S. ?S{n,a,2,3,5}&amp;#64;&amp;gt;90; a1-a4; ?Sd~3
1M. ?M{n,a,2,4,5}&amp;#64;&amp;gt;90; e3-c1; ?Md~2
1C. ?C{n,2,3,4,5}&amp;#64;&amp;gt;90; e2-e4; ?Cd~n
1A. ?A{n,a,2,4,5}&amp;#64;&amp;gt;90; b5-e5; ?Ad~2
2S. ?S{a,2,4}&amp;#64;&amp;gt;90; a4-b3; ?Sd~2
2M. ?M{0..4}&amp;#64;&amp;gt;90; c1-b2; ?Md~a
2C. ?C{0..5}&amp;#64;&amp;gt;90; &amp;amp;?dC[2]-c3; ?Cnc{~b,_%?Cd}
2A. ?A{0..4}&amp;#64;&amp;gt;90; e5-d4; ?Ad~a
3S. ?S{n,a,3,4,5}&amp;#64;&amp;gt;90; b3-a2; ?Sd~a
3M. ?M{0..4}&amp;#64;&amp;gt;90; b2-a3; ?Md~n
3C. ?C{1..5}&amp;#64;&amp;gt;90; &amp;amp;?dC[2]-e5; ?C4c{~b,_%?Cd} ?Cd~4
3A. ?A{a,2,3,5}&amp;#64;&amp;gt;90; d4-d2; ?Ad~n
4S. ?S{n,a,2,4,5}&amp;#64;&amp;gt;90; a2-b2; ?Sd~n
4M. ?M{0..4}&amp;#64;&amp;gt;90; &amp;amp;?dM[2]-b3; ?M2c{~b,_%?Md} ?Md~2
4C. ?C{0..5}&amp;#64;&amp;gt;90; e4-a4; ?Cd~3
4A. ?A{n,2,3}&amp;#64;&amp;gt;90; &amp;amp;?dA[2]-d3; ?Aac{~b,_%?Ad} ?Ad~a
5S. ?S{n,a,4}&amp;#64;&amp;gt;90; &amp;amp;?dS[2]-a2; ?Snc{~b,_%?Sd} ?Sd~n
5M. ?M{n,a,2,3,5}&amp;#64;&amp;gt;90; a3-a1; ?Md~a
5C. ?C{0..4}&amp;#64;&amp;gt;90; a4-b3; ?dC~2
5A. ?A{n,2,3,4}&amp;#64;&amp;gt;90; d2-e2; ?dA~n
6S. ?S{n,a,5}&amp;#64;&amp;gt;90; &amp;amp;?dS[2]-c2; ?S2c{~b,_%?Sd} ?Sd~2
6M. ?M{n,a,2,3,5}&amp;#64;&amp;gt;90; a1-a3; ?Md~n
6C. ?C{n,2,4}&amp;#64;&amp;gt;90; b3-a4; ?Cd~a
6A. ?A{0..3}&amp;#64;&amp;gt;90; &amp;amp;?dA[2]-e3; ?A2c{~b,_%?Ad} ?Ad~2
{ 15 more rounds to complete a full game... }
&lt;/pre&gt;
&lt;img alt="Animation of a game of Desfases" class="align-center" src="https://trevorldavis.com/share/piecepack/desfases.gif" /&gt;
&lt;/div&gt;
&lt;div class="section" id="four-field-kono"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Four Field&amp;nbsp;Kono&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://ludism.org/ppwiki/FourFieldKono"&gt;Four Field Kono&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
GameType: Four Field Kono

1. b1:b3 1... d3:b3 2. c1:c3 2... a3:c3 3. c2-c1 3... b4:b2 4. a1-b1 4... b3:b1
5. d1:b1 5... c3-c2 6. a2-a3 6... b2:d2 7. a3-b3 7... c4-c3 8. c1-d1 8... d4-d3
9. b1-b2 9... d2:b2 10. b3-a3 10... b2-b1 {Player 1's loss is assured with the
 separation of their two remaining pieces and they should resign in a real game}
11. a3-a2 11... b1-c1 12. d1-d2 12... c1-d1 13. a2-a3 13... a4-b4
14. a3-a4 14... b4-c4 15. a4-b4 15... c4-d4 16. b4-a4 16... d4:d2 {Player 2 wins}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="fuji-san"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Fuji-san&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A game of &lt;a class="reference external" href="https://ludism.org/ppwiki/Fuji-san"&gt;Fuji-san&lt;/a&gt; with a specific starting coin&amp;nbsp;setup:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType:
  Name: Fujisan
  Coins: &amp;quot;44452n24n3aa/a25335325ann&amp;quot;
...
1. a1-b1 2. n2-k2 3. b1-e1 4. e1-j1 5. j1-j2 6. j2-l2 7. k2-m2 8. m2-m1
9. l2-l1 10. n1-k1 11. m1-i1 12. i1-d1 13. d1-d2 14. l1-i1 15. i1-i2 16. k1-k2
17. k2-e2 18. i2-c2 19. a2-f2 20. e2-h2 21. h2-g2 22. c2-h2 23. h2-h1 24. d2-h2
25. f2-b2 26. b2-b1 27. b1-g1
&lt;/pre&gt;
&lt;img alt="Animation of a Fuji-san game" class="align-center" src="https://trevorldavis.com/piecepackr/images/knitr/fujisan.gif" /&gt;
&lt;/div&gt;
&lt;div class="section" id="ice-floe"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;Ice&amp;nbsp;Floe&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A game of &lt;a class="reference external" href="https://ludism.org/ppwiki/IceFloe"&gt;Ice Floe&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType: Ice Floe
...
PlacePawns. pS&amp;#64;e11 pM&amp;#64;k6 pC&amp;#64;f0 pA&amp;#64;(0,5)
RollDice. dS5&amp;#64;f11 dMa&amp;#64;k5 dC3&amp;#64;e0 dA2&amp;#64;(0,6)
PlacePyramids. xn{S&amp;#64;h7,M&amp;#64;d5,C&amp;#64;j1,A&amp;#64;b1}; xa{S&amp;#64;d3,M&amp;#64;f3,C&amp;#64;j9,A&amp;#64;f9};
               x2{S&amp;#64;b5,M&amp;#64;b9,C&amp;#64;h1,A&amp;#64;j3}; x3{S&amp;#64;h5,M&amp;#64;d9,C&amp;#64;d7,A&amp;#64;f1};
               x4{S&amp;#64;h9,M&amp;#64;b3,C&amp;#64;d1,A&amp;#64;b7}; x5{S&amp;#64;h3,M&amp;#64;j7,C&amp;#64;f7,A&amp;#64;j5};
Round1. ?xS4-3L; ?xM3-f10; *4?Ca; ?xC2-g3; ?xAn-d4;-h4; *4?C2;
        ?d{S~5,M~n,C~n,A~a} . c5A&amp;#64;g11 c4A&amp;#64;k4 c3A&amp;#64;d0 cnS&amp;#64;(0,7) . *2?An . *?M2
Round2. ?xMn-3L;-2U; ?xC3-b8; *4?S4; ?xA3-3R; ?xSa-3L;
        ?d{S~5,M~a,C~n,A~a} . 2&amp;#64;g0; 2&amp;#64;d11; a&amp;#64;h0; */cf; ?c5~C ?c{4,3,n}~S . *2?Sn; *?S3
Round3. ?xC4-4R; ?xA3-3L; ?xSn-3L; ?xM2-2SE;-f8; *4?Aa;
        ?d{S~5,M~4,C~5,A~5} . ?c{5,3,n}~M ?c4~C . *2?M5 . *?S5
Round4. ?xA3-2UL;-b4;*4?A2; ?xS2-4U; 2?Ma-2U; ?xC4-i3;
        ?d{S~3,M~3,C~2,A~3} . ?c{5,4}~C ?c3~A ?cn~M;
        a&amp;#64;(0,4); 2&amp;#64;k3; 2&amp;#64;(0,3); a&amp;#64;{k2,d11} . */cf; *3?C3; *?M4
{ Final coins: Suns: none; Moons: none; Crowns: none; Arms: none }
{ Final score: Suns: 3, Moons: 2, Crowns: 3, Arms: 0 }
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="japan"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;Japan&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://ludism.org/ppwiki/Japan"&gt;Japan&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
  GameType:
    Name: Japan
    Seed: 42
...
1R. R`6-3'&amp;lt;&amp;#64;(10.5,3)
1B. B`4-4'&amp;lt;&amp;#64;(2.5,5)
2R. R`1-5'&amp;#64;(12,4.5)
2B. B`6-4'&amp;#64;(4,6.5)
3R. R`5-2'&amp;lt;&amp;#64;(7.5,2)
3B. Ada&amp;#64;(7,1); (8,1)-(15,3)
4R. R`0-1'&amp;#64;(13,2.5)
4B. (7,1)-(14,3); ?Ad~5; (14,2)-(15,2)
5R. Sp&amp;#64;(12,2); (12,3)-(0,4)
5B. B`2-6'&amp;lt;&amp;#64;(1.5,6)
6R. Sda&amp;#64;(1,4); (1,5)-(0,5)
6B. Ap&amp;#64;(2,7); (1,7)-(15,3)
7R. R`2-0'&amp;lt;&amp;#64;(12.5,7)
7B. B`2-1'&amp;#64;(11,7.5); (12,8)-(15,3)
8R. R`1-3'&amp;lt;&amp;#64;(13.5,6); (14,7)-(0,4)
8B. B`0-2'&amp;#64;(5,2.5)
9R. R`5-5'&amp;#64;(11,5.5); (12,6)-(0,2)
9B. B`1-5'&amp;lt;&amp;#64;(2.5,3)
10R. R`3-3'&amp;#64;(10,4.5); (11,4)-(0,6)
10B. B`1-1'&amp;#64;(3,1.5)
11R. R`6-1'&amp;#64;(1,2.5); *(2,2)
11B. B`5-4'&amp;lt;&amp;#64;(8.5,4)
12R. R`6-2'&amp;lt;&amp;#64;(9.5,2)
12B. B`3-1'&amp;gt;&amp;#64;(3.5,4)
13R. R`6-4'&amp;#64;(9,6.5)
13B. (14,3)-(10,7); (10,7)~4; (10,6)-(15,4)
14R. R`6-0'&amp;#64;(8,5.5); (9,5)-(0,5)
14B. (8.5,4){~v,-(14\,2.5)} B`0-0'&amp;lt;&amp;#64;(8.5,4)
15R. R`6-5'&amp;#64;(7,4.5)
15B. B`6-3'&amp;#64;(6,4.5)
16R. */Sp
16B. B`6-5'&amp;lt;&amp;#64;(6.5,6)
17R. R`6-6'&amp;lt;&amp;#64;(3.5,8)
17B. ?Ad-(3,6); ?Ad~3; (3,7)-(15,7)
18R. (3.5,8)-(7.5,8) R`0-0'&amp;gt;&amp;#64;(3.5,8)
18B. B`6-6'&amp;lt;&amp;#64;(5.5,7)
19R. R`2-4'&amp;#64;(12,1.5)
19B. ?Ad-(14,5); ?Ad~2
20R. ?Sd-(6,3); ?Sd~5; (6,2)-(0,3)
20B. */Ap
21R. Sp&amp;#64;(8,3); (7,3)-(0,6) (9,3)-(0,7)
21B. Ap&amp;#64;(13,4); (14,4)-(15,6) (13,5)-(0,2)
22R. */Sp
22B. */Ap
23R. Sp&amp;#64;(11,2); (11,1)-(0,5)
23B. Ap&amp;#64;(5,5); (4,5)-(15,5) (5,4)-(15,4) (5,6)-(15,7)
24R. ?Sd-(7,7); ?Sd~4; (8,7)-(0,7)
24B. ?Ad-(4,1); ?Ad~n
25R. ?Sd-(4,3); ?Sd~3; (4,2)-(0,6)
&lt;/pre&gt;
&lt;img alt="Japan example" class="align-center" src="https://trevorldavis.com/share/piecepack/japan_grid.gif" /&gt;
&lt;/div&gt;
&lt;div class="section" id="martian-chess"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;Martian&amp;nbsp;Chess&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://www.looneylabs.com/content/martian-chess"&gt;Martian Chess&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
MovetextParser: Icehouse
GameType:
  Name: Martian Chess
  Seed: 42
...
1. d3-d4 1... b6-c5
2. d4-c4 2... b7-b5
3. c5-c0 c4-c5 3... b3-b9 b5-b3
4. b3-a3 4... c3-a9 c5-c3
5. d2-d3 5... c7-d6
6. a6-a0 d3-a6 6... a3_%a9 a6-a3
7. a7-b0 a3-a7 7... b2-d9 b8-b2
8. c3-c4 8... c6-b5
9. b5-d0 b2-b5 9... b1-c9 b5-b1
10. c4-a4 10... a4_%b9 a7-a4
11. a8_%a0 a4-a8 11... d6-c7
12. b1-b3 12... a8-d5
13. d5_%d0 d1-d5 13... b3_%c9 d5-b3
14. b3-c4 14... c8_%c7
15. 2c7-b0 c4-c7 15... c2_%d9 c7-c2
&lt;/pre&gt;
&lt;img alt="Martian Chess example" class="align-center" src="https://raw.githubusercontent.com/piecepackr/piecenikr/master/man/figures/martian-chess.gif" /&gt;
&lt;/div&gt;
&lt;div class="section" id="plans-of-action"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-10"&gt;Plans of&amp;nbsp;Action&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://www.ludism.org/ppwiki/PlansOfAction"&gt;Plans of Action&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType:
    Name: Plans of Action
    Coins: SASASS/MMACSS/CACCAA/MCMCMM
...
(5,3)-4U; (3,3)-2L; 5(5.5,5.5)$&amp;gt;90!; (5,5)-4L; (2,5)-3R;-2D; (3,5)-2D;
({2..7},3)-2D; (3,4)-3U; (4,5)-2U; (6,4)-3L;-4U; (6,6)-2U; (2,6)-4R; (1,5)-4R;
(7,6)-3D;-2L; (4,6)-3R; (6,6)-3D;-3L; (5,3)-3L; (7,6)-3D; (3,3)-2U; (7,3)-3L;
({3,5,6,7},5)-2D; (5,4)-4L; (1,3)-3U; (5,7)-3D; (1,4)-5R; (1,6)-2D; (7,4)-2U;
(3,6)-3R; (5,6)-2L;-2D; ({1..6},4)-2D; (4,7)-2D;-2R; (3,7)-3D;-2R; (3,8)-2D;
(6,8)-2L;-2D; (6,5)-3U;-2R;-2D; (5,4)-2U;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="relativity"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-11"&gt;Relativity&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/relativity.html"&gt;Relativity&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
Round: Night
GameType:
    Name: Relativity
    Coins: &amp;quot;n45a5n/3a2243/3n4a2n/a25345&amp;quot;
...
{ Notes: Space has power of adjacency while Time has power of sequence }
1S. d3#e3 1T. d3#d1
2S. c2#c3 2T. d2#b1;M2&amp;#64;e6
3S. b2#a2 3T. e3#b2
4S. f1#f4 4T. e2#a3;M3&amp;#64;e6
5S. c4#d4 5T. f1#a1
6S. c1#c4;M5&amp;#64;b6 6T. b3#a3
7S. f3#a3 7T. d1#a3
8S. f2#f3 8T. b1#d2
9S. f3#a3;Mn&amp;#64;b6 9T. e2#c2
10S. e1#f1 10T. f1#d4
11S. c2#c3 11T. d4#c4
12S. b2#c2 12T. c1#e2;Ma&amp;#64;e6
&lt;/pre&gt;
&lt;img alt="Relativity example" class="align-center" src="https://trevorldavis.com/piecepackr/images/knitr/relativity.gif" /&gt;
&lt;/div&gt;
&lt;div class="section" id="tablut"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-12"&gt;Tablut&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An example game of &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/tablut.html"&gt;Tablut&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
GameType: Tablut
...
1. a4-a3 1... c5-c3 2. d1-d3 2... e7-c7
3. f1-f3;*e3 3... e4-e3;*d3 4. f9-f7 4... g5-g3;*f3
5. h5-g5 5... d5-d1 6. d9-d3 6... f5-f1;*e1
7. a3-b3;*c3 7... c7-c3;*d3 8. i4-e4;*e3 8... g3-e3;*e4
9. i5-i4 9... e5-f5 10. i6-f6 10... f5-f4
11. a5-a4 11... f4-g4 12. e2-g2 12... e3-g3
13. f6-f4 13... e6-e4;*f4 14. f7-f4 14... g4-h4
15. f4-g4;*h4
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="tic-tac-toe"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-13"&gt;Tic-Tac-Toe&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A simple game of Tic-Tac-Toe with no automatic&amp;nbsp;setup:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
---
Event: Example Tic-Tac-Toe Game
Result: 1-0
...
setup. t&amp;#64;b2
1. S&amp;#64;b2 1... M&amp;#64;a2 {? (1... M&amp;#64;a1)}
2. S&amp;#64;c1 2... M&amp;#64;a3
3. S&amp;#64;a1 3... M&amp;#64;c3
4. S&amp;#64;b1 {X wins}
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="ppn-file-structure"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-14"&gt;&lt;span class="caps"&gt;PPN&lt;/span&gt; File&amp;nbsp;Structure&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span class="caps"&gt;PPN&lt;/span&gt; files are text files ending in &lt;tt class="docutils literal"&gt;.ppn&lt;/tt&gt; containing one or more games in &lt;span class="caps"&gt;PPN&lt;/span&gt;&amp;nbsp;notation.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Each game in the file should start with a line beginning with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;---&lt;/span&gt;&lt;/tt&gt;&lt;ul&gt;
&lt;li&gt;This line is recommended but optional for the first game in a &lt;span class="caps"&gt;PPN&lt;/span&gt; file. If the first game in each &lt;span class="caps"&gt;PPN&lt;/span&gt; file begins with a &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;---&lt;/span&gt;&lt;/tt&gt; then one can build larger &lt;span class="caps"&gt;PPN&lt;/span&gt; file archives by simply concatenating smaller &lt;span class="caps"&gt;PPN&lt;/span&gt; files together (i.e. with the *nix &lt;tt class="docutils literal"&gt;cat&lt;/tt&gt; command).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Each game starts with a &lt;a class="reference internal" href="#metadata"&gt;Metadata&lt;/a&gt; section and ends with a &lt;a class="reference internal" href="#movetext"&gt;Movetext&lt;/a&gt;&amp;nbsp;section.&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;PPN&lt;/span&gt; files should be assumed to use an &lt;span class="caps"&gt;UTF&lt;/span&gt;-8 character encoding (this includes &lt;span class="caps"&gt;ASCII&lt;/span&gt;) with no maximum line&amp;nbsp;length.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="section" id="metadata"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-15"&gt;Metadata&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;The Metadata section should be a single &amp;#8220;Mapping&amp;#8221; expressed in &lt;a class="reference external" href="https://yaml.org/"&gt;&lt;span class="caps"&gt;YAML&lt;/span&gt;&lt;/a&gt;.&lt;ul&gt;
&lt;li&gt;It is recommended to use the subset of &lt;a class="reference external" href="https://yaml.org/"&gt;&lt;span class="caps"&gt;YAML&lt;/span&gt;&lt;/a&gt; understood by both the 1.1 and 1.2 &lt;a class="reference external" href="https://yaml.org/"&gt;&lt;span class="caps"&gt;YAML&lt;/span&gt;&lt;/a&gt; standards since not all popular parsers understand both (or just &lt;a class="reference external" href="https://yaml.org/"&gt;&lt;span class="caps"&gt;YAML&lt;/span&gt;&lt;/a&gt;&amp;nbsp;1.2).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;It should begin with a line starting with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;---&lt;/span&gt;&lt;/tt&gt;&lt;ul&gt;
&lt;li&gt;This is the same &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;---&lt;/span&gt;&lt;/tt&gt; we said begins each&amp;nbsp;game.&lt;/li&gt;
&lt;li&gt;The &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;---&lt;/span&gt;&lt;/tt&gt; is recommended but optional for the first game in a &lt;span class="caps"&gt;PPN&lt;/span&gt;&amp;nbsp;file.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;It should end with a line starting with &lt;tt class="docutils literal"&gt;...&lt;/tt&gt;&lt;ul&gt;
&lt;li&gt;This &lt;tt class="docutils literal"&gt;...&lt;/tt&gt; is recommended but optional if the Metadata section does not have any empty lines and there is at least one empty line between the Metadata and &lt;a class="reference internal" href="#movetext"&gt;Movetext&lt;/a&gt;&amp;nbsp;sections.&lt;/li&gt;
&lt;li&gt;If there are no lines starting with &lt;tt class="docutils literal"&gt;...&lt;/tt&gt; and no empty lines the Metadata section should be assumed to be&amp;nbsp;empty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;All Metadata keys are optional.&lt;ul&gt;
&lt;li&gt;If the Metadata section is empty &lt;span class="caps"&gt;PPN&lt;/span&gt; parsers should use the default Movetext parser described in a later section to interpret the &lt;a class="reference internal" href="#movetext"&gt;Movetext&lt;/a&gt; (without doing any initial game piece&amp;nbsp;setup).&lt;/li&gt;
&lt;li&gt;One can specify the Movetext parser to use (possibly a diferent one for each game) via the &lt;tt class="docutils literal"&gt;MovetextParser&lt;/tt&gt; key with a string indicating the parser to use.  Movetext parsers are passed both the Metadata section and the Movetext&amp;nbsp;section.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="movetext"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-16"&gt;Movetext&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Regardless of the Movetext parser to be used the Movetext should not have any lines &lt;em&gt;starting&lt;/em&gt; with &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;---&lt;/span&gt;&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;...&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Should be (initially) parsed as &lt;span class="caps"&gt;UTF&lt;/span&gt;-8 text without restrictions on line&amp;nbsp;length.&lt;/li&gt;
&lt;li&gt;Additional restrictions based on which Movetext parser is used to parse it.  The default Movetext parser and its additional restrictions are described in the &lt;a class="reference internal" href="#default-movetext-parser"&gt;Default Movetext Parser&lt;/a&gt;&amp;nbsp;section.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="default-movetext-parser"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-17"&gt;Default Movetext&amp;nbsp;Parser&lt;/a&gt;&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;The default Movetext Parser supports automatic &lt;a class="reference internal" href="#setup"&gt;Setup&lt;/a&gt; for various piecepack games via the &lt;a class="reference internal" href="#metadata"&gt;Metadata&lt;/a&gt;&amp;nbsp;mapping.&lt;/li&gt;
&lt;li&gt;The default Movetext Parser supports the following Movetext elements:&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#comments"&gt;Comments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#movenumbers"&gt;MoveNumbers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#moves"&gt;Moves&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Each element needs to be separated from other elements by whitespace&lt;ul&gt;
&lt;li&gt;Whitespace is defined as tabs, newlines, form feeds, and any character in the Unicode Z&amp;nbsp;Category.&lt;/li&gt;
&lt;li&gt;All whitespace between elements (and in comments) will be converted to single&amp;nbsp;spaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The default parser keeps track of the (x,y) coordinates of pieces and an ordering they can be placed on the board to reproduce the state of the board after that move.  For convenience we will sometimes refer to pieces placed on the board later (earlier) in this ordering as being placed &amp;#8220;above&amp;#8221; (&amp;#8220;beneath&amp;#8221;) those placed earlier (later) in this ordering, please note however that in real life a high stack of pieces placed earlier may physically be &amp;#8220;above&amp;#8221; an adjacent single piece placed&amp;nbsp;later.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="section" id="setup"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-18"&gt;Setup&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;Currently the Movetext Parser uses the &lt;tt class="docutils literal"&gt;SetUp&lt;/tt&gt; field in the &lt;a class="reference internal" href="#metadata"&gt;Metadata&lt;/a&gt; to provide game setup, if that field is missing it will use the &lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt; field to provide game setup.  This value should either be a string with the game&amp;#8217;s name or a mapping with the field &lt;tt class="docutils literal"&gt;Name&lt;/tt&gt; with the game&amp;#8217;s name and optionally &lt;tt class="docutils literal"&gt;System&lt;/tt&gt; of the game system to use (for games that can be played with multiple game systems); all other values of this mapping will be passed to the&amp;nbsp;setup.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;Although in general tags will treated case sensitive in this case we first process the string by converting to lower case, removing apostrophes and hyphens, &amp;#8220;squishing&amp;#8221; the whitespace, and converting spaces to underscores e.g. &amp;#8220;Nine Men&amp;#8217;s Morris&amp;#8221; will be treated as equivalent to &amp;#8220;nine_mens_morris&amp;#8221;.  Occasionally we will provide aliases e.g. &amp;#8220;Baroque chess&amp;#8221; will be treated as an alias for&amp;nbsp;&amp;#8220;Ultima&amp;#8221;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt; example of just string of game&amp;#8217;s name for&amp;nbsp;setup:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
GameType: Four Field Kono
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt; example that allows passing more info to&amp;nbsp;setup:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
GameType:
  Name: Fujisan
  Seed: 11
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;tt class="docutils literal"&gt;SetUp&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt; can be used together when a game variant shares its physical setup with another game.  &lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt; records the game being played while &lt;tt class="docutils literal"&gt;SetUp&lt;/tt&gt; specifies the piece arrangement to&amp;nbsp;use:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
GameType: Suicide Chess
SetUp: Chess
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;A &lt;tt class="docutils literal"&gt;SetUp&lt;/tt&gt; of &lt;tt class="docutils literal"&gt;None&lt;/tt&gt; will explicitly do an initial board setup with no pieces at all, useful for games you will set up manually in the&amp;nbsp;movetext:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
GameType: Tic-Tac-Toe
SetUp: None
...
setup. t&amp;#64;b2
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;If there is neither a &lt;tt class="docutils literal"&gt;SetUp&lt;/tt&gt; field nor a &lt;tt class="docutils literal"&gt;GameType&lt;/tt&gt; field then this will also result in an initial board setup with no pieces at&amp;nbsp;all.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="parser-options"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-19"&gt;Parser&amp;nbsp;options&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;The following built-in parsers are available via the &lt;tt class="docutils literal"&gt;MovetextParser&lt;/tt&gt; field.  They are all built on top of the &lt;tt class="docutils literal"&gt;default&lt;/tt&gt; parser but differ in their default game system for &lt;a class="reference internal" href="#setup"&gt;Setup&lt;/a&gt; and their default configuration for colored bits (&lt;tt class="docutils literal"&gt;●&lt;/tt&gt;):&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;piecepack&lt;/tt&gt; — the standard piecepack parser; this is the default parser used when no &lt;tt class="docutils literal"&gt;MovetextParser&lt;/tt&gt; is specified (also accessible as &lt;tt class="docutils literal"&gt;default&lt;/tt&gt; for backwards&amp;nbsp;compatibility)&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;alquerque&lt;/tt&gt; — for alquerque-style games; colored bits use an alquerque&amp;nbsp;configuration&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;checker&lt;/tt&gt; — for checker/draughts games; colored bits use a checkers&amp;nbsp;configuration&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;chess&lt;/tt&gt; — for chess games; colored bits use a chess&amp;nbsp;configuration&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;domino&lt;/tt&gt; — for domino&amp;nbsp;games&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;go&lt;/tt&gt; — for go games; colored bits use a go&amp;nbsp;configuration&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;marble&lt;/tt&gt; — for marble games; colored bits use a marbles&amp;nbsp;configuration&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;morris&lt;/tt&gt; — for Morris games (e.g. Nine Men&amp;#8217;s Morris); colored bits use a morris&amp;nbsp;configuration&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;tarot&lt;/tt&gt; — for card games; since French tarot is a superset of the traditional 52-card deck this parser works for both tarot and regular playing card&amp;nbsp;games&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Optional arguments can be passed to the parser via the &lt;tt class="docutils literal"&gt;MovetextParser&lt;/tt&gt; mapping form&amp;nbsp;e.g.:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
MovetextParser:
  Name: piecepack
  ScalingFactor: 2
&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;tt class="docutils literal"&gt;ScalingFactor&lt;/tt&gt; changes how many &amp;#8220;inches&amp;#8221; a coordinate unit represents i.e. with &lt;tt class="docutils literal"&gt;ScalingFactor: 2&lt;/tt&gt; then &lt;tt class="docutils literal"&gt;a1&lt;/tt&gt; corresponds to an x-coordinate of 2 inches and a y-coordinate of 2 inches.  Accepted by all&amp;nbsp;parsers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;tt class="docutils literal"&gt;CellWidth&lt;/tt&gt; sets the width of each board cell in inches.  Valid values are &lt;tt class="docutils literal"&gt;1&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;2&lt;/tt&gt; (default &lt;tt class="docutils literal"&gt;2&lt;/tt&gt;).  Accepted by the &lt;tt class="docutils literal"&gt;checker&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;chess&lt;/tt&gt; parsers&amp;nbsp;e.g.:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
MovetextParser:
  Name: checker
  CellWidth: 1
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="macros"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-20"&gt;Macros&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The default Movetext Parse performs macro substitution in the &lt;a class="reference internal" href="#movetext"&gt;Movetext&lt;/a&gt;.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Macros are strings surrounded by a &lt;tt class="docutils literal"&gt;`&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;'&lt;/tt&gt; e.g. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;`q'&amp;#64;b2&lt;/span&gt; {The default &amp;quot;q&amp;quot; macro is for a black chess queen}&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Macros can be defined in three places (with any identically named macros earlier in this list replacing those later in the list):&lt;ol class="arabic"&gt;
&lt;li&gt;In a &amp;#8220;Macros&amp;#8221; field in the &lt;a class="reference internal" href="#metadata"&gt;Metadata&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;By a specified game &lt;a class="reference internal" href="#setup"&gt;setup&lt;/a&gt;&amp;nbsp;function&lt;/li&gt;
&lt;li&gt;The parser includes some &lt;a class="reference internal" href="#builtin-macros"&gt;builtin macros&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Macro names cannot include whitespace nor the semi-colon &lt;tt class="docutils literal"&gt;;&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Macro substitution happens after &amp;#8220;moves&amp;#8221; and &amp;#8220;comments&amp;#8221; are identified (and&amp;nbsp;split).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="comments"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-21"&gt;Comments&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Comments are any text between braces &lt;tt class="docutils literal"&gt;{&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;}&lt;/tt&gt;&lt;ul&gt;
&lt;li&gt;All whitespace will be parsed as single spaces, in particular comments can span multiple&amp;nbsp;lines&lt;/li&gt;
&lt;li&gt;Braces are not allowed within comment&amp;nbsp;braces&lt;/li&gt;
&lt;li&gt;Must have white space before the &lt;tt class="docutils literal"&gt;{&lt;/tt&gt; and after the &lt;tt class="docutils literal"&gt;}&lt;/tt&gt; (otherwise will be considered to be a brace&amp;nbsp;expansion)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="movenumbers"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-22"&gt;MoveNumbers&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Ordinary MoveNumbers are one or more letters, numbers, periods, and/or underscores followed by at least one period&lt;ul&gt;
&lt;li&gt;Unlike in &lt;a class="reference external" href="http://www.saremba.de/chessgml/standards/pgn/pgn-complete.htm"&gt;&lt;span class="caps"&gt;PGN&lt;/span&gt;&lt;/a&gt; MoveNumbers &lt;strong&gt;must&lt;/strong&gt; end in (at least one)&amp;nbsp;period.&lt;/li&gt;
&lt;li&gt;Ordinary MoveNumbers must have white space before and&amp;nbsp;after.&lt;/li&gt;
&lt;li&gt;One must not have any line start with &lt;tt class="docutils literal"&gt;...&lt;/tt&gt; (which could interfere in determining where the &lt;a class="reference internal" href="#metadata"&gt;Metadata&lt;/a&gt;&amp;nbsp;ends).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;A single period &lt;tt class="docutils literal"&gt;.&lt;/tt&gt; (surrounded by white space) is a special shortcut for writing the previous MoveNumber with an extra period added to the end of it e.g. &lt;tt class="docutils literal"&gt;2. &lt;span class="pre"&gt;a4-b4&lt;/span&gt; . &lt;span class="pre"&gt;b4-c4&lt;/span&gt;&lt;/tt&gt; is equivalent to &lt;tt class="docutils literal"&gt;2. &lt;span class="pre"&gt;a4-b4&lt;/span&gt; 2.. &lt;span class="pre"&gt;b4-c4&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;The semi-colon &lt;tt class="docutils literal"&gt;;&lt;/tt&gt; is a special shortcut for writing the minimal a single period MoveNumber (adding some spaces around it if necessary) e.g. &lt;tt class="docutils literal"&gt;2. &lt;span class="pre"&gt;a4-b4;b4-c4&lt;/span&gt;&lt;/tt&gt; is equivalent to &lt;tt class="docutils literal"&gt;2. &lt;span class="pre"&gt;a4-b4&lt;/span&gt; . &lt;span class="pre"&gt;b4-c4&lt;/span&gt;&lt;/tt&gt; which is equivalent to &lt;tt class="docutils literal"&gt;2. &lt;span class="pre"&gt;a4-b4&lt;/span&gt; 2.. &lt;span class="pre"&gt;b4-c4&lt;/span&gt;&lt;/tt&gt;  &lt;a class="footnote-reference" href="#semicolon" id="footnote-reference-1"&gt;[1]&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Putting MoveNumbers in one&amp;#8217;s &lt;a class="reference internal" href="#movetext"&gt;Movetext&lt;/a&gt; is optional but if they exist &lt;span class="caps"&gt;PPN&lt;/span&gt; parsers will often break down and label moves by MoveNumbers (to make animations of a game or visualize the game state at a particular point in the&amp;nbsp;game).&lt;/li&gt;
&lt;/ul&gt;
&lt;table class="docutils footnote" frame="void" id="semicolon" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;The intention for this is quickly indicating little &amp;#8220;submoves&amp;#8221; within a larger proper &amp;#8220;move&amp;#8221; that we&amp;#8217;d like to be able to separately visualize but that we don&amp;#8217;t want to semantically mark as a completely separate &amp;#8220;move&amp;#8221;.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="moves"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-23"&gt;Moves&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;Moves are comprised of &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt;, &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt;, and &lt;a class="reference internal" href="#movetoken"&gt;MoveToken&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;One can use Unix-shell-style brace expansions as a shortcut for expressing multiple moves&amp;nbsp;e.g.:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
t&amp;#64;{b,d}{2..8..2} {Shortcut for t&amp;#64;b2 t&amp;#64;b4 t&amp;#64;b6 t&amp;#64;b8 t&amp;#64;d2 t&amp;#64;d4 t&amp;#64;d6 t&amp;#64;d8}
*{b..f}2 {Shortcut for *b2 *c2 *d2 *e2 *f2}
&lt;/pre&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Unlike Bash-style brace expansions must have a &amp;#8220;preamble&amp;#8221; or &amp;#8220;postscript&amp;#8221; otherwise will be interpreted as a comment (but the preamble or postscript can be another brace&amp;nbsp;expansion)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="piecespec"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-24"&gt;PieceSpec&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;The default &lt;a class="reference internal" href="#movetext"&gt;Movetext&lt;/a&gt; parser supports specifying pieces by their &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt;, &lt;a class="reference internal" href="#side"&gt;Side&lt;/a&gt;, &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;, &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt;, &lt;a class="reference internal" href="#angle"&gt;Angle&lt;/a&gt;, and (game system) &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Any attribute specifications beginning with a comma &lt;tt class="docutils literal"&gt;,&lt;/tt&gt; must go after the other attribute specifications, otherwise it does not matter which order the piece attributes are specified.  However the following ordering may improve readability (omitting any unnecessary elements as necessary):&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#side"&gt;Side&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#angle"&gt;Angle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;When necessary the default &lt;a class="reference internal" href="#movetext"&gt;Movetext&lt;/a&gt; will make &lt;a class="reference internal" href="#assumptions"&gt;Assumptions&lt;/a&gt; about unspecified&amp;nbsp;elements.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="section" id="piece-type"&gt;
&lt;span id="piece"&gt;&lt;/span&gt;&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-25"&gt;Piece&amp;nbsp;(type)&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;t&lt;/tt&gt; for&amp;nbsp;&amp;#8220;tile&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;c&lt;/tt&gt; for &amp;#8220;coin&amp;#8221; if piecepack suit and &amp;#8220;checkers2&amp;#8221; &amp;#8220;bit&amp;#8221; if colored&amp;nbsp;suit&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;d&lt;/tt&gt; for&amp;nbsp;&amp;#8220;die&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;p&lt;/tt&gt; for&amp;nbsp;&amp;#8220;pawn&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;m&lt;/tt&gt; for &amp;#8220;matchstick&amp;#8221; if piecepack suit and &amp;#8220;meeples&amp;#8221; &amp;#8220;bit&amp;#8221; if colored&amp;nbsp;suit&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;s&lt;/tt&gt; for &amp;#8220;saucer&amp;#8221; if piecepack suit and &amp;#8220;go&amp;#8221; stone &amp;#8220;bit&amp;#8221; if colored&amp;nbsp;suit&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;●&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;()&lt;/tt&gt; for&amp;nbsp;&amp;#8220;bit&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;▲&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;/\&lt;/tt&gt; for&amp;nbsp;&amp;#8220;pyramid&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;🂠&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;[]&lt;/tt&gt; for&amp;nbsp;&amp;#8220;card&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;■&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;[X]&lt;/tt&gt; for &amp;#8220;board&amp;#8221;&lt;ul&gt;
&lt;li&gt;Defaults to a &amp;#8220;checkers2&amp;#8221;&amp;nbsp;board&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;⚀&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚁&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚂&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚃&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚄&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚅&lt;/tt&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;dice&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;die&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; (from 1 to&amp;nbsp;6).&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode"&gt;Unicode chess glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;chess2&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;bit&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; (and possibly &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Playing_cards_in_Unicode"&gt;Unicode playing card glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;playing_cards_tarot&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;card&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; and possibly &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Domino_Tiles"&gt;Unicode dominoes glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to an appropriate &amp;#8220;dominoes&amp;#8221; configuration, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;tile&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; and &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;○&lt;/tt&gt; indicates a &amp;#8220;go&amp;#8221; &amp;#8220;bit&amp;#8221; defaulting to the White &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;▦&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;[#]&lt;/tt&gt; indicates a &amp;#8220;go&amp;#8221; &amp;#8220;board&amp;#8221; defaulting to the Black &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;⛂&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;⛀&lt;/tt&gt; indicate a &amp;#8220;checkers2&amp;#8221; &amp;#8220;bit&amp;#8221; face-down (men), and &lt;tt class="docutils literal"&gt;⛃&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;⛁&lt;/tt&gt; indicate a &amp;#8220;checkers2&amp;#8221; &amp;#8220;bit&amp;#8221; face-up (kings).  Without an explicit &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;, &lt;tt class="docutils literal"&gt;⛂&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;⛃&lt;/tt&gt; default to the Black suit and &lt;tt class="docutils literal"&gt;⛀&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;⛁&lt;/tt&gt; default to the White&amp;nbsp;suit.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="side-up"&gt;
&lt;span id="side"&gt;&lt;/span&gt;&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-26"&gt;Side&amp;nbsp;Up&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;f&lt;/tt&gt; for&amp;nbsp;&amp;#8220;face&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;b&lt;/tt&gt; for&amp;nbsp;&amp;#8220;back&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;l&lt;/tt&gt; for&amp;nbsp;&amp;#8220;left&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;r&lt;/tt&gt; for&amp;nbsp;&amp;#8220;right&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;x&lt;/tt&gt; for&amp;nbsp;&amp;#8220;top&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;span class="target" id="ppnconfiguration"&gt;&lt;span id="suit"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="section" id="suit-and-configuration"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-27"&gt;Suit and&amp;nbsp;Configuration&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;S&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;M&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;C&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;A&lt;/tt&gt; for &amp;#8220;Suns&amp;#8221;, &amp;#8220;Moons&amp;#8221;, &amp;#8220;Crowns&amp;#8221;, and &amp;#8220;Arms&amp;#8221; &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt; and &amp;#8220;piecepack&amp;#8221; &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;If a &lt;tt class="docutils literal"&gt;μ&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;u&lt;/tt&gt; is present will assume component comes from a (piecepack &lt;a class="reference external" href="http://ludism.org/ppwiki/StackPack"&gt;stackpack&lt;/a&gt;) &amp;#8220;subpack&amp;#8221; &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; aka &amp;#8220;mini piecepack&amp;#8221; instead of a normal sized&amp;nbsp;piecepack&lt;/li&gt;
&lt;li&gt;If a &lt;tt class="docutils literal"&gt;⬢&lt;/tt&gt; (U+2B22) is present will assume component comes from a &amp;#8220;hexpack&amp;#8221; &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; (a hexagonal&amp;nbsp;piecepack)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;♥&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;♠&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;♣&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;♦&lt;/tt&gt; for &amp;#8220;Hearts&amp;#8221;, &amp;#8220;Spades&amp;#8221;, &amp;#8220;Clubs&amp;#8221;, and &amp;#8220;Diamonds&amp;#8221; &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt; and &amp;#8220;playing_cards_expansion&amp;#8221; &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;♡&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;♤&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;♧&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;♢&lt;/tt&gt; for (inverted 4-colored) &amp;#8220;Hearts&amp;#8221;, &amp;#8220;Spades&amp;#8221;, &amp;#8220;Clubs&amp;#8221;, and &amp;#8220;Diamonds&amp;#8221; &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt; and &amp;#8220;dual_piecepacks_expansion&amp;#8221; &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;R&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;K&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;G&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;B&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;Y&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;W&lt;/tt&gt; for &amp;#8220;Red&amp;#8221;, &amp;#8220;Black&amp;#8221;, &amp;#8220;Green&amp;#8221;, &amp;#8220;Blue&amp;#8221;, &amp;#8220;Yellow&amp;#8221;, or &amp;#8220;White&amp;#8221; &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;If a &amp;#8220;bit&amp;#8221; indicated by &lt;tt class="docutils literal"&gt;●&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;○&lt;/tt&gt;, or &lt;tt class="docutils literal"&gt;s&lt;/tt&gt; or a &amp;#8220;board&amp;#8221; indicated by &lt;tt class="docutils literal"&gt;▦&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;[#]&lt;/tt&gt; then&amp;nbsp;&amp;#8220;go&amp;#8221;&lt;/li&gt;
&lt;li&gt;If a &amp;#8220;bit&amp;#8221; indicated by &lt;tt class="docutils literal"&gt;c&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⛂&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⛀&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⛃&lt;/tt&gt;, or &lt;tt class="docutils literal"&gt;⛁&lt;/tt&gt; or a &amp;#8220;board&amp;#8221; indicated by &lt;tt class="docutils literal"&gt;■&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;[X]&lt;/tt&gt; then&amp;nbsp;&amp;#8220;checkers2&amp;#8221;&lt;/li&gt;
&lt;li&gt;If a dominoes &amp;#8220;tile&amp;#8221; &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; then an appropriate colored dominoes &lt;a class="footnote-reference" href="#color-dominoes" id="footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;If a &amp;#8220;pyramid&amp;#8221; &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; then an &amp;#8220;icehouse_pieces&amp;#8221; &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; (invented by Andy Looney aka Looney Labs&amp;#8217; &lt;a class="reference external" href="https://www.looneylabs.com/looney-pyramids"&gt;&amp;#8220;Looney pyramids&amp;#8221;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;If a &lt;tt class="docutils literal"&gt;μ&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;u&lt;/tt&gt; is present will assume component comes from a smaller sized set:&lt;ul&gt;
&lt;li&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;checkers1&amp;#8221; instead of a &amp;#8220;checkers2&amp;#8221;&amp;nbsp;set&lt;/li&gt;
&lt;li&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;chess1&amp;#8221; instead of a &amp;#8220;chess2&amp;#8221;&amp;nbsp;set&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;,sN&lt;/tt&gt; manually sets the internal &amp;#8220;suit&amp;#8221; to the positive integer &lt;tt class="docutils literal"&gt;N&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;,C'&lt;/tt&gt; manually sets the internal &amp;#8220;configuration&amp;#8221; to the string &lt;tt class="docutils literal"&gt;C&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;⚀&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚁&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚂&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚃&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚄&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚅&lt;/tt&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;dice&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;die&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; (from 1 to&amp;nbsp;6).&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode"&gt;Unicode chess glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;chess2&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;bit&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; (and possibly &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Playing_cards_in_Unicode"&gt;Unicode playing card glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;playing_cards_tarot&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;card&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; and possibly &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Domino_Tiles"&gt;Unicode dominoes glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to an appropriate &amp;#8220;dominoes&amp;#8221; configuration, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;tile&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; and &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;○&lt;/tt&gt; indicates a &amp;#8220;go&amp;#8221; &amp;#8220;bit&amp;#8221; defaulting to the White &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt; (equivalent to &lt;tt class="docutils literal"&gt;W●&lt;/tt&gt;).&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;▦&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;[#]&lt;/tt&gt; indicates a &amp;#8220;go&amp;#8221; &amp;#8220;board&amp;#8221; defaulting to&amp;nbsp;Black&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;⛂&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;⛀&lt;/tt&gt; indicate a &amp;#8220;checkers2&amp;#8221; &amp;#8220;bit&amp;#8221; (men), and &lt;tt class="docutils literal"&gt;⛃&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;⛁&lt;/tt&gt; indicate a &amp;#8220;checkers2&amp;#8221; &amp;#8220;bit&amp;#8221; face-up (kings).  Without an explicit &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;, &lt;tt class="docutils literal"&gt;⛂&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;⛃&lt;/tt&gt; default to the Black suit and &lt;tt class="docutils literal"&gt;⛀&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;⛁&lt;/tt&gt; default to the White&amp;nbsp;suit.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="rank"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-28"&gt;Rank&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;0&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;n&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;1&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;a&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;2&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;3&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;4&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;5&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;6&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;7&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;8&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;9&lt;/tt&gt;&lt;ul&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;0&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;1&lt;/tt&gt; are aliases for the &amp;#8220;null&amp;#8221; &lt;tt class="docutils literal"&gt;n&lt;/tt&gt; and the &amp;#8220;ace&amp;#8221; &lt;tt class="docutils literal"&gt;a&lt;/tt&gt; especially useful with brace expansions e.g. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;{5..0}&amp;#64;b5&lt;/span&gt; {Place six coins face up at b5 with a null on top and 5 on bottom}&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;6&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;7&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;8&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;9&lt;/tt&gt; don&amp;#8217;t exist in a standard piecepack but could exist in piecepack expansions or in components from other game&amp;nbsp;systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;By default the rank in most game systems are indexed starting with zero, the following game systems are indexed starting with one:&lt;ul&gt;
&lt;li&gt;Icehouse pieces go from 1-pip to 3-pip pieces indicated by &lt;tt class="docutils literal"&gt;1&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;2&lt;/tt&gt;, and &lt;tt class="docutils literal"&gt;3&lt;/tt&gt; respectively.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;,rN&lt;/tt&gt; manually sets the internal &amp;#8220;rank&amp;#8221; to the integer &lt;tt class="docutils literal"&gt;N&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;⚀&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚁&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚂&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚃&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚄&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;⚅&lt;/tt&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;dice&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;die&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; (from 1 to&amp;nbsp;6).&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode"&gt;Unicode chess glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;chess2&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;bit&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; (and possibly &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Playing_cards_in_Unicode"&gt;Unicode playing card glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to &amp;#8220;playing_cards_tarot&amp;#8221;, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;card&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; and &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Domino_Tiles"&gt;Unicode dominoes glyphs&lt;/a&gt; sets the &lt;a class="reference internal" href="#ppnconfiguration"&gt;Configuration&lt;/a&gt; to an appropriate &amp;#8220;dominoes&amp;#8221; configuration, &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt; to &amp;#8220;tile&amp;#8221;, and sets the appropriate &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; and &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="angle"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-29"&gt;Angle&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;^&lt;/tt&gt; is 0 degree rotation aka oriented&amp;nbsp;&amp;#8220;up&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&amp;lt;&lt;/tt&gt; is a 90 degree rotation aka oriented&amp;nbsp;&amp;#8220;left&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;v&lt;/tt&gt; is a 180 degree rotation aka oriented&amp;nbsp;&amp;#8220;down&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&amp;gt;&lt;/tt&gt; is a 270 degree rotation aka oriented&amp;nbsp;&amp;#8220;right&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;,aN&lt;/tt&gt; manually sets an &lt;tt class="docutils literal"&gt;N&lt;/tt&gt; (numeric double) degree&amp;nbsp;rotation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="assumptions"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-30"&gt;Assumptions&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;If missing &lt;a class="reference internal" href="#piece"&gt;Piece&lt;/a&gt;:&lt;ul&gt;
&lt;li&gt;If &lt;a class="reference internal" href="#side"&gt;Side&lt;/a&gt; is &lt;tt class="docutils literal"&gt;l&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;r&lt;/tt&gt;, or &lt;tt class="docutils literal"&gt;x&lt;/tt&gt; then assumed to be a&amp;nbsp;&amp;#8220;pyramid&amp;#8221;&lt;/li&gt;
&lt;li&gt;Otherwise if a colored suit then assumed to be a&amp;nbsp;&amp;#8220;bit&amp;#8221;&lt;/li&gt;
&lt;li&gt;Otherwise if &lt;strong&gt;both&lt;/strong&gt; &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt; and &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; are missing or &lt;strong&gt;neither&lt;/strong&gt; &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt; and &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; are missing assumed to be a&amp;nbsp;&amp;#8220;tile&amp;#8221;&lt;/li&gt;
&lt;li&gt;Finally assumed to be a&amp;nbsp;&amp;#8220;coin&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If missing &lt;a class="reference internal" href="#side"&gt;Side&lt;/a&gt;:&lt;ul&gt;
&lt;li&gt;Pyramids are assumed to be &amp;#8220;top&amp;#8221;&amp;nbsp;up.&lt;/li&gt;
&lt;li&gt;Tiles and cards are assumed to be &amp;#8220;back&amp;#8221; up if missing suit and/or rank (else&amp;nbsp;&amp;#8220;face&amp;#8221;).&lt;/li&gt;
&lt;li&gt;Coins and saucers are assumed to be &amp;#8220;face&amp;#8221; up if missing suit (else&amp;nbsp;&amp;#8220;back&amp;#8221;).&lt;/li&gt;
&lt;li&gt;Bits are assumed to be &amp;#8220;back&amp;#8221; up unless a &amp;#8220;chess2&amp;#8221; or &amp;#8220;chess1&amp;#8221;&amp;nbsp;piece&lt;/li&gt;
&lt;li&gt;Else assumed to be &amp;#8220;face&amp;#8221;&amp;nbsp;up.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If missing &lt;a class="reference internal" href="#suit"&gt;Suit&lt;/a&gt;:&lt;ul&gt;
&lt;li&gt;Assumed to be &amp;#8220;Suns&amp;#8221; for &amp;#8220;piecepack&amp;#8221;, &amp;#8220;hexpack&amp;#8221;, and &amp;#8220;subpack&amp;#8221;&amp;nbsp;pieces&lt;/li&gt;
&lt;li&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Hearts&amp;#8221; for &amp;#8220;playing_cards_expansion&amp;#8221; and &amp;#8220;dual_piecepacks_expansion&amp;#8221;&amp;nbsp;pieces&lt;/li&gt;
&lt;li&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;White&amp;#8221; for &amp;#8220;dice&amp;#8221;&amp;nbsp;pieces&lt;/li&gt;
&lt;li&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Red&amp;#8221; for &amp;#8220;icehouse_pieces&amp;#8221;&amp;nbsp;pieces&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If missing &lt;a class="reference internal" href="#rank"&gt;Rank&lt;/a&gt; assumed to be &amp;#8220;null&amp;#8221; for piecepack pieces &lt;a class="footnote-reference" href="#pawn" id="footnote-reference-3"&gt;[3]&lt;/a&gt; while &amp;#8220;icehouse_pieces&amp;#8221; and &amp;#8220;dice&amp;#8221; are assumed to be&amp;nbsp;1-pip.&lt;/li&gt;
&lt;li&gt;If missing &lt;a class="reference internal" href="#angle"&gt;Angle&lt;/a&gt; should be assumed to be oriented straight &amp;#8220;up&amp;#8221; (i.e. 0&amp;nbsp;degrees)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="examples-1"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-31"&gt;Examples&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;t&lt;/tt&gt; tile&amp;nbsp;back&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;Aa&amp;gt;&lt;/tt&gt; ace of Arms tile (face) oriented&amp;nbsp;&amp;#8220;right&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;μAa&amp;gt;&lt;/tt&gt; &amp;#8220;subpack&amp;#8221; ace of Arms tile (face) oriented&amp;nbsp;&amp;#8220;right&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;C&lt;/tt&gt; Crowns coin back (oriented&amp;nbsp;&amp;#8220;up&amp;#8221;)&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;cC3b^&lt;/tt&gt; (3 of) Crowns coin back (explicitly) oriented&amp;nbsp;&amp;#8220;up&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;nv&lt;/tt&gt; null coin face oriented&amp;nbsp;&amp;#8220;down&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&amp;lt;dM4&lt;/tt&gt; 4 of Moons die oriented&amp;nbsp;&amp;#8220;left&amp;#8221;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;d&lt;/tt&gt; (null of Suns)&amp;nbsp;dice&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;pM&lt;/tt&gt; Moons&amp;nbsp;pawn&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;p♥&lt;/tt&gt; Hearts&amp;nbsp;pawn&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;p&lt;/tt&gt; (Suns)&amp;nbsp;pawn&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;K3▲&lt;/tt&gt; 3-pipped black icehouse pyramid&amp;nbsp;top&lt;/li&gt;
&lt;/ul&gt;
&lt;table class="docutils footnote" frame="void" id="color-dominoes" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-2"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;#8220;dominoes_black&amp;#8221;, &amp;#8220;dominoes_blue&amp;#8221;, &amp;#8220;dominoes_green&amp;#8221;, &amp;#8220;dominoes_red&amp;#8221;, &amp;#8220;dominoes_white&amp;#8221;, and &amp;#8220;dominoes_yellow&amp;#8221;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="pawn" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-3"&gt;[3]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Internally even piecepack pawns and saucers are assigned a rank even though they normally don&amp;#8217;t have a rank.  Dice are assigned the rank of the face oriented upwards even though technically the dice themselves actually have six ranks.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="location"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-32"&gt;Location&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;The default Movetext parser supports locations by Cartesian coordinates, chess-algebraic-style coordinates, or by preceding a &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; with an &lt;tt class="docutils literal"&gt;&amp;amp;&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;(2.5,3.5)&lt;/li&gt;
&lt;li&gt;(3,2)&lt;/li&gt;
&lt;li&gt;c2&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="section" id="cartesian-coordinates"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-33"&gt;Cartesian&amp;nbsp;coordinates&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Cartesian coordinates are a left parenthesis followed by a digits (including up to one period) followed by a comma followed by digits (including up to one period) ending in a right parenthesis.&lt;ul&gt;
&lt;li&gt;The digits will be considered to be a &amp;#8220;floating-point&amp;#8221;&amp;nbsp;number.&lt;/li&gt;
&lt;li&gt;The number left of the comma will be the x-coordinate and the number right of the comma the&amp;nbsp;y-coordinate.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="chess-algebraic-style-coordinates"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-34"&gt;Chess-algebraic-style&amp;nbsp;coordinates&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Chess-algebraic-style coordinates begin with lowercase letters followed by&amp;nbsp;digits.&lt;/li&gt;
&lt;li&gt;The lowercase letters are considered to be the x-coordinate encoded as a base-26 number using the Roman letters as numerals.&lt;ul&gt;
&lt;li&gt;For the purposes of this there is no &amp;#8220;zero&amp;#8221;.  &lt;tt class="docutils literal"&gt;a&lt;/tt&gt; is considered equal to 1, &lt;tt class="docutils literal"&gt;z&lt;/tt&gt; is considered equal to 26, and &lt;tt class="docutils literal"&gt;aa&lt;/tt&gt; is considered equal to&amp;nbsp;27.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The digits are considered to the y-coordinate encoded as a (base-10)&amp;nbsp;integer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="relative-coordinates"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-35"&gt;Relative&amp;nbsp;coordinates&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Relative coordinates has three forms:&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;Offset&lt;/tt&gt; are coordinates relative to the pieces being&amp;nbsp;moved&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;Offset|Location&lt;/tt&gt; are coordinates relative to &lt;tt class="docutils literal"&gt;Location&lt;/tt&gt; (which itself could be expressed in relative&amp;nbsp;coordinates)&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;Offset$PieceId&lt;/tt&gt; are coordinates relative to the &lt;tt class="docutils literal"&gt;Location&lt;/tt&gt; of &lt;tt class="docutils literal"&gt;PieceId&lt;/tt&gt; (it is a shortcut for &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;Offset|&amp;amp;PieceId&lt;/span&gt;&lt;/tt&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;Offset&lt;/tt&gt; can be specified in two ways:&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&amp;lt;X,Y&amp;gt;&lt;/tt&gt; where &lt;tt class="docutils literal"&gt;X&lt;/tt&gt; is the x-coordinate relative offset and &lt;tt class="docutils literal"&gt;Y&lt;/tt&gt; is the y-coordinate relative offset
e.g. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?pS-&amp;lt;4,-2&amp;gt;&lt;/span&gt; {move the suns pawn four to the right and two down from its current position}&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?pS-&amp;lt;-2,3&amp;gt;$?pA&lt;/span&gt; {move the suns pawn two to the left and three up relative to the arms pawn}&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;N Direction&lt;/tt&gt; is a &lt;tt class="docutils literal"&gt;N&lt;/tt&gt; distance relative offset in the &lt;tt class="docutils literal"&gt;Direction&lt;/tt&gt; direction&lt;ul&gt;
&lt;li&gt;The directions are U, R, D, L or alternatively N, E, S, W and represent &amp;#8220;Up&amp;#8221;, &amp;#8220;Right&amp;#8221;, &amp;#8220;Down&amp;#8221; and &amp;#8220;Left&amp;#8221; orthogonal moves
i.e. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?pS-3R&lt;/span&gt; {move the suns pawn three to the right}&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;The &amp;#8220;intercardinal&amp;#8221; directions (i.e. &lt;span class="caps"&gt;NE&lt;/span&gt;, &lt;span class="caps"&gt;SE&lt;/span&gt;, &lt;span class="caps"&gt;SW&lt;/span&gt;, &lt;span class="caps"&gt;NW&lt;/span&gt; as well as &lt;span class="caps"&gt;UR&lt;/span&gt;, &lt;span class="caps"&gt;DR&lt;/span&gt;, &lt;span class="caps"&gt;DL&lt;/span&gt;, &lt;span class="caps"&gt;UL&lt;/span&gt;) represent diagonal moves on a rectangular board
i.e. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?pS-&lt;span class="caps"&gt;3NE&lt;/span&gt;&lt;/span&gt; {move the suns pawn three to the right and three up}&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;The &amp;#8220;half-wind&amp;#8221; directions (i.e. &lt;span class="caps"&gt;NNE&lt;/span&gt;, &lt;span class="caps"&gt;NEN&lt;/span&gt;, &lt;span class="caps"&gt;ESE&lt;/span&gt;, &lt;span class="caps"&gt;SSE&lt;/span&gt;, &lt;span class="caps"&gt;SSW&lt;/span&gt;, &lt;span class="caps"&gt;WSW&lt;/span&gt;, &lt;span class="caps"&gt;WNW&lt;/span&gt;, &lt;span class="caps"&gt;NNW&lt;/span&gt; as well as U,R,D,L equivalents) represent diagonal moves on a hexagonal board
i.e. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?pS-&lt;span class="caps"&gt;3NNE&lt;/span&gt;&lt;/span&gt; {move the suns pawn three in a hexagonal diagonal direction up and right}&lt;/tt&gt;.&lt;ul&gt;
&lt;li&gt;Use &lt;span class="caps"&gt;NNE&lt;/span&gt;, &lt;span class="caps"&gt;SSE&lt;/span&gt;, &lt;span class="caps"&gt;SSW&lt;/span&gt;, &lt;span class="caps"&gt;NNW&lt;/span&gt; directions on hexagonal boards that allow horizontal moves and &lt;span class="caps"&gt;ENE&lt;/span&gt;, &lt;span class="caps"&gt;ESE&lt;/span&gt;, &lt;span class="caps"&gt;WSW&lt;/span&gt;, &lt;span class="caps"&gt;WNW&lt;/span&gt; directions on hexagonal boards that allow vertical&amp;nbsp;moves.&lt;/li&gt;
&lt;li&gt;Note that real-life &amp;#8220;half-wind&amp;#8221; directions are multiples of 22.5 degrees while the &amp;#8220;half-wind&amp;#8221; directions in &lt;span class="caps"&gt;PPN&lt;/span&gt; are instead rounded to multiples of 30 degrees (to correspond to hex board movement&amp;nbsp;angles).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="get-location-from-pieceid"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-36"&gt;Get location from&amp;nbsp;PieceId&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;A &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; string preceded by a &lt;tt class="docutils literal"&gt;&amp;amp;&lt;/tt&gt; indicates the x,y coordinates of that piece.&lt;ul&gt;
&lt;li&gt;The &lt;tt class="docutils literal"&gt;&amp;amp;&lt;/tt&gt; is optional in front of a &lt;tt class="docutils literal"&gt;?&lt;/tt&gt; e.g. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;3?A4-2R&lt;/span&gt;&lt;/tt&gt; is a shortcut for &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;3&amp;amp;?A4-2R&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;For the &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; form &lt;tt class="docutils literal"&gt;N Location&lt;/tt&gt; it returns the x,y coordinates of that &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Otherwise if &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; identifies several pieces (e.g. &amp;#8220;greedy&amp;#8221; search) then it returns
the x,y, coordinates of the &amp;#8220;last&amp;#8221; piece (according to internal ordering of&amp;nbsp;pieces).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;An empty &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; string is a shortcut for just &lt;tt class="docutils literal"&gt;&amp;amp;&lt;/tt&gt; i.e. the location of the &amp;#8220;last active&amp;#8221;&amp;nbsp;piece(s).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="pieceid"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-37"&gt;PieceId&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; is used to identify specific pieces on the board.  Currently &lt;span class="caps"&gt;PPN&lt;/span&gt; supports the following types of &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;A &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; is used to identify the top piece at that &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;N Location&lt;/tt&gt; is used to identify the top &lt;tt class="docutils literal"&gt;N&lt;/tt&gt; pieces at that &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;An example would be &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;2b4-b3*2a2&lt;/span&gt; {Move top two pieces at b4 to b3 and remove top two pieces at a2}&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;If there are less than &lt;tt class="docutils literal"&gt;N&lt;/tt&gt; pieces at that exact &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; it will identify the &lt;tt class="docutils literal"&gt;N&lt;/tt&gt; nearest pieces to the &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; (according to 2D Euclidean&amp;nbsp;distance)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;Location[Slice]&lt;/tt&gt; is used to identify a &amp;#8220;slice&amp;#8221; of pieces at that &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;Pieces at a location are indexed starting with 1 with pieces &amp;#8220;later&amp;#8221; in the internal ordering (i.e. &amp;#8220;above&amp;#8221;) having a lower&amp;nbsp;index&lt;/li&gt;
&lt;li&gt;An example would be &lt;tt class="docutils literal"&gt;b4[1]_%b3[2] {Move the top piece at b4 directly under the secord piece at b3}&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Another example would be &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;b4[3:6]-b3&lt;/span&gt; {Move the third, fourth, fifth, and sixth pieces (from the top) at b4 to b3}&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Another example would be &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;*(2,4)[1,3,5]&lt;/span&gt; {Remove the first, third, and fifth pieces (from the top) located at (2,4)}&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?PieceSpec&lt;/span&gt;&lt;/tt&gt; is used to identify a single piece with a &amp;#8220;non-greedy&amp;#8221; search based on their &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;First, the &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; is parsed and only the explicitly listed features are searched against.
If there is a unique match it is identified e.g. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?dS&lt;/span&gt;&lt;/tt&gt; identifies the &amp;#8220;Suns&amp;#8221; dice in a game with a single&amp;nbsp;piecepack.&lt;/li&gt;
&lt;li&gt;Second, if no match the &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; is parsed and all assumptions listed in &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; are made including angle,
if there are any matches the one last in the internal play order is&amp;nbsp;returned.&lt;/li&gt;
&lt;li&gt;Third, if no match the &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; is parsed and all assumptions listed in &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; are made &lt;em&gt;except&lt;/em&gt; angle,
if there are any matches the one last in the internal play order is
returned e.g. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?S5&lt;/span&gt;&lt;/tt&gt; identifies the &amp;#8220;5 of Suns&amp;#8221; tile in a game with a single&amp;nbsp;piecepack.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;/PieceSpec&lt;/tt&gt; is used to identify piece(s) with a &amp;#8220;greedy&amp;#8221; search based on their &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;The &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; is parsed and only the explicitly listed features are searched against e.g. &lt;tt class="docutils literal"&gt;/M&lt;/tt&gt; identifies all the &amp;#8220;Moons&amp;#8221; pieces, &lt;tt class="docutils literal"&gt;/cf&lt;/tt&gt; identifies all the coins face up,&amp;nbsp;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; preceded by a &lt;tt class="docutils literal"&gt;^&lt;/tt&gt; identifies the piece from the game state at the beginning of the move&lt;ul&gt;
&lt;li&gt;An example would be &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;a1-a2&lt;/span&gt; &lt;span class="pre"&gt;a2-a3&lt;/span&gt; {equivalent to &lt;span class="pre"&gt;a1-a3}&lt;/span&gt;&lt;/tt&gt; versus &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;a1-a2&lt;/span&gt; &lt;span class="pre"&gt;^a2-a3&lt;/span&gt; {equivalent to &lt;span class="pre"&gt;a2-a3&lt;/span&gt; &lt;span class="pre"&gt;a1-a2}&lt;/span&gt;&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;An empty &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; corresponds to the last &amp;#8220;active&amp;#8221; piece(s).&lt;ul&gt;
&lt;li&gt;An example would be &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?Sp-a4;-a5;*&lt;/span&gt; {equivalent to &lt;span class="pre"&gt;?Sp-a4&lt;/span&gt; . &lt;span class="pre"&gt;?Sp-a5&lt;/span&gt; . &lt;span class="pre"&gt;*?Sp}&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Note if this refers to multiple pieces then the &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; of these pieces
is then that of the &amp;#8220;active&amp;#8221; piece last in the internal ordering of pieces.
However if these pieces were originally specified by the &lt;tt class="docutils literal"&gt;N Location&lt;/tt&gt; &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt;
formulation then the &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; originally corresponded to &lt;tt class="docutils literal"&gt;Location&lt;/tt&gt; but now does&amp;nbsp;not.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="movetoken"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-38"&gt;MoveToken&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The default movetext parser supports the following&amp;nbsp;MoveTokens:&lt;/p&gt;
&lt;div class="section" id="adding-new-pieces"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-39"&gt;Adding new&amp;nbsp;pieces&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&amp;#64;&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;\&lt;/tt&gt; are used to &amp;#8220;drop&amp;#8221; new pieces onto the board.&lt;ul&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;PieceSpec&amp;#64;Location&lt;/tt&gt; means drop &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; on top of &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, it will be placed after all other pieces in the internal&amp;nbsp;ordering.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;PieceSpec\Location&lt;/tt&gt; means drop &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; at &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, it will be placed before all the other pieces in the internal ordering (i.e. the&amp;nbsp;bottom).&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;PieceSpec&amp;#64;Location%PieceId&lt;/tt&gt; means drop &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; on top of &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, it will be placed after &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; in the internal&amp;nbsp;ordering.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;PieceSpec\Location%PieceId&lt;/tt&gt; means drop &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; at &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, it will be placed before &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; in the internal&amp;nbsp;ordering.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceSpec&amp;#64;%PieceId&lt;/span&gt;&lt;/tt&gt; is a shortcut for &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceSpec&amp;#64;&amp;amp;PieceId%PieceId&lt;/span&gt;&lt;/tt&gt; i.e. drop &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; directly above &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceSpec\%PieceId&lt;/span&gt;&lt;/tt&gt; is a shortcut for &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceSpec\&amp;amp;PieceId%PieceId&lt;/span&gt;&lt;/tt&gt; i.e. drop &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; directly under &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="removing-pieces"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-40"&gt;Removing&amp;nbsp;pieces&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;*&lt;/tt&gt; is used to remove pieces from the board.  &lt;tt class="docutils literal"&gt;*PieceId&lt;/tt&gt; means remove the piece(s) identified by &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt;.&lt;ul&gt;
&lt;li&gt;Unlike most other MoveTokens it can be added at the end of other Moves e.g. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;b5-c5*b4*b3&lt;/span&gt; {Move top piece at b5 to c5 and remove top pieces at b4 and b3}&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="moving-pieces"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-41"&gt;Moving&amp;nbsp;pieces&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;-&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;_&lt;/tt&gt; (or &lt;tt class="docutils literal"&gt;‿&lt;/tt&gt;)  used to move existing pieces elsewhere on the board.&lt;ul&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId-Location&lt;/span&gt;&lt;/tt&gt; means moving the piece(s) identified by &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; to &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, it will be placed after all the other pieces in the internal&amp;nbsp;ordering.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;PieceId_Location&lt;/tt&gt; means moving the piece(s) identified by &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; to &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, it will be placed before all the other pieces in the internal&amp;nbsp;ordering.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId1-Location%PieceId2&lt;/span&gt;&lt;/tt&gt; means moving the piece(s) identified by &lt;tt class="docutils literal"&gt;PieceId1&lt;/tt&gt; to &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, it will be placed after the piece identified by &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt; in the internal&amp;nbsp;ordering.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;PieceId1_Location%PieceId2&lt;/tt&gt; means moving the piece(s) identified by &lt;tt class="docutils literal"&gt;PieceId1&lt;/tt&gt; to &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;, it will be placed before the piece identified by &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt; in the internal&amp;nbsp;ordering.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId-%PieceId2&lt;/span&gt;&lt;/tt&gt; is a shortcut for &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId1-&amp;amp;PieceId2%PieceId2&lt;/span&gt;&lt;/tt&gt; i.e. move &lt;tt class="docutils literal"&gt;PieceId1&lt;/tt&gt; directly above &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;PieceId_%PieceId2&lt;/tt&gt; is a shortcut for &lt;tt class="docutils literal"&gt;PieceId1_&amp;amp;PieceId2%PieceId2&lt;/tt&gt; i.e. move &lt;tt class="docutils literal"&gt;PieceId1&lt;/tt&gt; directly underneath &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;‿&lt;/tt&gt; (U+203F) can be used instead of &lt;tt class="docutils literal"&gt;_&lt;/tt&gt;.  &lt;tt class="docutils literal"&gt;_&lt;/tt&gt; is easier to type and found in more fonts but &lt;tt class="docutils literal"&gt;‿&lt;/tt&gt; is harder to confuse with &lt;tt class="docutils literal"&gt;-&lt;/tt&gt; (especially in handwritten&amp;nbsp;notes).&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;!PieceId&lt;/tt&gt; is a shortcut for &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId-&amp;lt;0,0&amp;gt;&lt;/span&gt;&lt;/tt&gt; i.e. move the piece(s) identified by &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; to the end of the internal ordering without changing its x,y&amp;nbsp;coordinates.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;#&lt;/tt&gt; is used to represent a &amp;#8220;piece swap&amp;#8221;.  Let &lt;tt class="docutils literal"&gt;Location1&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;Location2&lt;/tt&gt; represent the &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; of &lt;tt class="docutils literal"&gt;PieceId1&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt; respectively, then &lt;tt class="docutils literal"&gt;PieceId1#PieceId2&lt;/tt&gt; is equivalent to &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;^PieceId1-Location2&lt;/span&gt; &lt;span class="pre"&gt;^PieceId2-Location1&lt;/span&gt;&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;:&lt;/tt&gt; is used to represent a &amp;#8220;displacement capture&amp;#8221;.  &lt;tt class="docutils literal"&gt;PieceId1:PieceId2&lt;/tt&gt; means find the &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; of the piece(s) identified by &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt;, remove the &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt; piece(s), and move the &lt;tt class="docutils literal"&gt;PieceId1&lt;/tt&gt; piece(s) to that &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;.&lt;ul&gt;
&lt;li&gt;The &lt;tt class="docutils literal"&gt;PieceId1&lt;/tt&gt; piece(s) that are moved will be placed after all the other pieces in the internal&amp;nbsp;ordering.&lt;/li&gt;
&lt;li&gt;Let &lt;tt class="docutils literal"&gt;Location&lt;/tt&gt; be the location of the piece(s) represented by &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt;, then &lt;tt class="docutils literal"&gt;PieceId1:PieceId2&lt;/tt&gt; is equivalent to &lt;tt class="docutils literal"&gt;*PieceId2 &lt;span class="pre"&gt;PieceId1-Location&lt;/span&gt;&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&amp;#64;&amp;gt;&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;$&amp;gt;&lt;/tt&gt; are used to rotate pieces clockwise.&lt;ul&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId&amp;#64;&amp;gt;Degrees&lt;/span&gt;&lt;/tt&gt; rotates each of the piece(s) represented by &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; clockwise &lt;tt class="docutils literal"&gt;Degrees&lt;/tt&gt; degrees.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId&amp;#64;&amp;gt;Degrees|Location&lt;/span&gt;&lt;/tt&gt; rotates each of the piece(s) represented by &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; clockwise &lt;tt class="docutils literal"&gt;Degrees&lt;/tt&gt; degrees around &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId1&amp;#64;&amp;gt;Degrees$PieceId2&lt;/span&gt;&lt;/tt&gt; is a shortcut for &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId1&amp;#64;&amp;gt;Degrees|&amp;amp;PieceId2&lt;/span&gt;&lt;/tt&gt; i.e. rotate each of the piece(s) represented by &lt;tt class="docutils literal"&gt;PieceId1&lt;/tt&gt; clockwise &lt;tt class="docutils literal"&gt;Degrees&lt;/tt&gt; degrees around the &lt;a class="reference internal" href="#location"&gt;Location&lt;/a&gt; of &lt;tt class="docutils literal"&gt;PieceId2&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId$&amp;gt;Degrees&lt;/span&gt;&lt;/tt&gt; is a shortcut for &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;PieceId&amp;#64;&amp;gt;Degrees$PieceId&lt;/span&gt;&lt;/tt&gt; e.g. depending on the context &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;3?Sa$&amp;gt;90&lt;/span&gt;&lt;/tt&gt; could mean spin the Suns of arms tile 90 degrees including the two pieces on top of&amp;nbsp;it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;+&lt;/tt&gt; is used to &amp;#8220;flip&amp;#8221; pieces.  &lt;tt class="docutils literal"&gt;+PieceId&lt;/tt&gt; means &amp;#8220;flip&amp;#8221; the piece(s) identified by &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt;.&lt;ul&gt;
&lt;li&gt;A &amp;#8220;pyramid_top&amp;#8221; flips to &amp;#8220;pyramid_face&amp;#8221; while other pyramid sides flip to&amp;nbsp;&amp;#8220;pyramid_top&amp;#8221;.&lt;/li&gt;
&lt;li&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;die_face&amp;#8221; flips to &amp;#8220;die_face&amp;#8221; but with a new rank plus three modulo&amp;nbsp;six.&lt;/li&gt;
&lt;li&gt;All other pieces flip back and forth from &amp;#8220;back&amp;#8221; to &amp;#8220;face&amp;#8221;, &amp;#8220;top&amp;#8221; to &amp;#8220;base&amp;#8221;, and &amp;#8220;left&amp;#8221; to&amp;nbsp;&amp;#8220;right&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Unlike most other MoveTokens it can be added at the end of other&amp;nbsp;Moves.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="updating-replacing-pieces"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-42"&gt;Updating/replacing&amp;nbsp;pieces&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;=&lt;/tt&gt; is used &amp;#8220;replace&amp;#8221; pieces on the board with new pieces.  &lt;tt class="docutils literal"&gt;PieceId=PieceSpec&lt;/tt&gt; means replace the piece identified &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; to &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; (with all assumptions) e.g. &lt;tt class="docutils literal"&gt;b5=S&amp;gt; {replace top piece at b5 with Suns coin back oriented right}&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;~&lt;/tt&gt; is used &amp;#8220;update&amp;#8221; pieces on the board with new characteristics.  &lt;tt class="docutils literal"&gt;PieceId~PieceSpec&lt;/tt&gt; means update the piece identified &lt;a class="reference internal" href="#pieceid"&gt;PieceId&lt;/a&gt; according to only the explicitly listed elements in &lt;a class="reference internal" href="#piecespec"&gt;PieceSpec&lt;/a&gt; e.g. &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;?dS~3&lt;/span&gt;&lt;/tt&gt; means have the &amp;#8220;Suns&amp;#8221; die now show the 3 rank on top without updating&amp;nbsp;orientation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="appendix"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-43"&gt;Appendix&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="default-macros"&gt;
&lt;span id="builtin-macros"&gt;&lt;/span&gt;&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-44"&gt;Default&amp;nbsp;Macros&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;a class="reference internal" href="#default-movetext-parser"&gt;default movetext parser&lt;/a&gt; has the following built-in macros (these can be over-ridden by the &lt;a class="reference internal" href="#setup"&gt;Setup&lt;/a&gt; function or by the user in the &lt;a class="reference internal" href="#metadata"&gt;Metadata&lt;/a&gt;):&lt;/p&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Default parser&amp;#8217;s built-in macros&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;col width="33%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;macro&lt;/th&gt;
&lt;th class="head"&gt;replacement&lt;/th&gt;
&lt;th class="head"&gt;hexadecimal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;♥&lt;/td&gt;
&lt;td&gt;U+2665&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S&lt;/td&gt;
&lt;td&gt;♠&lt;/td&gt;
&lt;td&gt;U+2660&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;♣&lt;/td&gt;
&lt;td&gt;U+2663&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;♦&lt;/td&gt;
&lt;td&gt;U+2666&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;WH&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;♤&lt;/td&gt;
&lt;td&gt;U+2664&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;WS&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;♡&lt;/td&gt;
&lt;td&gt;U+2661&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;WD&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;♢&lt;/td&gt;
&lt;td&gt;U+2662&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;WC&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;♧&lt;/td&gt;
&lt;td&gt;U+2667&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;RJ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂿&lt;/td&gt;
&lt;td&gt;U+1f0bf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;BJ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃏&lt;/td&gt;
&lt;td&gt;U+1f0cf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;WJ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃟&lt;/td&gt;
&lt;td&gt;U+1f0df&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;TF&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃠&lt;/td&gt;
&lt;td&gt;U+1f0e0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;p&lt;/td&gt;
&lt;td&gt;♟&lt;/td&gt;
&lt;td&gt;U+265f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;n&lt;/td&gt;
&lt;td&gt;♞&lt;/td&gt;
&lt;td&gt;U+265e&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;b&lt;/td&gt;
&lt;td&gt;♝&lt;/td&gt;
&lt;td&gt;U+265d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;r&lt;/td&gt;
&lt;td&gt;♜&lt;/td&gt;
&lt;td&gt;U+265c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;q&lt;/td&gt;
&lt;td&gt;♛&lt;/td&gt;
&lt;td&gt;U+265b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;k&lt;/td&gt;
&lt;td&gt;♚&lt;/td&gt;
&lt;td&gt;U+265a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;P&lt;/td&gt;
&lt;td&gt;♙&lt;/td&gt;
&lt;td&gt;U+2659&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;♘&lt;/td&gt;
&lt;td&gt;U+2658&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;♗&lt;/td&gt;
&lt;td&gt;U+2657&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;♖&lt;/td&gt;
&lt;td&gt;U+2656&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Q&lt;/td&gt;
&lt;td&gt;♕&lt;/td&gt;
&lt;td&gt;U+2655&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;♔&lt;/td&gt;
&lt;td&gt;U+2654&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;SA&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂡&lt;/td&gt;
&lt;td&gt;U+1f0a1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S2&lt;/td&gt;
&lt;td&gt;🂢&lt;/td&gt;
&lt;td&gt;U+1f0a2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S3&lt;/td&gt;
&lt;td&gt;🂣&lt;/td&gt;
&lt;td&gt;U+1f0a3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S4&lt;/td&gt;
&lt;td&gt;🂤&lt;/td&gt;
&lt;td&gt;U+1f0a4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S5&lt;/td&gt;
&lt;td&gt;🂥&lt;/td&gt;
&lt;td&gt;U+1f0a5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S6&lt;/td&gt;
&lt;td&gt;🂦&lt;/td&gt;
&lt;td&gt;U+1f0a6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S7&lt;/td&gt;
&lt;td&gt;🂧&lt;/td&gt;
&lt;td&gt;U+1f0a7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S8&lt;/td&gt;
&lt;td&gt;🂨&lt;/td&gt;
&lt;td&gt;U+1f0a8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;S9&lt;/td&gt;
&lt;td&gt;🂩&lt;/td&gt;
&lt;td&gt;U+1f0a9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;ST&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂪&lt;/td&gt;
&lt;td&gt;U+1f0aa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;SJ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂫&lt;/td&gt;
&lt;td&gt;U+1f0ab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;SC&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂬&lt;/td&gt;
&lt;td&gt;U+1f0ac&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;SQ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂭&lt;/td&gt;
&lt;td&gt;U+1f0ad&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;SK&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂮&lt;/td&gt;
&lt;td&gt;U+1f0ae&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;HA&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂱&lt;/td&gt;
&lt;td&gt;U+1f0b1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;H2&lt;/td&gt;
&lt;td&gt;🂲&lt;/td&gt;
&lt;td&gt;U+1f0b2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;H3&lt;/td&gt;
&lt;td&gt;🂳&lt;/td&gt;
&lt;td&gt;U+1f0b3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;H4&lt;/td&gt;
&lt;td&gt;🂴&lt;/td&gt;
&lt;td&gt;U+1f0b4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;H5&lt;/td&gt;
&lt;td&gt;🂵&lt;/td&gt;
&lt;td&gt;U+1f0b5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;H6&lt;/td&gt;
&lt;td&gt;🂶&lt;/td&gt;
&lt;td&gt;U+1f0b6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;H7&lt;/td&gt;
&lt;td&gt;🂷&lt;/td&gt;
&lt;td&gt;U+1f0b7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;H8&lt;/td&gt;
&lt;td&gt;🂸&lt;/td&gt;
&lt;td&gt;U+1f0b8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;H9&lt;/td&gt;
&lt;td&gt;🂹&lt;/td&gt;
&lt;td&gt;U+1f0b9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;HT&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂺&lt;/td&gt;
&lt;td&gt;U+1f0ba&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;HJ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂻&lt;/td&gt;
&lt;td&gt;U+1f0bb&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;HC&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂼&lt;/td&gt;
&lt;td&gt;U+1f0bc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;HQ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂽&lt;/td&gt;
&lt;td&gt;U+1f0bd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;HK&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🂾&lt;/td&gt;
&lt;td&gt;U+1f0be&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;DA&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃁&lt;/td&gt;
&lt;td&gt;U+1f0c1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D2&lt;/td&gt;
&lt;td&gt;🃂&lt;/td&gt;
&lt;td&gt;U+1f0c2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D3&lt;/td&gt;
&lt;td&gt;🃃&lt;/td&gt;
&lt;td&gt;U+1f0c3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D4&lt;/td&gt;
&lt;td&gt;🃄&lt;/td&gt;
&lt;td&gt;U+1f0c4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D5&lt;/td&gt;
&lt;td&gt;🃅&lt;/td&gt;
&lt;td&gt;U+1f0c5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D6&lt;/td&gt;
&lt;td&gt;🃆&lt;/td&gt;
&lt;td&gt;U+1f0c6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D7&lt;/td&gt;
&lt;td&gt;🃇&lt;/td&gt;
&lt;td&gt;U+1f0c7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D8&lt;/td&gt;
&lt;td&gt;🃈&lt;/td&gt;
&lt;td&gt;U+1f0c8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;D9&lt;/td&gt;
&lt;td&gt;🃉&lt;/td&gt;
&lt;td&gt;U+1f0c9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;DT&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃊&lt;/td&gt;
&lt;td&gt;U+1f0ca&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;DJ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃋&lt;/td&gt;
&lt;td&gt;U+1f0cb&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;DC&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃌&lt;/td&gt;
&lt;td&gt;U+1f0cc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;DQ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃍&lt;/td&gt;
&lt;td&gt;U+1f0cd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;DK&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃎&lt;/td&gt;
&lt;td&gt;U+1f0ce&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃑&lt;/td&gt;
&lt;td&gt;U+1f0d1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C2&lt;/td&gt;
&lt;td&gt;🃒&lt;/td&gt;
&lt;td&gt;U+1f0d2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C3&lt;/td&gt;
&lt;td&gt;🃓&lt;/td&gt;
&lt;td&gt;U+1f0d3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C4&lt;/td&gt;
&lt;td&gt;🃔&lt;/td&gt;
&lt;td&gt;U+1f0d4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C5&lt;/td&gt;
&lt;td&gt;🃕&lt;/td&gt;
&lt;td&gt;U+1f0d5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C6&lt;/td&gt;
&lt;td&gt;🃖&lt;/td&gt;
&lt;td&gt;U+1f0d6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C7&lt;/td&gt;
&lt;td&gt;🃗&lt;/td&gt;
&lt;td&gt;U+1f0d7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C8&lt;/td&gt;
&lt;td&gt;🃘&lt;/td&gt;
&lt;td&gt;U+1f0d8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;C9&lt;/td&gt;
&lt;td&gt;🃙&lt;/td&gt;
&lt;td&gt;U+1f0d9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;CT&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃚&lt;/td&gt;
&lt;td&gt;U+1f0da&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;CJ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃛&lt;/td&gt;
&lt;td&gt;U+1f0db&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;CC&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃜&lt;/td&gt;
&lt;td&gt;U+1f0dc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;CQ&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃝&lt;/td&gt;
&lt;td&gt;U+1f0dd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="caps"&gt;CK&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;🃞&lt;/td&gt;
&lt;td&gt;U+1f0de&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T1&lt;/td&gt;
&lt;td&gt;🃡&lt;/td&gt;
&lt;td&gt;U+1f0e1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T2&lt;/td&gt;
&lt;td&gt;🃢&lt;/td&gt;
&lt;td&gt;U+1f0e2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T3&lt;/td&gt;
&lt;td&gt;🃣&lt;/td&gt;
&lt;td&gt;U+1f0e3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T4&lt;/td&gt;
&lt;td&gt;🃤&lt;/td&gt;
&lt;td&gt;U+1f0e4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T5&lt;/td&gt;
&lt;td&gt;🃥&lt;/td&gt;
&lt;td&gt;U+1f0e5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T6&lt;/td&gt;
&lt;td&gt;🃦&lt;/td&gt;
&lt;td&gt;U+1f0e6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T7&lt;/td&gt;
&lt;td&gt;🃧&lt;/td&gt;
&lt;td&gt;U+1f0e7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T8&lt;/td&gt;
&lt;td&gt;🃨&lt;/td&gt;
&lt;td&gt;U+1f0e8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T9&lt;/td&gt;
&lt;td&gt;🃩&lt;/td&gt;
&lt;td&gt;U+1f0e9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T10&lt;/td&gt;
&lt;td&gt;🃪&lt;/td&gt;
&lt;td&gt;U+1f0ea&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T11&lt;/td&gt;
&lt;td&gt;🃫&lt;/td&gt;
&lt;td&gt;U+1f0eb&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T12&lt;/td&gt;
&lt;td&gt;🃬&lt;/td&gt;
&lt;td&gt;U+1f0ec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T13&lt;/td&gt;
&lt;td&gt;🃭&lt;/td&gt;
&lt;td&gt;U+1f0ed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T14&lt;/td&gt;
&lt;td&gt;🃮&lt;/td&gt;
&lt;td&gt;U+1f0ee&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T15&lt;/td&gt;
&lt;td&gt;🃯&lt;/td&gt;
&lt;td&gt;U+1f0ef&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T16&lt;/td&gt;
&lt;td&gt;🃰&lt;/td&gt;
&lt;td&gt;U+1f0f0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T17&lt;/td&gt;
&lt;td&gt;🃱&lt;/td&gt;
&lt;td&gt;U+1f0f1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T18&lt;/td&gt;
&lt;td&gt;🃲&lt;/td&gt;
&lt;td&gt;U+1f0f2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T19&lt;/td&gt;
&lt;td&gt;🃳&lt;/td&gt;
&lt;td&gt;U+1f0f3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T20&lt;/td&gt;
&lt;td&gt;🃴&lt;/td&gt;
&lt;td&gt;U+1f0f4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;T21&lt;/td&gt;
&lt;td&gt;🃵&lt;/td&gt;
&lt;td&gt;U+1f0f5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0-0&lt;/td&gt;
&lt;td&gt;🁣&lt;/td&gt;
&lt;td&gt;U+1f063&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0-1&lt;/td&gt;
&lt;td&gt;🁤&lt;/td&gt;
&lt;td&gt;U+1f064&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0-2&lt;/td&gt;
&lt;td&gt;🁥&lt;/td&gt;
&lt;td&gt;U+1f065&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0-3&lt;/td&gt;
&lt;td&gt;🁦&lt;/td&gt;
&lt;td&gt;U+1f066&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0-4&lt;/td&gt;
&lt;td&gt;🁧&lt;/td&gt;
&lt;td&gt;U+1f067&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0-5&lt;/td&gt;
&lt;td&gt;🁨&lt;/td&gt;
&lt;td&gt;U+1f068&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0-6&lt;/td&gt;
&lt;td&gt;🁩&lt;/td&gt;
&lt;td&gt;U+1f069&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1-0&lt;/td&gt;
&lt;td&gt;🁪&lt;/td&gt;
&lt;td&gt;U+1f06a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1-1&lt;/td&gt;
&lt;td&gt;🁫&lt;/td&gt;
&lt;td&gt;U+1f06b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1-2&lt;/td&gt;
&lt;td&gt;🁬&lt;/td&gt;
&lt;td&gt;U+1f06c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1-3&lt;/td&gt;
&lt;td&gt;🁭&lt;/td&gt;
&lt;td&gt;U+1f06d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1-4&lt;/td&gt;
&lt;td&gt;🁮&lt;/td&gt;
&lt;td&gt;U+1f06e&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1-5&lt;/td&gt;
&lt;td&gt;🁯&lt;/td&gt;
&lt;td&gt;U+1f06f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1-6&lt;/td&gt;
&lt;td&gt;🁰&lt;/td&gt;
&lt;td&gt;U+1f070&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2-0&lt;/td&gt;
&lt;td&gt;🁱&lt;/td&gt;
&lt;td&gt;U+1f071&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2-1&lt;/td&gt;
&lt;td&gt;🁲&lt;/td&gt;
&lt;td&gt;U+1f072&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2-2&lt;/td&gt;
&lt;td&gt;🁳&lt;/td&gt;
&lt;td&gt;U+1f073&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2-3&lt;/td&gt;
&lt;td&gt;🁴&lt;/td&gt;
&lt;td&gt;U+1f074&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2-4&lt;/td&gt;
&lt;td&gt;🁵&lt;/td&gt;
&lt;td&gt;U+1f075&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2-5&lt;/td&gt;
&lt;td&gt;🁶&lt;/td&gt;
&lt;td&gt;U+1f076&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2-6&lt;/td&gt;
&lt;td&gt;🁷&lt;/td&gt;
&lt;td&gt;U+1f077&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3-0&lt;/td&gt;
&lt;td&gt;🁸&lt;/td&gt;
&lt;td&gt;U+1f078&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3-1&lt;/td&gt;
&lt;td&gt;🁹&lt;/td&gt;
&lt;td&gt;U+1f079&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3-2&lt;/td&gt;
&lt;td&gt;🁺&lt;/td&gt;
&lt;td&gt;U+1f07a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3-3&lt;/td&gt;
&lt;td&gt;🁻&lt;/td&gt;
&lt;td&gt;U+1f07b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3-4&lt;/td&gt;
&lt;td&gt;🁼&lt;/td&gt;
&lt;td&gt;U+1f07c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3-5&lt;/td&gt;
&lt;td&gt;🁽&lt;/td&gt;
&lt;td&gt;U+1f07d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3-6&lt;/td&gt;
&lt;td&gt;🁾&lt;/td&gt;
&lt;td&gt;U+1f07e&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4-0&lt;/td&gt;
&lt;td&gt;🁿&lt;/td&gt;
&lt;td&gt;U+1f07f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4-1&lt;/td&gt;
&lt;td&gt;🂀&lt;/td&gt;
&lt;td&gt;U+1f080&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4-2&lt;/td&gt;
&lt;td&gt;🂁&lt;/td&gt;
&lt;td&gt;U+1f081&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4-3&lt;/td&gt;
&lt;td&gt;🂂&lt;/td&gt;
&lt;td&gt;U+1f082&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4-4&lt;/td&gt;
&lt;td&gt;🂃&lt;/td&gt;
&lt;td&gt;U+1f083&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4-5&lt;/td&gt;
&lt;td&gt;🂄&lt;/td&gt;
&lt;td&gt;U+1f084&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4-6&lt;/td&gt;
&lt;td&gt;🂅&lt;/td&gt;
&lt;td&gt;U+1f085&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5-0&lt;/td&gt;
&lt;td&gt;🂆&lt;/td&gt;
&lt;td&gt;U+1f086&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5-1&lt;/td&gt;
&lt;td&gt;🂇&lt;/td&gt;
&lt;td&gt;U+1f087&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5-2&lt;/td&gt;
&lt;td&gt;🂈&lt;/td&gt;
&lt;td&gt;U+1f088&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5-3&lt;/td&gt;
&lt;td&gt;🂉&lt;/td&gt;
&lt;td&gt;U+1f089&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5-4&lt;/td&gt;
&lt;td&gt;🂊&lt;/td&gt;
&lt;td&gt;U+1f08a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5-5&lt;/td&gt;
&lt;td&gt;🂋&lt;/td&gt;
&lt;td&gt;U+1f08b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5-6&lt;/td&gt;
&lt;td&gt;🂌&lt;/td&gt;
&lt;td&gt;U+1f08c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6-0&lt;/td&gt;
&lt;td&gt;🂍&lt;/td&gt;
&lt;td&gt;U+1f08d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6-1&lt;/td&gt;
&lt;td&gt;🂎&lt;/td&gt;
&lt;td&gt;U+1f08e&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6-2&lt;/td&gt;
&lt;td&gt;🂏&lt;/td&gt;
&lt;td&gt;U+1f08f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6-3&lt;/td&gt;
&lt;td&gt;🂐&lt;/td&gt;
&lt;td&gt;U+1f090&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6-4&lt;/td&gt;
&lt;td&gt;🂑&lt;/td&gt;
&lt;td&gt;U+1f091&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6-5&lt;/td&gt;
&lt;td&gt;🂒&lt;/td&gt;
&lt;td&gt;U+1f092&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6-6&lt;/td&gt;
&lt;td&gt;🂓&lt;/td&gt;
&lt;td&gt;U+1f093&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="extending-the-ppn-r-parser"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-45"&gt;Extending the &lt;span class="caps"&gt;PPN&lt;/span&gt; R&amp;nbsp;parser&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If one would like to help &lt;strong&gt;develop&lt;/strong&gt; the prototype R parser here are some&amp;nbsp;notes.&lt;/p&gt;
&lt;div class="section" id="adding-a-new-game-setup"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-46"&gt;Adding a new game&amp;nbsp;(setup)&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;To add a new game &lt;a class="reference internal" href="#setup"&gt;setup&lt;/a&gt; one writes an R function called &lt;tt class="docutils literal"&gt;game_system_game_name&lt;/tt&gt; where &lt;tt class="docutils literal"&gt;game_system&lt;/tt&gt; is the game system (e.g. &lt;tt class="docutils literal"&gt;piecepack&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;checker&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;chess&lt;/tt&gt;) and &lt;tt class="docutils literal"&gt;game_name&lt;/tt&gt; is the name of the game, both converted to &amp;#8220;snake case&amp;#8221; e.g. &lt;tt class="docutils literal"&gt;piecepack_four_field_kono&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;checker_four_field_kono&lt;/tt&gt;.  It must return a &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;tibble::tibble()&lt;/span&gt;&lt;/tt&gt; of the pieces in order of placement onto the board with the following columns (name matters, order&amp;nbsp;doesn&amp;#8217;t):&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;piece_side&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;x&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;y&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;suit&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;rank&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;angle&lt;/tt&gt; (only needed if any are&amp;nbsp;non-zero)&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;cfg&lt;/tt&gt; (only needed if there are non-piecepack&amp;nbsp;components)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The function can optionally take arguments to influence the setup, some existing arguments other game setup functions take&amp;nbsp;are:&lt;/p&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;&lt;tt class="docutils literal"&gt;seed&lt;/tt&gt;&lt;/dt&gt;
&lt;dd&gt;For games with random setups passing the same seed should return the same&amp;nbsp;setup&lt;/dd&gt;
&lt;dt&gt;&lt;tt class="docutils literal"&gt;tiles&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;dice&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;coins&lt;/tt&gt;&lt;/dt&gt;
&lt;dd&gt;For games with random setups pass in a string that instructs exactly
how one would like the tiles, dice, or coins&amp;nbsp;arranged&lt;/dd&gt;
&lt;dt&gt;&lt;tt class="docutils literal"&gt;has_matchsticks&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;has_subpack&lt;/tt&gt;&lt;/dt&gt;
&lt;dd&gt;Provide an alternative setup if the player has (piecepack) matchsticks or a (piecepack)&amp;nbsp;subpack&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Before returning the &lt;tt class="docutils literal"&gt;tibble&lt;/tt&gt; one may add additional &amp;#8220;attributes&amp;#8221; using the &lt;tt class="docutils literal"&gt;attr()&lt;/tt&gt; function, currently a handful of functions set a &lt;tt class="docutils literal"&gt;scale_factor&lt;/tt&gt; attribute which adjusts how many inches a coordinate unit is&amp;nbsp;worth.&lt;/p&gt;
&lt;p&gt;If the game is a piecepack game or a game that is played with traditional components (like checkers sets, chess sets, dominoes, etc.) it should ideally be contributed to the &lt;a class="reference external" href="https://github.com/piecepackr/ppdf"&gt;ppdf&lt;/a&gt; R package.  If it is a Looney pyramids game it should ideally be contributed to the &lt;a class="reference external" href="https://github.com/piecepackr/piecenikr"&gt;piecenikr&lt;/a&gt; R&amp;nbsp;package.&lt;/p&gt;
&lt;p&gt;There are several pre-existing game setup functions in the R packages &lt;a class="reference external" href="https://github.com/piecepackr/ppdf"&gt;ppdf&lt;/a&gt; and &lt;a class="reference external" href="https://github.com/piecepackr/piecenikr"&gt;piecenikr&lt;/a&gt; that can be used for&amp;nbsp;inspiration.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="adding-a-new-game-notation-parser"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#toc-entry-47"&gt;Adding a new game notation&amp;nbsp;parser&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;If you&amp;#8217;d like to use a different game notation other than that of the &lt;a class="reference internal" href="#default-movetext-parser"&gt;default movetext parser&lt;/a&gt; then it is possible to write and use alternative game notation parsers that can be used with &lt;span class="caps"&gt;PPN&lt;/span&gt; files.   One may then indicate the alternative parser to use via the &lt;tt class="docutils literal"&gt;MovetextParser&lt;/tt&gt; field in the game&amp;#8217;s &lt;a class="reference internal" href="#metadata"&gt;metadata&lt;/a&gt;.  One should write an R function named &lt;tt class="docutils literal"&gt;pname_parser&lt;/tt&gt; where &lt;tt class="docutils literal"&gt;pname&lt;/tt&gt; is a descriptive name in &amp;#8220;snake case&amp;#8221;.  The first argument of the function should be &lt;tt class="docutils literal"&gt;movetext&lt;/tt&gt; which will receive a character vector of the &lt;span class="caps"&gt;PPN&lt;/span&gt; &lt;a class="reference internal" href="#movetext"&gt;movetext&lt;/a&gt; and second argument should be &lt;tt class="docutils literal"&gt;metadata&lt;/tt&gt; which will receive a list of the &lt;span class="caps"&gt;PPN&lt;/span&gt; &lt;a class="reference internal" href="#metadata"&gt;metadata&lt;/a&gt;.  Additionally if the &lt;tt class="docutils literal"&gt;MovetextParser&lt;/tt&gt; element of the &lt;a class="reference internal" href="#metadata"&gt;metadata&lt;/a&gt; was passed additional arguments those will be passed to the function as well.  For example the &lt;a class="reference internal" href="#default-movetext-parser"&gt;default movetext parser&lt;/a&gt; supports an optional &lt;tt class="docutils literal"&gt;scale_factor&lt;/tt&gt; argument which lets a user adjust how many inches a coordinate unit is worth.  The parser function should return a list which (ideally) contains the following fields (at least) so one can visualize the results using existing functions like &lt;tt class="docutils literal"&gt;plot_move()&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;animate_game()&lt;/tt&gt;:&lt;/p&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;movetext&lt;/dt&gt;
&lt;dd&gt;A character vector of the movetext passed into the&amp;nbsp;parser&lt;/dd&gt;
&lt;dt&gt;metadata&lt;/dt&gt;
&lt;dd&gt;A named list of the metadata passed into the&amp;nbsp;parser&lt;/dd&gt;
&lt;dt&gt;moves&lt;/dt&gt;
&lt;dd&gt;A named list of the parsed&amp;nbsp;&amp;#8220;moves&amp;#8221;&lt;/dd&gt;
&lt;dt&gt;comments&lt;/dt&gt;
&lt;dd&gt;A named list of the parsed move&amp;nbsp;&amp;#8220;comments&amp;#8221;&lt;/dd&gt;
&lt;dt&gt;dfs&lt;/dt&gt;
&lt;dd&gt;A named list of tibble game states after each move.  The first &amp;#8220;move&amp;#8221; often represents the initial game&amp;nbsp;setup.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;One potential hack for writing a parser would to convert your game&amp;#8217;s notation into that of the &lt;a class="reference internal" href="#default-movetext-parser"&gt;default movetext parser&lt;/a&gt; and have it then parse the&amp;nbsp;game.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category></entry><entry><title>Hexpack</title><link href="https://trevorldavis.com/piecepackr/hexpack.html" rel="alternate"></link><published>2019-06-28T00:00:00-07:00</published><updated>2019-11-16T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-06-28:/piecepackr/hexpack.html</id><summary type="html">&lt;p class="first last"&gt;The &lt;a class="reference external" href="https://boardgamegeek.com/boardgameexpansion/35424/hexpack"&gt;Hexpack&lt;/a&gt; is a &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; expansion by &lt;a class="reference external" href="http://www.boardgamegeek.com/user/Erulisse"&gt;Daniel Wilcox&lt;/a&gt; and &lt;a class="reference external" href="http://www.boardgamegeek.com/user/ZefQuaavius"&gt;Nathan Morse&lt;/a&gt; that essentially introduces hexagonal tiles and triagonal coins.  In this demo we&amp;#8217;ll show how to configure a hexpack that matches our &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/default-pnp.html"&gt;default&lt;/a&gt; piecepack and make a simple diagram using it as well as show how to use the built-in hexpack &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configurations&lt;/a&gt; that come with &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://boardgamegeek.com/boardgameexpansion/35424/hexpack"&gt;Hexpack&lt;/a&gt; is a &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; expansion by &lt;a class="reference external" href="http://www.boardgamegeek.com/user/Erulisse"&gt;Daniel Wilcox&lt;/a&gt; and &lt;a class="reference external" href="http://www.boardgamegeek.com/user/ZefQuaavius"&gt;Nathan Morse&lt;/a&gt; that essentially introduces hexagonal tiles and triagonal coins.  In this demo we&amp;#8217;ll show how to configure a hexpack that matches our &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/default-pnp.html"&gt;default&lt;/a&gt; piecepack and make a simple diagram using it as well as show how to use the built-in hexpack &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configurations&lt;/a&gt; that come with &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;.&lt;/p&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#configuring-a-hexpack" id="toc-entry-1"&gt;Configuring a&amp;nbsp;hexpack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#using-the-built-in-hexpacks" id="toc-entry-2"&gt;Using the built-in&amp;nbsp;hexpacks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="configuring-a-hexpack"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Configuring a&amp;nbsp;hexpack&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The trickiest part of configuring a hexpack is figuring out the correct dimensions for the hexagonal tiles.  The suggested size of the hexagonal tiles in a hexpack is one that allows the hexagons to circumscribe a 2&amp;#8221; circumference circle which implies that they in turn are circumscribed by a &lt;tt class="docutils literal"&gt;4 / sqrt(3)&lt;/tt&gt; circumference&amp;nbsp;circle:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;hexpack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;shape.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;convex6&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;shape_t.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;60&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;dm_t.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;-90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;width.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;shape.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;convex3&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;invert_colors.suited&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;When making hex diagrams it is often helpful to think in &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Polar_coordinate_system"&gt;polar coordinates&lt;/a&gt; so &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; provides the helper functions &lt;tt class="docutils literal"&gt;to_x&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;to_y&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;to_t&lt;/tt&gt;, and &lt;tt class="docutils literal"&gt;to_r&lt;/tt&gt; to help developers convert back and forth between polar coordinates and Cartesian coordinates.  We&amp;#8217;ll make a simple diagram using these functions and the hexpack configuration we just&amp;nbsp;made:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tibble&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;x0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;
&lt;span class="n"&gt;y0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4.5&lt;/span&gt;
&lt;span class="n"&gt;df_t1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;-60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;length.out&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;
&lt;span class="n"&gt;df_c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;to_x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;to_y&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="m"&gt;+90&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;df_t2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="o"&gt;%%&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;to_x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;to_y&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="m"&gt;-90&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df_t3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;to_x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="m"&gt;+30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;to_y&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="m"&gt;+30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dplyr&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;bind_rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df_t1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_t2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_t3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;hexpack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Example hexpack diagram" src="https://trevorldavis.com/piecepackr/images/knitr/games-hexpack-diagram-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Example hexpack&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="using-the-built-in-hexpacks"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Using the built-in&amp;nbsp;hexpacks&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; provides a couple built-in &lt;a class="reference external" href="https://boardgamegeek.com/boardgameexpansion/35424/hexpack"&gt;hexpack&lt;/a&gt; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configurations&lt;/a&gt; via the function &lt;tt class="docutils literal"&gt;game_systems&lt;/tt&gt; &lt;a class="footnote-reference" href="#v1-2" id="footnote-reference-1"&gt;[1]&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hexpack&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Example hexpack diagram with the built-in 'dejavu' hexpack" src="https://trevorldavis.com/piecepackr/images/knitr/games-hexpack-diagram2-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Example hexpack diagram with the built-in &amp;#8216;dejavu&amp;#8217;&amp;nbsp;hexpack&lt;/p&gt;
&lt;/div&gt;
&lt;table class="docutils footnote" frame="void" id="v1-2" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;New in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; version 1.2.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="other-game-systems"></category></entry><entry><title>Chinese Zodiac ranked piecepack PnP</title><link href="https://trevorldavis.com/piecepackr/chinese-zodiac-ranked-piecepack-pnp.html" rel="alternate"></link><published>2019-06-23T00:00:00-07:00</published><updated>2023-02-16T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-06-23:/piecepackr/chinese-zodiac-ranked-piecepack-pnp.html</id><summary type="html">&lt;p class="first last"&gt;The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/orthodox-pnp.html"&gt;orthodox&lt;/a&gt; piecepack ranks are a tad abstract and my toddler son is Chinese-American so I think a &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chinese_zodiac"&gt;Chinese Zodiac&lt;/a&gt; ranked piecepack could be a design that is a little more approachable for my son.  The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chinese_zodiac"&gt;Chinese Zodiac&lt;/a&gt;&amp;#8216;s 12 animals are divided into 4 trines so we&amp;#8217;ll make a piecepack using all the animals from two of the trines as ranks and another piecepack using the remaining animals from the other two trines as ranks.  For suits we&amp;#8217;ll use the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Wu_Xing"&gt;Five Elements&lt;/a&gt;: Wood, Fire, Earth, Metal, and&amp;nbsp;Water.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p id="zodiac-cn1"&gt;The &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/orthodox-pnp.html"&gt;orthodox&lt;/a&gt; piecepack ranks are a tad abstract and my toddler son is Chinese-American so I think a &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chinese_zodiac"&gt;Chinese Zodiac&lt;/a&gt; ranked piecepack could be a design that is a little more approachable for my son.  The &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Chinese_zodiac"&gt;Chinese Zodiac&lt;/a&gt;&amp;#8216;s 12 animals are divided into 4 trines so we&amp;#8217;ll make a piecepack using all the animals from two of the trines as ranks and another piecepack using the remaining animals from the other two trines as ranks.  For suits we&amp;#8217;ll use the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Wu_Xing"&gt;Five Elements&lt;/a&gt;: Wood, Fire, Earth, Metal, and&amp;nbsp;Water.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;🐀,🐉,🐒,🐂,🐍,🐓&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;🌲,🔥,⛰️,🏆,🌊,&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Emoji,Noto Emoji,Noto Sans Symbols2,Noto Emoji&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;rank_cex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.5,0.6,0.6,0.5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkgreen,red3,chocolate4,black,darkblue,grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from Google Noto Fonts. OFL 1.1.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.google.com/get/noto/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;This piecepack uses ranks and suits from the Chinese Zodiac&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Chinese Zodiac (Trines 1+2)&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2019 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn1_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn1_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn1_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;zodiac_cn1_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Chinese Zodiac ranked piecepack (Trines 1 and 2)" src="https://trevorldavis.com/piecepackr/images/knitr/demos-CZ-CZ1-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Chinese Zodiac ranked piecepack (Trines 1 and&amp;nbsp;2)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;zodiac_cn2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;zodiac_cn1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;🐅,🐎,🐕,🐇,🐏,🐖&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Chinese Zodiac (Trines 3+4)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn2_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;zodiac_cn2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn2_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;zodiac_cn2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;zodiac_cn2_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;zodiac_cn2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;zodiac_cn2_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Chinese Zodiac ranked piecepack (Trines 3 and 4)" src="https://trevorldavis.com/piecepackr/images/knitr/demos-CZ-CZ2-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Chinese Zodiac ranked piecepack (Trines 3 and&amp;nbsp;4)&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="print-and-play"></category></entry><entry><title>Rainbow Deck suited piecepack PnP</title><link href="https://trevorldavis.com/piecepackr/rainbow-deck-suited-piecepack-pnp.html" rel="alternate"></link><published>2019-06-23T00:00:00-07:00</published><updated>2023-02-16T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-06-23:/piecepackr/rainbow-deck-suited-piecepack-pnp.html</id><summary type="html">&lt;p class="first last"&gt;The &lt;a class="reference external" href="https://boardgamegeek.com/boardgame/59655/rainbow-deck"&gt;Rainbow Deck&lt;/a&gt; by Chen Changcai is a cardgame system that can be used to play hundreds of games.  It has 12 suits divided by 6 suit symbols with each suit symbol having a dark and light color associated with it.  It is straightforward to make six-suited &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepacks&lt;/a&gt; to use as an accessory to the &lt;a class="reference external" href="https://boardgamegeek.com/boardgame/59655/rainbow-deck"&gt;Rainbow Deck&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p id="rainbow1"&gt;The &lt;a class="reference external" href="https://boardgamegeek.com/boardgame/59655/rainbow-deck"&gt;Rainbow Deck&lt;/a&gt; by Chen Changcai is a cardgame system that can be used to play hundreds of games.  It has 12 suits divided by 6 suit symbols with each suit symbol having a dark and light color associated with it.  It is straightforward to make six-suited &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepacks&lt;/a&gt; to use as an accessory to the &lt;a class="reference external" href="https://boardgamegeek.com/boardgame/59655/rainbow-deck"&gt;Rainbow Deck&lt;/a&gt;.  The &lt;a class="reference external" href="https://boardgamegeek.com/boardgame/59655/rainbow-deck"&gt;Rainbow Deck&lt;/a&gt; itself is licensed under a &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt;-&lt;span class="caps"&gt;NC&lt;/span&gt; license but Chen Changcai was kind enough to give me permission to create Rainbow Deck suited piecepacks under a &lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt; 4.0 license requesting that I please provide a link back to his &lt;a class="reference external" href="https://boardgamegeek.com/boardgame/59655/rainbow-deck"&gt;Rainbow Deck&lt;/a&gt; BoardGameGeek&amp;nbsp;page.&lt;/p&gt;
&lt;p&gt;Since dark suits show up best on a light background and light suits show up best on a dark background we&amp;#8217;ll make two 6-suited piecepacks that do just that (note that this means that these two &lt;a class="reference external" href="https://boardgamegeek.com/boardgame/59655/rainbow-deck"&gt;Rainbow Deck&lt;/a&gt; suited piecepacks will be &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/dual-piecepacks-pnp.html"&gt;dual piecepacks&lt;/a&gt;).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rainbow1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♥,★,♣,♦,♛,♠,꩜&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;paste&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;collapse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1,1,1,1,0.85,1,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#ff0000,#ffc000,#008000,#0000ff,#800080,#000000,white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;background_color.unsuited&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;sienna&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from Google Noto Fonts. OFL 1.1.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.google.com/get/noto/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;RD_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf The Rainbow Deck is by Chen Changcai&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://boardgamegeek.com/boardgame/59655/rainbow-deck&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\tUsed with permission of the author.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rainbow1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;RD_credit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rainbow1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;This piecepack uses the suits from Chen Changcai\&amp;#39;s &amp;quot;Rainbow Deck&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://boardgamegeek.com/boardgame/59655/rainbow-deck&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rainbow1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Rainbow Deck (dark suits)&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;rainbow1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2019 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;rainbow1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rainbow1_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rainbow1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rainbow1_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rainbow1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;rainbow1_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Rainbow Deck suited piecepack (Dark suits)" src="https://trevorldavis.com/piecepackr/images/knitr/demos-RD-RD1-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Rainbow Deck suited piecepack (Dark&amp;nbsp;suits)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;rainbow2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rainbow1&lt;/span&gt;
&lt;span class="n"&gt;rainbow2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#ff80c0,#ffff80,#80ff00,#80ffff,#c080ff,#c0c0c0,white&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;rainbow2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color.suited&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;rainbow2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Rainbow Deck (light suits)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;rainbow2_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rainbow2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rainbow2_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rainbow2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;rainbow2_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Rainbow Deck suited piecepack (Light suits)" src="https://trevorldavis.com/piecepackr/images/knitr/demos-RD-RD2-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Rainbow Deck suited piecepack (Light&amp;nbsp;suits)&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="print-and-play"></category></entry><entry><title>Tak</title><link href="https://trevorldavis.com/piecepackr/tak.html" rel="alternate"></link><published>2019-06-16T00:00:00-07:00</published><updated>2025-01-14T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-06-16:/piecepackr/tak.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Tak_(game)"&gt;Tak&lt;/a&gt; is a two-player abstract designed by James Ernest and Patrick Rothfuss that is best visualized in 3D.
We show an example of &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuring&lt;/a&gt; &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; to draw standard &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Tak_(game)"&gt;Tak&lt;/a&gt; game pieces.
We also show how the game of &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Tak_(game)"&gt;Tak&lt;/a&gt; can also be played with a piecepack&amp;nbsp;stackpack.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#standard-tak-pieces" id="toc-entry-1"&gt;Standard Tak&amp;nbsp;pieces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#playing-tak-with-a-piecepack-stackpack" id="toc-entry-2"&gt;Playing Tak with a piecepack&amp;nbsp;stackpack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Tak_(game)"&gt;Tak&lt;/a&gt; is a two-player abstract designed by James Ernest and Patrick Rothfuss that is best visualized in&amp;nbsp;3D.&lt;/p&gt;
&lt;div class="section" id="standard-tak-pieces"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Standard Tak&amp;nbsp;pieces&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;First we&amp;#8217;ll show an example of &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuring&lt;/a&gt; &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; to draw standard &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Tak_(game)"&gt;Tak&lt;/a&gt; game&amp;nbsp;pieces.&lt;/p&gt;
&lt;p&gt;Since one often plays Tak on differently sized boards one common Tak board design is to have boards made with colored cells arranged in rings from the center plus extra symbols in rings placed at the points so it is easy to see smaller sub-boards.  To start we&amp;#8217;ll write a function to draw the Tak&amp;nbsp;board.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;grobTakBoard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;...&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkgreen&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;inner&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rectGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;gold&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lwd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;outer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rectGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;circles&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;circleGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;gold&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;rects&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rectGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;orange&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grobTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;inner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;circles&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rects&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then we&amp;#8217;ll &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configure&lt;/a&gt; a Tak set and write some helper functions to draw &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Tak_(game)"&gt;Tak&lt;/a&gt; pieces with&amp;nbsp;it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,,,&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white,tan4,&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;invert_colors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;width.board&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.board&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.board&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;grob_fn.board&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;grobTakBoard&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;width.r1.bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.r1.bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.r1.bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape.r1.bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rect&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;width.r2.bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.r2.bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.r2.bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape.r2.bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rect&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;width.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;circle&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;edge_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white,tan4&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;edge_color.board&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tan&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color.board&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;g.p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;...&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;draw_tak_board&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;g.p&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;board_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="m"&gt;+0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="m"&gt;+0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nf"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;along&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="m"&gt;+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;g.p&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;bit_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="m"&gt;+0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="m"&gt;+0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;draw_standing_stone&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n_beneath&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_beneath&lt;/span&gt;&lt;span class="m"&gt;+1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+0.3&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;g.p&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;bit_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="m"&gt;+0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="m"&gt;+0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;draw_capstone&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n_beneath&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_beneath&lt;/span&gt;&lt;span class="m"&gt;+1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+0.4&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;g.p&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="m"&gt;+0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="m"&gt;+0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then we&amp;#8217;ll draw an example Tak game&amp;nbsp;diagram:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pushViewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="nf"&gt;draw_tak_board&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_capstone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n_beneath&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_standing_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_flat_stone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_capstone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;popViewport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Tak game diagram with traditional pieces" src="https://trevorldavis.com/piecepackr/images/knitr/games-tak-diagram-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Tak game diagram with traditional&amp;nbsp;pieces&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="playing-tak-with-a-piecepack-stackpack"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Playing Tak with a piecepack&amp;nbsp;stackpack&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The game of &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Tak_(game)"&gt;Tak&lt;/a&gt; can also be played with a piecepack stackpack.  One can make the board with supertiles.  One player will use supercoins as flat stones, subpawns as standing stones, and superpawns as capstones while the other player will use subtiles as flat stones, subdice as standing stones, and superdice as capstones - assuming pawns with circular bases the pieces will be &amp;#8220;circles&amp;#8221; versus&amp;nbsp;&amp;#8220;squares&amp;#8221;.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ll draw the same game diagram as before but using a piecepack &lt;a class="reference external" href="http://ludism.org/ppwiki/StackPack"&gt;stackpack&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dplyr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;warn.conflicts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tibble&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;df_board&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;piecepack_rect_board_tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nrow&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ncol&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df_board&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;df_fs1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df_fs2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;subpack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df_fs3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df_fs4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;subpack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df_ss&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;subpack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df_cs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepack&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;bind_rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df_board&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_fs1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_fs2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_fs3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_fs4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_ss&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;df_cs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;systems&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;systems&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;edge_color.coin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;edge_color.tile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tan4&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;circle&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;height.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;
&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;width.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;
&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;depth.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1.0&lt;/span&gt;
&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_text.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_r.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;subpack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;to_subpack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;subpack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;depth.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;
&lt;span class="n"&gt;subpack&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;width.tile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;

&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;subpack&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;subpack&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Tak game diagram with stackpack pieces" src="https://trevorldavis.com/piecepackr/images/knitr/games-tak-stackpack-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Tak game diagram with stackpack&amp;nbsp;pieces&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="other-game-systems"></category><category term="piecepack-games"></category></entry><entry><title>3D Projections</title><link href="https://trevorldavis.com/piecepackr/3d-projections.html" rel="alternate"></link><published>2019-06-10T00:00:00-07:00</published><updated>2025-01-14T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-06-10:/piecepackr/3d-projections.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; has some basic support for projecting 3D board games onto a 2D diagram.  It can make diagrams using an orthographic or oblique &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Parallel_projection"&gt;parallel projection&lt;/a&gt; using R&amp;#8217;s &lt;a class="reference external" href="https://www.rdocumentation.org/packages/grid"&gt;grid&lt;/a&gt; graphics library.  It can also render images using the &lt;a class="reference external" href="https://cran.r-project.org/package=rayrender"&gt;rayrender&lt;/a&gt;, &lt;a class="reference external" href="https://cran.r-project.org/package=rayvertex"&gt;rayvertex&lt;/a&gt;, and &lt;a class="reference external" href="https://cran.r-project.org/package=rgl"&gt;rgl&lt;/a&gt; 3D graphics packages.  These latter packages usually use a &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Perspective_(graphical)"&gt;perspective projection&lt;/a&gt; but can be configured to produce &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Parallel_projection"&gt;parallel projections&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; has some basic support for projecting 3D board games onto a 2D diagram.  It can make diagrams using an orthographic or oblique &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Parallel_projection"&gt;parallel projection&lt;/a&gt; using R&amp;#8217;s &lt;a class="reference external" href="https://www.rdocumentation.org/packages/grid"&gt;grid&lt;/a&gt; graphics library.  It can also render images using the &lt;a class="reference external" href="https://cran.r-project.org/package=rayrender"&gt;rayrender&lt;/a&gt;, &lt;a class="reference external" href="https://cran.r-project.org/package=rayvertex"&gt;rayvertex&lt;/a&gt;, and &lt;a class="reference external" href="https://cran.r-project.org/package=rgl"&gt;rgl&lt;/a&gt; 3D graphics packages.  These latter packages usually use a &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Perspective_(graphical)"&gt;perspective projection&lt;/a&gt; but can be configured to produce &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Parallel_projection"&gt;parallel projections&lt;/a&gt;.&lt;/p&gt;
&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#orthographic-projections-grid" id="toc-entry-1"&gt;Orthographic projections&amp;nbsp;(grid)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#oblique-projections-grid" id="toc-entry-2"&gt;Oblique projections (grid)&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#op-transform-helper-function" id="toc-entry-3"&gt;&lt;span class="quo"&gt;&amp;#8216;&lt;/span&gt;op_transform()&amp;#8217; helper&amp;nbsp;function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#mixed-projections" id="toc-entry-4"&gt;Mixed&amp;nbsp;Projections&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#d-graphics-packages-rayrender-rayvertex-and-rgl" id="toc-entry-5"&gt;3D graphics packages: rayrender, rayvertex, and rgl&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#rayrender-1" id="toc-entry-6"&gt;rayrender&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#rayvertex-1" id="toc-entry-7"&gt;rayvertex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#rgl-1" id="toc-entry-8"&gt;rgl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#parallel-projections-2" id="toc-entry-9"&gt;Parallel&amp;nbsp;projections&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="orthographic-projections-grid"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Orthographic projections&amp;nbsp;(grid)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;By default &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s &lt;tt class="docutils literal"&gt;grid.piece()&lt;/tt&gt; function makes an approximate &amp;#8220;top view&amp;#8221; &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Orthographic_projection"&gt;orthographic projection&lt;/a&gt; with pieces drawn later &amp;#8220;placed on top&amp;#8221; of (and potentially hiding) pieces drawn&amp;nbsp;earlier:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepackr.default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;piecepackr.cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="'Top view' orthographic projection of a piecepack game" src="https://trevorldavis.com/piecepackr/images/knitr/docs-3d-projections-orthographic-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;&lt;span class="quo"&gt;&amp;#8216;&lt;/span&gt;Top view&amp;#8217; orthographic projection of a piecepack&amp;nbsp;game&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;cite&gt;grid.piece()&lt;/cite&gt; makes an exact &amp;#8220;top view&amp;#8221; orthographic projection under the following&amp;nbsp;conditions:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;All pieces are placed &amp;#8220;flat&amp;#8221; parallel/perpendicular to the game table.  Although most piecepack games do this there are exceptions like &lt;a class="reference external" href="http://www.ludism.org/ppwiki/SanAndreas"&gt;San Andreas&lt;/a&gt; where some tiles may shift from flat to &amp;#8220;leaning&amp;#8221; (and vice versa) during the course of a&amp;nbsp;game.&lt;/li&gt;
&lt;li&gt;The game doesn&amp;#8217;t use pyramids placed on their side &lt;a class="footnote-reference" href="#pyramid-side" id="footnote-reference-1"&gt;[1]&lt;/a&gt;.  However you in this case one can approximate an orthographic projection by doing an oblique projection with a very small scale factor i.e. &lt;cite&gt;op_scale = 0.001&lt;/cite&gt; &lt;a class="footnote-reference" href="#pre-v1-11" id="footnote-reference-2"&gt;[2]&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;table class="docutils footnote" frame="void" id="pyramid-side" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Instead we just draw the visible pyramid face.  This is ideal for print-and-play layouts and usually works okay for game diagrams as well.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="pre-v1-11" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;[2]&lt;/td&gt;&lt;td&gt;&lt;em&gt;(&lt;a class="fn-backref" href="#footnote-reference-2"&gt;1&lt;/a&gt;, &lt;a class="fn-backref" href="#footnote-reference-3"&gt;2&lt;/a&gt;)&lt;/em&gt; If using a version of &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; older than v1.11.0 use the minimum &lt;cite&gt;op_scale&lt;/cite&gt; value of &lt;cite&gt;0.01&lt;/cite&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="oblique-projections-grid"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Oblique projections&amp;nbsp;(grid)&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The oblique projections of dice sides, two-sided tokens placed on their side, and pyramids were improved in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; v1.11.1.  These enhancements require R 4.2 and a graphics device that supports the &amp;#8220;affine transformation&amp;#8221; feature such as the &amp;#8220;cairo&amp;#8221; devices e.g. &lt;tt class="docutils literal"&gt;png(type = &amp;quot;cairo&amp;quot;)&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;cairo_pdf()&lt;/tt&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;With a little more effort by the &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; programmer one can also make &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Oblique_projection"&gt;oblique projections&lt;/a&gt; with &lt;tt class="docutils literal"&gt;grid.piece()&lt;/tt&gt; which makes it much easier to tell when pieces have been placed on top of other&amp;nbsp;pieces:&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepackr.default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;piecepackr.cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;piecepackr.op_angle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piecepackr.op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_top&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Oblique projection of a piecepack game" src="https://trevorldavis.com/piecepackr/images/knitr/docs-3d-projections-oblique-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Oblique projection of a piecepack&amp;nbsp;game&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;tt class="docutils literal"&gt;op_scale&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;op_angle&lt;/tt&gt; are the arguments that control the appearance of the oblique projection.  &lt;tt class="docutils literal"&gt;op_scale&lt;/tt&gt; determines how much to scale the length of the piece&amp;#8217;s edge along &lt;tt class="docutils literal"&gt;op_angle&lt;/tt&gt;.  An &lt;tt class="docutils literal"&gt;op_scale&lt;/tt&gt; of &lt;tt class="docutils literal"&gt;0.5&lt;/tt&gt; is commonly used in the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Oblique_projection#Cabinet_projection"&gt;cabinet projection&lt;/a&gt;, an &lt;tt class="docutils literal"&gt;op_scale&lt;/tt&gt; of &lt;tt class="docutils literal"&gt;1.0&lt;/tt&gt; is used in the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Oblique_projection#Cavalier_projection"&gt;cavalier projection&lt;/a&gt;, and an &lt;tt class="docutils literal"&gt;op_scale&lt;/tt&gt; of &lt;tt class="docutils literal"&gt;0.001&lt;/tt&gt; &lt;a class="footnote-reference" href="#pre-v1-11" id="footnote-reference-3"&gt;[2]&lt;/a&gt; gives you a &amp;#8220;top view&amp;#8221; orthographic projection.  &lt;tt class="docutils literal"&gt;op_angle&lt;/tt&gt; controls what angle the edges the pieces &amp;#8220;go up&amp;#8221; - it defaults to 45&amp;nbsp;degrees.&lt;/p&gt;
&lt;p&gt;Depending on your preferences you may want to change up your pawns look and/or the color of your piece&amp;nbsp;edges:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;dm_text.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;convex6&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;invert_colors.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;edge_color.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tan&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;edge_color.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tan&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepackr.default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piecepackr.cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;piecepackr.op_angle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piecepackr.op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5+1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4+1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="One can configure the appearance of the pawns and piece edges" src="https://trevorldavis.com/piecepackr/images/knitr/docs-3d-projections-oblique-pawn-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;One can configure the appearance of the pawns and piece&amp;nbsp;edges&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; can make an exact oblique projection under the same conditions it needs to do an exact orthographic projection (i.e. all pieces laid parallel/perpendicular to the&amp;nbsp;board).&lt;/p&gt;
&lt;div class="section" id="op-transform-helper-function"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;&lt;span class="quo"&gt;&amp;#8216;&lt;/span&gt;op_transform()&amp;#8217; helper&amp;nbsp;function&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To directly make oblique projection graphics with &lt;tt class="docutils literal"&gt;grid.piece()&lt;/tt&gt; the programmer needs to figure out what height (the &lt;tt class="docutils literal"&gt;z&lt;/tt&gt; argument) the various pieces are in relation to table and carefully arrange the &lt;tt class="docutils literal"&gt;grid.piece()&lt;/tt&gt; calls so the pieces on top and/or in front are drawn later.  An easier way to make oblique projection graphics is to use &lt;tt class="docutils literal"&gt;pmap_piece()&lt;/tt&gt; with the helper function &lt;tt class="docutils literal"&gt;op_transform()&lt;/tt&gt; as &lt;tt class="docutils literal"&gt;pmap_piece()&lt;/tt&gt;&amp;#8216;s &lt;tt class="docutils literal"&gt;trans&lt;/tt&gt; argument.  &lt;tt class="docutils literal"&gt;op_transform()&lt;/tt&gt; uses heuristics to make educated guesses about the height the game pieces are at and what order they should be drawn&amp;nbsp;in:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tibble&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;tibble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                     &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                     &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;135&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Using 'op_transform()' with 'pmap_piece()' to make educated oblique projection guesses" src="https://trevorldavis.com/piecepackr/images/knitr/docs-3d-projections-op-transform-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Using &amp;#8216;op_transform()&amp;#8217; with &amp;#8216;pmap_piece()&amp;#8217; to make educated oblique projection&amp;nbsp;guesses&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;tt class="docutils literal"&gt;op_transform()&lt;/tt&gt; currently uses the following heuristic to guess which game pieces&amp;nbsp;overlap:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;We &amp;#8220;bound&amp;#8221; each piece&amp;#8217;s shape with either a circle or a convex polygon (if the piece&amp;#8217;s shape is exactly a circle or a convex polygon this bound is&amp;nbsp;exact).&lt;/li&gt;
&lt;li&gt;If two pieces&amp;#8217; bounding circle/polygon overlap then we guess that the pieces overlap &lt;a class="footnote-reference" href="#overlap" id="footnote-reference-4"&gt;[3]&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Piece &amp;#8220;A&amp;#8220;&amp;#8216;s &amp;#8220;z&amp;#8221; value is estimated to be equal to the &amp;#8220;z&amp;#8221; value of the highest &amp;#8220;overlapping&amp;#8221; piece beneath &amp;#8220;A&amp;#8221; (let&amp;#8217;s call it &amp;#8220;B&amp;#8221;) plus half of &amp;#8220;B&amp;#8220;&amp;#8216;s depth and half of &amp;#8220;A&amp;#8220;&amp;#8216;s depth.  If there are no overlapping pieces beneath &amp;#8220;A&amp;#8221; its &amp;#8220;z&amp;#8221; value is just half of &amp;#8220;A&amp;#8220;&amp;#8216;s&amp;nbsp;depth.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;tt class="docutils literal"&gt;op_transform&lt;/tt&gt; currently uses the following heuristic to sort the order of drawing game&amp;nbsp;pieces:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Generalize each &amp;#8220;bounding box&amp;#8221; from the previous section into a &amp;#8220;bounding cube&amp;#8221; whose top is equal to the top of the game&amp;nbsp;piece.&lt;/li&gt;
&lt;li&gt;Piece&amp;#8217;s whose &amp;#8220;bounding cube&amp;#8221; top is higher (on &amp;#8220;z&amp;#8221; axis) are drawn later, for any tie those whose &amp;#8220;bounding cube&amp;#8221; top (&amp;#8220;y&amp;#8221; axis) is higher or lower (depending on the &amp;#8220;op_angle&amp;#8221;) is drawn later, and finally for any remaining tie those whose &amp;#8220;bounding cube&amp;#8221; is more left or right (depending on the &amp;#8220;op_angle&amp;#8221;) is drawn later &lt;a class="footnote-reference" href="#sorting" id="footnote-reference-5"&gt;[4]&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;table class="docutils footnote" frame="void" id="overlap" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-4"&gt;[3]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;For circles and convex polygons any overlap can inferred via an application of the Separating Axis Theorem.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="sorting" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-5"&gt;[4]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;In certain scenarios this may give the wrong ordering.  An example may be a really tall pawn next to a stack of tiles that altogether are shorter than the pawn.  For the common case of a single layer of tiles plus a single layer of pieces on top of the tiles this is very unlikely to have a false indentification.  If there is a false identification one can sometimes change the dimensions of the pieces or the &amp;#8220;op_angle&amp;#8221; value to get a &amp;#8220;correct&amp;#8221; ordering.  In an extreme case one can use tiles, coins, pawns, and dice all 1/2&amp;#8221; tall which should always render the correct ordering (assuming their &amp;#8220;z&amp;#8221; values were correctly estimated).&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="mixed-projections"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Mixed&amp;nbsp;Projections&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Technically since each &lt;tt class="docutils literal"&gt;grid.piece()&lt;/tt&gt; function can have its own &lt;tt class="docutils literal"&gt;op_scale&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;op_angle&lt;/tt&gt; arguments one can mix and match projections in a single&amp;nbsp;diagram:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;draw_3tiles&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;4-1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;draw_3tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_3tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_3tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;-90&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_3tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_3tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;45&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_3tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;135&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_3tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;225&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;draw_3tiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;-45&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="One can technically mix oblique projections within one diagram" src="https://trevorldavis.com/piecepackr/images/knitr/docs-3d-projections-mixed-projections-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;One can technically mix oblique projections within one&amp;nbsp;diagram&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="d-graphics-packages-rayrender-rayvertex-and-rgl"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;3D graphics packages: rayrender, rayvertex, and&amp;nbsp;rgl&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="rayrender-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;rayrender&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;&lt;cite&gt;piece()&lt;/cite&gt; added in piecepackr&amp;nbsp;v1.3.1.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;tt class="docutils literal"&gt;piece()&lt;/tt&gt; creates &lt;a class="reference external" href="https://cran.r-project.org/package=rayrender"&gt;rayrender&lt;/a&gt;&amp;nbsp;objects.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rayrender&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_four_field_kono&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepackr.cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu3d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;piecepackr.trans&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piece&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.98&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;150&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;scene&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Reduce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rayrender&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;add_object&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;png&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rayrender.png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;cairo&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;render_scene&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scene&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lookat&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lookfrom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;-2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;clamp_value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;invisible&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;dev.off&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;!-- .. --&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="3D render with the rayrender package" src="https://trevorldavis.com/piecepackr/images/knitr/rayrender.png" /&gt;
&lt;p class="caption"&gt;3D render with the rayrender&amp;nbsp;package&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="rayvertex-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;rayvertex&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;&lt;cite&gt;piece_mesh()&lt;/cite&gt; added in piecepackr&amp;nbsp;v1.9.1.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;tt class="docutils literal"&gt;piece_mesh()&lt;/tt&gt; creates &lt;a class="reference external" href="https://cran.r-project.org/package=rayvertex"&gt;rayvertex&lt;/a&gt;&amp;nbsp;objects.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rayvertex&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;warn.conflicts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# masks rayrender::r_obj&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_international_chess&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepackr.cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu3d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;round&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;joystick&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;piecepackr.trans&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piece_mesh&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.98&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;as_top&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;sphere_mesh&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;-1e3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1e3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;material&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;material_list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;diffuse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey40&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;scene&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Reduce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rayvertex&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;add_shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;init&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;png&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rayvertex.png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;cairo&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rayvertex&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;rasterize_scene&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scene&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lookat&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lookfrom&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;-16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                           &lt;/span&gt;&lt;span class="n"&gt;light_info&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;directional_light&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;-7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;intensity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;invisible&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;dev.off&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="3D render with the rayvertex package" src="https://trevorldavis.com/piecepackr/images/knitr/rayvertex.png" /&gt;
&lt;p class="caption"&gt;3D render with the rayvertex&amp;nbsp;package&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="rgl-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;rgl&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;&lt;cite&gt;piece3d()&lt;/cite&gt; added in piecepackr&amp;nbsp;v1.3.1.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;tt class="docutils literal"&gt;piece3d()&lt;/tt&gt; draws pieces using the &lt;a class="reference external" href="https://cran.r-project.org/package=rgl"&gt;rgl&lt;/a&gt; graphic system which leverages OpenGL and&amp;nbsp;WebGL.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;rgl&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;warn.conflicts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# masks rayrender::text3d&lt;/span&gt;

&lt;span class="nf"&gt;invisible&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rgl&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;open3d&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="n"&gt;rgl&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;view3d&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;phi&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;-30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;zoom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_four_field_kono&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepackr.cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu3d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;piecepackr.trans&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;piece3d&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.98&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;150&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="3D render with the rgl package" src="https://trevorldavis.com/piecepackr/images/knitr/rgl_snapshot.png" /&gt;
&lt;p class="caption"&gt;3D render with the rgl&amp;nbsp;package&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="parallel-projections-2"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;Parallel&amp;nbsp;projections&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It is also possible to do a &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Parallel_projection"&gt;parallel projection&lt;/a&gt; with the 3D graphics libraries &lt;a class="reference external" href="https://cran.r-project.org/package=rayrender"&gt;rayrender&lt;/a&gt;, &lt;a class="reference external" href="https://cran.r-project.org/package=rayvertex"&gt;rayvertex&lt;/a&gt;, and &lt;a class="reference external" href="https://cran.r-project.org/package=rgl"&gt;rgl&lt;/a&gt;:&lt;/p&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;rayrender&lt;/dt&gt;
&lt;dd&gt;Set &lt;cite&gt;fov = 0&lt;/cite&gt; in &lt;cite&gt;render_ao()&lt;/cite&gt; / &lt;cite&gt;render_preview&lt;/cite&gt; / &lt;cite&gt;render_scene()&lt;/cite&gt;.  Choose camera size/placement/direction&amp;nbsp;carefully.&lt;/dd&gt;
&lt;dt&gt;rayvertex&lt;/dt&gt;
&lt;dd&gt;Set &lt;cite&gt;fov = 0&lt;/cite&gt; in &lt;cite&gt;rasterize_lines()&lt;/cite&gt; / &lt;cite&gt;rasterize_scene()&lt;/cite&gt;.  Choose camera size/placement/direction&amp;nbsp;carefully.&lt;/dd&gt;
&lt;dt&gt;rgl&lt;/dt&gt;
&lt;dd&gt;Set &lt;cite&gt;view3d(fov = 0)&lt;/cite&gt;.  Choose polar coordinates&amp;nbsp;carefully.&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepackr-features"></category></entry><entry><title>Dingbats PnP</title><link href="https://trevorldavis.com/piecepackr/dingbats-pnp.html" rel="alternate"></link><published>2019-05-31T00:00:00-07:00</published><updated>2023-02-27T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-05-31:/piecepackr/dingbats-pnp.html</id><summary type="html">&lt;p class="first last"&gt;A demo of emulating of &lt;a class="reference external" href="https://boardgamegeek.com/user/DanielAjoy"&gt;Daniel Ajoy&lt;/a&gt;&amp;#8216;s Dingbats suited &lt;a class="reference external" href="https://boardgamegeek.com/filepage/91234/piecepack-design-variation"&gt;PiecePack Design Variation&lt;/a&gt; using &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;In 2013 &lt;a class="reference external" href="https://boardgamegeek.com/user/DanielAjoy"&gt;Daniel Ajoy&lt;/a&gt; released his &lt;a class="reference external" href="https://boardgamegeek.com/filepage/91234/piecepack-design-variation"&gt;PiecePack Design Variation&lt;/a&gt; under a &lt;a class="reference external" href="http://creativecommons.org/licenses/by/3.0"&gt;&lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt; 3.0&lt;/a&gt; license.  Besides using Dingbat suit symbols instead of the standard piecepack suits Daniel Ajoy&amp;#8217;s &amp;#8220;Dingbats&amp;#8221; piecepack had the following&amp;nbsp;features:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Uses a yellow suit instead of a black&amp;nbsp;suit&lt;/li&gt;
&lt;li&gt;The tile faces of two suits are &amp;#8216;white&amp;#8217; and two are&amp;nbsp;&amp;#8216;black&amp;#8217;&lt;/li&gt;
&lt;li&gt;Fronts of the tiles are divided into four&amp;nbsp;sectors&lt;/li&gt;
&lt;li&gt;The null and ace rank have distinctive&amp;nbsp;symbols&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more info about the design please read &lt;a class="reference external" href="https://boardgamegeek.com/user/DanielAjoy"&gt;Daniel Ajoy&lt;/a&gt;&amp;#8216;s description and design notes at &lt;a class="reference external" href="https://boardgamegeek.com/filepage/91234/piecepack-design-variation"&gt;https://boardgamegeek.com/filepage/91234/piecepack-design-variation&lt;/a&gt;.&lt;/p&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="&amp;quot;Homemade PiecePack&amp;quot; (https://boardgamegeek.com/image/1639074/piecepack) by Daniel Ajoy (https://boardgamegeek.com/user/DanielAjoy) / &amp;quot;CC BY-NC-SA 3.0&amp;quot; (http://creativecommons.org/licenses/by-nc-sa/3.0)." src="https://trevorldavis.com/share/piecepack/ajoy_dingbats.jpg" style="width: 80%;" /&gt;
&lt;p class="caption"&gt;&lt;a class="reference external" href="https://boardgamegeek.com/image/1639074/piecepack"&gt;Homemade PiecePack&lt;/a&gt; by &lt;a class="reference external" href="https://boardgamegeek.com/user/DanielAjoy"&gt;Daniel Ajoy&lt;/a&gt; / &lt;a class="reference external" href="http://creativecommons.org/licenses/by-nc-sa/3.0"&gt;&lt;span class="caps"&gt;CC&lt;/span&gt; &lt;span class="caps"&gt;BY&lt;/span&gt;-&lt;span class="caps"&gt;NC&lt;/span&gt;-&lt;span class="caps"&gt;SA&lt;/span&gt;&amp;nbsp;3.0&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The custom grob function in this article uses the function &lt;tt class="docutils literal"&gt;pp_shape()&lt;/tt&gt; which was introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.5.1&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;It is possible to emulate Ajoy&amp;#8217;s Dingbats &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; but in order to emulate his tile faces and null/ace rank symbols we&amp;#8217;ll need to write and use a custom &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;grob function&lt;/a&gt; in order to add some extra circles/stars on the tile faces and add an extra circle to his null/ace rank&amp;nbsp;symbols.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ajoyDingbatsGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as_pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;get_piece_opt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;back&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Background&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_bg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;1.13&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_bg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mat_width&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_bg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Gridlines, Mat&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gl_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;gridlines&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;gridline_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;gridline_lex&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;mat_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;mat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mat_width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;mat_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;outside_circle_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;circleGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;col2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;ifelse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;gp2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;col2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;inner_circle_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;circleGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;inner_circle_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grobTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;pp_shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;concave24&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.45&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                                          &lt;/span&gt;&lt;span class="n"&gt;vp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.47&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.47&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;circle_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grobTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outside_circle_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;inner_circle_grob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;circle_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;nullGrob&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Primary symbol&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_ps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_ps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;is.null&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%in%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;6&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u0285&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# &amp;quot;\u03b9&amp;quot;, &amp;quot;\u0196&amp;quot;, &amp;quot;\u0666&amp;quot;, &amp;quot;\u158d&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;gp_c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.95&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;c_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25ef&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grobTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Directional mark&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_dm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dm_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_dm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# Border&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gl_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;circle_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;ps_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;gTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;children&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;colors&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#00BFFF,#CD5C5C,#FFD700,#3CB371,white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;ps_color.s1.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_color.s4.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;gridline_color.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;mat_width.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_color.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u2744,\u273d,\u2720,\u27b9,&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.9,0.9,0.8,1.0,1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;6,\u0285,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.6,0.8,0.8,0.8,0.8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;misc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dm_text.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25b2&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Dejavu Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;grob_fn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;ajoyDingbatsGrob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ranks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;misc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dejavu_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from the font Dejavu Sans.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://dejavu-fonts.github.io/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://dejavu-fonts.github.io/License.html&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ajoy_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;\u25cf This piecepack emulates Daniel Ajoy\&amp;#39;s &amp;quot;Piecepack Design Variation&amp;quot;. CC BY 3.0.&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://boardgamegeek.com/filepage/91234/piecepack-design-variation&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://boardgamegeek.com/user/DanielAjoy&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttp://creativecommons.org/licenses/by/3.0&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;This piecepack emulates Daniel Ajoy\&amp;#39;s &amp;quot;Piecepack Design Variation&amp;quot; aka &amp;quot;Dingbats piecepack&amp;quot; which has the following features:&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf Uses a yellow suit instead of a black suit&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf The tile faces of two suits are &amp;#39;white&amp;#39; and two are &amp;#39;black&amp;#39;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf Fronts of the tiles are divided into four sectors&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf The null and ace rank have distinctive symbols&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf For more info see Daniel Ajoy&amp;#39;s description and design notes at&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://boardgamegeek.com/filepage/91234/piecepack-design-variation&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;
&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dejavu_credit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ajoy_credit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Dingbats piecepack (Dingbat suits)&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2020 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-3.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dingbats1_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dingbats1_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;dingbats1_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dingbats1_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of a 'Dingbats' piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dingbats-preview-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of a &amp;#8216;Dingbats&amp;#8217;&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;p id="dingbats2"&gt;Ajoy&amp;#8217;s &lt;a class="reference external" href="https://boardgamegeek.com/filepage/91234/piecepack-design-variation"&gt;PiecePack Design Variation&lt;/a&gt; PnP file also included a deck using the French suits.  Modifying the above &amp;#8220;Dingbats piecepack&amp;#8221; &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration list&lt;/a&gt; in order to build this deck is&amp;nbsp;straightforward.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dingbats1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#FF5F50,white,#8B795E,#999999,white&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u2666,\u2665,\u2663,\u2660,&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;NULL&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,darkred,black,black,black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_color.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_color.die_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color.die_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dm_color.matchstick_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color.matchstick_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color.pyramid_left&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color.pyramid_right&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color.s1.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color.s2.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color.s3.tile_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Dingbats piecepack (French suits)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dingbats2_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dingbats2_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;dingbats2_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dingbats2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dingbats2_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A 'Dingbats' style piecepack with French suits" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dingbats-preview2-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A &amp;#8216;Dingbats&amp;#8217; style piecepack with French&amp;nbsp;suits&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="print-and-play"></category></entry><entry><title>Orthodox PnP</title><link href="https://trevorldavis.com/piecepackr/orthodox-pnp.html" rel="alternate"></link><published>2019-05-26T00:00:00-07:00</published><updated>2023-02-27T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-05-26:/piecepackr/orthodox-pnp.html</id><summary type="html">&lt;p class="first last"&gt;For a number of reasons the &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/default-pnp.html"&gt;default&lt;/a&gt; piecepack made by &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; does not comply with the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a Piecepack&lt;/a&gt; standard.  But not to fear - one can easily &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configure&lt;/a&gt; a piecepack that looks like one of the original&amp;nbsp;piecepacks.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;For a number of reasons the &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/default-pnp.html"&gt;default&lt;/a&gt; piecepack made by &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; does not comply with the &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/Anatomy.html"&gt;Anatomy of a Piecepack&lt;/a&gt; standard.  But not to fear - one can easily &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configure&lt;/a&gt; a piecepack that looks like one of the original&amp;nbsp;piecepacks.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U0001f31e,\U0001f31c,\U0001f451,\u269c,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 🌞,🌜,👑,⚜,꩜&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox_ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,\uaa5c,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;use_suit_as_ace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily.r2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_cex.r2.matchstick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;saucer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text.saucer_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit_text.saucer_back&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;dm_text.saucer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;|&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_fontfamily.saucer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;dm_r.saucer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_color.saucer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;invert_colors.saucer_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;mat_width.saucer_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_color.saucer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;width.saucer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.saucer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;coin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dm_text.coin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;|&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;dm_fontfamily.coin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;dm_r.coin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="n"&gt;dm_color.coin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;die&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dm_text.die&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;dm_text.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;invert_colors.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;pyramids&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank_text.pyramid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;A,B,C,D,E,F&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;use_suit_as_ace.pyramid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;dm_t.pyramid_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;270&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_r.pyramid_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.28&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_cex.pyramid_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;dm_text.pyramid_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;|&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_fontfamily.pyramid_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;dm_color.pyramid_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_color.pyramid_left&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;ps_color.pyramid_right&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;ps_t.pyramid_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_r.pyramid_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.07&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_cex.pyramid_face&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;matchsticks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;invert_colors.matchstick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;use_suit_as_ace.matchstick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;dm_r.r1.matchstick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox_ranks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;saucer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;coin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="n"&gt;die&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pawn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pyramids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;matchsticks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from Google Noto Fonts. OFL 1.1.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.google.com/get/noto/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;This &amp;#39;orthodox&amp;#39; piecepack fully complies with the &amp;#39;Anatomy of a Piecepack&amp;#39; standard&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;
&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;
&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Orthodox piecepack (Green Crowns)&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Created in 2019 by Trevor L Davis.  No Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC0-1.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox1_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox1_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;orthodox1_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;orthodox1_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of an 'orthodox' piecepack made by piecepackr" src="https://trevorldavis.com/piecepackr/images/knitr/demos-orthodox-preview-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of an &amp;#8216;orthodox&amp;#8217; piecepack made by&amp;nbsp;piecepackr&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;orthodox2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,gold,darkblue,black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Orthodox piecepack (Gold Crowns)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox2_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orthodox2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox2_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;orthodox2_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;orthodox2_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="An 'orthodox' piecepack with gold crowns" src="https://trevorldavis.com/piecepackr/images/knitr/demos-orthodox-preview2-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;An &amp;#8216;orthodox&amp;#8217; piecepack with gold&amp;nbsp;crowns&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as.list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orthodox1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;♥,♠,♣,♦,\uaa5c&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1,1,1,1,0.9&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,black,darkred,black&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily.s5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Cham&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_text.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;NULL&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_cex.pawn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_text.saucer_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;NULL&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_cex.saucer_face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;French-suited piecepack (Orthodox)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;A French-suited piecepack that otherwise complies with the &amp;#39;Anatomy of a Piecepack&amp;#39; standard&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;orthodox3_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orthodox3_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;orthodox3_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;orthodox3_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="French-suited piecepack in an orthodox style" src="https://trevorldavis.com/piecepackr/images/knitr/demos-orthodox-preview3-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;French-suited piecepack in an orthodox&amp;nbsp;style&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="print-and-play"></category></entry><entry><title>Backgammon</title><link href="https://trevorldavis.com/piecepackr/backgammon.html" rel="alternate"></link><published>2019-05-17T00:00:00-07:00</published><updated>2025-01-13T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-05-17:/piecepackr/backgammon.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/backgammon.pdf"&gt;Backgammon&lt;/a&gt; is one of the oldest known board games. Like other classic board games like checkers and chess it is also possible to play with a single &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt;.  We illustrate the starting diagram for playing a game of backgammon with a piecepack using a paired suit-color&amp;nbsp;design.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/backgammon.pdf"&gt;Backgammon&lt;/a&gt; is one of the oldest known board games. Like other classic board games like checkers and chess it is also possible to play with a single &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt;.  Below is a starting diagram for playing a game of backgammon with a piecepack using a paired suit-color&amp;nbsp;design.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;🌞,🌜,👑,⚜,꩜&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#D55E00,#000000,#F0E442,#0072B2,#009E73&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#000000,#D55E00,#0072B2,#F0E442,white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;annotation_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;#E69F00&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_backgammon&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Starting diagram for a game of backgammon" src="https://trevorldavis.com/piecepackr/images/knitr/games-backgammon-starting-diagram-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Starting diagram for a game of&amp;nbsp;backgammon&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepack-games"></category></entry><entry><title>Tablut</title><link href="https://trevorldavis.com/piecepackr/tablut.html" rel="alternate"></link><published>2019-05-17T00:00:00-07:00</published><updated>2025-01-13T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-05-17:/piecepackr/tablut.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/tablut.pdf"&gt;Tablut&lt;/a&gt; is a historical (hnefa)tafl game played by the Sámi people until at least the 1700s whose rules were written down by the Swedish naturalist Linnaeus in 1732.  Below is a starting diagram for playing a game of Tablut with a&amp;nbsp;piecepack.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/tablut.pdf"&gt;Tablut&lt;/a&gt; is a historical (hnefa)tafl game played by the Sámi people until at least the 1700s whose rules were written down by the Swedish naturalist Linnaeus in 1732.  Below is a starting diagram for playing a game of Tablut with a&amp;nbsp;piecepack.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;🌞,🌜,👑,⚜,꩜&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_width.tile_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mat_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;invert_colors.suited&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;edge_color.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tan&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;edge_color.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tan&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;shape.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;convex6&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dm_text.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;piecepack_tablut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;die_width&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Starting diagram for a game of Tablut" src="https://trevorldavis.com/piecepackr/images/knitr/games-tablut-starting-diagram-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Starting diagram for a game of&amp;nbsp;Tablut&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;And here is animation of a game of&amp;nbsp;Tablut:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;read_ppn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;system.file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn/tablut.ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))[[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="nf"&gt;animate_game&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;../images/knitr/tablut.gif&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;n_transitions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;n_pauses&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fps&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Animation of a Tablut game" src="https://trevorldavis.com/piecepackr/images/knitr/tablut.gif" /&gt;
&lt;p class="caption"&gt;Animation of a Tablut&amp;nbsp;game&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepack-games"></category></entry><entry><title>Cribbage</title><link href="https://trevorldavis.com/piecepackr/cribbage.html" rel="alternate"></link><published>2019-05-16T00:00:00-07:00</published><updated>2025-01-13T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-05-16:/piecepackr/cribbage.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/cribbage.pdf"&gt;Cribbage&lt;/a&gt; is a popular two-person card game that usually requires a special cribbage board to keep score. Below is a diagram of using a &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; to make an effective cribbage&amp;nbsp;board.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;&lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/rules/cribbage.pdf"&gt;Cribbage&lt;/a&gt; is a popular two-person card game that usually requires a special cribbage board to keep score. Below is a diagram of using a &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; to make an effective cribbage&amp;nbsp;board.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;piecepack_cribbage_board&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;textGrob_cribbage_board&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_colors&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_colors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit_colors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_colors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit_colors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grobTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;31&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;31&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;grid.draw&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;textGrob_cribbage_board&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;get_suit_color&lt;/span&gt;&lt;span class="p"&gt;()))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Using a piecepack as a Cribbage Board" src="https://trevorldavis.com/piecepackr/images/knitr/games-cribbage-starting-diagram-1.png" style="width: 30%;" /&gt;
&lt;p class="caption"&gt;Using a piecepack as a Cribbage&amp;nbsp;Board&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepack-games"></category></entry><entry><title>Custom grob functions</title><link href="https://trevorldavis.com/piecepackr/custom-grob-functions.html" rel="alternate"></link><published>2019-04-23T00:00:00-07:00</published><updated>2020-08-22T00:00:00-07:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-04-23:/piecepackr/custom-grob-functions.html</id><summary type="html">&lt;p class="first last"&gt;Although using &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration lists&lt;/a&gt; provide a powerful high-level way to alter the appearance of your &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; graphics &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; also allows one to modify the appearance of your piecepack graphics even more with the use of custom grob&amp;nbsp;functions.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#intro" id="toc-entry-1"&gt;Intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#examples" id="toc-entry-2"&gt;Examples&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#checkered-tile-backs" id="toc-entry-3"&gt;Checkered Tile&amp;nbsp;Backs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#pawn-belts-with-three-suit-symbols" id="toc-entry-4"&gt;Pawn Belts with Three Suit&amp;nbsp;Symbols&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#low-level-utilities" id="toc-entry-5"&gt;Low-level&amp;nbsp;utilities&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="intro"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Intro&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;The custom grob functions in this article use the function &lt;tt class="docutils literal"&gt;pp_shape()&lt;/tt&gt; which was introduced in &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;nbsp;v1.5.1&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Although using &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration lists&lt;/a&gt; provide a powerful high-level way to alter the appearance of your &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; graphics &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; also allows one to modify the appearance of your piecepack graphics even more with the use of custom grob&amp;nbsp;functions.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="examples"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Examples&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="checkered-tile-backs"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Checkered Tile&amp;nbsp;Backs&lt;/a&gt;&lt;/h3&gt;
&lt;div class="admonition warning"&gt;
&lt;p class="first admonition-title"&gt;Warning&lt;/p&gt;
&lt;p class="last"&gt;Some people (including the inventor James &amp;#8220;Kyle&amp;#8221; Droscha) feel that &lt;a class="reference external" href="http://www.ludism.org/ppwiki/DesignFAQ"&gt;adding checkers to the back of one&amp;#8217;s piecepack is a bad idea&lt;/a&gt;, in particular they leak information about the direction of the tile&amp;nbsp;face.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The default grob function doesn&amp;#8217;t support adding checkers to the back of your piecepack tiles but &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; does include a utility function &lt;tt class="docutils literal"&gt;checkersGrob&lt;/tt&gt; that can be used via a custom grob&amp;nbsp;function:&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;checkeredPieceGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as_pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;get_piece_opt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;back&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;checkers_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;checkers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;gridline_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;checkers_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;gTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;children&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grob_fn.tile_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;checkeredPieceGrob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Custom grob function to use checkers on the tile back" src="https://trevorldavis.com/piecepackr/images/knitr/docs-custom_grob_fn-checker_back-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Custom grob function to use checkers on the tile&amp;nbsp;back&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The above custom grob function was written fairly generally so it can also support &lt;tt class="docutils literal"&gt;convex#&lt;/tt&gt; polygons (i.e. &amp;#8220;Hexpack&amp;#8221;&amp;nbsp;tiles):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grob_fn.tile_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;checkeredPieceGrob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;convex6&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;shape.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;convex3&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape.saucer&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;convex3&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="'checkersGrob' even works on hexagon shaped tiles" src="https://trevorldavis.com/piecepackr/images/knitr/docs-custom_grob_fn-hexpack_checker_back-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;&lt;span class="quo"&gt;&amp;#8216;&lt;/span&gt;checkersGrob&amp;#8217; even works on hexagon shaped&amp;nbsp;tiles&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="pawn-belts-with-three-suit-symbols"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Pawn Belts with Three Suit&amp;nbsp;Symbols&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The pawn belts in Jonathan Dietrich&amp;#8217;s &lt;a class="reference external" href="https://web.archive.org/web/2016/http://www.piecepack.org/JCD.html"&gt;&lt;span class="caps"&gt;JCD&lt;/span&gt; piecepack&lt;/a&gt; and Chris Sakkas&amp;#8217; &lt;a class="reference external" href="http://fossilbank.wikidot.com/local--files/entry:piecepack/NINEPIECEPACK.svg"&gt;Nine-Suit Piecepack&lt;/a&gt; both feature three suit symbols but it is difficult to replicate such a belt with &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s default draw function since it only supports one primary symbol and one directional mark &lt;a class="footnote-reference" href="#footnote-1" id="footnote-reference-1"&gt;[*]&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;pawnBeltGrob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;as_pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;get_piece_opt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;shape_r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;back&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;center_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rectGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;ps_grob1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_ps1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gp_ps2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontsize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontfamily&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_fontface&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;ps_grob2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;textGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ps_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_ps2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="nf"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;background_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;center_grob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_grob1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ps_grob2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_grob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;gTree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;children&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grob_fn.belt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;pawnBeltGrob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;belt_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Pawn belts with three suit symbols" src="https://trevorldavis.com/piecepackr/images/knitr/docs-custom_grob_fn-three_suited_belt-1.png" /&gt;
&lt;p class="caption"&gt;Pawn belts with three suit&amp;nbsp;symbols&lt;/p&gt;
&lt;/div&gt;
&lt;table class="docutils footnote" frame="void" id="footnote-1" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label" /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[*]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Technically if awkwardly you could replicate it by customizing the &lt;tt class="docutils literal"&gt;mat&lt;/tt&gt; on the belt and putting two suit symbols separated by a bunch of whitespace as the directional mark symbols but the amount of whitespace needed would vary with the font and the fontsize so not a general solution and would require trial and error.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="low-level-utilities"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Low-level&amp;nbsp;utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; comes with several utility functions that can aid in the writing of custom grob functions.  For more documentation you can use the &lt;tt class="docutils literal"&gt;help&lt;/tt&gt; function:&lt;/p&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;help&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pp_shape&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;help&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pp_utils&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;In order to draw custom grob functions it may also be helpful to learn more about &lt;a class="reference external" href="https://www.rdocumentation.org/packages/grid"&gt;grid&lt;/a&gt;&amp;#8216;s &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepackr-features"></category></entry><entry><title>Configuration lists</title><link href="https://trevorldavis.com/piecepackr/configuration-lists.html" rel="alternate"></link><published>2019-04-17T00:00:00-07:00</published><updated>2023-03-20T00:00:00-07:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-04-17:/piecepackr/configuration-lists.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; allows one to alter the appearance of one&amp;#8217;s board game pieces through the use of configuration&amp;nbsp;lists.&lt;/p&gt;
</summary><content type="html">&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#intro" id="toc-entry-1"&gt;Intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#configuration-cascading" id="toc-entry-2"&gt;Configuration&amp;nbsp;cascading&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#table-of-configuration-list-styles" id="toc-entry-3"&gt;Table of configuration list&amp;nbsp;styles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#configuration-list-r6-object" id="toc-entry-4"&gt;Configuration List R6&amp;nbsp;Object&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#storing-sharing-configuration-lists" id="toc-entry-5"&gt;Storing/sharing configuration&amp;nbsp;lists&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="intro"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Intro&lt;/a&gt;&lt;/h2&gt;
&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; allows one to alter the appearance of one&amp;#8217;s board game pieces through the use of configuration lists.  Here is an&amp;nbsp;example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="n"&gt;invert_colors.suited&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U0001f31e,\U0001f31c,\U0001f451,\u269c,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 🌞,🌜,👑,⚜,꩜&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;traditional_ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;use_suit_as_ace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,a,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;traditional_ranks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;gp_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fontface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;bold&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf::piecepack_preview() |&amp;gt; pmap_piece()&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pushViewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.43&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;popViewport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;grid.text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf::piecepack_preview() |&amp;gt; pmap_piece(cfg=cfg)&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gp_text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pushViewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.43&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;popViewport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Configuration list example" src="https://trevorldavis.com/piecepackr/images/knitr/docs-configuration-example-1.png" style="width: 90%;" /&gt;
&lt;p class="caption"&gt;Configuration list&amp;nbsp;example&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;There are lot more examples of customizing piecepack piece appearances with configuration lists in the &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/tag/print-and-play.html"&gt;Print &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Play demos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Although one can further customize the appearance of one&amp;#8217;s board game pieces through the use of &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;custom grob functions&lt;/a&gt; the default &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; grob function uses the configuration list to determine a board game component&amp;#8217;s shape, &amp;#8220;primary&amp;#8221; symbol,&amp;#8221;directional mark&amp;#8221; symbol, and gridlines (if any).
This program uses the abstraction that every board game component has a &amp;#8220;component_side&amp;#8221; name (like &lt;tt class="docutils literal"&gt;belt_face&lt;/tt&gt;), a suit, a rank, a primary symbol, a directional mark symbol, and embellishments like border lines, grid lines, and padding.  On top of the normal &amp;#8220;suited&amp;#8221; piecepack suits this program also recognizes an extra &amp;#8220;unsuit&amp;#8221; suit which is used to configure &amp;#8220;neutral&amp;#8221; components like tile backs and coin faces.  Although the primary and directional mark symbols can be configured directly (i.e. &lt;tt class="docutils literal"&gt;tile_face.ps_fontsize&lt;/tt&gt;) they are often configured indirectly by specifying various &amp;#8220;suit&amp;#8221; and &amp;#8220;rank&amp;#8221; symbol configurations (i.e. &lt;tt class="docutils literal"&gt;rank_cex&lt;/tt&gt;).&lt;/p&gt;
&lt;p&gt;Configurations are &lt;em&gt;often&lt;/em&gt; allowed to be comma-separated to be able to specify different values for different suits or ranks e.g. &lt;tt class="docutils literal"&gt;background_color=white&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;background_color=pink,grey,grey,pink,white&lt;/tt&gt; (note how the last [5th] element specifies that the &amp;#8220;unsuit&amp;#8221; background color should be&amp;nbsp;&amp;#8220;white&amp;#8221;).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="configuration-cascading"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Configuration&amp;nbsp;cascading&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The configurations in this program &amp;#8220;cascade&amp;#8221; (sort of like in &amp;#8220;Cascading Style Sheets&amp;#8221;).  A style configuration has the following&amp;nbsp;format:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
style_name(.suit)(.rank)(.component)
&lt;/pre&gt;
&lt;p&gt;The configuration &amp;#8220;cascade&amp;#8221; priorities are as&amp;nbsp;follows:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Direct styles have priority over indirect styles e.g. &lt;tt class="docutils literal"&gt;dm_text&lt;/tt&gt; has priority over &lt;tt class="docutils literal"&gt;suit_text.tile_face&lt;/tt&gt; for which symbol is used in the corner of the tile face and in turn &lt;tt class="docutils literal"&gt;suit_fontfamily&lt;/tt&gt; has priority over &lt;tt class="docutils literal"&gt;fontfamily&lt;/tt&gt; for which fonts are used on the coin back.  This is because indirect styles are only used to a generate reasonable default if a direct style cannot be&amp;nbsp;found.&lt;/li&gt;
&lt;li&gt;Then if there is a tie &lt;tt class="docutils literal"&gt;.component_side&lt;/tt&gt; has priority over &lt;tt class="docutils literal"&gt;.component&lt;/tt&gt; which has priority over no component specification e.g. &lt;tt class="docutils literal"&gt;dm_text.saucer_back&lt;/tt&gt; has priority over &lt;tt class="docutils literal"&gt;dm_text.saucer&lt;/tt&gt; which has priority over just &lt;tt class="docutils literal"&gt;dm_text&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Then if there is still a tie &lt;tt class="docutils literal"&gt;.r#&lt;/tt&gt; has priority over no rank specification e.g. &lt;tt class="docutils literal"&gt;invert_colors.r1&lt;/tt&gt; has priority over &lt;tt class="docutils literal"&gt;invert_colors&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Then if there is still a tie &lt;tt class="docutils literal"&gt;.s#&lt;/tt&gt; has priority over &lt;tt class="docutils literal"&gt;.suited&lt;/tt&gt; / &lt;tt class="docutils literal"&gt;.unsuited&lt;/tt&gt; which has priority over no suit specification e.g. &lt;tt class="docutils literal"&gt;invert_colors.s2&lt;/tt&gt; has priority over &lt;tt class="docutils literal"&gt;invert_colors.suited&lt;/tt&gt; has priority over just &lt;tt class="docutils literal"&gt;invert_colors&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="table-of-configuration-list-styles"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Table of configuration list&amp;nbsp;styles&lt;/a&gt;&lt;/h2&gt;
&lt;table border="1" class="docutils"&gt;
&lt;caption&gt;Configuration list styles&lt;/caption&gt;
&lt;colgroup&gt;
&lt;col width="20%" /&gt;
&lt;col width="40%" /&gt;
&lt;col width="30%" /&gt;
&lt;col width="10%" /&gt;
&lt;/colgroup&gt;
&lt;thead valign="bottom"&gt;
&lt;tr&gt;&lt;th class="head"&gt;name&lt;/th&gt;
&lt;th class="head"&gt;description&lt;/th&gt;
&lt;th class="head"&gt;indirect setters&lt;/th&gt;
&lt;th class="head"&gt;comma-separated&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;ps_text&lt;/td&gt;
&lt;td&gt;&amp;#8220;primary symbol&amp;#8221; text&lt;/td&gt;
&lt;td&gt;suit_text, rank_text, use_suit_as_ace&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ps_fontface&lt;/td&gt;
&lt;td&gt;fontface of &amp;#8220;primary symbol&amp;#8221; symbol&lt;/td&gt;
&lt;td&gt;suit_fontface, rank_fontface, fontface, use_suit_as_ace&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ps_fontfamily&lt;/td&gt;
&lt;td&gt;font of &amp;#8220;primary symbol&amp;#8221; symbol&lt;/td&gt;
&lt;td&gt;suit_fontfamily, rank_fontfamily, fontfamily, use_suit_as_ace&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ps_fontsize&lt;/td&gt;
&lt;td&gt;fontsize of &amp;#8220;primary symbol&amp;#8221; symbol&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ps_cex&lt;/td&gt;
&lt;td&gt;Multiplier to apply to the &amp;#8220;primary symbol&amp;#8221; fontsize (cumulative with &lt;tt class="docutils literal"&gt;cex&lt;/tt&gt;)&lt;/td&gt;
&lt;td&gt;suit_cex, rank_cex, use_suit_as_ace&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ps_t&lt;/td&gt;
&lt;td&gt;Angle (in degrees) of polar coordinates of &amp;#8220;primary symbol&amp;#8221; (from center)&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ps_r&lt;/td&gt;
&lt;td&gt;Radius from center (relative units) of polar coordinates of &amp;#8220;primary symbol&amp;#8221;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ps_color&lt;/td&gt;
&lt;td&gt;Color of &amp;#8220;primary symbol&amp;#8221;&lt;/td&gt;
&lt;td&gt;suit_color, background_color, invert_colors&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dm_text&lt;/td&gt;
&lt;td&gt;&amp;#8220;directional mark&amp;#8221; text&lt;/td&gt;
&lt;td&gt;suit_text&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dm_fontface&lt;/td&gt;
&lt;td&gt;font of &amp;#8220;directional mark&amp;#8221;&lt;/td&gt;
&lt;td&gt;suit_fontface, fontface&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dm_fontfamily&lt;/td&gt;
&lt;td&gt;font of &amp;#8220;directional mark&amp;#8221;&lt;/td&gt;
&lt;td&gt;suit_fontfamily, fontfamily&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dm_fontsize&lt;/td&gt;
&lt;td&gt;fontsize of &amp;#8220;directional mark&amp;#8221;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dm_cex&lt;/td&gt;
&lt;td&gt;Multiplier to apply to the &amp;#8220;directional mark&amp;#8221; fontsize (cumulative with &lt;tt class="docutils literal"&gt;cex&lt;/tt&gt;)&lt;/td&gt;
&lt;td&gt;suit_cex&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dm_t&lt;/td&gt;
&lt;td&gt;Angle (in degrees) of polar coordinates of &amp;#8220;directional mark&amp;#8221; symbol (from center)&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dm_r&lt;/td&gt;
&lt;td&gt;Radius from center (relative units) of polar coordinates of &amp;#8220;directional mark&amp;#8221;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dm_color&lt;/td&gt;
&lt;td&gt;Color of &amp;#8220;directional mark&amp;#8221; symbol&lt;/td&gt;
&lt;td&gt;suit_color, background_color, invert_colors&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;shape&lt;/td&gt;
&lt;td&gt;Shape of component: either &lt;tt class="docutils literal"&gt;rect&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;circle&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;halma&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;kite&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;pyramid&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;concave#&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;convex#&lt;/tt&gt; where &lt;tt class="docutils literal"&gt;#&lt;/tt&gt; is the number of outside polygon vertices&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;shape_t&lt;/td&gt;
&lt;td&gt;If shape is &lt;tt class="docutils literal"&gt;concave#&lt;/tt&gt; or &lt;tt class="docutils literal"&gt;convex#&lt;/tt&gt; then angle of first vertex (in degrees) of the polygon&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;shape_r&lt;/td&gt;
&lt;td&gt;If shape is &lt;tt class="docutils literal"&gt;concave#&lt;/tt&gt; then how far from the center are the inner vertices (from 0 to 0.5)&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;background_color&lt;/td&gt;
&lt;td&gt;Background color of the component&lt;/td&gt;
&lt;td&gt;suit_color, invert_colors&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;invert_colors&lt;/td&gt;
&lt;td&gt;Should we switch the background color with the suit color?&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;border_color&lt;/td&gt;
&lt;td&gt;Color of the border of the component&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;border_lex&lt;/td&gt;
&lt;td&gt;Multiplier to apply to the default border line width&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;gridline_color&lt;/td&gt;
&lt;td&gt;Color of the gridlines&lt;/td&gt;
&lt;td&gt;suit_color, background_color, invert_colors&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;gridline_lex&lt;/td&gt;
&lt;td&gt;Multiplier to apply to the default grid line width&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;edge_color&lt;/td&gt;
&lt;td&gt;Which color to use for the edge of the piece when
drawn with an oblique projection.&lt;/td&gt;
&lt;td&gt;suit_color, background_color&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;annotation_color&lt;/td&gt;
&lt;td&gt;What color to suggest for annotating graphics&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mat_color&lt;/td&gt;
&lt;td&gt;Color of the &amp;#8220;matting&amp;#8221;&lt;/td&gt;
&lt;td&gt;suit_color, background_color, invert_colors&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mat_width&lt;/td&gt;
&lt;td&gt;Width of the &amp;#8220;matting&amp;#8221; (from 0.0 to 1.0)&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;padding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;suit_text&lt;/td&gt;
&lt;td&gt;Suit symbols to use as &amp;#8220;primary&amp;#8221; symbol or &amp;#8220;directional mark&amp;#8221;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;suit_fontface&lt;/td&gt;
&lt;td&gt;Font(s) of the suit symbols&lt;/td&gt;
&lt;td&gt;fontface&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;suit_fontfamily&lt;/td&gt;
&lt;td&gt;Font(s) of the suit symbols&lt;/td&gt;
&lt;td&gt;fontfamily&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;suit_cex&lt;/td&gt;
&lt;td&gt;Multiplier to apply to the suit symbols fontsize&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;suit_color&lt;/td&gt;
&lt;td&gt;Suit colors&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rank_text&lt;/td&gt;
&lt;td&gt;Rank symbols to use as &amp;#8220;primary&amp;#8221; symbol&lt;/td&gt;
&lt;td&gt;suit_text, use_suit_as_ace&lt;/td&gt;
&lt;td&gt;rank&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rank_fontface&lt;/td&gt;
&lt;td&gt;Font(s) of the rank symbols&lt;/td&gt;
&lt;td&gt;suit_fontface, use_suit_as_ace, fontface&lt;/td&gt;
&lt;td&gt;rank&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rank_fontfamily&lt;/td&gt;
&lt;td&gt;Font(s) of the rank symbols&lt;/td&gt;
&lt;td&gt;suit_fontfamily, use_suit_as_ace, fontfamily&lt;/td&gt;
&lt;td&gt;rank&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rank_cex&lt;/td&gt;
&lt;td&gt;Multiplier to apply to the rank symbols fontsize&lt;/td&gt;
&lt;td&gt;suit_cex, use_suit_as_ace&lt;/td&gt;
&lt;td&gt;rank&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;use_suit_as_ace&lt;/td&gt;
&lt;td&gt;Boolean for whether the suit symbol should be used for the &amp;#8216;ace&amp;#8217; rank&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;cex&lt;/td&gt;
&lt;td&gt;Multiplier to apply to all the fontsizes&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fontfamily&lt;/td&gt;
&lt;td&gt;Default font &amp;#8216;family&amp;#8217;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fontface&lt;/td&gt;
&lt;td&gt;Default font &amp;#8216;face&amp;#8217;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;n_ranks&lt;/td&gt;
&lt;td&gt;Number of ranks&lt;/td&gt;
&lt;td&gt;rank_text&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;n_suits&lt;/td&gt;
&lt;td&gt;Number of suits&lt;/td&gt;
&lt;td&gt;suit_text&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;coin_arrangement&lt;/td&gt;
&lt;td&gt;Number of degrees the direction of the bottom of the coin differs from top of coin&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;die_arrangement&lt;/td&gt;
&lt;td&gt;Arrangement of dice (for use in &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/3d-projections.html"&gt;3D projections&lt;/a&gt; and paper &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/pages/print-and-play-pdfs.html"&gt;Print &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Play&lt;/a&gt; arrangements).  Either &lt;tt class="docutils literal"&gt;&amp;quot;counter_up&amp;quot;&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;&amp;quot;counter_down&amp;quot;&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;&amp;quot;opposites_sum_to_5&amp;quot;&lt;/tt&gt;, or (a comma-separated string of) the integers &lt;tt class="docutils literal"&gt;1&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;2&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;3&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;4&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;5&lt;/tt&gt;, and &lt;tt class="docutils literal"&gt;6&lt;/tt&gt; (in any order) with each integer optionally followed by &lt;tt class="docutils literal"&gt;^&lt;/tt&gt; (default), &lt;tt class="docutils literal"&gt;&amp;lt;&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;v&lt;/tt&gt;, or &lt;tt class="docutils literal"&gt;&amp;gt;&lt;/tt&gt;.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;width&lt;/td&gt;
&lt;td&gt;Width of component in inches&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;height&lt;/td&gt;
&lt;td&gt;Height of component in inches&lt;/td&gt;
&lt;td&gt;width&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;depth&lt;/td&gt;
&lt;td&gt;Depth of the component in inches&lt;/td&gt;
&lt;td&gt;width&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;grob_fn&lt;/td&gt;
&lt;td&gt;Which &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/custom-grob-functions.html"&gt;grob function&lt;/a&gt; to use to make a 2D &lt;tt class="docutils literal"&gt;grob&lt;/tt&gt; of the game piece.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;grob_with_bleed_fn&lt;/td&gt;
&lt;td&gt;Which function to use to make a &lt;tt class="docutils literal"&gt;grob&lt;/tt&gt; of the game piece with a &amp;#8220;bleed&amp;#8221;.
Introduced in v1.10.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;op_grob_fn&lt;/td&gt;
&lt;td&gt;Which function to use to make a 3D &lt;tt class="docutils literal"&gt;grob&lt;/tt&gt; of the game piece
when the piece is drawn with an &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/3d-projections.html"&gt;oblique projection&lt;/a&gt;.
Introduced in v1.3.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;obj_fn&lt;/td&gt;
&lt;td&gt;Which function to use to save Wavefront &lt;span class="caps"&gt;OBJ&lt;/span&gt; file of the game piece
(which is used by default &lt;tt class="docutils literal"&gt;piece()&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;piece3d()&lt;/tt&gt; functions).
Introduced in v1.4.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rayrender_fn&lt;/td&gt;
&lt;td&gt;Which function to use to create game pieces for use with rayrender graphic system (via &lt;tt class="docutils literal"&gt;piece()&lt;/tt&gt; function).
Introduced in v1.4.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rayvertex_fn&lt;/td&gt;
&lt;td&gt;Which function to use to create game pieces for use with rayvertex graphic system (via &lt;tt class="docutils literal"&gt;piece_mesh()&lt;/tt&gt; function).
Introduced in v1.9.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rgl_fn&lt;/td&gt;
&lt;td&gt;Which function to use to draw game pieces in rgl graphic system (via &lt;tt class="docutils literal"&gt;piece3d()&lt;/tt&gt; function).
Introduced in v1.4.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;title&lt;/td&gt;
&lt;td&gt;Title of the piecepack&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;description&lt;/td&gt;
&lt;td&gt;Description of the piecepack&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;credit&lt;/td&gt;
&lt;td&gt;Additional credits&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;copyright&lt;/td&gt;
&lt;td&gt;Additional copyrights&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;spdx_id&lt;/td&gt;
&lt;td&gt;[&lt;span class="caps"&gt;SPDX&lt;/span&gt; Identifier](&lt;a class="reference external" href="https://spdx.org/licenses/"&gt;https://spdx.org/licenses/&lt;/a&gt;) for the graphical design license.  Introduced in v1.10.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;lacks_rank&lt;/td&gt;
&lt;td&gt;Which &amp;#8220;piece_side&amp;#8220;&amp;#8216;s should we assume don&amp;#8217;t vary by rank.  Introduced in v1.7.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;lacks_suit&lt;/td&gt;
&lt;td&gt;Which &amp;#8220;piece_side&amp;#8220;&amp;#8216;s should we assume don&amp;#8217;t vary by suit.  Introduced in v1.7.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;shadow_fn&lt;/td&gt;
&lt;td&gt;Which function to use to make a &lt;tt class="docutils literal"&gt;grob&lt;/tt&gt; of the edges of the game piece
when the piece is drawn with a 3D oblique projection.
Deprecated in v1.3 (use &lt;tt class="docutils literal"&gt;op_grob_fn&lt;/tt&gt; instead).
Removed in v1.10.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="configuration-list-r6-object"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Configuration List R6&amp;nbsp;Object&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you will be drawing lots of piecepack images you should use the &lt;tt class="docutils literal"&gt;pp_cfg&lt;/tt&gt; function to create a configuration list R6 object.  It (on-the-fly) builds a cache so it really speeds up future component&amp;nbsp;drawing.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="storing-sharing-configuration-lists"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;Storing/sharing configuration&amp;nbsp;lists&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;One can export configuration lists using R&amp;#8217;s &lt;tt class="docutils literal"&gt;RData&lt;/tt&gt; binary format and the &lt;tt class="docutils literal"&gt;save&lt;/tt&gt; command and re-load them back in with the &lt;tt class="docutils literal"&gt;load&lt;/tt&gt; command.  Simple configuration lists can alternatively be stored in plaintext using formats like &lt;span class="caps"&gt;JSON&lt;/span&gt; (i.e. via the &lt;tt class="docutils literal"&gt;jsonlite&lt;/tt&gt; package).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;my_cfg.RData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;my_cfg.RData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This website offers for download &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/share/demo_cfgs.RData"&gt;demo_cfgs.RData&lt;/a&gt; which contains every &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/tag/print-and-play.html"&gt;Print &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Play demos&lt;/a&gt; configuration&amp;nbsp;list.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;download.file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;https://trevorldavis.com/piecepackr/share/demo_cfgs.RData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;new.env&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;demo_cfgs.RData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;names&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;pre class="literal-block"&gt;
##  [1] &amp;quot;chess5_bleed&amp;quot;        &amp;quot;dual4_bleed&amp;quot;         &amp;quot;default1_bleed&amp;quot;
##  [4] &amp;quot;dingbats1_borders&amp;quot;   &amp;quot;chess1_borders&amp;quot;      &amp;quot;orthodox3_bleed&amp;quot;
##  [7] &amp;quot;zodiac_cn2_bleed&amp;quot;    &amp;quot;reversi1_bleed&amp;quot;      &amp;quot;rainbow2_cutlines&amp;quot;
## [10] &amp;quot;orthodox2_cutlines&amp;quot;  &amp;quot;dual3_cutlines&amp;quot;      &amp;quot;dingbats2_bleed&amp;quot;
## [13] &amp;quot;dual3_bleed&amp;quot;         &amp;quot;rainbow1_cutlines&amp;quot;   &amp;quot;default1_borders&amp;quot;
## [16] &amp;quot;reversi1_cutlines&amp;quot;   &amp;quot;default1_cutlines&amp;quot;   &amp;quot;dingbats1_cutlines&amp;quot;
## [19] &amp;quot;chess5_cutlines&amp;quot;     &amp;quot;dual4_cutlines&amp;quot;      &amp;quot;zodiac_cn2_cutlines&amp;quot;
## [22] &amp;quot;dingbats1_bleed&amp;quot;     &amp;quot;dual2_bleed&amp;quot;         &amp;quot;dual6_bleed&amp;quot;
## [25] &amp;quot;chess2_bleed&amp;quot;        &amp;quot;orthodox2_bleed&amp;quot;     &amp;quot;chess3_bleed&amp;quot;
## [28] &amp;quot;orthodox3_cutlines&amp;quot;  &amp;quot;dingbats2_borders&amp;quot;   &amp;quot;orthodox3_borders&amp;quot;
## [31] &amp;quot;chess1_cutlines&amp;quot;     &amp;quot;orthodox2_borders&amp;quot;   &amp;quot;dingbats2_cutlines&amp;quot;
## [34] &amp;quot;chess4_cutlines&amp;quot;     &amp;quot;dual5_cutlines&amp;quot;      &amp;quot;orthodox1_borders&amp;quot;
## [37] &amp;quot;zodiac_cn1_cutlines&amp;quot; &amp;quot;dual1_bleed&amp;quot;         &amp;quot;rainbow1_bleed&amp;quot;
## [40] &amp;quot;chess4_bleed&amp;quot;        &amp;quot;dual1_cutlines&amp;quot;      &amp;quot;chess1_bleed&amp;quot;
## [43] &amp;quot;orthodox1_bleed&amp;quot;     &amp;quot;dual5_bleed&amp;quot;         &amp;quot;chess2_cutlines&amp;quot;
## [46] &amp;quot;reversi1_borders&amp;quot;    &amp;quot;chess3_cutlines&amp;quot;     &amp;quot;zodiac_cn1_borders&amp;quot;
## [49] &amp;quot;chess3_borders&amp;quot;      &amp;quot;rainbow2_bleed&amp;quot;      &amp;quot;zodiac_cn1_bleed&amp;quot;
## [52] &amp;quot;orthodox1_cutlines&amp;quot;  &amp;quot;dual6_cutlines&amp;quot;      &amp;quot;chess4_borders&amp;quot;
## [55] &amp;quot;zodiac_cn2_borders&amp;quot;  &amp;quot;chess2_borders&amp;quot;      &amp;quot;dual2_cutlines&amp;quot;
## [58] &amp;quot;chess5_borders&amp;quot;
&lt;/pre&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dual5_cutlines&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;pre class="literal-block"&gt;
## $background_color : grey70
## $copyright : © 2019 Trevor L Davis.  Some Rights Reserved.
## $credit : ● This piecepack uses characters from the font Quivira. Public Domain.,        http://www.quivira-font.com/
## $description :
## $fontfamily : Quivira
## $invert_colors.suited : TRUE
## $lacks_rank : tile_back,coin_back,card_back,pawn_face,pawn_back,belt_face,saucer_face,saucer_back,suitdie_face
## $lacks_suit : tile_back,saucer_back,coin_face,card_back
## $n_ranks : 6
## $n_suits : 4
## $rank_text : ,a,2,3,4,5
## $spdx_id : CC-BY-SA-4.0
## $suit_color : black,black,black,black,grey40
## $suit_text : ,,,,
## $title : Swiss-suited (Black)
## $use_suit_as_ace : TRUE
&lt;/pre&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;dual5_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Preview of 'dual5_cutlines' configuration from 'demo_cfgs.RData'" src="https://trevorldavis.com/piecepackr/images/knitr/docs-configuration-demo_cfg-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Preview of &amp;#8216;dual5_cutlines&amp;#8217; configuration from&amp;nbsp;&amp;#8216;demo_cfgs.RData&amp;#8217;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;pushViewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;paste0&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dual&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;_cutlines&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;envir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfgs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="nf"&gt;popViewport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Can use multiple configurations stored in an environment at the same time" src="https://trevorldavis.com/piecepackr/images/knitr/docs-configuration-demo_cfgs2-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;Can use multiple configurations stored in an environment at the same&amp;nbsp;time&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="piecepackr-features"></category></entry><entry><title>Intro to piecepackr’s API</title><link href="https://trevorldavis.com/piecepackr/intro-to-piecepackrs-api.html" rel="alternate"></link><published>2019-04-11T00:00:00-07:00</published><updated>2019-04-28T00:00:00-07:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-04-11:/piecepackr/intro-to-piecepackrs-api.html</id><summary type="html">&lt;p class="first last"&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; is an &lt;a class="reference external" href="https://cran.r-project.org/"&gt;R&lt;/a&gt; package to easily make &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; graphics.  It can be used to make piecepack game diagrams and &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/animations.html"&gt;animations&lt;/a&gt; as well as &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/pages/print-and-play-pdfs.html"&gt;Print &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Play&lt;/a&gt; layouts so you can &lt;a class="reference external" href="http://www.ludism.org/ppwiki/MakingPiecepacks"&gt;make your own piecepack&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; is an &lt;a class="reference external" href="https://cran.r-project.org/"&gt;R&lt;/a&gt; package to easily make &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepack&lt;/a&gt; graphics.  It can be used to make piecepack game diagrams and &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/animations.html"&gt;animations&lt;/a&gt; as well as &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/pages/print-and-play-pdfs.html"&gt;Print &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Play&lt;/a&gt; layouts so you can &lt;a class="reference external" href="http://www.ludism.org/ppwiki/MakingPiecepacks"&gt;make your own piecepack&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The core function is &lt;tt class="docutils literal"&gt;grid.piece()&lt;/tt&gt; which can be used to draw any piecepack&amp;nbsp;component:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="tile faces" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-dc1-1.png" /&gt;
&lt;p class="caption"&gt;tile&amp;nbsp;faces&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="coin faces" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-dc2-1.png" /&gt;
&lt;p class="caption"&gt;coin&amp;nbsp;faces&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="clubs pawn (face)" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-dc3-1.png" /&gt;
&lt;p class="caption"&gt;clubs pawn&amp;nbsp;(face)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="null of spades die (face)" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-dc4-1.png" /&gt;
&lt;p class="caption"&gt;null of spades die&amp;nbsp;(face)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; features an advanced configuration system that allows users to customize the appearance of the piecepack being used in their graphics.  By &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/default-pnp.html"&gt;default&lt;/a&gt; it uses an accessible french-suited configuration that should work out of the box on several OSes without the user needing to mess around with their system fonts but user&amp;#8217;s can customize their piecepack&amp;#8217;s appearance via use of a &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/configuration-lists.html"&gt;configuration list&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="n"&gt;invert_colors.suited&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U0001f31e,\U0001f31c,\U0001f451,\u269c,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 🌞,🌜,👑,⚜,꩜&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;traditional_ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;use_suit_as_ace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,a,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;traditional_ranks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="tile faces" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-dc1t-1.png" /&gt;
&lt;p class="caption"&gt;tile&amp;nbsp;faces&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="coin faces" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-dc2t-1.png" /&gt;
&lt;p class="caption"&gt;coin&amp;nbsp;faces&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pawn_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="crowns pawn (face)" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-dc3t-1.png" /&gt;
&lt;p class="caption"&gt;crowns pawn&amp;nbsp;(face)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;die_face&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="null of moons die (face)" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-dc4t-1.png" /&gt;
&lt;p class="caption"&gt;null of moons die&amp;nbsp;(face)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ppdf::piecepack_preview()&lt;/span&gt; |&amp;gt; pmap_piece()&lt;/tt&gt; allows one to see a preview of a given configuration&amp;nbsp;list:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="'piecepack_preview()' allows one to see a preview of a configuration" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-draw_preview-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;&lt;span class="quo"&gt;&amp;#8216;&lt;/span&gt;piecepack_preview()&amp;#8217; allows one to see a preview of a&amp;nbsp;configuration&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Once you have a configuration you like one can use &lt;tt class="docutils literal"&gt;save_print_and_play&lt;/tt&gt; to make a &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/pages/print-and-play-pdfs.html"&gt;Print &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Play&lt;/a&gt; pdf of your piecepack and &lt;tt class="docutils literal"&gt;save_piece_images&lt;/tt&gt; to make individual images of every piecepack component (in case you would prefer to make your own layout or rule diagram in software like&amp;nbsp;Inkscape):&lt;/p&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="nf"&gt;save_print_and_play&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;my_piecepack.pdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;letter&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;save_piece_images&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;If you will be drawing a bunch of piecepack graphics you may want to use the &lt;tt class="docutils literal"&gt;pp_cfg&lt;/tt&gt; function which will add a &amp;#8220;component opt&amp;#8221; cache to your configuration (will make &lt;tt class="docutils literal"&gt;grid.piece&lt;/tt&gt; work&amp;nbsp;faster):&lt;/p&gt;
&lt;pre class="code r literal-block"&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;If you are comfortable manipulating &lt;a class="reference external" href="https://cran.r-project.org/"&gt;R&lt;/a&gt; data frames &lt;tt class="docutils literal"&gt;pmap_piece&lt;/tt&gt; is a wrapper around &lt;tt class="docutils literal"&gt;grid.piece&lt;/tt&gt; that can digest data frame&amp;nbsp;input:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tibble&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;tribble&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;piece_side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;ifelse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;inches&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Tic-tac-toe example" src="https://trevorldavis.com/piecepackr/images/knitr/docs-intro-pmap_piece-1.png" /&gt;
&lt;p class="caption"&gt;Tic-tac-toe&amp;nbsp;example&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;More documentation about piecepackr&amp;#8217;s &lt;span class="caps"&gt;API&lt;/span&gt; can be found in the package&amp;#8217;s &lt;a class="reference external" href="https://trevorldavis.com/R/piecepackr"&gt;man pages&lt;/a&gt;.&lt;/p&gt;
</content><category term="Articles"></category><category term="piecepackr-features"></category></entry><entry><title>Animations</title><link href="https://trevorldavis.com/piecepackr/animations.html" rel="alternate"></link><published>2019-04-09T00:00:00-07:00</published><updated>2025-01-14T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-04-09:/piecepackr/animations.html</id><summary type="html">&lt;p class="first last"&gt;An example of making an animation directly using the {animation} and &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt; packages and
an example using &lt;a class="reference external" href="https://github.com/piecepackr/ppn"&gt;ppn&lt;/a&gt;&amp;#8216;s &lt;tt class="docutils literal"&gt;animate_game()&lt;/tt&gt; function that can be used to animate games recorded
in &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/portable-piecepack-notation.html"&gt;Portable Piecepack Notation&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#directly-using-the-animations-package" id="toc-entry-1"&gt;Directly using the {animations}&amp;nbsp;package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#using-ppn-s-animate-game-function" id="toc-entry-2"&gt;Using {ppn}&amp;#8217;s &amp;#8216;animate_game&amp;#8217;&amp;nbsp;function&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="directly-using-the-animations-package"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Directly using the {animations}&amp;nbsp;package&lt;/a&gt;&lt;/h2&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;Besides the &lt;a class="reference external" href="https://cran.r-project.org/package=animation"&gt;animation package&lt;/a&gt; you may find &lt;a class="reference external" href="https://cran.r-project.org/package=gifski"&gt;gifski&lt;/a&gt; and &lt;a class="reference external" href="https://cran.r-project.org/package=tweenr"&gt;tweenr&lt;/a&gt;&amp;nbsp;helpful.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Here is a simple example of using the &lt;tt class="docutils literal"&gt;saveGIF()&lt;/tt&gt; function from the &lt;a class="reference external" href="https://cran.r-project.org/package=animation"&gt;animation package&lt;/a&gt; and &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;piecepackr::grid.piece&lt;/span&gt;&lt;/tt&gt; directly to make a &lt;span class="caps"&gt;GIF&lt;/span&gt; animation of a tic-tac-toe game of &amp;#8220;Suns&amp;#8221; versus &amp;#8220;Moons&amp;#8221; played on the &amp;#8220;lines&amp;#8221; of a single tile&amp;nbsp;back:&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;animation&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;draw_tictactoe_game_step&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;grid.newpage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;pushViewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;viewport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tile_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;180&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;coin_back&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;grid.segments&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y0&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;inch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                             &lt;/span&gt;&lt;span class="n"&gt;gp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;gpar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lwd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;popViewport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;draw_tictactoe_game&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ii&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;draw_tictactoe_game_step&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ii&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;game_systems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;dejavu&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;piecepack&lt;/span&gt;
&lt;span class="nf"&gt;saveGIF&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="nf"&gt;draw_tictactoe_game&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;)},&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;movie.name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tictactoe.gif&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;ani.height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;480&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ani.width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;480&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ani.res&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ani.dev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ani.type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Animation of a tic-tac-toe game" src="https://trevorldavis.com/piecepackr/images/knitr/tictactoe.gif" /&gt;
&lt;p class="caption"&gt;Animation of a tic-tac-toe&amp;nbsp;game&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="using-ppn-s-animate-game-function"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Using {ppn}&amp;#8217;s &amp;#8216;animate_game&amp;#8217;&amp;nbsp;function&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/piecepackr/ppn"&gt;ppn&lt;/a&gt; has a convenience function &lt;tt class="docutils literal"&gt;animate_game()&lt;/tt&gt; that can be used to animate games recorded in &lt;a class="reference external" href="https://trevorldavis.com/piecepackr/portable-piecepack-notation.html"&gt;Portable Piecepack Notation&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppgamer&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppn&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="n"&gt;invert_colors.suited&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U0001f31e,\U0001f31c,\U0001f451,\u269c,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 🌞,🌜,👑,⚜,꩜&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;traditional_ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;use_suit_as_ace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,a,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg3d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;height.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;depth.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0.375&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;dm_text.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shape.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;convex6&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;invert_colors.pawn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                   &lt;/span&gt;&lt;span class="n"&gt;edge_color.coin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tan&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;edge_color.tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tan&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;traditional_ranks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg3d&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;puzzle2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nrow&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;byrow&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;solve_fujisan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;coins&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;puzzle2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;read_ppn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;textConnection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ppn&lt;/span&gt;&lt;span class="p"&gt;))[[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="nf"&gt;animate_game&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;fujisan.gif&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;op_scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;op_angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;trans&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;op_transform&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="Animation of a Fuji-san game" src="https://trevorldavis.com/piecepackr/images/knitr/fujisan.gif" /&gt;
&lt;p class="caption"&gt;Animation of a Fuji-san&amp;nbsp;game&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category></entry><entry><title>Dual piecepacks PnP</title><link href="https://trevorldavis.com/piecepackr/dual-piecepacks-pnp.html" rel="alternate"></link><published>2019-04-07T00:00:00-07:00</published><updated>2023-02-16T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-04-07:/piecepackr/dual-piecepacks-pnp.html</id><summary type="html">&lt;p class="first last"&gt;This is the demo of the six &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepacks&lt;/a&gt; that were included in the &lt;a class="reference external" href="http://www.ludism.org/ppwiki/DualPiecepacks"&gt;&amp;#8220;dual piecepacks&amp;#8221;&lt;/a&gt; proof-of-concept: one piecepack-suited piecepack, one &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Suit_(cards)#Origin_and_development_of_the_Latin_suits"&gt;latin-suited&lt;/a&gt; piecepack (inverted color scheme), two french-suited piecepacks (one &amp;#8216;black&amp;#8217; suits, one &amp;#8216;white&amp;#8217; suits), and two &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Suit_(cards)#Invention_of_the_Germanic_suits"&gt;swiss-suited&lt;/a&gt; piecepacks (one dark grayscale color scheme, one light grayscale color&amp;nbsp;scheme).&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p&gt;This is the demo of the six &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HomePage"&gt;piecepacks&lt;/a&gt; that were included in the &lt;a class="reference external" href="http://www.ludism.org/ppwiki/DualPiecepacks"&gt;&amp;#8220;dual piecepacks&amp;#8221;&lt;/a&gt; proof-of-concept: one piecepack-suited piecepack, one &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Suit_(cards)#Origin_and_development_of_the_Latin_suits"&gt;latin-suited&lt;/a&gt; piecepack (inverted color scheme), two french-suited piecepacks (one &amp;#8216;black&amp;#8217; suits, one &amp;#8216;white&amp;#8217; suits), and two &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Suit_(cards)#Invention_of_the_Germanic_suits"&gt;swiss-suited&lt;/a&gt; piecepacks (one dark grayscale color scheme, one light grayscale color scheme).  One could use the piecepack-suited, latin-suited, and one of the french-suited piecepacks to build a &amp;#8220;trial&amp;nbsp;hoardpack&amp;#8221;.&lt;/p&gt;
&lt;div class="contents topic" id="contents"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#dual-piecepacks-intro" id="toc-entry-1"&gt;Dual piecepacks&amp;nbsp;intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#dual-piecepacks-1-un-inverted-piecepack-suits-and-inverted-latin-suits" id="toc-entry-2"&gt;Dual piecepacks #1 (Un-inverted Piecepack-suits and Inverted&amp;nbsp;Latin-suits)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#dual-piecepacks-2-black-and-white-french-suits" id="toc-entry-3"&gt;Dual piecepacks #2 (&amp;#8220;Black&amp;#8221; and &amp;#8220;White&amp;#8221;&amp;nbsp;French-suits)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#dual-piecepacks-3-black-and-white-swiss-suits" id="toc-entry-4"&gt;Dual piecepacks #3 (&amp;#8220;Black&amp;#8221; and &amp;#8220;White&amp;#8221;&amp;nbsp;Swiss-suits)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="dual-piecepacks-intro"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;Dual piecepacks&amp;nbsp;intro&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Dual piecepacks&amp;#8221; are eight piecepack &lt;strong&gt;suits&lt;/strong&gt; with the following&amp;nbsp;properties:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;The eight &lt;strong&gt;suits&lt;/strong&gt; suits can be &amp;#8220;easily&amp;#8221; visually&amp;nbsp;distinguished&lt;/li&gt;
&lt;li&gt;The eight suits can be &amp;#8220;easily&amp;#8221; visually split into two separate &lt;strong&gt;groups&lt;/strong&gt; of four&amp;nbsp;suits&lt;/li&gt;
&lt;li&gt;Each &amp;#8220;suit&amp;#8221; in a group can be &amp;#8220;easily&amp;#8221; visually &lt;strong&gt;linked&lt;/strong&gt; with exactly one suit in the other&amp;nbsp;group&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This gives one the following nice&amp;nbsp;properties:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;One can play games requiring one piecepack deck plus an expansion piecepack deck by treating the eight &lt;strong&gt;suits&lt;/strong&gt; as separate&amp;nbsp;suits&lt;/li&gt;
&lt;li&gt;One can play games requiring two piecepack decks by treating each pair of &lt;strong&gt;linked&lt;/strong&gt; suits as the same&amp;nbsp;suit&lt;/li&gt;
&lt;li&gt;One can play games that are &amp;#8220;SixPack&amp;#8221; friendly by taking three suits from each visually distinct &lt;strong&gt;group&lt;/strong&gt;. One can scale this down to games that are &amp;#8220;Playing Cards Expansion&amp;#8221; friendly or even scale up to four-grouped-suits versus four-grouped-suits friendly games (like Canadian checkers or Bughouse&amp;nbsp;chess).&lt;/li&gt;
&lt;li&gt;One can play entirely new games provided by the extra layer of relationships. Proof-of-concept new game is &lt;a class="reference external" href="http://www.ludism.org/ppwiki/DualPiecepacksPoker"&gt;Dual Piecepacks Poker&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is possible to construct three piecepacks where each pair of piecepack decks are &amp;#8220;dual piecepacks&amp;#8221; (e.g. piecepack-suited + inverted latin-suited + light french-suited). This could be called a &amp;#8220;trial &lt;a class="reference external" href="http://www.ludism.org/ppwiki/HoardPack"&gt;HoardPack&lt;/a&gt;&amp;#8221; (apparently &amp;#8220;trial&amp;#8221; is the proper &amp;#8220;three&amp;#8221; analogue to&amp;nbsp;&amp;#8220;dual&amp;#8221;).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="dual-piecepacks-1-un-inverted-piecepack-suits-and-inverted-latin-suits"&gt;
&lt;span id="dual2"&gt;&lt;/span&gt;&lt;span id="dual1"&gt;&lt;/span&gt;&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Dual piecepacks #1 (Un-inverted Piecepack-suits and Inverted&amp;nbsp;Latin-suits)&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ranks_noto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;n,a,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;darkred,black,darkgreen,darkblue,grey&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\U0001f31e,\U0001f31c,\U0001f451,\u269c,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 🌞,🌜,👑,⚜,꩜&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Emoji,Noto Sans Symbols2,Noto Emoji,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.6,0.7,0.75,0.9,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from Google Noto Fonts. OFL 1.1.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttps://www.google.com/get/noto/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;piecepack_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ranks_noto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;
&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Piecepack-suited (Un-inverted colors)&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2019 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual1_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual1_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dual1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dual1_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of the piecepack-suited piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dual-preview1-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of the piecepack-suited&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;latin_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\ue008,\ue007,\ue006,\ue009,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Quivira,Quivira,Quivira,Quivira,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.9,1,1,1,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;invert_colors.suited&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;quivira_credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u25cf This piecepack uses characters from the font Quivira. Public Domain.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\thttp://www.quivira-font.com/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;dual2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;latin_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ranks_noto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;quivira_credit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dual2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Latin-suited (Inverted colors)&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2019 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual2&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;dual2_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dual2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual2_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dual2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dual2_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of the latin-suited piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dual-preview2-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of the latin-suited&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="dual-piecepacks-2-black-and-white-french-suits"&gt;
&lt;span id="dual4"&gt;&lt;/span&gt;&lt;span id="dual3"&gt;&lt;/span&gt;&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Dual piecepacks #2 (&amp;#8220;Black&amp;#8221; and &amp;#8220;White&amp;#8221;&amp;nbsp;French-suits)&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;french_suits_black&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u2665,\u2660,\u2663,\u2666,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# ♥,♠,♣,♦,꩜&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Noto Sans Symbols,Noto Sans Symbols,Noto Sans Symbols,Noto Sans Symbols,Noto Sans Cham&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="n"&gt;suit_cex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1,1,1,1,0.9&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;french_suits_black&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ranks_noto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;French-suited (Black)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dual3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;
&lt;span class="n"&gt;dual3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2019 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual3&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;dual3_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dual3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual3_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dual3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dual3_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of the 'black' french-suited piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dual-preview3-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of the &amp;#8216;black&amp;#8217; french-suited&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;french_suits_white&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;french_suits_black&lt;/span&gt;
&lt;span class="n"&gt;french_suits_white&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u2661,\u2664,\u2667,\u2662,\uaa5c&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# ♡,♤,♧,♢,꩜&lt;/span&gt;
&lt;span class="n"&gt;dual4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;french_suits_white&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dark_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ranks_noto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;French-suited (White)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dual4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;noto_credit&lt;/span&gt;
&lt;span class="n"&gt;dual4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2019 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual4&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;dual4_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dual4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual4_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dual4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dual4_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of the 'white' french-suited piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dual-preview4-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of the &amp;#8216;white&amp;#8217; french-suited&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="dual-piecepacks-3-black-and-white-swiss-suits"&gt;
&lt;span id="dual6"&gt;&lt;/span&gt;&lt;span id="dual5"&gt;&lt;/span&gt;&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Dual piecepacks #3 (&amp;#8220;Black&amp;#8221; and &amp;#8220;White&amp;#8221;&amp;nbsp;Swiss-suits)&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;orthodox_ranks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;,a,2,3,4,5&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="n"&gt;use_suit_as_ace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;black_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black,black,black,black,grey40&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                          &lt;/span&gt;&lt;span class="n"&gt;background_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;grey70&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                          &lt;/span&gt;&lt;span class="n"&gt;invert_colors.suited&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;swiss_suits&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suit_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\ue005,\ue004,\ue000,\ue003,\ue00a&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="n"&gt;fontfamily&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Quivira&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;swiss_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;black_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox_ranks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Swiss-suited (Black)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dual5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;quivira_credit&lt;/span&gt;
&lt;span class="n"&gt;dual5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2019 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual5&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;dual5_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dual5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual5_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dual5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dual5_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of the 'black' swiss-suited piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dual-preview5-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of the &amp;#8216;black&amp;#8217; swiss-suited&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;white_colorscheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;black_colorscheme&lt;/span&gt;
&lt;span class="n"&gt;white_colorscheme&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;suit_color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;white,white,white,white,grey40&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dual6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;swiss_suits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;white_colorscheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orthodox_ranks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual6&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Swiss-suited (White)&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;dual6&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;quivira_credit&lt;/span&gt;
&lt;span class="n"&gt;dual6&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual6&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;\u00a9 2019 Trevor L Davis.  Some Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dual6&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC-BY-SA-4.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;dual6_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dual6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dual6_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dual6&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dual6_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of the 'white' swiss-suited piecepack" src="https://trevorldavis.com/piecepackr/images/knitr/demos-dual-preview6-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of the &amp;#8216;white&amp;#8217; swiss-suited&amp;nbsp;piecepack&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="print-and-play"></category></entry><entry><title>Default PnP</title><link href="https://trevorldavis.com/piecepackr/default-pnp.html" rel="alternate"></link><published>2019-04-06T00:00:00-07:00</published><updated>2023-02-16T00:00:00-08:00</updated><author><name>Trevor L. Davis</name></author><id>tag:trevorldavis.com,2019-04-06:/piecepackr/default-pnp.html</id><summary type="html">&lt;p class="first last"&gt;A demo and description of &lt;a class="reference external" href="https://github.com/piecepackr/piecepackr"&gt;piecepackr&lt;/a&gt;&amp;#8216;s default piecepack&amp;nbsp;design.&lt;/p&gt;
</summary><content type="html">&lt;!-- External --&gt;
&lt;!-- Demos --&gt;
&lt;!-- Docs --&gt;
&lt;!-- .. _PPN: --&gt;
&lt;!-- Licenses --&gt;
&lt;!-- Pages --&gt;
&lt;!-- Tags --&gt;
&lt;!-- {tag}piecepackr-features --&gt;
&lt;!-- {tag}ppcli-features --&gt;
&lt;!-- {tag}ppdf-features --&gt;
&lt;!-- {tag}pprules-features --&gt;
&lt;!-- {tag}ppgamer-features --&gt;
&lt;!-- {tag}ppn-features --&gt;
&lt;!-- {tag}ppgames-features --&gt;
&lt;!-- Other Internal content --&gt;
&lt;p id="default1"&gt;The default type of piecepack built by this software if the user does no configuration.  The default piecepack has the following&amp;nbsp;properties.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Uses symbols only found in R&amp;#8217;s default &lt;tt class="docutils literal"&gt;sans&lt;/tt&gt; font so that it works on multiple &lt;span class="caps"&gt;OS&lt;/span&gt; platforms out of the box without the user needing to mess with their fonts (unfortunately this means we can&amp;#8217;t use the traditional piecepack&amp;nbsp;suits).&lt;/li&gt;
&lt;li&gt;Builds a 4-suited piecepack using &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Four-color_deck"&gt;multicolored french-suits&lt;/a&gt; for compatibility with french-suited playing cards and other potential game accessories (like Icehouse&amp;nbsp;Pyramids).&lt;/li&gt;
&lt;li&gt;Has a suit symbol on every suited component so the suits are accessible for the color-blind (as well as being decipharable for the non-color-blind if game diagrams are printed in&amp;nbsp;grayscale).&lt;/li&gt;
&lt;li&gt;Uses a white background so not a lot of toner needs to be used in printing out&amp;nbsp;diagrams.&lt;/li&gt;
&lt;li&gt;Uses a &lt;a class="reference external" href="http://jfly.iam.u-tokyo.ac.jp/color/#see"&gt;colorblind barrier-free color palette&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;stopifnot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;ppdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0.3.0-14&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;This is the default piecepack produced by `pp_cfg()`.&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;{piecepackr}&amp;#39;s default piecepack&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;credit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;packageVersion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;piecepackr&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.10.0-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Created in 2019 by Trevor L Davis.  No Rights Reserved.&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;spdx_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;CC0-1.0&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;border_lex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;border_color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;NA_character_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;default1_cutlines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;default1_borders&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;borders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;default1_bleed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pp_cfg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bleed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;ppdf&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;piecepack_preview&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;pmap_piece&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;default1_cutlines&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default.units&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;in&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="figure align-center"&gt;
&lt;img alt="A preview of the default piecepack made by piecepackr" src="https://trevorldavis.com/piecepackr/images/knitr/demos-default-preview-1.png" style="width: 60%;" /&gt;
&lt;p class="caption"&gt;A preview of the default piecepack made by&amp;nbsp;piecepackr&lt;/p&gt;
&lt;/div&gt;
</content><category term="Articles"></category><category term="print-and-play"></category></entry></feed>