{"id":213,"date":"2023-04-06T18:43:29","date_gmt":"2023-04-06T18:43:29","guid":{"rendered":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/?p=213"},"modified":"2023-04-10T21:26:35","modified_gmt":"2023-04-10T21:26:35","slug":"week-10-etc-playtest-day","status":"publish","type":"post","link":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/week-10-etc-playtest-day\/","title":{"rendered":"Week 10: ETC Playtest Day"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">GDC was a great refresh for the whole team. Combing back from San Francisco, the team worked very hard to optimize the user experience for the playtest day. Designers rework the physics logics for hits, allowing the actual strength of swinging to be better reflected by the ball&#8217;s velocity. Programmers were dedicated in fixing high-priority bugs as well as adding sound and haptic feedback to the game.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Teleport<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first thing we fixed was the teleport since the position player teleported to greatly influences the feeling of the hits. We realized through internal playtesting that our teleport system can occasionally be quite off and inconsistent &#8211; sometimes the ball is too close from the player and sometimes it&#8217;s too far away. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is basically due to the design of the teleport system. Since we need to teleport the other player at the moment the hit happens, we must calculate the ball&#8217;s whole trajectory at that moment and get a estimated landing point of the ball. Having got the landing position, we simply added an offset to that point for the opposing player to be teleported to.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, the ball&#8217;s movement after the bounce could vary greatly according the direction and magnitude  of the ball&#8217;s velocity after hits. Therefore, a fixed offset for teleport is simply impossible to accommodate for all hitting conditions. We finally fix this by updating the offset by scaling it by the magnitude of the ball&#8217;s velocity after bounce.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>&#8216;Vertical Ball&#8217;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a internal term we used to describe a bug we found where the ball will only move vertically after the bounce and resulting in the player having to reach really hard for the ball. We spent hours debugging this problem, only to find out that the default collision API Unity provides are not called even the collision is performed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We ended up abandoning the Unity API and wrote a costumed ground collision detection on our own. We fixed the vertical ball problem in this way, and it also grants us with more flexibility on the decay of balls&#8217; velocity  after the bounce.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Physics<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another urging issue is with the hitting. We realized that it is too easy to hit the ball too far away across the base line even though there wasn&#8217;t much strength applied in the real world.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We addressed this by changing the mapping function between the controller&#8217;s velocity in real world and the ball&#8217;s outgoing velocity. We used to use a linear mapping between them, so that even the controller is moving with a really small speed, the ball goes out with the minimum outgoing velocity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We changed the linear mapping to a segmented quadratic mapping and also lowered the minimum outgoing speed, so that when the controller moves really slow, the ball move accordingly. And the player also needs to swing it really hard to reach the maximum speed.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Playtest Day<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, we were able to make a satisfying build by the Friday evening. Valerie also helped sorting out a playtest flow for every session, as well as composing a survey to better quantify the feedback. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1019\" height=\"1024\" src=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/WeChat-Screenshot_20230410172159-1019x1024.png\" alt=\"\" class=\"wp-image-235\" srcset=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/WeChat-Screenshot_20230410172159-1019x1024.png 1019w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/WeChat-Screenshot_20230410172159-300x300.png 300w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/WeChat-Screenshot_20230410172159-150x150.png 150w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/WeChat-Screenshot_20230410172159-768x772.png 768w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/WeChat-Screenshot_20230410172159.png 1494w\" sizes=\"auto, (max-width: 1019px) 100vw, 1019px\" \/><figcaption class=\"wp-element-caption\">The playtest day went quite smoothly and was full of fun thanks to our sufficient preparation. The only thing we did not see coming was that it took guests too long to get equipped and get into the game, so we had to cut the tutorial part and had them playtesting the core gameplay part. Otherwise, it went really well. We will post the feedback we got and analyzed them next week.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"643\" src=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04899-1024x643.jpg\" alt=\"\" class=\"wp-image-236\" srcset=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04899-1024x643.jpg 1024w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04899-300x188.jpg 300w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04899-768x482.jpg 768w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04899-1536x964.jpg 1536w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04899-2048x1286.jpg 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=\"630\" src=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04829-1024x630.jpg\" alt=\"\" class=\"wp-image-237\" srcset=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04829-1024x630.jpg 1024w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04829-300x184.jpg 300w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04829-768x472.jpg 768w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04829-1536x944.jpg 1536w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04829-2048x1259.jpg 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=\"692\" src=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04836-1024x692.jpg\" alt=\"\" class=\"wp-image-238\" srcset=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04836-1024x692.jpg 1024w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04836-300x203.jpg 300w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04836-768x519.jpg 768w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04836-1536x1037.jpg 1536w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04836-2048x1383.jpg 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=\"576\" src=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04942-1024x576.jpg\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04942-1024x576.jpg 1024w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04942-300x169.jpg 300w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04942-768x432.jpg 768w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04942-1536x865.jpg 1536w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04942-2048x1153.jpg 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=\"576\" src=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04947-1024x576.jpg\" alt=\"\" class=\"wp-image-240\" srcset=\"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04947-1024x576.jpg 1024w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04947-300x169.jpg 300w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04947-768x432.jpg 768w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04947-1536x865.jpg 1536w, https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-content\/uploads\/2023\/04\/DSC04947-2048x1153.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>GDC was a great refresh for the whole team. Combing back from San Francisco, the team worked very hard to optimize the user experience for the playtest day. Designers rework the physics logics for hits, allowing the actual strength of swinging to be better reflected by the ball&#8217;s velocity. Programmers [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-213","post","type-post","status-publish","format-standard","hentry","category-blogs"],"_links":{"self":[{"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/posts\/213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/comments?post=213"}],"version-history":[{"count":4,"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/posts\/213\/revisions"}],"predecessor-version":[{"id":241,"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/posts\/213\/revisions\/241"}],"wp:attachment":[{"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/media?parent=213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/categories?post=213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/ace-breakers\/wp-json\/wp\/v2\/tags?post=213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}