{"id":43,"date":"2025-12-22T20:34:12","date_gmt":"2025-12-22T20:34:12","guid":{"rendered":"https:\/\/theroyalscode.com\/students\/g_bryant\/?p=43"},"modified":"2025-12-22T20:40:12","modified_gmt":"2025-12-22T20:40:12","slug":"ninja-frog-game-celeste-clone-recap-post","status":"publish","type":"post","link":"https:\/\/theroyalscode.com\/students\/g_bryant\/2025\/12\/22\/ninja-frog-game-celeste-clone-recap-post\/","title":{"rendered":"ninja frog game (celeste clone) \/\/ recap post"},"content":{"rendered":"\n<p>i made a game with a movement system nearly-carbon-copied from Celeste by Maddy Thorson because I really like the game.<\/p>\n\n\n\n<p>The game is centered around this frog:<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e7c8c&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e7c8c\" class=\"wp-block-image size-full is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"443\" height=\"362\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image.png\" alt=\"\" class=\"wp-image-44\" style=\"width:151px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image.png 443w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-300x245.png 300w\" sizes=\"auto, (max-width: 443px) 100vw, 443px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>His name is Michelin. I just made that up right now.<br>Also, all the art is from a free asset library picked out by Mr. Wilmoth, all credit to that person who made the assets.<\/p>\n\n\n\n<p class=\"has-x-large-font-size\"><strong>MOVEMENT<\/strong><\/p>\n\n\n\n<p>Like i said before, the game&#8217;s movement system is pretty much celeste&#8217;s movement system with a couple additions.<\/p>\n\n\n\n<p class=\"has-large-font-size\">Jump<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e80ca&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e80ca\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/jump-1024x576.gif\" alt=\"\" class=\"wp-image-45\" style=\"width:402px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/jump-1024x576.gif 1024w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/jump-300x169.gif 300w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/jump-768x432.gif 768w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/jump-1536x864.gif 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>You press Z to jump. Pretty basic, the code came with the engine.<br><\/p>\n\n\n\n<p class=\"has-large-font-size\">Double Jump<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e83ff&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e83ff\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/d_jump-1024x576.gif\" alt=\"\" class=\"wp-image-46\" style=\"width:411px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/d_jump-1024x576.gif 1024w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/d_jump-300x169.gif 300w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/d_jump-768x432.gif 768w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/d_jump-1536x864.gif 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>Uses a variable to check if you&#8217;re in the air, and sets it to zero when you double jump, so you can&#8217;t use it again.<br><\/p>\n\n\n\n<p class=\"has-large-font-size\">Lunge<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e8677&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e8677\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/lunge-1024x576.gif\" alt=\"\" class=\"wp-image-47\" style=\"width:405px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/lunge-1024x576.gif 1024w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/lunge-300x169.gif 300w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/lunge-768x432.gif 768w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/lunge-1536x864.gif 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>Uses a similar code to the double jump to make it single use in air.<\/p>\n\n\n\n<p>Lunges in whatever direction you&#8217;re holding with the arrow keys, including diagonals. It gives you a second of grace to decide which way you&#8217;re lunging if you weren&#8217;t holding it already, but don&#8217;t rely on it, it&#8217;s really short.<br><\/p>\n\n\n\n<p class=\"has-large-font-size\">Crawl<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e89a2&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e89a2\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/crawl-1024x576.gif\" alt=\"\" class=\"wp-image-48\" style=\"width:409px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/crawl-1024x576.gif 1024w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/crawl-300x169.gif 300w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/crawl-768x432.gif 768w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/crawl-1536x864.gif 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>Hold down to make yourself smaller. You also fall faster while crawling.<br><\/p>\n\n\n\n<p class=\"has-large-font-size\">Wall-Jump<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e8c8d&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e8c8d\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/w_jump-1024x576.gif\" alt=\"\" class=\"wp-image-49\" style=\"width:416px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/w_jump-1024x576.gif 1024w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/w_jump-300x169.gif 300w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/w_jump-768x432.gif 768w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/w_jump-1536x864.gif 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>This was probably the most complicated part of the moveset to make. It involves checking what direction you&#8217;re holding for a wall, making sure you haven&#8217;t been on the ground for at least 12 frames, and also making sure that you aren&#8217;t holding the other direction key, before letting you hold the wall.<\/p>\n\n\n\n<p class=\"has-large-font-size\">Coyote Time<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e8f71&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e8f71\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/coyote_time-1024x576.gif\" alt=\"\" class=\"wp-image-50\" style=\"width:423px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/coyote_time-1024x576.gif 1024w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/coyote_time-300x169.gif 300w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/coyote_time-768x432.gif 768w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/coyote_time-1536x864.gif 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>A grace period after running off the edge to not waste your double jump, QoL feature. Whenever you&#8217;re off the ground, variable &#8220;coyote&#8221; decreases by 1 every frame. When you&#8217;re off the ground and you hit jump, it checks if &#8220;coyote&#8221; is above 0. If it is, it uses a normal jump instead of a double jump. Every frame you&#8217;re on the ground, &#8220;coyote&#8221; is set to 10, meaning you have 10 extra frames of normal jump usage.<\/p>\n\n\n\n<p class=\"has-x-large-font-size\"><strong>LEVEL DESIGN<\/strong><\/p>\n\n\n\n<p class=\"has-large-font-size\">Area One &#8211; Movement Intro<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e9263&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e9263\" class=\"wp-block-image size-full is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"482\" height=\"553\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-3.png\" alt=\"\" class=\"wp-image-53\" style=\"aspect-ratio:0.8716283385247531;width:500px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-3.png 482w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-3-261x300.png 261w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>Pretty basic tutorial zone<br>White text telling you how to progress (except for crouching because i forgot lol).<br>Based on the original level layout made by Mr. Wilmoth<br><\/p>\n\n\n\n<p class=\"has-large-font-size\">Area Two &#8211; Movement Challenge<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e9558&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e9558\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"440\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-5.png\" alt=\"\" class=\"wp-image-55\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-5.png 607w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-5-300x217.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>(Intended Route Annotated)<br>First challenge of the level, a test of basic movement knowledge<br>In this level I have the structure of introducing a mechanic, giving a basic introductory spot to learn how it works, then placing a challenging segment featuring that mechanic right after to test the player&#8217;s new knowledge and teach them how the mechanic works in practice.<br><\/p>\n\n\n\n<p class=\"has-large-font-size\">Area Three &#8211; Spike Intro<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e98e4&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e98e4\" class=\"wp-block-image size-full is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"832\" height=\"371\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-6.png\" alt=\"\" class=\"wp-image-56\" style=\"width:868px;height:auto\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-6.png 832w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-6-300x134.png 300w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-6-768x342.png 768w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>Alternating blocks of safe and spiked blocks, basic example of how spikes work. Checkpoint right there.<\/p>\n\n\n\n<p class=\"has-large-font-size\">Area Four &#8211; Spike Challenge<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e9c74&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e9c74\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"505\" height=\"550\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-9.png\" alt=\"\" class=\"wp-image-61\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-9.png 505w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-9-275x300.png 275w\" sizes=\"auto, (max-width: 505px) 100vw, 505px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>Continuing the structure, similar challenge to the movement challenge, just with spikes instead of a pit.<br><\/p>\n\n\n\n<p class=\"has-large-font-size\">Area 5 &#8211; Crate intro<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69eaa162e9ffd&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69eaa162e9ffd\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"577\" height=\"562\" 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-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-10.png\" alt=\"\" class=\"wp-image-62\" srcset=\"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-10.png 577w, https:\/\/theroyalscode.com\/students\/g_bryant\/wp-content\/uploads\/2025\/12\/image-10-300x292.png 300w\" sizes=\"auto, (max-width: 577px) 100vw, 577px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\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.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\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>i made a game with a movement system nearly-carbon-copied from Celeste by Maddy Thorson because I really like the game. The game is centered around this frog: His name is Michelin. I just made that up right now.Also, all the art is from a free asset library picked out by Mr. Wilmoth, all credit to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-43","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/posts\/43","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/comments?post=43"}],"version-history":[{"count":3,"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/posts\/43\/revisions"}],"predecessor-version":[{"id":63,"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/posts\/43\/revisions\/63"}],"wp:attachment":[{"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/media?parent=43"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/categories?post=43"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/theroyalscode.com\/students\/g_bryant\/wp-json\/wp\/v2\/tags?post=43"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}