<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/alex-2012.css" ?>
<rss version="2.0"
    xmlns:wiki="http://purl.org/rss/1.0/modules/wiki/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:cc="http://web.resource.org/cc/"
    xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<title>Alex Schroeder: Maps</title>
<link>http://alexschroeder.ch/wiki/Diary</link>
<atom:link href="http://www.google.com/profiles/kensanata" rel="me" type="text/html" />
<atom:link href="http://alexschroeder.ch/wiki?action=rss;full=1" rel="self" type="application/rss+xml" />
<description>The Homepage of Alex Schroeder.</description>
<pubDate>Fri, 24 May 2013 08:41:53 GMT</pubDate>
<lastBuildDate>Fri, 24 May 2013 08:41:53 GMT</lastBuildDate>
<generator>Oddmuse</generator>
<copyright>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation.</copyright>
<cc:license>http://www.gnu.org/copyleft/fdl.html</cc:license>
<image>
<url>http://alexschroeder.ch/pics/alex.png</url>
<title>Alex Schroeder: Maps</title>
<link>http://alexschroeder.ch/wiki</link>
</image>

<item>
<title>Text Mapper With Lines</title>
<link>http://alexschroeder.ch/wiki/2013-03-04_Text_Mapper_With_Lines</link>
<guid>http://alexschroeder.ch/wiki/2013-03-04_Text_Mapper_With_Lines</guid>
<description>&lt;p&gt;SVG Mapper now knows how to draw lines. These lines try to flow from hex to hex&amp;#x2026;&lt;/p&gt;&lt;p&gt;Example input:&lt;/p&gt;&lt;pre class="real"&gt;2114 hill
2115 hill
2213 forest
2214 forest "Delan"
2215 hill
2314 forest
2315 forest
2414 hill "Forest Bight Fortress"
2415 forest
2515 forest "Boghra Little"

2214-2615 river
river path attributes fill-opacity="0" stroke="black" stroke-width="5"

include http://alexschroeder.ch/contrib/default.txt&lt;/pre&gt;&lt;p&gt;Result:&lt;/p&gt;&lt;p&gt;&lt;a class="image outside" href="http://alexschroeder.ch/text-mapper?map=2114+hill%0D%0A2115+hill%0D%0A2213+forest%0D%0A2214+forest+%22Delan%22%0D%0A2215+hill%0D%0A2314+forest%0D%0A2315+forest%0D%0A2414+hill+%22Forest+Bight+Fortress%22%0D%0A2415+forest%0D%0A2515+forest+%22Boghra+Little%22%0D%0A%0D%0A2214-2615+river%0D%0Ariver+path+attributes+fill-opacity%3D%220%22+stroke%3D%22black%22+stroke-width%3D%225%22%0D%0A%0D%0Ainclude+http%3A%2F%2Falexschroeder.ch%2Fcontrib%2Fdefault.txt"&gt;&lt;img class="upload" title="Dangerous Forest" src="http://alexschroeder.ch/text-mapper?map=2114+hill%0D%0A2115+hill%0D%0A2213+forest%0D%0A2214+forest+%22Delan%22%0D%0A2215+hill%0D%0A2314+forest%0D%0A2315+forest%0D%0A2414+hill+%22Forest+Bight+Fortress%22%0D%0A2415+forest%0D%0A2515+forest+%22Boghra+Little%22%0D%0A%0D%0A2214-2615+river%0D%0Ariver+path+attributes+fill-opacity%3D%220%22+stroke%3D%22black%22+stroke-width%3D%225%22%0D%0A%0D%0Ainclude+http%3A%2F%2Falexschroeder.ch%2Fcontrib%2Fdefault.txt" alt="Dangerous Forest" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I think that I&amp;#x2019;m not quite understanding how the viewBox is supposed to work. But anyway: these lines can be used for roads, rivers, borders, cliffs, and the like. If they&amp;#x2019;re very straight, they don&amp;#x2019;t look too good. There&amp;#x2019;s no random waviness. One feature I definitely have to add is providing more intermediary points such that the user can guide rivers around the hills or to allow rivers to merge.&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=SVG"&gt;SVG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/SVG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Maps"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Text%20Mapper"&gt;Text Mapper&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Text%20Mapper"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Mon, 04 Mar 2013 00:06:34 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2013-03-04_Text_Mapper_With_Lines</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2013-03-04_Text_Mapper_With_Lines</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2013-03-04_Text_Mapper_With_Lines</wiki:diff>
<category>SVG</category>
<category>Maps</category>
<category>Text Mapper</category>
</item>

<item>
<title>Text Mapper Progress</title>
<link>http://alexschroeder.ch/wiki/2013-03-01_Text_Mapper_Progress</link>
<guid>http://alexschroeder.ch/wiki/2013-03-01_Text_Mapper_Progress</guid>
<description>&lt;p&gt;I&amp;#x2019;m a big fan of the &lt;a class="local" href="http://alexschroeder.ch/wiki/2012-05-15_The_Forgotten_Depths"&gt;Forgotten Depths&lt;/a&gt;. I wanted to use its map as the goal for my &lt;a class="url http outside" href="http://alexschroeder.ch/wiki/2013-02-26_Text_Mapper"&gt;Text Mapper&lt;/a&gt;. As the mapper now allows the inclusion of other files, I&amp;#x2019;ve saved my library of colors and icons as &lt;a class="url http outside" href="http://alexschroeder.ch/contrib/default.txt"&gt;default.txt&lt;/a&gt; and I&amp;#x2019;ve saved the map as &lt;a class="url http outside" href="http://alexschroeder.ch/contrib/forgotten-depths.txt"&gt;forgotten-depths.txt&lt;/a&gt;. That&amp;#x2019;s why all you need to do now is include the map:&lt;/p&gt;&lt;p&gt;&lt;a class="image outside" href="http://alexschroeder.ch/text-mapper?map=include+http%3A%2F%2Falexschroeder.ch%2Fcontrib%2Fforgotten-depths.txt%0D%0A%0D%0A"&gt;&lt;img class="upload" title="Forgotten Depths SVG" src="http://alexschroeder.ch/text-mapper?map=include+http%3A%2F%2Falexschroeder.ch%2Fcontrib%2Fforgotten-depths.txt%0D%0A%0D%0A" alt="Forgotten Depths SVG" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you see white hexes, then I haven&amp;#x2019;t added any definitions for them, yet.&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=SVG"&gt;SVG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/SVG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Software"&gt;Software&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Software"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Maps"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Text%20Mapper"&gt;Text Mapper&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Text%20Mapper"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Fri, 01 Mar 2013 10:28:25 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2013-03-01_Text_Mapper_Progress</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2013-03-01_Text_Mapper_Progress</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2013-03-01_Text_Mapper_Progress</wiki:diff>
<category>SVG</category>
<category>Software</category>
<category>Maps</category>
<category>Text Mapper</category>
</item>

<item>
<title>New Text Mapper Shapes</title>
<link>http://alexschroeder.ch/wiki/2013-02-27_New_Text_Mapper_Shapes</link>
<guid>http://alexschroeder.ch/wiki/2013-02-27_New_Text_Mapper_Shapes</guid>
<description>&lt;p&gt;How to create new shapes for &lt;a class="local" href="http://alexschroeder.ch/wiki/2013-02-26_Text_Mapper"&gt;Text Mapper&lt;/a&gt;?&lt;/p&gt;&lt;p&gt;First, start with an empty SVG file:&lt;/p&gt;&lt;pre class="real"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&amp;gt;
&amp;lt;svg xmlns="http://www.w3.org/2000/svg"
     height="200px"
     width="200px"&amp;gt;
