{"id":453,"date":"2019-08-30T20:57:20","date_gmt":"2019-08-30T20:57:20","guid":{"rendered":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/?p=453"},"modified":"2019-12-11T20:57:21","modified_gmt":"2019-12-11T20:57:21","slug":"beatem-postmortem","status":"publish","type":"post","link":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/2019\/08\/30\/beatem-postmortem\/","title":{"rendered":"Beat&#8217;em Postmortem"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"453\" class=\"elementor elementor-453\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9180094 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9180094\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e01150a\" data-id=\"e01150a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d932a55 elementor-widget elementor-widget-text-editor\" data-id=\"d932a55\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Beat&#8217;Em is a rhythm-action game in which guests punch and kick at robots in a 360\u00b0 arena to the beat of music. It&#8217;s designed as an arcade experience so that multiple people could play it in a short amount of time.\u00a0 An online leaderboard for the game was created so guests could see how their scores stacked up against others.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f68c92a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f68c92a\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e0f988d\" data-id=\"e0f988d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3943065 elementor-widget elementor-widget-video\" data-id=\"3943065\" data-element_type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/www.youtube.com\\\/watch?v=GN4sg4TsPPQ&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-649d0ccd elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"649d0ccd\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4a95ff03\" data-id=\"4a95ff03\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-616cebff elementor-widget elementor-widget-text-editor\" data-id=\"616cebff\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><!-- wp:heading --><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>Platform: Vive<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Players: 1<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Controllers: 2 Vive Controllers &amp; 2 Vive Trackers<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Rhythm Style: Note Highway<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading --><!-- \/wp:heading --><!-- wp:paragraph --><!-- \/wp:paragraph --><!-- wp:heading --><\/p>\n<h2>\u00a0<\/h2>\n<p><!-- \/wp:heading --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>Punching<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>The primary interaction in Beat\u2019em is punching. Robots float towards the player, who must punch them once they reach the strum cage. The strum cage is a series of transparent lines surrounding the player that represents when the notes should be hit. The name comes from Guitar Hero\u2019s strum line, like the one seen below:<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/lh5.googleusercontent.com\/UP7kcBoROgJpkK-enE1YsGVD6FFMVX9xaaPhAfILnDxOgUnzsubTiIhw6_pBCQtjBXTgleIPy80C9uqnJlaW9r4eBeMCP2CR1O6nRf5_DNY9XeV_5UePyF-wQKM1JXmMAziiMjdo\" alt=\"This image has an empty alt attribute; its file name is UP7kcBoROgJpkK-enE1YsGVD6FFMVX9xaaPhAfILnDxOgUnzsubTiIhw6_pBCQtjBXTgleIPy80C9uqnJlaW9r4eBeMCP2CR1O6nRf5_DNY9XeV_5UePyF-wQKM1JXmMAziiMjdo\" \/><\/figure>\n<p><!-- \/wp:image --><!-- wp:paragraph --><\/p>\n<p>Robots come in several distinct colors. These colors help differentiate them and tell players how they should interact with the bots. Pink robots, for example, may only be hit by the player\u2019s left hand, while blue robots may only be hit by their right. The robots came towards the player at two different heights.<\/p>\n<p>\u00a0<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/eRISuBM46KYg3hVsZyvIWUV238vKZQzycbumjqliWBH48tg01NLvill5FGANSoIck1T0SWjhQ-R9HzEgvNg_eJmHKfSHl-oGcATlAYepX-UDAlI-ftPEd2HPIaClBXB7dsbnY8P1\" alt=\"This image has an empty alt attribute; its file name is eRISuBM46KYg3hVsZyvIWUV238vKZQzycbumjqliWBH48tg01NLvill5FGANSoIck1T0SWjhQ-R9HzEgvNg_eJmHKfSHl-oGcATlAYepX-UDAlI-ftPEd2HPIaClBXB7dsbnY8P1\" \/><\/figure>\n<p><!-- \/wp:image --><!-- wp:paragraph --><\/p>\n<p>Hitting a robot with the wrong hand leads to a missed note.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/w_2dDbtP09kVlQgWBpMqciEyAYmVJkuJPS3o7E6R_l-SKkcI-x-rZ2zH0nBmiTew6B3f5V5MtWQzckCJ5NM-EAyvDQf8IwtkX_NLrE0jo-KwKeVXH9ug0FXP7QvOgI-13NjPmdQO\" alt=\"This image has an empty alt attribute; its file name is w_2dDbtP09kVlQgWBpMqciEyAYmVJkuJPS3o7E6R_l-SKkcI-x-rZ2zH0nBmiTew6B3f5V5MtWQzckCJ5NM-EAyvDQf8IwtkX_NLrE0jo-KwKeVXH9ug0FXP7QvOgI-13NjPmdQO\" \/><\/figure>\n<p><!-- \/wp:image --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>\u00a0<\/h3>\n<h3>Kicking<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>Yellow robots appear near the ground and must be kicked by players.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/GX5_c4ZJGIwnO55Mo8k921U4sHXuzT5urvr5jojUlOu3hHjLPWVbB9raDTp84o7Z8kvoq5E0HfRcK9nOwZUU2DnSEzXMKWa34BNP2SiJ8__-2pJKh6tDLFhR77rBfsABkOdMC9-r\" alt=\"This image has an empty alt attribute; its file name is GX5_c4ZJGIwnO55Mo8k921U4sHXuzT5urvr5jojUlOu3hHjLPWVbB9raDTp84o7Z8kvoq5E0HfRcK9nOwZUU2DnSEzXMKWa34BNP2SiJ8__-2pJKh6tDLFhR77rBfsABkOdMC9-r\" \/><\/figure>\n<p><!-- \/wp:image --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>\u00a0<\/h3>\n<h3>Arm Cross<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>At certain points in the song, a ring of purple robots surrounds the player. When this happens, players must cross their arms over their chest to create a bubble around themselves. When the robots hit the strum line, players release their arms from their chest, exploding the bubble and destroying the robots.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/NotEO_yaQ9Jgk6sfxhokVd4eJqPr0VvoWLZzmG09quabO6il12Rp2r5m2AYcmfEMSXoYyGu8yyxXZiZ7k8PK_m7SXk6tUcsjp6WVQEP66SnDC04R2cGSlpMIc_VdjbCrEvRJNIQE\" alt=\"This image has an empty alt attribute; its file name is NotEO_yaQ9Jgk6sfxhokVd4eJqPr0VvoWLZzmG09quabO6il12Rp2r5m2AYcmfEMSXoYyGu8yyxXZiZ7k8PK_m7SXk6tUcsjp6WVQEP66SnDC04R2cGSlpMIc_VdjbCrEvRJNIQE\" \/><\/figure>\n<p><!-- \/wp:image --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>\u00a0<\/h3>\n<h3>Accuracy<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>Players are awarded more points for hitting robots closer to the music\u2019s beats. They receive visual feedback that tells them if their hits were Good, Great, Perfect, or Misses. Since kicks were harder to perform accurately, all kicked yellow robots awarded Perfect accuracy.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/0jJWPfGyJUrsD3r_6PH5Seyfvnkxx7fJsW_J3JPs3ECDPmw_nFEqmkJDNw8H8YydfoDfCy8O2yCoCut8UkFGL1AQzWtu_5Rwno43g8MvP3UDF9GwB0miyk6siIVExbJ6iJwxwtUd\" alt=\"This image has an empty alt attribute; its file name is 0jJWPfGyJUrsD3r_6PH5Seyfvnkxx7fJsW_J3JPs3ECDPmw_nFEqmkJDNw8H8YydfoDfCy8O2yCoCut8UkFGL1AQzWtu_5Rwno43g8MvP3UDF9GwB0miyk6siIVExbJ6iJwxwtUd\" \/><\/figure>\n<p><!-- \/wp:image --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>\u00a0<\/h3>\n<h3>Combos &amp; Multipliers<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>As players hit robots consecutively without missing, they gain a combo. Each robot hit in a row adds one to the combo. Missing any robot resets the combo to zero. A multiplier (based on the combo) gives players more points. Players normally earn x1 points, but at a combo of 10 earn x2, at a combo of 20 earn x4, and so on to x8. When combos reset, multipliers reset as well.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/MJBMQT1djZIWhfhmyOF7sS2p7Z6MY52cyG6Cu2FUYxPWa9ooIVKj4BjTfWNYd8wJrduc-ATYKKHQ4GfygE6km4BMOKYcOh3XZv7m5zzkM-DU1-ovyaODIOpcPnhddEuxTxqJuM-y\" alt=\"This image has an empty alt attribute; its file name is MJBMQT1djZIWhfhmyOF7sS2p7Z6MY52cyG6Cu2FUYxPWa9ooIVKj4BjTfWNYd8wJrduc-ATYKKHQ4GfygE6km4BMOKYcOh3XZv7m5zzkM-DU1-ovyaODIOpcPnhddEuxTxqJuM-y\" \/><\/figure>\n<p><!-- \/wp:image --><!-- wp:heading --><\/p>\n<h2>\u00a0<\/h2>\n<p><!-- \/wp:heading --><!-- wp:list --><\/p>\n<ul>\n<li>Gameplay is easily-understood<\/li>\n<li>Fun to play<\/li>\n<li>Fun to watch<\/li>\n<li>Replayable<\/li>\n<li>Cycle guests through quickly<\/li>\n<li>Sense of progression\/comparison to everyone else<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:paragraph --><\/p>\n<p>We feel that the project successfully reached these goals, as the final product was accepted into Festival and had a long line of eager guests waiting to play.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading --><\/p>\n<h2>\u00a0<\/h2>\n<h2>Iteration Thoughts:<\/h2>\n<p><!-- \/wp:heading --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>Design<\/h3>\n<p><!-- \/wp:heading --><!-- wp:list --><\/p>\n<ul>\n<li>Simple, quick motions were easy to understand and perform in high-pressure situations. Punching and kicking are both simple, brief motions, which is necessary since they were done in quick sequence.<\/li>\n<li>Kicking was satisfying for players. Games typically don\u2019t include mechanics using players\u2019 feet as well as their hands, and kicking is a very visceral, enjoyable motion.<\/li>\n<li>Bots lead players around the arena. Rather than have robots come from any direction, we made sure to have them lead the player in a circle. That way, players always knew where to expect the next ones.<\/li>\n<li>The strum cage gave guests a visible indicator of when to hit the robots, which helped increase accuracy.<\/li>\n<li>The arm-cross motion was very complex compared to the punching or kicking motions. Punching and kicking involved a single, straightforward motion. The arm-cross, on the other hand, involved both arms moving with two distinct actions &#8211; moving together and moving apart. Once players understood the action, they enjoyed it a lot more.<\/li>\n<li>The accuracy of punching is related to depth perception (calibration).<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>Programming<\/h3>\n<p><!-- \/wp:heading --><!-- wp:list --><\/p>\n<ul>\n<li>Tools made prototyping different concepts very easy\n<ul>\n<li>An in-game beatmapping tool made it very simple to come up with initial beatmaps. The specific notes could be adjusted later, but the initial concept came from the in-game tool.<\/li>\n<li>The beatmaps were converted to .csv files, which made them very easy to load into Excel and alter.<\/li>\n<\/ul>\n<\/li>\n<li>Player &amp; NoteController classes got bloated<\/li>\n<li>Didn\u2019t really follow OOP<\/li>\n<li>The data saving from scriptable objects to csv files was not smooth.\u00a0\u00a0<\/li>\n<li>Some feedback features only worked in editor, never made it into the build.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>Art<\/h3>\n<p><!-- \/wp:heading --><!-- wp:list --><\/p>\n<ul>\n<li>Using different, distinct colors for the robots made it much easier for players to differentiate and therefore correctly hit the robots.<\/li>\n<li>The robots had very simple designs, which didn\u2019t distract guests.<\/li>\n<li>We had different text and particle effects for Good, Great, and Perfect hits. These allowed the player to easily and quickly gain a sense of how they were doing.<\/li>\n<li>The robots came out of portals around the map. Having these portals open and close gave players and indication of where robots would be coming from next.<\/li>\n<li>We wanted to differentiate our notes from other VR rhythm games like Beat Saber or Audioshield, which both use red\/orange and blue notes. We tried other combinations of colors, but found that reddish and bluish colors are different and easily understood by guests.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>Music<\/h3>\n<p><!-- \/wp:heading --><!-- wp:list --><\/p>\n<ul>\n<li>Music with strong beats made it much easier to follow the rhythm and act accordingly.<\/li>\n<li>Using an ABA musical form allowed us to divide the music into different sections, each with their own distinct patterns and moments.<\/li>\n<li>Using musical repetition (repeating a similar primary melody) allowed us to instill familiarity and confidence in guests and increase the complexity of interactions, building off of previous interactions.<\/li>\n<li>It proved difficult to change the length of the overall experience. We needed a short experience but found that we couldn\u2019t integrate all the musical ideas we developed. We shortened the intro and took out a middle chunk since we couldn\u2019t change the tempo to fit the time constraint.<\/li>\n<li>The dense arrangement of music made it difficult to fine-tune sound effects so that they were loud and noticeable enough for players.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading --><\/p>\n<h2>\u00a0<\/h2>\n<h2>Lessons Learned<\/h2>\n<p><!-- \/wp:heading --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>VR<\/h3>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>List<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:list --><\/p>\n<ul>\n<li>Simple, single-action motions are easiest to perform.<\/li>\n<li>Lead guests with visual clues, especially in a 360\u00b0 space.<\/li>\n<li>VR games typically require continuous actions rather than discrete. You must consider how players move to get from one note to the other, since some motions are physically impossible.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><!-- wp:heading {\"level\":3} --><\/p>\n<h3>Note Highway<\/h3>\n<p><!-- \/wp:heading --><!-- wp:list --><\/p>\n<ul>\n<li>Providing strum line\/cage is very important for players to be able to play well.<\/li>\n<li>Giving several types of feedback (visual &amp; auditory) helps players understand how they\u2019re doing.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Beat&#8217;Em is a rhythm-action game in which guests punch and kick at robots in a 360\u00b0 arena to the beat of music. It&#8217;s designed as an arcade experience so that multiple people could play it in a short amount of [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":462,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-453","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-postmortems","col-lg-4 col-md-6"],"_links":{"self":[{"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/posts\/453"}],"collection":[{"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/comments?post=453"}],"version-history":[{"count":6,"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/posts\/453\/revisions"}],"predecessor-version":[{"id":467,"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/posts\/453\/revisions\/467"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/media\/462"}],"wp:attachment":[{"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/media?parent=453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/categories?post=453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projects-old.etc.cmu.edu\/jam-session\/index.php\/wp-json\/wp\/v2\/tags?post=453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}