{"id":492,"date":"2015-02-14T18:30:05","date_gmt":"2015-02-15T01:30:05","guid":{"rendered":"https:\/\/www.crabattack.org\/blog\/hawk\/?p=492"},"modified":"2015-02-14T18:30:38","modified_gmt":"2015-02-15T01:30:38","slug":"february-15th-2015","status":"publish","type":"post","link":"https:\/\/www.crabattack.org\/blog\/hawk\/february-15th-2015\/","title":{"rendered":"February 15th, 2015"},"content":{"rendered":"<p>As it turns out the solution to the new generation was to simply expand the existing system further. Much like how node tags have rules describing how they should be generated to create more interesting patterns, I added two new pieces of data to represent interesting patterns in the world shape as a whole. The first one is that of Area. Area basically describes the entirety of one\u00a0difficulty rank (for\u00a0reference there are currently 3 ranks in a single game). Doing it on a per rank basis\u00a0makes it easy to set it up so that further ranks\u00a0can have longer or more difficult patterns. It&#8217;s also important because certain world shapes are more interesting than what would tend to happen naturally (for instance I like the pattern where the map starts with several branches, then has a section with no branches, then returns to several branches- the middle section having no choice serves as an interesting melting pot of gathering the players together at the mid point)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-493\" src=\"https:\/\/www.crabattack.org\/blog\/hawk\/wp-content\/uploads\/2015\/02\/2015_generation.png\" alt=\"2015_generation\" width=\"402\" height=\"364\" srcset=\"https:\/\/www.crabattack.org\/blog\/hawk\/wp-content\/uploads\/2015\/02\/2015_generation.png 402w, https:\/\/www.crabattack.org\/blog\/hawk\/wp-content\/uploads\/2015\/02\/2015_generation-300x272.png 300w, https:\/\/www.crabattack.org\/blog\/hawk\/wp-content\/uploads\/2015\/02\/2015_generation-144x130.png 144w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><\/p>\n<p>Then comes\u00a0segments. Segments represent\u00a0the entirety of a single map branch. In a lot of ways segments are secretly just probability charts for the players to consider. Having partial control over the\u00a0patterns allows for stuff like &#8220;make\u00a0all of this section&#8217;s positive tiles gold gain&#8221;, and &#8220;front load all of the negative tiles at the beginning&#8221; etc. Segments\u00a0rely on node tag categorization to make broad generalizations such as &#8220;positive tile&#8221;\u00a0or &#8220;major negative tile&#8221;, rather than specifying exact nodes themselves. Naturally the final phase is the same as it was in the previous\u00a0generation system (essentially just picking a random node within a\u00a0tag set whose\u00a0constraints are\u00a0valid), just applied to a smaller space.<\/p>\n<p>It&#8217;s all really simple now that I put it out here, but much of the week was spent dealing with thorny issues. One such issue was how to apply gradual difficulty transitions across the map. Doing a transition\u00a0mid-segment would result in imbalances of how a segment was designed (ie the negative tiles might end up as lower difficulty than positive tiles, making that segment\u00a0too good). Eventually I settled on\u00a0making\u00a0the length\u00a0of segments directly correspond to the length of difficulties. Consequently\u00a0any extra long segments have to be built with the\u00a0knowledge of when their difficulty will transition, so they won&#8217;t be\u00a0designed in ways that promote imbalance.<\/p>\n<p>There&#8217;s a lot more complicated additions the new generation system will need for stuff like lock\/key nodes, but right now I&#8217;m just trying to get a basic version up and running so we can tell if this style of map is even worth generating in the first place. I kind of have a bad feeling about writing a generator before being certain of what map structures play well, but in theory the system should be able to adapt to any changes (of course that&#8217;s also what I said about the single worst waste of time of this project that was one of the previous generators).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As it turns out the solution to the new generation was to simply expand the existing system further. Much like how node tags have rules describing how they should be generated to create more interesting patterns, I added two new pieces of data to represent interesting patterns in the world shape as a whole. The&#8230; <a href=\"https:\/\/www.crabattack.org\/blog\/hawk\/february-15th-2015\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">February 15th, 2015<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[2],"class_list":["post-492","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-generation"],"_links":{"self":[{"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/posts\/492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/comments?post=492"}],"version-history":[{"count":2,"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/posts\/492\/revisions"}],"predecessor-version":[{"id":495,"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/posts\/492\/revisions\/495"}],"wp:attachment":[{"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/media?parent=492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/categories?post=492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.crabattack.org\/blog\/hawk\/wp-json\/wp\/v2\/tags?post=492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}