&amp;lt;/svg&amp;gt;&lt;/pre&gt;&lt;p&gt;I like to draw stuff using the &lt;em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;"&gt;calligraphy&lt;/em&gt; tool (&lt;code&gt;c&lt;/code&gt;). I usually &lt;em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;"&gt;simplify&lt;/em&gt; the nodes a lot (&lt;code&gt;Ctrl+L&lt;/code&gt;), &lt;em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;"&gt;unify&lt;/em&gt; the shapes (&lt;code&gt;Ctrl++&lt;/code&gt;), edit the nodes by hand (&lt;code&gt;n&lt;/code&gt;) until you&amp;#x2019;re happy with the fewest number of nodes you can manage.&lt;/p&gt;&lt;p&gt;Now move the entire shape such that it is centered on the &lt;em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;"&gt;top left corner&lt;/em&gt;. This is (0,0) as far as SVG is concerned. Save it.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/kensanata/8512911746/" class="url http"&gt;&lt;img class="url http" src="https://farm9.staticflickr.com/8240/8512911746_4f1c405dba_o.png" alt="https://farm9.staticflickr.com/8240/8512911746_4f1c405dba_o.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Look at the SVG file and notice something like this:&lt;/p&gt;&lt;pre&gt;    &amp;lt;path
       style="fill:#000000;fill-opacity:1;stroke:none"
       d="m 7.647323,-20.341905 c -5.784973,-11.791839
       -36.204242,-5.139394 -43.951039,7.112364 8.922877,-5.977096
       34.793258,-11.641806 37.046343,-5.498373 -17.505656,0.485788
       -29.019956,5.940662 -33.027811,23.8472764 C
       -21.859546,-12.603312 -7.5022983,-14.191144 2.47485,-12.984161
       -8.2112223,6.06712 -19.987316,13.477858 -15.788864,50.225619 c
       3.988368,3.362713 8.6116517,-5.097214 4.510279,-7.531518
       -0.559084,-6.64895 -0.875559,-13.360661 -0.08632,-20.004922 C
       -9.6892813,9.718021 1.072969,-6.510207 8.835372,-12.256094
       26.823805,-7.758432 35.550312,0.1756144 34.450001,15.351883
       44.387089,3.7916614 29.882349,-11.701263 14.406587,-15.219388
       28.287217,-15.939127 40.549839,-6.589098 45.412784,1.4541824
       47.026796,-8.361333 28.866764,-19.205208 16.79733,-20.277164 c
       10.765708,-6.95198 25.316253,-3.074379 29.792108,3.226712
       -4.893545,-14.115874 -36.158133,-10.60357 -38.942114,-3.291453
       z"
       id="path3007"
       inkscape:connector-curvature="0"
       sodipodi:nodetypes="ccccccccccccccc" /&amp;gt;&lt;/pre&gt;&lt;p&gt;You can already extract this path and use it! Usually it takes several attempts to get the placement right. Once I&amp;#x2019;m happy, I turn all these floating point numbers into integers in order to save space. Personally, I use Emacs to do it (&lt;a class="inter EmacsWiki" href="http://emacswiki.org/emacs?RoundFloatingPoints"&gt;&lt;span class="site"&gt;EmacsWiki&lt;/span&gt;&lt;span class="separator"&gt;:&lt;/span&gt;&lt;span class="page"&gt;RoundFloatingPoints&lt;/span&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;This is what I want:&lt;/p&gt;&lt;pre class="real"&gt;m 8,-20 c -6,-12 -36,-5 -44,7 9,-6 35,-12 37,-5 -18,0 -29,6 -33,24 C -22,-13
-8,-14 2,-13 -8,6 -20,13 -16,50 c 4,3 9,-5 5,-8 -1,-7 -1,-13 0,-20 C -10,10 1,-7
9,-12 27,-8 36,0 34,15 44,4 30,-12 14,-15 28,-16 41,-7 45,1 47,-8 29,-19 17,-20
c 11,-7 25,-3 30,3 -5,-14 -36,-11 -39,-3 z&lt;/pre&gt;&lt;p&gt;Example input:&lt;/p&gt;&lt;pre class="real"&gt;0202 jungle
jungle attributes fill="white" stroke="#b3b3ff" stroke-width="3"
jungle path m 8,-20 c -6,-12 -36,-5 -44,7 9,-6 35,-12 37,-5 -18,0 -29,6 -33,24 C -22,-13 -8,-14 2,-13 -8,6 -20,13 -16,50 c 4,3 9,-5 5,-8 -1,-7 -1,-13 0,-20 C -10,10 1,-7 9,-12 27,-8 36,0 34,15 44,4 30,-12 14,-15 28,-16 41,-7 45,1 47,-8 29,-19 17,-20 c 11,-7 25,-3 30,3 -5,-14 -36,-11 -39,-3 z&lt;/pre&gt;&lt;p&gt;Output:&lt;/p&gt;&lt;div style="width: 300px"&gt; &lt;a class="image outside" href="http://alexschroeder.ch/text-mapper?map=0101+jungle%0D%0Ajungle+attributes+fill%3D%22white%22+stroke%3D%22%23b3b3ff%22+stroke-width%3D%223%22%0D%0Ajungle+path+m+8%2C-20+c+-6%2C-12+-36%2C-5+-44%2C7+9%2C-6+35%2C-12+37%2C-5+-18%2C0+-29%2C6+-33%2C24+C+-22%2C-13+-8%2C-14+2%2C-13+-8%2C6+-20%2C13+-16%2C50+c+4%2C3+9%2C-5+5%2C-8+-1%2C-7+-1%2C-13+0%2C-20+C+-10%2C10+1%2C-7+9%2C-12+27%2C-8+36%2C0+34%2C15+44%2C4+30%2C-12+14%2C-15+28%2C-16+41%2C-7+45%2C1+47%2C-8+29%2C-19+17%2C-20+c+11%2C-7+25%2C-3+30%2C3+-5%2C-14+-36%2C-11+-39%2C-3+z"&gt;&lt;img class="upload" title="Jungle Hex" src="http://alexschroeder.ch/text-mapper?map=0101+jungle%0D%0Ajungle+attributes+fill%3D%22white%22+stroke%3D%22%23b3b3ff%22+stroke-width%3D%223%22%0D%0Ajungle+path+m+8%2C-20+c+-6%2C-12+-36%2C-5+-44%2C7+9%2C-6+35%2C-12+37%2C-5+-18%2C0+-29%2C6+-33%2C24+C+-22%2C-13+-8%2C-14+2%2C-13+-8%2C6+-20%2C13+-16%2C50+c+4%2C3+9%2C-5+5%2C-8+-1%2C-7+-1%2C-13+0%2C-20+C+-10%2C10+1%2C-7+9%2C-12+27%2C-8+36%2C0+34%2C15+44%2C4+30%2C-12+14%2C-15+28%2C-16+41%2C-7+45%2C1+47%2C-8+29%2C-19+17%2C-20+c+11%2C-7+25%2C-3+30%2C3+-5%2C-14+-36%2C-11+-39%2C-3+z" alt="Jungle Hex" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;p&gt;Example input:&lt;/p&gt;&lt;pre class="real"&gt;0101 jungle
jungle attributes fill="#9acd32" stroke="black" stroke-width="3"
jungle path attributes fill="#228b22"
jungle path m 8,-20 c -6,-12 -36,-5 -44,7 9,-6 35,-12 37,-5 -18,0 -29,6 -33,24 C -22,-13 -8,-14 2,-13 -8,6 -20,13 -16,50 c 4,3 9,-5 5,-8 -1,-7 -1,-13 0,-20 C -10,10 1,-7 9,-12 27,-8 36,0 34,15 44,4 30,-12 14,-15 28,-16 41,-7 45,1 47,-8 29,-19 17,-20 c 11,-7 25,-3 30,3 -5,-14 -36,-11 -39,-3 z
text font-size="20pt" dy="15px"&lt;/pre&gt;&lt;p&gt;Output:&lt;/p&gt;&lt;div style="width: 300px"&gt; &lt;a class="image outside" href="http://alexschroeder.ch/text-mapper?map=0101+jungle%0D%0Ajungle+attributes+fill%3D%22%239acd32%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Ajungle+path+attributes+fill%3D%22%23228b22%22%0D%0Ajungle+path+m+8%2C-20+c+-6%2C-12+-36%2C-5+-44%2C7+9%2C-6+35%2C-12+37%2C-5+-18%2C0+-29%2C6+-33%2C24+C+-22%2C-13+-8%2C-14+2%2C-13+-8%2C6+-20%2C13+-16%2C50+c+4%2C3+9%2C-5+5%2C-8+-1%2C-7+-1%2C-13+0%2C-20+C+-10%2C10+1%2C-7+9%2C-12+27%2C-8+36%2C0+34%2C15+44%2C4+30%2C-12+14%2C-15+28%2C-16+41%2C-7+45%2C1+47%2C-8+29%2C-19+17%2C-20+c+11%2C-7+25%2C-3+30%2C3+-5%2C-14+-36%2C-11+-39%2C-3+z%0D%0Atext+font-size%3D%2220pt%22+dy%3D%2215px%22%0D%0A"&gt;&lt;img class="upload" title="Green Jungle Hex" src="http://alexschroeder.ch/text-mapper?map=0101+jungle%0D%0Ajungle+attributes+fill%3D%22%239acd32%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Ajungle+path+attributes+fill%3D%22%23228b22%22%0D%0Ajungle+path+m+8%2C-20+c+-6%2C-12+-36%2C-5+-44%2C7+9%2C-6+35%2C-12+37%2C-5+-18%2C0+-29%2C6+-33%2C24+C+-22%2C-13+-8%2C-14+2%2C-13+-8%2C6+-20%2C13+-16%2C50+c+4%2C3+9%2C-5+5%2C-8+-1%2C-7+-1%2C-13+0%2C-20+C+-10%2C10+1%2C-7+9%2C-12+27%2C-8+36%2C0+34%2C15+44%2C4+30%2C-12+14%2C-15+28%2C-16+41%2C-7+45%2C1+47%2C-8+29%2C-19+17%2C-20+c+11%2C-7+25%2C-3+30%2C3+-5%2C-14+-36%2C-11+-39%2C-3+z%0D%0Atext+font-size%3D%2220pt%22+dy%3D%2215px%22%0D%0A" alt="Green Jungle Hex" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/RPG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Maps"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=SVG"&gt;SVG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/SVG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Text%20Mapper"&gt;Text Mapper&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Text%20Mapper"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 27 Feb 2013 10:33:04 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2013-02-27_New_Text_Mapper_Shapes</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2013-02-27_New_Text_Mapper_Shapes</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2013-02-27_New_Text_Mapper_Shapes</wiki:diff>
<category>RPG</category>
<category>Maps</category>
<category>SVG</category>
<category>Text Mapper</category>
</item>

