{"id":609,"date":"2026-05-15T17:15:52","date_gmt":"2026-05-15T17:15:52","guid":{"rendered":"https:\/\/sites.wsagames.com\/et4g23-yr3\/?p=609"},"modified":"2026-05-15T17:15:52","modified_gmt":"2026-05-15T17:15:52","slug":"readying-level-greyboxing","status":"publish","type":"post","link":"https:\/\/sites.wsagames.com\/et4g23-yr3\/2026\/05\/15\/readying-level-greyboxing\/","title":{"rendered":"Readying Level Greyboxing"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">To test and greybox the <a href=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/2026\/05\/15\/planning-out-levels\/\" data-type=\"link\" data-id=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/2026\/05\/15\/planning-out-levels\/\">levels I had planned<\/a>, I had to first set up a few systems:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Camera Actvation<\/li>\n\n\n\n<li>Respawn Functionality<\/li>\n\n\n\n<li>Room Locking<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Room Trigger<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To do this I created a Room Trigger that would check if the player entered a specific room, if the player did, the room trigger would:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Activate the Room Lock (Preventing the player from backtracking)<\/li>\n\n\n\n<li>Increase priority of the room-specific camera<\/li>\n\n\n\n<li>Set a respawn point transform<\/li>\n<\/ul>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acc162891cec&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acc162891cec\" class=\"wp-block-image aligncenter size-full is-resized wp-lightbox-container\"><img fetchpriority=\"high\" decoding=\"async\" width=\"383\" height=\"323\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-18.png\" alt=\"\" class=\"wp-image-611\" style=\"width:551px;height:auto\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-18.png 383w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-18-300x253.png 300w\" sizes=\"(max-width: 383px) 100vw, 383px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Screenshot taken later in development, content covered is to make the script look more like what it did at this earlier stage of development<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Camera Functionality<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Room Trigger first checks for the player, and if the player is in the room it called a ActivateRoomCamera() method:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"368\" height=\"95\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-26.png\" alt=\"\" class=\"wp-image-619\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-26.png 368w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-26-300x77.png 300w\" sizes=\"(max-width: 368px) 100vw, 368px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Which, with the help of <a href=\"https:\/\/docs.unity3d.com\/Packages\/com.unity.cinemachine@6.6\/manual\/index.html\">Cinemachine<\/a>, allows me to change the priority value of a camera, making it <strong><em>the <\/em><\/strong>active camera in the scene.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"402\" height=\"416\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-27.png\" alt=\"\" class=\"wp-image-620\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-27.png 402w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-27-290x300.png 290w\" sizes=\"(max-width: 402px) 100vw, 402px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Respawn Functionality<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For the respawn point to work, the room trigger calls a method inside of my Scene controller singleton.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acc162892cb1&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acc162892cb1\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"529\" height=\"79\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-19.png\" alt=\"\" class=\"wp-image-612\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-19.png 529w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-19-300x45.png 300w\" sizes=\"(max-width: 529px) 100vw, 529px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This Scene controller would store this respawnpoint&#8217;s position:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"356\" height=\"96\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-20.png\" alt=\"\" class=\"wp-image-613\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-20.png 356w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-20-300x81.png 300w\" sizes=\"(max-width: 356px) 100vw, 356px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then if the player dies:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"341\" height=\"82\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-22.png\" alt=\"\" class=\"wp-image-615\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-22.png 341w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-22-300x72.png 300w\" sizes=\"(max-width: 341px) 100vw, 341px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Scene controller would call a method that reloads the current scene:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"541\" height=\"267\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-23.png\" alt=\"\" class=\"wp-image-616\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-23.png 541w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-23-300x148.png 300w\" sizes=\"(max-width: 541px) 100vw, 541px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"449\" height=\"245\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-25.png\" alt=\"\" class=\"wp-image-618\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-25.png 449w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-25-300x164.png 300w\" sizes=\"(max-width: 449px) 100vw, 449px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And the playercontroller script would check if the scenecontroller&#8217;s hasCustomRespawn bool returns true, if it does it spawns the player at the specified respawn.position:<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acc162893359&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acc162893359\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"155\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-24.png\" alt=\"\" class=\"wp-image-617\" srcset=\"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-24.png 666w, https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-content\/uploads\/sites\/41\/2026\/05\/image-24-300x70.png 300w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>To test and greybox the levels I had planned, I had to first set up a few systems: Room Trigger To do this I created a Room Trigger that would check if the player entered a specific room, if the player did, the room trigger would: Camera Functionality The Room Trigger first checks for the [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[],"class_list":["post-609","post","type-post","status-publish","format-standard","hentry","category-sprint-1"],"_links":{"self":[{"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/posts\/609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/comments?post=609"}],"version-history":[{"count":1,"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/posts\/609\/revisions"}],"predecessor-version":[{"id":621,"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/posts\/609\/revisions\/621"}],"wp:attachment":[{"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/media?parent=609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/categories?post=609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.wsagames.com\/et4g23-yr3\/wp-json\/wp\/v2\/tags?post=609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}