{"id":465,"date":"2026-10-05T13:55:15","date_gmt":"2026-10-05T18:55:15","guid":{"rendered":"https:\/\/mrcolin.com\/blog\/?page_id=465"},"modified":"2026-10-05T14:10:05","modified_gmt":"2026-10-05T19:10:05","slug":"closer-look-mech-protectors","status":"publish","type":"page","link":"https:\/\/mrcolin.com\/blog\/closer-look-mech-protectors\/","title":{"rendered":"Closer Look: Mech Protectors"},"content":{"rendered":"\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-a987baf2 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\">What is it?<\/h2>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1070\" style=\"aspect-ratio: 1900 \/ 1070;\" width=\"1900\" controls src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-QuickPlay.mp4\"><\/video><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This is a mini game found inside the <a href=\"https:\/\/mrcolin.com\/blog\/homestay\/\" data-type=\"page\" data-id=\"419\" target=\"_blank\" rel=\"noopener\">Homestay proof of concept demo<\/a>. In the context of the story, &#8220;Mech Protectors&#8221; is a recently released shooter game that, amongst a sea of other shooter games that came out at the same time, met with middling success. The player has many opportunities to return to this game throughout their adventure\u2014getting to further and further stages as the story progresses.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The demo itself is designed to be expanded into a full self-contained game with many levels, just like a real arcade game. In the demo there are about 20 seconds of play in stage 1 before the level loops back to the beginning and increases the speed it runs at.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-a987baf2 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading wp-container-content-728072c3\">Inspiration<\/h2>\n\n\n\n<p class=\"wp-container-content-728072c3 wp-block-paragraph\">The game is based on the game 1942, designed by Yoshiki Okamoto. For the most part, Mech Protectors is just like that game\u2014replacing the ability to do a loop with the addition of a shield that can be enabled to protect the player&#8217;s robot from projectile attacks.<\/p>\n\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer wp-container-content-728072c3\"><\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio wp-container-content-728072c3\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Arcade Game: 1942 (1984 Capcom)\" width=\"500\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/1yMGtlNjcMY?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<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-a987baf2 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\">The Play Area<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The game takes place entirely within this small playing surface. When the player starts the game this play area is spawned into the world at a location the player&#8217;s camera won&#8217;t see.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"909\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayArea-1024x909.png\" alt=\"\" class=\"wp-image-466\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayArea-1024x909.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayArea-300x266.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayArea-767x681.png 767w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayArea-1536x1364.png 1536w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayArea.png 1603w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Visible here are the overlaid UI and scrolling background art, but the key elements are the splines (the white lines) used to represent object paths. When an object such as an enemy ship, floating debris or a powerup enters the play area they follow one of these predefined paths. The paths are easy to create in the editor and the designer is free to make as many variations as they want.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"995\" height=\"1024\" data-id=\"468\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline1-995x1024.png\" alt=\"\" class=\"wp-image-468\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline1-995x1024.png 995w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline1-291x300.png 291w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline1-767x790.png 767w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline1.png 1323w\" sizes=\"auto, (max-width: 995px) 100vw, 995px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"978\" height=\"1024\" data-id=\"467\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline2-978x1024.png\" alt=\"\" class=\"wp-image-467\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline2-978x1024.png 978w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline2-287x300.png 287w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline2-768x804.png 768w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline2.png 1321w\" sizes=\"auto, (max-width: 978px) 100vw, 978px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"903\" height=\"1024\" data-id=\"469\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline3-903x1024.png\" alt=\"\" class=\"wp-image-469\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline3-903x1024.png 903w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline3-264x300.png 264w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline3-768x871.png 768w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Spline3.png 1228w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><\/figure>\n<\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-a987baf2 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\">Pixel Grid Actor<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">All moving objects in the game inherit from a parent Pixel Grid Actor. This actor has two roles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>allow designers to work with pixel-space values that match the simulated arcade display (ex. move speed = 400 px\/second)<\/li>\n\n\n\n<li>rotate objects only in fixed increments (ex. 30 degree rotations only)<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-88c01e81 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"298\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-RotatingShips.gif\" alt=\"\" class=\"wp-image-493\" style=\"object-fit:cover\"\/><\/figure>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"332\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Rotation-1024x332.png\" alt=\"\" class=\"wp-image-470\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Rotation-1024x332.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Rotation-766x248.png 766w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Rotation-300x97.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Rotation-1536x497.png 1536w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Rotation.png 1875w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Games from this era could not simply rotate sprites and needed to create new sprites for every orientation an object might appear in. For Mech Protectors, instead of drawing multiple sprites for every rotating object, the designer just needs to set the rotation interval and the game will snap the sprite&#8217;s orientation to the nearest multiple of that interval\u2014a luxury of modern game development.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-a987baf2 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\">Enemies, Debris &amp; Power-ups<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These are all variations of the Pixel Grid Actor with their own unique properties. When they are spawned into the world they are given a spline to follow.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Enemies<\/strong>: Have health, ammo, and a shooting behaviour<\/li>\n\n\n\n<li><strong>Debris<\/strong>: A type of &#8220;enemy&#8221; under the hood, but never shoots<\/li>\n\n\n\n<li><strong>Power-ups<\/strong>: A collectible type, granting the player some effect when the player flies on top of it<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"859\" data-id=\"479\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Enemy-1024x859.png\" alt=\"\" class=\"wp-image-479\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Enemy-1024x859.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Enemy-300x252.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Enemy-767x643.png 767w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Enemy.png 1318w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"874\" data-id=\"480\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Debris.png\" alt=\"\" class=\"wp-image-480\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Debris.png 868w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Debris-298x300.png 298w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Debris-150x150.png 150w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Debris-768x773.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"654\" data-id=\"478\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Powerup.png\" alt=\"\" class=\"wp-image-478\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Powerup.png 706w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Powerup-300x278.png 300w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n<\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-a987baf2 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\">Player Ship<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Another variation of the Pixel Grid Actor, but this one is entirely controlled by the player (i.e. doesn&#8217;t follow a spline). The player can move it around, shoot and activate their shield. The red cube in the image is the hit box.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"828\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerMech-1024x828.png\" alt=\"\" class=\"wp-image-471\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerMech-1024x828.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerMech-767x620.png 767w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerMech-300x242.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerMech.png 1111w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"297\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-1024x297.png\" alt=\"\" class=\"wp-image-477\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-1024x297.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-765x222.png 765w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-300x87.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-1536x446.png 1536w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-2048x594.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"529\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerFire-1024x529.png\" alt=\"\" class=\"wp-image-481\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerFire-1024x529.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerFire-767x396.png 767w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerFire-300x155.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerFire-1536x793.png 1536w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-PlayerFire-2048x1057.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-a987baf2 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\">Stage Data<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each stage specifies its data in a simple data table. Each row of the table represents one wave of objects. These 20 rows represent the entire level in the demo. Once all rows have been spawned and all objects have cleared off the screen then the level is complete.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"996\" height=\"1024\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-LevelData-996x1024.png\" alt=\"\" class=\"wp-image-472\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-LevelData-996x1024.png 996w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-LevelData-292x300.png 292w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-LevelData-768x789.png 768w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-LevelData.png 1113w\" sizes=\"auto, (max-width: 996px) 100vw, 996px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Start Delay<\/strong>: how long to wait after the previous wave has finished spawning before the wave should begin<\/li>\n\n\n\n<li><strong>Pixel Grid Actors<\/strong>: the actors to spawn and in what order<\/li>\n\n\n\n<li><strong>Spawn Interval<\/strong>: the spawn time between actors within the wave<\/li>\n\n\n\n<li><strong>Path<\/strong>: which of the predefined splines to follow as the object path<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-a987baf2 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading\">The In-World Display<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There is no actual arcade cabinet, just a floating screen and floating controls set against a black background. Here is the screen with the background enabled and disabled.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"830\" height=\"1024\" data-id=\"485\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithBackground-830x1024.png\" alt=\"\" class=\"wp-image-485\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithBackground-830x1024.png 830w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithBackground-243x300.png 243w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithBackground-768x947.png 768w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithBackground.png 1083w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"1024\" data-id=\"487\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayNoBackground-853x1024.png\" alt=\"\" class=\"wp-image-487\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayNoBackground-853x1024.png 853w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayNoBackground-250x300.png 250w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayNoBackground-768x922.png 768w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayNoBackground.png 1092w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The joystick and buttons are regular static meshes that animate based on the player&#8217;s input for the game. They are controlled at the same moment the player&#8217;s mech is.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1261\" height=\"1110\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Display3DButtons.png\" alt=\"\" class=\"wp-image-486\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Display3DButtons.png 1261w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Display3DButtons-300x264.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Display3DButtons-768x676.png 768w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-Display3DButtons-1024x901.png 1024w\" sizes=\"auto, (max-width: 1261px) 100vw, 1261px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2254\" height=\"654\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer.png\" alt=\"\" class=\"wp-image-477\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer.png 2254w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-765x222.png 765w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-300x87.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-1024x297.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-1536x446.png 1536w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-MovePlayer-2048x594.png 2048w\" sizes=\"auto, (max-width: 2254px) 100vw, 2254px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The game is captured by an orthographic camera with its result stored in a render texture.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"876\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayCamera-1024x876.png\" alt=\"\" class=\"wp-image-489\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayCamera-1024x876.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayCamera-300x257.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayCamera-767x656.png 767w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayCamera.png 1369w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This texture is then applied to the floating screen in the world, and it is this screen that is visible by the player&#8217;s camera.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"988\" height=\"1024\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithGame-988x1024.png\" alt=\"\" class=\"wp-image-490\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithGame-988x1024.png 988w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithGame-289x300.png 289w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithGame-768x796.png 768w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-DisplayWithGame.png 1314w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And finally, the beautiful CRT screen material is part of the <em>Arcade &#8211; COMBO Prop Pack (Vol. 1 &#8211; 3)<\/em> asset pack by Dekogon Studios.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"524\" src=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-CRTScreenEffect-1024x524.png\" alt=\"\" class=\"wp-image-491\" srcset=\"https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-CRTScreenEffect-1024x524.png 1024w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-CRTScreenEffect-300x154.png 300w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-CRTScreenEffect-768x393.png 768w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-CRTScreenEffect-1536x786.png 1536w, https:\/\/mrcolin.com\/blog\/wp-content\/uploads\/2026\/10\/MP2D-CRTScreenEffect.png 1936w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>What is it? This is a mini game found inside the Homestay proof of concept demo. In the context of the story, &#8220;Mech Protectors&#8221; is a recently released shooter game that, amongst a sea of other shooter games that came out at the same time, met with middling success. The player has many opportunities to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-465","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrcolin.com\/blog\/wp-json\/wp\/v2\/pages\/465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrcolin.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrcolin.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrcolin.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mrcolin.com\/blog\/wp-json\/wp\/v2\/comments?post=465"}],"version-history":[{"count":15,"href":"https:\/\/mrcolin.com\/blog\/wp-json\/wp\/v2\/pages\/465\/revisions"}],"predecessor-version":[{"id":512,"href":"https:\/\/mrcolin.com\/blog\/wp-json\/wp\/v2\/pages\/465\/revisions\/512"}],"wp:attachment":[{"href":"https:\/\/mrcolin.com\/blog\/wp-json\/wp\/v2\/media?parent=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}