<item>
<title>Text Mapper</title>
<link>http://alexschroeder.ch/wiki/2013-02-26_Text_Mapper</link>
<guid>http://alexschroeder.ch/wiki/2013-02-26_Text_Mapper</guid>
<description>&lt;p&gt;Recently I wanted to create a little hex map and I wanted to do it on an iPad, I wanted to eventually integrate it into my campaign wiki, I wanted it to be SVG based, and so on. All that meant, &lt;a class="url http outside" href="http://www.hexographer.com/"&gt;Hexographer&lt;/a&gt; wasn&amp;#x2019;t the appropriate tool. I needed to cook something up myself. Based on code I wrote nearly five years ago&amp;#x2014;the &lt;a class="local" href="http://alexschroeder.ch/wiki/2007-06-08_Old_School_Hex_Mapper_Getting_Better"&gt;Old School Hex Mapper&lt;/a&gt;&amp;#x2014;I wrote up a little something.&lt;/p&gt;&lt;p&gt;I&amp;#x2019;m calling it the &lt;a class="url http outside" href="http://alexschroeder.ch/text-mapper"&gt;Text Mapper&lt;/a&gt; because it takes text input. No interactive fiddling with the map.&lt;/p&gt;&lt;p&gt;There are various sections of the input.&lt;/p&gt;&lt;h2&gt;Map&lt;/h2&gt;&lt;p&gt;This is simple. Coordinates, terrain.&lt;/p&gt;&lt;pre class="real"&gt;# map definition
0101 mountain
0102 mountain
0103 hill
0104 forest
0201 mountain
0202 hill
0203 coast
0204 empty
0301 mountain
0302 mountain
0303 plain
0304 sea
0401 hill
0402 sand
0403 forest&lt;/pre&gt;&lt;p&gt;The rest of the input determines how things look: what colors to use, what icons to display. When you start the Text Mapper, the input area already contains an example. Start with that before doing anything else.&lt;/p&gt;&lt;h2&gt;Terrain attributes&lt;/h2&gt;&lt;p&gt;Now it gets tricky. For every terrain we used, the script will generate a hex. We need to provide some SVG attributes! Need documentation? Check out the &lt;a class="url http outside" href="http://www.w3.org/TR/SVG/shapes.html#PolygonElement"&gt;polygon in the SVG specification&lt;/a&gt; and click on &lt;em style="text-decoration: underline; font-style: normal;"&gt;show&lt;/em&gt; next to &lt;em style="text-decoration: underline; font-style: normal;"&gt;presentation attributes&lt;/em&gt;. That&amp;#x2019;s what you should be looking at.&lt;/p&gt;&lt;pre class="real"&gt;# attributes
empty attributes fill="#ffffff" stroke="black" stroke-width="3"
plain attributes fill="#7cfc00" stroke="black" stroke-width="3"
forest attributes fill="#228b22" stroke="black" stroke-width="3"
hill attributes fill="#daa520" stroke="black" stroke-width="3"
mountain attributes fill="#708090" stroke="black" stroke-width="3"
sand attributes fill="#eedd82" stroke="black" stroke-width="3"
coast attributes fill="#7fffd4" stroke="black" stroke-width="3"
sea attributes fill="#4169e1" stroke="black" stroke-width="3"&lt;/pre&gt;&lt;h2&gt;Icons&lt;/h2&gt;&lt;p&gt;In order to add little icons, you can specify a &lt;em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;"&gt;path&lt;/em&gt; per terrain.&lt;/p&gt;&lt;div style="font-family: 'Andale Mono', Monaco, 'Courier New', Courier, monospace; font-size: 80%; line-height: 110%;"&gt; hill path M -42,11 C -38,5 -34,0 -28,-3 C -20,-6 -11,-5 -5,-0 C -2,2 1,6 3,9 C 4,12 2,13 0,14 C -3,9 -7,5 -13,2 C -21,-1 -30,0 -36,6 C -38,9 -40,11 -43,14 C -43,15 -44,14 -44,13 C -43,12 -43,12 -42,11 z M -5,-0 C 0,-6 7,-12 15,-16 C 21,-18 28,-17 33,-14 C 39,-11 41,-5 43,-0 C 42,2 41,5 39,2 C 37,-2 33,-8 27,-10 C 20,-13 12,-12 6,-7 C 2,-4 -1,-1 -4,1 C -7,4 -6,0 -5,-0 z&lt;p&gt;plain path M -18,-13 C -13,-6 -13,4 -8,12 C -11,14 -15,21 -18,26 C -20,17 -22,4 -28,0 C -26,-4 -21,-9 -18,-13 z M 5,-31 C 4,-19 3,-6 6,5 C 1,10 -0,14 -3,19 C -2,6 -3,-4 -4,-16 C -4,-21 2,-26 5,-31 z M 26,-1 C 16,6 19,5 9,18 C 12,3 21,-8 34,-17 C 32,-12 29,-6 27,-1 z &lt;/p&gt;&lt;/div&gt;&lt;p&gt;If you don&amp;#x2019;t want this path to be black, you need to specify attributes for the  &lt;a class="url http outside" href="http://www.w3.org/TR/SVG/paths.html#PathElement"&gt;path element&lt;/a&gt;.&lt;/p&gt;&lt;pre class="real"&gt;plain path attributes fill="#76ee00"
hill path attributes fill="#b8860b"&lt;/pre&gt;&lt;p&gt;And finally, the coordinates are simple &lt;a class="url http outside" href="http://www.w3.org/TR/SVG/text.html#TextElement"&gt;text elements&lt;/a&gt;.&lt;/p&gt;&lt;pre class="real"&gt;text font-size="20pt" dy="15px"&lt;/pre&gt;&lt;p&gt;If you wanted a black and white map, for example, you could use different strokes&amp;#x2026;&lt;/p&gt;&lt;pre class="real"&gt;empty attributes fill="white" stroke="#b3b3ff" stroke-width="3"
mountain attributes fill="white" stroke="#b3b3ff" stroke-width="3"
hill attributes fill="white" stroke="#b3b3ff" stroke-width="3"
forest attributes fill="white" stroke="#b3b3ff" stroke-width="3"&lt;/pre&gt;&lt;p&gt;If you want to create new path elements yourself in Inkscape, you should draw them in a rectangle from (-100,-100) to (100,100) and extract the the path info from the SVG. Yeah, adding new icons isn&amp;#x2019;t easy.&lt;/p&gt;&lt;p&gt;I need to add more icons. I&amp;#x2019;d also like to add multiple icons for the same terrain such that the code will pick one at random.&lt;/p&gt;&lt;p&gt;I wonder how easy it&amp;#x2019;s be to add text labels, roads, rivers and borders. &lt;img class="smiley" src="http://www.emacswiki.org/pics/smile.png" alt=":)" /&gt;&lt;/p&gt;&lt;p&gt;The result of the above:&lt;/p&gt;&lt;div style="width:500px"&gt; &lt;a class="image outside" href="http://alexschroeder.ch/text-mapper?map=%23+map+definition%0D%0A0101+mountain%0D%0A0102+mountain%0D%0A0103+hill%0D%0A0104+forest%0D%0A0201+mountain%0D%0A0202+hill%0D%0A0203+coast%0D%0A0204+empty%0D%0A0301+mountain%0D%0A0302+mountain%0D%0A0303+plain%0D%0A0304+sea%0D%0A0401+hill%0D%0A0402+sand%0D%0A0403+forest%0D%0A%0D%0A%23+attributes%0D%0Aempty+attributes+fill%3D%22%23ffffff%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Aplain+attributes+fill%3D%22%237cfc00%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Aplain+path+attributes+fill%3D%22%2376ee00%22%0D%0Aforest+attributes+fill%3D%22%23228b22%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Ahill+attributes+fill%3D%22%23daa520%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Ahill+path+attributes+fill%3D%22%23b8860b%22%0D%0Amountain+attributes+fill%3D%22%23708090%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Asand+attributes+fill%3D%22%23eedd82%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Acoast+attributes+fill%3D%22%237fffd4%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Asea+attributes+fill%3D%22%234169e1%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0A%0D%0A%23+add+shapes%0D%0Ahill+path+M+-42%2C11+C+-38%2C5+-34%2C0+-28%2C-3+C+-20%2C-6+-11%2C-5+-5%2C-0+C+-2%2C2+1%2C6+3%2C9+C+4%2C12+2%2C13+0%2C14+C+-3%2C9+-7%2C5+-13%2C2+C+-21%2C-1+-30%2C0+-36%2C6+C+-38%2C9+-40%2C11+-43%2C14+C+-43%2C15+-44%2C14+-44%2C13+C+-43%2C12+-43%2C12+-42%2C11+z+M+-5%2C-0+C+0%2C-6+7%2C-12+15%2C-16+C+21%2C-18+28%2C-17+33%2C-14+C+39%2C-11+41%2C-5+43%2C-0+C+42%2C2+41%2C5+39%2C2+C+37%2C-2+33%2C-8+27%2C-10+C+20%2C-13+12%2C-12+6%2C-7+C+2%2C-4+-1%2C-1+-4%2C1+C+-7%2C4+-6%2C0+-5%2C-0+z%0D%0A%0D%0Aplain+path+M+-18%2C-13+C+-13%2C-6+-13%2C4+-8%2C12+C+-11%2C14+-15%2C21+-18%2C26+C+-20%2C17+-22%2C4+-28%2C0+C+-26%2C-4+-21%2C-9+-18%2C-13+z+M+5%2C-31+C+4%2C-19+3%2C-6+6%2C5+C+1%2C10+-0%2C14+-3%2C19+C+-2%2C6+-3%2C-4+-4%2C-16+C+-4%2C-21+2%2C-26+5%2C-31+z+M+26%2C-1+C+16%2C6+19%2C5+9%2C18+C+12%2C3+21%2C-8+34%2C-17+C+32%2C-12+29%2C-6+27%2C-1+z%0D%0A%0D%0Atext+font-size%3D%2220pt%22+dy%3D%2215px%22%0D%0A"&gt;&lt;img class="upload" title="Example map" src="http://alexschroeder.ch/text-mapper?map=%23+map+definition%0D%0A0101+mountain%0D%0A0102+mountain%0D%0A0103+hill%0D%0A0104+forest%0D%0A0201+mountain%0D%0A0202+hill%0D%0A0203+coast%0D%0A0204+empty%0D%0A0301+mountain%0D%0A0302+mountain%0D%0A0303+plain%0D%0A0304+sea%0D%0A0401+hill%0D%0A0402+sand%0D%0A0403+forest%0D%0A%0D%0A%23+attributes%0D%0Aempty+attributes+fill%3D%22%23ffffff%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Aplain+attributes+fill%3D%22%237cfc00%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Aplain+path+attributes+fill%3D%22%2376ee00%22%0D%0Aforest+attributes+fill%3D%22%23228b22%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Ahill+attributes+fill%3D%22%23daa520%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Ahill+path+attributes+fill%3D%22%23b8860b%22%0D%0Amountain+attributes+fill%3D%22%23708090%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Asand+attributes+fill%3D%22%23eedd82%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Acoast+attributes+fill%3D%22%237fffd4%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0Asea+attributes+fill%3D%22%234169e1%22+stroke%3D%22black%22+stroke-width%3D%223%22%0D%0A%0D%0A%23+add+shapes%0D%0Ahill+path+M+-42%2C11+C+-38%2C5+-34%2C0+-28%2C-3+C+-20%2C-6+-11%2C-5+-5%2C-0+C+-2%2C2+1%2C6+3%2C9+C+4%2C12+2%2C13+0%2C14+C+-3%2C9+-7%2C5+-13%2C2+C+-21%2C-1+-30%2C0+-36%2C6+C+-38%2C9+-40%2C11+-43%2C14+C+-43%2C15+-44%2C14+-44%2C13+C+-43%2C12+-43%2C12+-42%2C11+z+M+-5%2C-0+C+0%2C-6+7%2C-12+15%2C-16+C+21%2C-18+28%2C-17+33%2C-14+C+39%2C-11+41%2C-5+43%2C-0+C+42%2C2+41%2C5+39%2C2+C+37%2C-2+33%2C-8+27%2C-10+C+20%2C-13+12%2C-12+6%2C-7+C+2%2C-4+-1%2C-1+-4%2C1+C+-7%2C4+-6%2C0+-5%2C-0+z%0D%0A%0D%0Aplain+path+M+-18%2C-13+C+-13%2C-6+-13%2C4+-8%2C12+C+-11%2C14+-15%2C21+-18%2C26+C+-20%2C17+-22%2C4+-28%2C0+C+-26%2C-4+-21%2C-9+-18%2C-13+z+M+5%2C-31+C+4%2C-19+3%2C-6+6%2C5+C+1%2C10+-0%2C14+-3%2C19+C+-2%2C6+-3%2C-4+-4%2C-16+C+-4%2C-21+2%2C-26+5%2C-31+z+M+26%2C-1+C+16%2C6+19%2C5+9%2C18+C+12%2C3+21%2C-8+34%2C-17+C+32%2C-12+29%2C-6+27%2C-1+z%0D%0A%0D%0Atext+font-size%3D%2220pt%22+dy%3D%2215px%22%0D%0A" alt="Example map" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;p&gt;(Also &lt;a class="url http outside" href="https://github.com/kensanata/hex-mapping"&gt;on GitHub&lt;/a&gt;.)&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/RPG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Hex"&gt;Hex&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Hex"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Maps"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Software"&gt;Software&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Software"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Text%20Mapper"&gt;Text Mapper&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Text%20Mapper"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Tue, 26 Feb 2013 07:54:10 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2013-02-26_Text_Mapper</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2013-02-26_Text_Mapper</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2013-02-26_Text_Mapper</wiki:diff>
<category>RPG</category>
<category>Hex</category>
<category>Maps</category>
<category>Software</category>
<category>Text Mapper</category>
</item>

