{"id":982,"date":"2025-03-06T02:10:49","date_gmt":"2025-03-06T02:10:49","guid":{"rendered":"https:\/\/sites.wsagames.com\/et4g23\/?p=982"},"modified":"2025-03-06T03:07:18","modified_gmt":"2025-03-06T03:07:18","slug":"researching-procedural-generation","status":"publish","type":"post","link":"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/","title":{"rendered":"Researching Procedural Generation"},"content":{"rendered":"\n<p class=\"has-text-align-center has-background\" style=\"background-color:#dfdfdf\">As the Dungeon in Lament will be procedurally generated, it is essential I dive deep into researching procedural generation. Whether it be general design processes when it comes to designing the generation; examples of existing games; game design methods etc. It will all be documented in this post.<\/p>\n\n\n\n<p>Although Lament clearly takes inspiration from the roguelike game &#8216;The Binding of Isaac&#8217;, I believe it would be beneficial for me to look into procedural room generation as a whole to begin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Practical Procedural Generation<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Practical Procedural Generation for Everyone\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/WumyfLEa6bU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>In this 2017 GDC talk, Kate Compton, the developer behind Tracery, breaks down the surprisingly simple algorithms used in procedural content generation. She explains how to use basic data structures to create complex, flexible, and scalable content-generators that are more powerful than you&#8217;d expect.<br>After watching this talk on general procedural generation, there were key takeaways that I got from this talk:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Know what you&#8217;re making\n<ul class=\"wp-block-list\">\n<li>The more detailed the generator you are making the more rules you can create<\/li>\n\n\n\n<li>More rules results in a more specific and therefore better generator<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Understand your generator\n<ul class=\"wp-block-list\">\n<li>Enumerate (create variables for) your constraits<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Additive and subtractive methods\n<ul class=\"wp-block-list\">\n<li>Build up a space of good stuff<\/li>\n\n\n\n<li>Remove bad stuff<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Parametric vs interpretive\n<ul class=\"wp-block-list\">\n<li>Parametric &#8211; Generation based off of variables and constraints<\/li>\n\n\n\n<li>Interpretive &#8211; Run an algorithm to process simpler data into some other data<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How (and Why) Spelunky Makes its Own Levels<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"How (and Why) Spelunky Makes its Own Levels\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/Uqk5Zf0tw3o?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>In this video, Mark Brown looks into how creator Derek Yu strikes a balance between random and authored levels to make stages that always feel fun and fair &#8211; and why it&#8217;s important that this game never gives you the same level twice.<br>Spelunky is a game with fantastic procedurally generated levels and (releasing in 2008) came out before The Binding of Isaac; being one of McMillen&#8217;s foremost inspirations for his game. These were the key takeaways I had from this video:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tiles\n<ul class=\"wp-block-list\">\n<li>Break different parts into regions<\/li>\n\n\n\n<li>Connect easier<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Pathing\n<ul class=\"wp-block-list\">\n<li>The player must be able to complete the level despite the &#8216;randomness&#8217;<\/li>\n\n\n\n<li>Generate levels from &#8216;start&#8217; to &#8216;finish&#8217;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>&#8216;Fake&#8217; randomness\n<ul class=\"wp-block-list\">\n<li>Pre-designed assets that make the game more &#8216;playable&#8217;<\/li>\n\n\n\n<li>Special item(s)\/resource(s) in rooms are designed to be more accessible<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Edmund McMillen on The Making of The Binding of Isaac<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Edmund McMillen on The Making of The Binding of Isaac, The Legend of Bum-Bo &amp; More\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/-X_QYumQQGk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>In this video, Jack Packard interviews Edmund McMillen, the creator of The Binding of Isaac. McMillen, in this interview, talks about certain methodologies, inspirations and design decisions he made in order to create The Binding of Isaac.<br>After hearing directly from the creator of The Binding of Isaac, which is a key inspiration for Lament. These were the key takeaways from this interview:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Grid-based layout\n<ul class=\"wp-block-list\">\n<li>Isaac is based off of a grid system where rooms are connected by doors in cardinal directons<\/li>\n\n\n\n<li>Ensures a valid path for the player to get to the &#8216;exit&#8217;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Room Templates\n<ul class=\"wp-block-list\">\n<li>Pre-defined room templates that are designed by the developer(s)<\/li>\n\n\n\n<li>Containing different enemy(s), item(s), door(s)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Special room types\n<ul class=\"wp-block-list\">\n<li>Boss rooms &#8211; A final enemy that leads to the end of the level<\/li>\n\n\n\n<li>Treasure rooms &#8211; Rooms that provide the player with special item(s)\/resource(s) that will help them with their progression<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How should my Room Generation Work?<\/h2>\n\n\n\n<p>Based off of the research I have done on Procedural Room Generation, I feel that there are 6 key aspects that I must implement in order to have a working and efficient Room Generation System for Lament&#8217;s dungeon:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Predefined Room Templates<\/strong>\n<ul class=\"wp-block-list\">\n<li>Large collection of predesigned rooms that can then be used as smaller pieces of a larger dungeon<\/li>\n\n\n\n<li>Rooms vary slightly &#8211; Doorways, Item(s), Enemy(s)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Grid-based Layout<\/strong>\n<ul class=\"wp-block-list\">\n<li>Rooms are connected by doors in a cardinal direction<\/li>\n\n\n\n<li>Rooms are randomly generated on the grid ensuring there is a path to the end<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Procedural Layout Generation<\/strong>\n<ul class=\"wp-block-list\">\n<li>Generation starts with rooms being connected to each other<\/li>\n\n\n\n<li>Key rooms must always be accessible from the start room<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Randomized Elements inside Rooms<\/strong>\n<ul class=\"wp-block-list\">\n<li>Enemy spawns\/types<\/li>\n\n\n\n<li>Item(s)<\/li>\n\n\n\n<li>Obstacle(s)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Special Room Types<\/strong>\n<ul class=\"wp-block-list\">\n<li>Treasure rooms &#8211; Providing the player with items and resources<\/li>\n\n\n\n<li>Boss rooms &#8211; Rooms with a much harder enemy that leads to the &#8216;exit&#8217;, these rooms will be furthest from the spawn room for progression&#8217;s sake<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Difficulty Progression<\/strong>\n<ul class=\"wp-block-list\">\n<li>Rooms are made harder depending on what level of the dungeon the player is on<\/li>\n\n\n\n<li>The player must grow in strength\/develop as they progress through the dungeon<\/li>\n\n\n\n<li>Enemy stats, numbers etc.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>As the Dungeon in Lament will be procedurally generated, it is essential I dive deep into researching procedural generation. Whether it be general design processes when it comes to designing the generation; examples of existing games; game design methods etc. It will all be documented in this post. Although Lament clearly takes inspiration from the&#8230;<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-982","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Researching Procedural Generation - E-Jay Tripoli (Year 2 Archive)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Researching Procedural Generation - E-Jay Tripoli (Year 2 Archive)\" \/>\n<meta property=\"og:description\" content=\"As the Dungeon in Lament will be procedurally generated, it is essential I dive deep into researching procedural generation. Whether it be general design processes when it comes to designing the generation; examples of existing games; game design methods etc. It will all be documented in this post. Although Lament clearly takes inspiration from the...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/\" \/>\n<meta property=\"og:site_name\" content=\"E-Jay Tripoli (Year 2 Archive)\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-06T02:10:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-06T03:07:18+00:00\" \/>\n<meta name=\"author\" content=\"et4g23\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"et4g23\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/\",\"url\":\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/\",\"name\":\"Researching Procedural Generation - E-Jay Tripoli (Year 2 Archive)\",\"isPartOf\":{\"@id\":\"https:\/\/sites.wsagames.com\/et4g23\/#website\"},\"datePublished\":\"2025-03-06T02:10:49+00:00\",\"dateModified\":\"2025-03-06T03:07:18+00:00\",\"author\":{\"@id\":\"https:\/\/sites.wsagames.com\/et4g23\/#\/schema\/person\/56387a1dc0de878bb33ce4c478f22963\"},\"breadcrumb\":{\"@id\":\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/sites.wsagames.com\/et4g23\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Researching Procedural Generation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/sites.wsagames.com\/et4g23\/#website\",\"url\":\"https:\/\/sites.wsagames.com\/et4g23\/\",\"name\":\"E-Jay Tripoli (Year 2 Archive)\",\"description\":\"A documentation of my work for Year 2 - Studying Games Design and Art at the University of Southampton\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/sites.wsagames.com\/et4g23\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/sites.wsagames.com\/et4g23\/#\/schema\/person\/56387a1dc0de878bb33ce4c478f22963\",\"name\":\"et4g23\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sites.wsagames.com\/et4g23\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/477d521b3b86e4ef27181bf784cd1a145a38c7d6a0154a478d3c858d26298bec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/477d521b3b86e4ef27181bf784cd1a145a38c7d6a0154a478d3c858d26298bec?s=96&d=mm&r=g\",\"caption\":\"et4g23\"},\"url\":\"https:\/\/sites.wsagames.com\/et4g23\/author\/et4g23\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Researching Procedural Generation - E-Jay Tripoli (Year 2 Archive)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/","og_locale":"en_US","og_type":"article","og_title":"Researching Procedural Generation - E-Jay Tripoli (Year 2 Archive)","og_description":"As the Dungeon in Lament will be procedurally generated, it is essential I dive deep into researching procedural generation. Whether it be general design processes when it comes to designing the generation; examples of existing games; game design methods etc. It will all be documented in this post. Although Lament clearly takes inspiration from the...","og_url":"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/","og_site_name":"E-Jay Tripoli (Year 2 Archive)","article_published_time":"2025-03-06T02:10:49+00:00","article_modified_time":"2025-03-06T03:07:18+00:00","author":"et4g23","twitter_card":"summary_large_image","twitter_misc":{"Written by":"et4g23","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/","url":"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/","name":"Researching Procedural Generation - E-Jay Tripoli (Year 2 Archive)","isPartOf":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/#website"},"datePublished":"2025-03-06T02:10:49+00:00","dateModified":"2025-03-06T03:07:18+00:00","author":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/#\/schema\/person\/56387a1dc0de878bb33ce4c478f22963"},"breadcrumb":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/06\/researching-procedural-generation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sites.wsagames.com\/et4g23\/"},{"@type":"ListItem","position":2,"name":"Researching Procedural Generation"}]},{"@type":"WebSite","@id":"https:\/\/sites.wsagames.com\/et4g23\/#website","url":"https:\/\/sites.wsagames.com\/et4g23\/","name":"E-Jay Tripoli (Year 2 Archive)","description":"A documentation of my work for Year 2 - Studying Games Design and Art at the University of Southampton","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sites.wsagames.com\/et4g23\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/sites.wsagames.com\/et4g23\/#\/schema\/person\/56387a1dc0de878bb33ce4c478f22963","name":"et4g23","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sites.wsagames.com\/et4g23\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/477d521b3b86e4ef27181bf784cd1a145a38c7d6a0154a478d3c858d26298bec?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/477d521b3b86e4ef27181bf784cd1a145a38c7d6a0154a478d3c858d26298bec?s=96&d=mm&r=g","caption":"et4g23"},"url":"https:\/\/sites.wsagames.com\/et4g23\/author\/et4g23\/"}]}},"_links":{"self":[{"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/posts\/982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/comments?post=982"}],"version-history":[{"count":2,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/posts\/982\/revisions"}],"predecessor-version":[{"id":985,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/posts\/982\/revisions\/985"}],"wp:attachment":[{"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/media?parent=982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/categories?post=982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/tags?post=982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}