{"id":851,"date":"2025-02-28T00:54:55","date_gmt":"2025-02-28T00:54:55","guid":{"rendered":"https:\/\/sites.wsagames.com\/et4g23\/?p=851"},"modified":"2025-05-09T15:07:02","modified_gmt":"2025-05-09T15:07:02","slug":"procedural-room-generation","status":"publish","type":"post","link":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/","title":{"rendered":"PRG &#8211; Pt 1"},"content":{"rendered":"\n<p class=\"has-text-align-center has-background wp-block-paragraph\" style=\"background-color:#dfdfdf\">After my research on Anna&#8217;s GDD and existing roguelite\/ roguelike games and their procedural room generation. I felt I was knowledgeable enough on it to begin its development. To start off, I followed a <a href=\"https:\/\/www.youtube.com\/watch?v=eR74EjkA_4s\">YouTube tutorial<\/a> so that I would have a basis that I could expand and build upon once I had finished it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prototype 1<\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"352\" height=\"221\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14.png\" alt=\"\" class=\"wp-image-862\" style=\"width:408px;height:auto\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14.png 352w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14-300x188.png 300w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14-350x221.png 350w\" sizes=\"(max-width: 352px) 100vw, 352px\" \/><figcaption class=\"wp-element-caption\">Prefabs of all of the rooms, the letters corresponding to what doors they have (B &#8211; Bottom, R &#8211; Right etc.)<br>Note: This screenshot was taken later, which is why the rooms already have artwork.<\/figcaption><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"465\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-16-1024x465.png\" alt=\"\" class=\"wp-image-864\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-16-1024x465.png 1024w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-16-300x136.png 300w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-16-768x349.png 768w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-16-850x386.png 850w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-16.png 1482w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">A screenshot of the TLB room prefab<br>(Has doorways on Top, Left and Bottom)<br> <br>gameobjects in the red circles being the SpawnPoints, where other room prefabs would be spawned.<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">How the room generation works is that I created a variety of &#8216;Room&#8217; prefabs, these room prefabs were all the same heigh and width, with a different amount of doors in different directions to one another. They would then be instantiated next to one another on &#8216;SpawnPoints&#8217; that were half of a room&#8217;s width or height away (Depending on whether the room would spawn beside another or above\/below it). This would all start from an &#8216;EntryRoom&#8217; a room that had four doorways (one in each direction) and therefore four SpawnPoints that would instantiate rooms all around it. This would be the room that the player would find themselves in when they first entered the Depression Realm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each of the doorways would require a different type of room, for example, the SpawnPoint above the entry room would require a room that had a BOTTOM doorway, this is to ensure that the two rooms would link to one another. In order to do this, I created a int variable on the SpawnPoints called &#8216;openingDirection&#8217;. This would tell the SpawnPoint which doors they could instantiate depending on their position.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, the SpawnPoints that were above the room, would have an &#8216;openingDirection&#8217; of &#8216;1&#8217;. I could then, depending on this int variable, instantiate rooms from more specific arrays, like an array of all the rooms that have a doorway leading downwards.<br>The following is the script for the SpawnPoint gameobjects:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"338\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-18-1024x338.png\" alt=\"\" class=\"wp-image-866\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-18-1024x338.png 1024w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-18-300x99.png 300w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-18-768x254.png 768w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-18-850x281.png 850w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-18.png 1432w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I also created an empty &#8216;RoomTemplates&#8217; gameobject that would house the arrays that the SpawnPoint gameobjects would choose from to instantiate random rooms.<br>This is the script for the RoomTemplates gameobject:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"693\" height=\"644\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-19.png\" alt=\"\" class=\"wp-image-867\" style=\"width:840px;height:auto\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-19.png 693w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-19-300x279.png 300w\" sizes=\"(max-width: 693px) 100vw, 693px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This first prototype of the procedural room generation worked, spawning rooms from an array of prefabs that would link doors from the room that was instantiating the new room, to the new room that was being instantiated. However, there were two main issues that I saw straight away that needed to be fixed (Other than the absurd amount of rooms that were being instantiated).<br>Issue 1: Rooms were able to instantiate on top of another room that was already there in the first place<br>Issue 2: Rooms were able to block off other rooms that had doorways leading into them<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"599\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-9-1024x599.png\" alt=\"\" class=\"wp-image-857\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-9-1024x599.png 1024w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-9-300x175.png 300w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-9-768x449.png 768w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-9-850x497.png 850w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-9.png 1378w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\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=\"Lament Procedural Room Generation Prototype 1\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/V_btTUisheM?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<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Bug Fixing &#8211; 1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In order to fix these bugs, I had to figure out why they were occurring in the first place, for the first issue. I noticed that rooms that were spawned diagonally of one another at the same time (1 &amp; 2), would have SpawnPoints in the same location, causing the to spawn two rooms next to themselves that would collide(3).<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"717\" height=\"675\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-13.png\" alt=\"\" class=\"wp-image-861\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-13.png 717w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-13-300x282.png 300w\" sizes=\"(max-width: 717px) 100vw, 717px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\">In order to fix this, I created a altered the scripts on the SpawnPoint gameobjects.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I added an OnTriggerEnter2D method to check if the SpawnPoint gameobject collided with another SpawnPoint gameobject. If neither SpawnPoint had instantiated a room, then both SpawnPoints would destroy eachother and place a closedRoom prefab. Effectively closing the room off from all sides.<br><br>The following is the addition to the script:<\/p>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"879\" height=\"262\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-20.png\" alt=\"\" class=\"wp-image-877\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-20.png 879w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-20-300x89.png 300w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-20-768x229.png 768w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-20-850x253.png 850w\" sizes=\"(max-width: 879px) 100vw, 879px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This fixed one instance of the issue of rooms being able to be instantiated on eachother, however, after fixing it. I realised another instance of rooms spawning on eachother as after the fix had been implemented, rooms were still instantiating on top of eachother.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bug Fixing 2<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After finding the bug and I had to pin-point exactly why it was happening. This bug would occur when a SpawnPoint would instantiate inside of a room that already exists there, this SpawnPoint would then spawn a new room, completely unaware of the room that&#8217;s already there. I knew this was the case because rooms would spawn in an order, with rooms closer to the entry room being instantiated sooner than rooms further than the entry room.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"795\" height=\"496\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-21.png\" alt=\"\" class=\"wp-image-878\" style=\"width:840px;height:auto\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-21.png 795w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-21-300x187.png 300w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-21-768x479.png 768w\" sizes=\"(max-width: 795px) 100vw, 795px\" \/><figcaption class=\"wp-element-caption\">The screenshot cut out, however, the lines show &#8216;how many rooms away&#8217; they are from the entry room and therefore, the order in which they were instantiated.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">In order to fix this bug, I needed to find a way for the SpawnPoints to check if there was already a room instantiated at the position they were at. In order to do this, I created a gameobject called a &#8216;Destroyer&#8217; in the middle of every room prefab and gave it a Box Collider 2D (I also gave all of the SpawnPoints a Box Collider 2D). This destroyer would then check everything it collided with, and if it were a SpawnPoint or a closedRoom prefab, it would destroy it:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"264\" src=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-22.png\" alt=\"\" class=\"wp-image-879\" style=\"width:840px;height:auto\" srcset=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-22.png 766w, https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-22-300x103.png 300w\" sizes=\"(max-width: 766px) 100vw, 766px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This Destroyer gameobject finally prevented rooms from being able to spawn on top of each other.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After my research on Anna&#8217;s GDD and existing roguelite\/ roguelike games and their procedural room generation. I felt I was knowledgeable enough on it to begin its development. To start off, I followed a YouTube tutorial so that I would have a basis that I could expand and build upon once I had finished it&#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-851","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PRG - Pt 1 - 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\/02\/28\/procedural-room-generation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PRG - Pt 1 - E-Jay Tripoli (Year 2 Archive)\" \/>\n<meta property=\"og:description\" content=\"After my research on Anna&#8217;s GDD and existing roguelite\/ roguelike games and their procedural room generation. I felt I was knowledgeable enough on it to begin its development. To start off, I followed a YouTube tutorial so that I would have a basis that I could expand and build upon once I had finished it....\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/\" \/>\n<meta property=\"og:site_name\" content=\"E-Jay Tripoli (Year 2 Archive)\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-28T00:54:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-09T15:07:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14.png\" \/>\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<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/\"},\"author\":{\"name\":\"et4g23\",\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/#\\\/schema\\\/person\\\/56387a1dc0de878bb33ce4c478f22963\"},\"headline\":\"PRG &#8211; Pt 1\",\"datePublished\":\"2025-02-28T00:54:55+00:00\",\"dateModified\":\"2025-05-09T15:07:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/\"},\"wordCount\":879,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/wp-content\\\/uploads\\\/sites\\\/27\\\/2025\\\/02\\\/image-14.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/\",\"url\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/\",\"name\":\"PRG - Pt 1 - E-Jay Tripoli (Year 2 Archive)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/wp-content\\\/uploads\\\/sites\\\/27\\\/2025\\\/02\\\/image-14.png\",\"datePublished\":\"2025-02-28T00:54:55+00:00\",\"dateModified\":\"2025-05-09T15:07:02+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/#\\\/schema\\\/person\\\/56387a1dc0de878bb33ce4c478f22963\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/wp-content\\\/uploads\\\/sites\\\/27\\\/2025\\\/02\\\/image-14.png\",\"contentUrl\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/wp-content\\\/uploads\\\/sites\\\/27\\\/2025\\\/02\\\/image-14.png\",\"width\":352,\"height\":221},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/2025\\\/02\\\/28\\\/procedural-room-generation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sites.wsagames.com\\\/et4g23\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PRG &#8211; Pt 1\"}]},{\"@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:\\\/\\\/secure.gravatar.com\\\/avatar\\\/477d521b3b86e4ef27181bf784cd1a145a38c7d6a0154a478d3c858d26298bec?s=96&d=mm&r=g\",\"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":"PRG - Pt 1 - 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\/02\/28\/procedural-room-generation\/","og_locale":"en_US","og_type":"article","og_title":"PRG - Pt 1 - E-Jay Tripoli (Year 2 Archive)","og_description":"After my research on Anna&#8217;s GDD and existing roguelite\/ roguelike games and their procedural room generation. I felt I was knowledgeable enough on it to begin its development. To start off, I followed a YouTube tutorial so that I would have a basis that I could expand and build upon once I had finished it....","og_url":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/","og_site_name":"E-Jay Tripoli (Year 2 Archive)","article_published_time":"2025-02-28T00:54:55+00:00","article_modified_time":"2025-05-09T15:07:02+00:00","og_image":[{"url":"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14.png","type":"","width":"","height":""}],"author":"et4g23","twitter_card":"summary_large_image","twitter_misc":{"Written by":"et4g23"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/#article","isPartOf":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/"},"author":{"name":"et4g23","@id":"https:\/\/sites.wsagames.com\/et4g23\/#\/schema\/person\/56387a1dc0de878bb33ce4c478f22963"},"headline":"PRG &#8211; Pt 1","datePublished":"2025-02-28T00:54:55+00:00","dateModified":"2025-05-09T15:07:02+00:00","mainEntityOfPage":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/"},"wordCount":879,"commentCount":0,"image":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/#primaryimage"},"thumbnailUrl":"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/","url":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/","name":"PRG - Pt 1 - E-Jay Tripoli (Year 2 Archive)","isPartOf":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/#primaryimage"},"image":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/#primaryimage"},"thumbnailUrl":"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14.png","datePublished":"2025-02-28T00:54:55+00:00","dateModified":"2025-05-09T15:07:02+00:00","author":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/#\/schema\/person\/56387a1dc0de878bb33ce4c478f22963"},"breadcrumb":{"@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/#primaryimage","url":"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14.png","contentUrl":"https:\/\/sites.wsagames.com\/et4g23\/wp-content\/uploads\/sites\/27\/2025\/02\/image-14.png","width":352,"height":221},{"@type":"BreadcrumbList","@id":"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sites.wsagames.com\/et4g23\/"},{"@type":"ListItem","position":2,"name":"PRG &#8211; Pt 1"}]},{"@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:\/\/secure.gravatar.com\/avatar\/477d521b3b86e4ef27181bf784cd1a145a38c7d6a0154a478d3c858d26298bec?s=96&d=mm&r=g","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\/851","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=851"}],"version-history":[{"count":6,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/posts\/851\/revisions"}],"predecessor-version":[{"id":1138,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/posts\/851\/revisions\/1138"}],"wp:attachment":[{"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/media?parent=851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/categories?post=851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23\/wp-json\/wp\/v2\/tags?post=851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}