<item>
<title>Mapping using Inkscape</title>
<link>http://alexschroeder.ch/wiki/2012-11-28_Mapping_using_Inkscape</link>
<guid>http://alexschroeder.ch/wiki/2012-11-28_Mapping_using_Inkscape</guid>
<description>&lt;div class="right" style="float: right"&gt;&lt;p&gt; &lt;a href="http://www.flickr.com/photos/kensanata/3571723898/" class="url http"&gt;&lt;img class="url http" src="http://farm4.staticflickr.com/3354/3571723898_486e5505e0.jpg" alt="http://farm4.staticflickr.com/3354/3571723898_486e5505e0.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kensanata/3571723902/" class="url http"&gt;&lt;img class="url http" src="http://farm4.staticflickr.com/3405/3571723902_6bec581271.jpg" alt="http://farm4.staticflickr.com/3405/3571723902_6bec581271.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kensanata/5793022199/" class="url http"&gt;&lt;img class="url http" src="http://farm4.static.flickr.com/3356/5793022199_2622f9b031.jpg" alt="http://farm4.static.flickr.com/3356/5793022199_2622f9b031.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kensanata/8221269254/" class="url http"&gt;&lt;img class="url http" src="https://farm9.staticflickr.com/8068/8221269254_283e26d2b6.jpg" alt="https://farm9.staticflickr.com/8068/8221269254_283e26d2b6.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;p&gt;I recently decided to &amp;#x201c;publish&amp;#x201d; my high level module &lt;a class="local" href="http://alexschroeder.ch/wiki/2012-11-26_Caverns_of_Slime"&gt;Caverns of Slime&lt;/a&gt;. To the right, you can see the various stages my map went through. And you can see that the entire process started out with map. The map was the backbone of all subsequent activities.&lt;/p&gt;&lt;p&gt;It all started with the first map at the top. Things that made it from the very first draft to the very end:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;the ring like structure with a water flow leading to the Ooze Lord in the center&lt;/li&gt;&lt;li&gt;the lab of one of my former player characters, &lt;a class="url http outside" href="http://www.flickr.com/photos/kensanata/tags/gar/"&gt;Gar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Shroom Lord (I wanted some continuity with the level above)&lt;/li&gt;&lt;li&gt;orcs on landsharks throwing bottles of green slime&lt;/li&gt;&lt;li&gt;Prison of Dis&lt;/li&gt;&lt;li&gt;Aranea city&lt;/li&gt;&lt;li&gt;Eternal Swamps&lt;/li&gt;&lt;li&gt;ghouls&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Things that got lost:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;were rats (boring unless transformed in interesting ways)&lt;/li&gt;&lt;li&gt;poison flowers (what&amp;#x2019;s interesting about poison flowers? the Eternal Swamps ended up being not so evil&amp;#x2026;)&lt;/li&gt;&lt;li&gt;sauro-eels (but giant eels remained)&lt;/li&gt;&lt;li&gt;&amp;#x201c;sulfur levels of clockhouse wheels&amp;#x201d; &amp;#x2013; a kind of evil Clockwork Nirvana of Mechanus (the evil fusion of men and machine reappeared in the Fortress Dam of Ix)&lt;/li&gt;&lt;li&gt;refugees of the fungus forest (the level above didn&amp;#x2019;t seem to have any refugees)&lt;/li&gt;&lt;li&gt;rock giant with moss (I feel that giants don&amp;#x2019;t fit thematically)&lt;/li&gt;&lt;li&gt;dread mages of the shroom kings (which kings? what&amp;#x2019;s interesting about dread?)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Also note how I abandoned my detailed isometric map in step two. As I drew it, I kept dreading the moment where I&amp;#x2019;d have to key it and I kept thinking that at higher levels, the party would be flying, teleporting, gating, or pass walling anyway.&lt;/p&gt;&lt;p&gt;As for the final map: I just drew it all using &lt;a class="near" title="Names" href="http://www.inkscape.org/"&gt;Inkscape&lt;/a&gt;. I wanted to write more about it, but in the end, all I did was draw lines, using a lot of Ctrl+L to simplify the paths and then editing the nodes using F2 to make it look better. Every section was on a different layer so that I could lock the rest. The most important decision was to work on paper for the longest time.&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/RPG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Maps"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Inkscape"&gt;Inkscape&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Inkscape"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Caverns%20of%20Slime"&gt;Caverns of Slime&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Caverns%20of%20Slime"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 28 Nov 2012 11:05:29 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2012-11-28_Mapping_using_Inkscape</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>updated</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>2</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2012-11-28_Mapping_using_Inkscape</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2012-11-28_Mapping_using_Inkscape</wiki:diff>
<category>RPG</category>
<category>Maps</category>
<category>Inkscape</category>
<category>Caverns of Slime</category>
</item>

