{"id":67,"date":"2022-02-18T13:12:07","date_gmt":"2022-02-18T18:12:07","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/?p=67"},"modified":"2022-03-04T15:25:17","modified_gmt":"2022-03-04T20:25:17","slug":"prototype-parasite","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/?p=67","title":{"rendered":"Prototype &#8211; Parasite"},"content":{"rendered":"\n<p>This past week we refined a lot of the MVP core mechanics and decided on basic designs for the human player and parasite players. We built a prototype for both the human and parasite players, put together some mockups for the environment, and made a collection of basic sounds for the MVP. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"design\">Design<\/h2>\n\n\n\n<p>This week we refined the details of our gameplay and decided on a solid MVP which will likely evolve over the semester. <\/p>\n\n\n\n<p>Basic Gameplay:<\/p>\n\n\n\n<p>The Human player, assigned at random in the beginning, has traditional First Person controls, and wields a baseball bat that they use to defend themselves from the oncoming parasites. <\/p>\n\n\n\n<p>The Human must prevent the parasites from jumping into their broken helmet, if they fail to do so the parasite will swap roles with the Human and thus has the ability to win the game. Only the human can fulfill the win state (currently just getting to a goal position). After a swap the human has some invulnerability.<\/p>\n\n\n\n<p>The parasite has the ability to walk on any surface and can launch themselves forward as a ragdoll in an attempt to land in the helmet. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"in-engine-work\">In-Engine Work<\/h2>\n\n\n\n<p>This week we worked a lot on the basic programming structures and library which will manage game state and hopefully set a good foundation for future work and yet-to-be planned mechanics. <\/p>\n\n\n\n<p>Dynamic Lobby<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"520\" src=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-1024x520.png\" alt=\"\" class=\"wp-image-69\" srcset=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-1024x520.png 1024w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-300x152.png 300w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-768x390.png 768w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image.png 1529w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>We have finished the dynamic lobby which lets players set their username and join a lobby before starting the game. This involves managing a dynamic list of joined users that is used with the game manager which assigns initial player roles. <\/p>\n\n\n\n<p>Game Manager<\/p>\n\n\n\n<p>The Game Manager is a core object which manages the active game state and handles things like tracking the current Human player, guaranteeing temporarily invulnerability, and deploys necessary messages to all clients. <\/p>\n\n\n\n<p>Mockup Level<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"526\" src=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-1-1024x526.png\" alt=\"\" class=\"wp-image-70\" srcset=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-1-1024x526.png 1024w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-1-300x154.png 300w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-1-768x394.png 768w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-1.png 1509w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>A basic mockup level with simple lighting, several spawns, and a &#8216;goal zone&#8217; at the opposite end.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"human\">Human <\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"525\" src=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-2-1024x525.png\" alt=\"\" class=\"wp-image-71\" srcset=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-2-1024x525.png 1024w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-2-300x154.png 300w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-2-768x394.png 768w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-2.png 1531w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>We have a basic humanoid model and swing animation we pulled from mixamo, as well as a simple raycast which scans where the player &#8220;hit&#8221; their bat and an effect to show where the contact point is. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"parasite\">Parasite<\/h2>\n\n\n\n<p>We have a basic 3rd person parasite controller which enables and disables a rigidbody when they launch so they can roll around, as well as a custom camera controller so that players can maintain a view of their target regardless of their orientation. After a few seconds of little movement (they&#8217;ve physically come to rest), the controller resets back to the normal controller. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"493\" src=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-3-1024x493.png\" alt=\"\" class=\"wp-image-74\" srcset=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-3-1024x493.png 1024w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-3-300x144.png 300w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-3-768x370.png 768w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-3-1536x740.png 1536w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-3.png 1545w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"audio\">Audio<\/h2>\n\n\n\n<p>We have several basic audio effects built but yet to be implemented, here are a few samples:<\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/AmbientSample.mp3\"><\/audio><figcaption>Ambient Background<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/Parasite_Jump_1.wav\"><\/audio><figcaption>Jump Effect<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"visuals\">Visuals<\/h2>\n\n\n\n<p>Some mockups for the final look and feel of the space facility: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"956\" height=\"504\" src=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-4.png\" alt=\"\" class=\"wp-image-77\" srcset=\"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-4.png 956w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-4-300x158.png 300w, https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/wp-content\/uploads\/2022\/02\/image-4-768x405.png 768w\" sizes=\"(max-width: 956px) 100vw, 956px\" \/><\/figure>\n\n\n\n<p>A simple hallway in the facility.<\/p>\n\n\n\n<p>Some mockups for character look and feel:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn.discordapp.com\/attachments\/936837111208890388\/944266835690422312\/unknown.png\" alt=\"\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"challenges-and-successes\">Challenges and Successes<\/h2>\n\n\n\n<p>The individual player controllers feel really good, and the basic gameplay vision is coming together.<\/p>\n\n\n\n<p>Networking has made tough work tougher and integrating everything together for a working prototype took much longer and was less successful than expected. Thankfully its just a matter of spending more engineering time on it and so far nothing has been a roadblock. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>This past week we refined a lot of the MVP core mechanics and decided on basic designs for the human player and parasite players. We built a prototype for both [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,5,1],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=\/wp\/v2\/posts\/67"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=67"}],"version-history":[{"count":2,"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=\/wp\/v2\/posts\/67\/revisions"}],"predecessor-version":[{"id":80,"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=\/wp\/v2\/posts\/67\/revisions\/80"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/53-472\/s2022\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}