<item>
<title>Temple of Set</title>
<link>http://alexschroeder.ch/wiki/2012-11-08_Temple_of_Set</link>
<guid>http://alexschroeder.ch/wiki/2012-11-08_Temple_of_Set</guid>
<description>&lt;div class="right" style="float: right"&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/kensanata/8165450871/" class="url http"&gt;&lt;img class="url http" src="http://farm9.staticflickr.com/8070/8165450871_d12d66ef7f_n.jpg" alt="http://farm9.staticflickr.com/8070/8165450871_d12d66ef7f_n.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;I used 13 acolytes of Set: HD 2 AC 4 D 1d6 SV 15 ML 9 with chain and shield, long knives; they like to cast &lt;em&gt;inflict light wounds&lt;/em&gt; in the first round of combat; and a priest HD 7 AC 4 D 1d6 SV 10 ML 10 with the following spells: &lt;em&gt;sticks to snakes&lt;/em&gt;, &lt;em&gt;animal growth&lt;/em&gt;, &lt;em&gt;charm snake&lt;/em&gt;, &lt;em&gt;talk to animals&lt;/em&gt;, &lt;em&gt;dispel magic&lt;/em&gt;, &lt;em&gt;hold person&lt;/em&gt;, &lt;em&gt;fear&lt;/em&gt;, &lt;em&gt;blindness&lt;/em&gt; and some others I have not determined. The snakes have HD 1 AC 6 D 1d4 SV 16 ML 7. If enlarged, HD 5 AC 6 D 2d6 (no need to roll in subsequent rounds as it keeps constricting) SV 15 ML 8. Use the same stats if he charms the giant python he keeps in the snake pit and sends it after the party.&lt;/p&gt;&lt;p&gt;I used badger people for slaves. The party decided to drop yellow mold down into the flesh pit, followed by burning wood drenched in oil. I decided this killed 4 acolytes, all the rats and all the snakes in the snake pit. Actually, it &lt;em&gt;burnt&lt;/em&gt; the rats, &lt;em&gt;suffocated&lt;/em&gt; the acolytes and turned the vipers into &lt;em&gt;yellow mold&lt;/em&gt;. When faced with a pit of yellow mold, they wondered about washing it down by ripping down the pipe with running water but then decided to just burn it using more oil.&lt;/p&gt;&lt;p&gt;I had two acolytes taking a bath without armor and they were killed quickly. The session ended with the party discovering the secret door, continuing into the prayer hall and trying to draw the acolytes into a fight at the choke point. The priest has been sending nine little snakes and a giant python… And the session ended with a cliff hanger!&lt;/p&gt;&lt;p&gt;(The party also consists of nearly twenty characters including five giant apes.)&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/RPG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Maps"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Thu, 08 Nov 2012 00:50:15 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2012-11-08_Temple_of_Set</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2012-11-08_Temple_of_Set</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2012-11-08_Temple_of_Set</wiki:diff>
<category>RPG</category>
<category>Maps</category>
</item>

<item>
<title>Traveller Maps for Campaign Wiki</title>
<link>http://alexschroeder.ch/wiki/2012-10-17_Traveller_Maps_for_Campaign_Wiki</link>
<guid>http://alexschroeder.ch/wiki/2012-10-17_Traveller_Maps_for_Campaign_Wiki</guid>
<description>&lt;p&gt;Since I&amp;#x2019;m apparently going to use my &lt;a class="local" href="http://alexschroeder.ch/wiki/2012-10-11_Traveller%2c_Spelljammer%2c_Planescape"&gt;Spelljammer-Planescape-Traveller&lt;/a&gt; map for a while, I added a way to make map display even easier on &lt;a class="near" title="Names" href="http://www.campaignwiki.org/"&gt;Campaign Wiki&lt;/a&gt; pages.&lt;/p&gt;&lt;p&gt;Write &amp;#x201c;Traveller:&amp;#x201d; followed by the &lt;abbr title="Universal World Profile"&gt;UWP&lt;/abbr&gt; like this:&lt;/p&gt;&lt;pre class="real"&gt;Traveller:
Tu Akhra 0404 D0602B3-1 P  As De Lo Lt R
Susrael 0503 B0604A4-1 N  As De Lt NI A
Nova Genova 0607 B867686-1 N  Ag Ga Lt NI Ri
Hinia Oot 0705 E060200-1 As De Lo Lt A
Monkey Island 0308 E064105-0 Lo Lt&lt;/pre&gt;&lt;p&gt;And the result will be this:&lt;/p&gt;&lt;p&gt;&lt;a class="image noborder outside" href="http://emacswiki.org/svg-map?map=Tu%20Akhra%200404%20D0602B3-1%20P%20%C2%A0As%20De%20Lo%20Lt%20R%0aSusrael%200503%20B0604A4-1%20N%20%C2%A0As%20De%20Lt%20NI%20A%0aNova%20Genova%200607%20B867686-1%20N%20%C2%A0Ag%20Ga%20Lt%20NI%20Ri%0aHinia%20Oot%200705%20E060200-1%20As%20De%20Lo%20Lt%20A%0aMonkey%20Island%200308%20E064105-0%20Lo%20Lt%0a;wiki=http%3a%2f%2fcampaignwiki.org%2fwiki%2fF%25c3%25bcnfWinde"&gt;&lt;img class="upload" title="Traveller and Spelljammer" src="http://emacswiki.org/svg-map?map=Tu%20Akhra%200404%20D0602B3-1%20P%20%C2%A0As%20De%20Lo%20Lt%20R%0aSusrael%200503%20B0604A4-1%20N%20%C2%A0As%20De%20Lt%20NI%20A%0aNova%20Genova%200607%20B867686-1%20N%20%C2%A0Ag%20Ga%20Lt%20NI%20Ri%0aHinia%20Oot%200705%20E060200-1%20As%20De%20Lo%20Lt%20A%0aMonkey%20Island%200308%20E064105-0%20Lo%20Lt%0a;wiki=http%3a%2f%2fcampaignwiki.org%2fwiki%2fF%25c3%25bcnfWinde" alt="Traveller and Spelljammer" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Klick to switch to the map. There, you can click on the systems to get the wiki pages.&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://www.emacswiki.org/alex/feed/full/RPG"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=Traveller"&gt;Traveller&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://www.emacswiki.org/alex/feed/full/Traveller"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://www.emacswiki.org/alex/feed/full/Maps"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Wed, 17 Oct 2012 19:36:59 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2012-10-17_Traveller_Maps_for_Campaign_Wiki</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2012-10-17_Traveller_Maps_for_Campaign_Wiki</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2012-10-17_Traveller_Maps_for_Campaign_Wiki</wiki:diff>
<category>RPG</category>
<category>Traveller</category>
<category>Maps</category>
</item>

<item>
<title>I Want A Lot Of Labels On My Maps</title>
<link>http://alexschroeder.ch/wiki/2011-05-24_I_Want_A_Lot_Of_Labels_On_My_Maps</link>
<guid>http://alexschroeder.ch/wiki/2011-05-24_I_Want_A_Lot_Of_Labels_On_My_Maps</guid>
<description>&lt;div class="right" style="float: right"&gt;&lt;p&gt; &lt;a href="http://www.flickr.com/photos/kensanata/5754238599/" class="url http"&gt;&lt;img class="url http" src="http://farm4.static.flickr.com/3373/5754238599_ff1fd8a49a.jpg" alt="http://farm4.static.flickr.com/3373/5754238599_ff1fd8a49a.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;p&gt;I prefer my maps to be  &lt;em style="font-style: normal; letter-spacing: 0.125em"&gt;dense&lt;/em&gt;. On the right you can see the treatment I give to a map published in &lt;a class="near" title="Names" href="http://www.fightonmagazine.com/"&gt;Fight On&lt;/a&gt;! magazine. If there is whitespace on the map, it should be filled with text that saves me looking at the key. This is true for typical map keys stretching over many pages, but it&amp;#x2019;s also true for a &lt;a class="near" title="Names" href="http://campaignwiki.org/wiki/DungeonMaps/One_Page_Dungeon"&gt;One Page Dungeon&lt;/a&gt;. I really prefer there to be as little separation between map and key as possible.&lt;/p&gt;&lt;p&gt;I&amp;#x2019;m working on a dungeon map that hopefully illustrates my point. Too bad it takes so long to do, haha. In 2009 I created something like that for my One Page Dungeon Contest 2009 entry which I retracted when I got a position as a contest judge. These days the &lt;a class="url http outside" href="http://campaignwiki.org/wiki/DungeonMaps/download/Water_Temple.svg"&gt;Water Temple&lt;/a&gt; (SVG) has many things I&amp;#x2019;d change:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The map is too linear. I refer you to Melan&amp;#x2019;s discussion of dungeon maps for an illustration of what&amp;#x2019;s wrong with my map. This is the most important fault, I feel.&lt;/li&gt;&lt;li&gt;There but a single named NPCs to interact with. Another one or two would be good.&lt;/li&gt;&lt;li&gt;The NPC is hardly enough to be called a &amp;#x201c;faction&amp;#x201d; &amp;#x2013; this dungeon needs at least one more significant faction. Something cool like mole-men or crab-men, a wasp queen, or something like that.&lt;/li&gt;&lt;li&gt;There are no allies to be found, unless you want to call the hard-to-find necromancer an ally. Perhaps if the dungeon clearly indicated that the party starts out with a dead companion and heard about a necromancer living around here that might be able to help (true or false?) then it might work much better.&lt;/li&gt;&lt;li&gt;There is no opportunity, however small, to effect significant changes for player characters (unless you want multi-class into &lt;a class="url http outside" href="http://aeonsnaugauries.blogspot.com/2010/06/themoribund-curious-old-school-class.html"&gt;ghoul&lt;/a&gt;?).&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Back to the maps I am annotating. The maps are from the Fight On! megadungeon &lt;em style="text-decoration: underline; font-style: normal;"&gt;The Darkness Beneath&lt;/em&gt;:&lt;/p&gt;&lt;p&gt;Level 2: &lt;em style="text-decoration: underline; font-style: normal;"&gt;Warrens of the Troglodytes&lt;/em&gt; by Calithena and D. Bowman was published in issue #5.&lt;/p&gt;&lt;p&gt;Level 3: &lt;em style="text-decoration: underline; font-style: normal;"&gt;Spawning Grounds of the Crab-Men&lt;/em&gt; by D. Bowman was published in issue #3.&lt;/p&gt;&lt;p&gt;I just realized that if I want to print out the remaining levels and mark them up (and not write in my printed copies) I will have to buy PDF versions of the issues I didn&amp;#x2019;t get contributor copies for (#1–#3 and #11); that would cost me $25. I think I need to figure out how photocopying at home works, ie. scanning and printing.&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed für diesen Tag" rel="feed" href="http://www.emacswiki.org/alex/feed/full/RPG"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://www.emacswiki.org/alex?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed für diesen Tag" rel="feed" href="http://www.emacswiki.org/alex/feed/full/Maps"&gt;&lt;img src="http://www.emacswiki.org/alex/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Tue, 24 May 2011 12:42:02 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2011-05-24_I_Want_A_Lot_Of_Labels_On_My_Maps</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2011-05-24_I_Want_A_Lot_Of_Labels_On_My_Maps</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2011-05-24_I_Want_A_Lot_Of_Labels_On_My_Maps</wiki:diff>
<category>RPG</category>
<category>Maps</category>
</item>

<item>
<title>Map Drawing Using Polygons</title>
<link>http://alexschroeder.ch/wiki/2011-04-30_Map_Drawing_Using_Polygons</link>
<guid>http://alexschroeder.ch/wiki/2011-04-30_Map_Drawing_Using_Polygons</guid>
<description>&lt;p&gt;I&amp;#x2019;m currently working on randomly generating islands using the ideas presented in &lt;a class="url http outside" href="http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/"&gt; Polygonal Map Generation&lt;/a&gt; by Amit. Check out his &lt;a class="url http outside" href="http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/mapgen2.swf"&gt;Flash demo&lt;/a&gt;! I am nowhere as far, yet. I&amp;#x2019;m writing my code in Perl and &lt;a class="url http outside" href="http://campaignwiki.org/monones.pl"&gt;producing SVG output&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/kensanata/5671163434/" class="url http"&gt;&lt;img class="url http" src="http://farm6.static.flickr.com/5303/5671163434_e3b86d4dde.jpg" alt="http://farm6.static.flickr.com/5303/5671163434_e3b86d4dde.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;See below for source code used. I&amp;#x2019;d install it on a public server, but unfortunately there are quite some dependencies…&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Maps"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Perl"&gt;Perl&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Perl"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=SVG"&gt;SVG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/SVG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;pre class="real"&gt;#! /usr/bin/perl -w
# Copyright (C) 2011  Alex Schroeder &amp;lt;alex@gnu.org&amp;gt;
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.

use strict;
use CGI qw(:standard);
use SVG;
use Math::Geometry::Voronoi;
use Class::Struct;
use Math::Fractal::Noisemaker;
use List::Util qw(min max);
use Data::Dumper;

my $points = 3000;
my $width  = 1000;
my $height =  550;
my $center_x = $width / 2;
my $center_y = $height / 2;
my $radius = 500;

my %color = (beach =&amp;gt; '#a09077',
	     ocean =&amp;gt; '#44447a',);

struct World =&amp;gt; { points =&amp;gt; '@',
		  centroids =&amp;gt; '@',
		  voronoi =&amp;gt; '$',
		  height =&amp;gt; '@',
		};

sub add_random_points {
  my ($world) = @_;
  for (my $i = 0; $i &amp;lt; $points; $i++) {
    push(@{$world-&amp;gt;points}, [rand($width), rand($height)]);
  };
  # print(join("\n", map {join(",", $_-&amp;gt;[0], $_-&amp;gt;[1])} @{$world-&amp;gt;points}));
  return $world;
}

sub add_voronoi {
  my ($world) = @_;
  $world-&amp;gt;voronoi(Math::Geometry::Voronoi-&amp;gt;new(points =&amp;gt; $world-&amp;gt;points));
  $world-&amp;gt;voronoi-&amp;gt;compute;
}

sub add_centroids {
  my ($world) = @_;
  $world-&amp;gt;centroids([]); # clear
  foreach my $polygon ($world-&amp;gt;voronoi-&amp;gt;polygons) {
    push(@{$world-&amp;gt;centroids}, centroid($polygon));
  }
}

sub centroid {
  my ($cx, $cy) = (0, 0);
  my $A = 0;
  my $polygon = shift;
  my ($point_index, @points) = @$polygon; # see Math::Geometry::Voronoi
  my $point = $points[$#points];
  my ($x0, $y0) = ($point-&amp;gt;[0], $point-&amp;gt;[1]);
  for $point (@points) {
    my ($x1, $y1) = ($point-&amp;gt;[0], $point-&amp;gt;[1]);
    $cx += ($x0 + $x1) * ($x0 * $y1 - $x1 * $y0);
    $cy += ($y0 + $y1) * ($x0 * $y1 - $x1 * $y0);
    $A += ($x0 * $y1 - $x1 * $y0);
    ($x0, $y0) = ($x1, $y1);
  }
  $A /= 2;
  $cx /= 6 * $A;
  $cy /= 6 * $A;
  return [$cx, $cy, $point_index];
}

sub add_height {
  my $world = shift;
  $Math::Fractal::Noisemaker::QUIET = 1;
  my $grid = Math::Fractal::Noisemaker::square();
  $world-&amp;gt;height([]); # clear
  my $scale = max($height, $width); # grid is a square
  foreach my $point (@{$world-&amp;gt;points}) {
    my $x = int($point-&amp;gt;[0]*255/$scale);
    my $y = int($point-&amp;gt;[1]*255/$scale);
    my $h = 0; # we must not skip any points!
    $h = $grid-&amp;gt;[$x]-&amp;gt;get($y) / 255
      unless $x &amp;lt; 0 or $y &amp;lt; 0 or $x &amp;gt; 255 or $y &amp;gt; 255;
    push(@{$world-&amp;gt;height}, $h);
  }
}

sub raise_point {
  my ($world, $x, $y, $radius) = @_;
  my $i = 0;
  foreach my $point (@{$world-&amp;gt;points}) {
    my $dx = $point-&amp;gt;[0] - $x;
    my $dy = $point-&amp;gt;[1] - $y;
    my $d = sqrt($dx * $dx + $dy * $dy);
    my $v = max(0, $world-&amp;gt;height-&amp;gt;[$i] - $d / $radius);
    $world-&amp;gt;height($i, $v);
    $i++;
  }
}

sub svg {
  my $world = shift;
  my $svg = new SVG(-width =&amp;gt; $width,
		    -height =&amp;gt; $height, );
  foreach my $polygon ($world-&amp;gt;voronoi-&amp;gt;polygons) {
    my ($point_index, @points) = @$polygon; # see Math::Geometry::Voronoi
    my $x = $world-&amp;gt;points-&amp;gt;[$point_index]-&amp;gt;[0];
    my $y = $world-&amp;gt;points-&amp;gt;[$point_index]-&amp;gt;[1];
    next if $x &amp;lt; 0 or $y &amp;lt; 0 or $x &amp;gt; $width or $y &amp;gt; $height;
    my $z = int($world-&amp;gt;height-&amp;gt;[$point_index] * 255);
    my $color = $z == 0 ? $color{ocean} : "rgb($z,$z,$z)";
    my $path = join(",", map { map { int } @$_ } @points);
    $svg-&amp;gt;polygon(points =&amp;gt; $path,
		  fill =&amp;gt; $color,
		  style =&amp;gt; { 'stroke-width' =&amp;gt; 1,
			     'stroke' =&amp;gt; 'black'});
  }
  return $svg-&amp;gt;xmlify();
}

sub response {
  print header(-type=&amp;gt;'image/svg+xml');
  print shift;
}

sub main {
  if (path_info eq '/source') {
    seek DATA, 0, 0;
    print "Content-type: text/plain; charset=UTF-8\r\n\r\n", &amp;lt;DATA&amp;gt;;
  } else {
    srand(param('seed') || time);
    my $world = new World;
    add_random_points($world, $points);
    add_voronoi($world);
    for (my $i = 2; $i--; ) {
      # Lloyd Relaxation
      add_centroids($world);
      $world-&amp;gt;points($world-&amp;gt;centroids);
      add_voronoi($world);
    }
    # skip corner improvement
    # skip Delaunay triangulation
    add_height($world);
    raise_point($world, $center_x, $center_y, $radius);
    # draw
    response(svg($world));
  }
}

main ();

__DATA__&lt;/pre&gt;</description>
<pubDate>Sat, 30 Apr 2011 00:05:50 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2011-04-30_Map_Drawing_Using_Polygons</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2011-04-30_Map_Drawing_Using_Polygons</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2011-04-30_Map_Drawing_Using_Polygons</wiki:diff>
<category>Maps</category>
<category>Perl</category>
<category>SVG</category>
</item>

<item>
<title>Map Making Using Inkscape</title>
<link>http://alexschroeder.ch/wiki/2011-02-12_Map_Making_Using_Inkscape</link>
<guid>http://alexschroeder.ch/wiki/2011-02-12_Map_Making_Using_Inkscape</guid>
<description>&lt;p&gt;A long time ago I wrote an &lt;a class="local" href="http://alexschroeder.ch/wiki/Old_School_Hex_Map_Tutorial"&gt;Old School Hex Map Tutorial&lt;/a&gt; using Inkscape. The campaign I started this with is still on-going after 46 sessions and more than two years of play. We meet on two Sundays per month. Tomorrow is the next session, and I&amp;#x2019;m looking forward to it.&lt;/p&gt;&lt;p&gt;And I keep working on my map!&lt;/p&gt;&lt;p&gt;&lt;a class="image outside" href="http://www.flickr.com/photos/kensanata/5438543704/in/set-72157594406870853/"&gt;&lt;img class="upload" title="Working on my map using Inkscape" src="http://farm6.static.flickr.com/5254/5438543704_061a963870_z.jpg" alt="Working on my map using Inkscape" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It just keeps on growing…&lt;/p&gt;&lt;p&gt;&lt;a class="image outside" href="http://www.flickr.com/photos/kensanata/5438543484/in/set-72157594406870853/"&gt;&lt;img class="upload" title="Alder King map for my players" src="http://farm6.static.flickr.com/5058/5438543484_825d8f743e_z.jpg" alt="Alder King map for my players" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Some of you may recognize this map as a section of the &lt;em style="text-decoration: underline; font-style: normal;"&gt;Lenap&lt;/em&gt; region in the &lt;em style="text-decoration: underline; font-style: normal;"&gt;Wilderlands of High Fantasy&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;And I started on &lt;a class="url http outside" href="http://campaignwiki.org/pics/F%C3%BCnfWinde/Karte.svg"&gt;a similar map&lt;/a&gt; for a new &lt;a class="near" title="Names" href="http://www.goblinoidgames.com/labyrinthlord.html"&gt;Labyrinth Lord&lt;/a&gt; campaign in the &lt;em style="text-decoration: underline; font-style: normal;"&gt;Sea of Five Winds&lt;/em&gt; region of the &lt;em style="text-decoration: underline; font-style: normal;"&gt;Wilderlands of High Fantasy&lt;/em&gt;. I love the material because it provides a rough foundation upon which I can build my own campaign setting.&lt;/p&gt;&lt;p&gt;Tags: &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Maps"&gt;Maps&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Maps"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=Inkscape"&gt;Inkscape&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/Inkscape"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt; &lt;a class="outside tag" title="Tag" rel="tag" href="http://alexschroeder.ch/wiki?action=tag;id=RPG"&gt;RPG&lt;/a&gt; &lt;a class="feed tag" title="Feed for this tag" rel="feed" href="http://alexschroeder.ch/wiki/feed/full/RPG"&gt;&lt;img src="http://alexschroeder.ch/pics/rss.png" alt="RSS" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Sat, 12 Feb 2011 12:08:53 GMT</pubDate>
<comments>http://alexschroeder.ch/wiki/Comments_on_2011-02-12_Map_Making_Using_Inkscape</comments>
<dc:contributor>AlexSchroeder</dc:contributor>
<wiki:status>new</wiki:status>
<wiki:importance>major</wiki:importance>
<wiki:version>1</wiki:version>
<wiki:history>http://alexschroeder.ch/wiki?action=history;id=2011-02-12_Map_Making_Using_Inkscape</wiki:history>
<wiki:diff>http://alexschroeder.ch/wiki?action=browse;diff=1;id=2011-02-12_Map_Making_Using_Inkscape</wiki:diff>
<category>Maps</category>
<category>Inkscape</category>
<category>RPG</category>
</item>
</channel>
</rss>
