{"id":53,"date":"2026-03-28T18:50:51","date_gmt":"2026-03-28T18:50:51","guid":{"rendered":"https:\/\/aarongafurov.com\/?p=53"},"modified":"2026-04-22T14:02:39","modified_gmt":"2026-04-22T14:02:39","slug":"weeks-8-9-final-mechanics-ui-integration-and-the-version-control-crisis","status":"publish","type":"post","link":"https:\/\/aarongafurov.com\/index.php\/2026\/03\/28\/weeks-8-9-final-mechanics-ui-integration-and-the-version-control-crisis\/","title":{"rendered":"Weeks 8 &amp; 9 \u2013 Final Mechanics, UI Integration, and the Version Control Crisis"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Weeks eight and nine were immensely intensive as we rapidly approached our postponed Monday presentation. With the deadline looming, my primary objective was to transition our static assets into a functional, playable state. I began by implementing the core movement logic for the &#8216;Earth&#8217; character, establishing a baseline for our game&#8217;s handling. Concurrently, I had to debug a visual issue with the &#8216;Air&#8217; character; its animations were noticeably misaligned because the sprite pivot points were uncentred. I manually corrected these offsets to ensure the animations played fluidly. Furthermore, I finalised our arena&#8217;s tilemap, scaling down the overall dimensions and adding finer texture details to create a more confined and visually engaging combat space.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"308\" height=\"248\" src=\"https:\/\/aarongafurov.com\/wp-content\/uploads\/2026\/03\/Adobe-Express-Recording-2026-04-22-145611-1.gif\" alt=\"\" class=\"wp-image-80\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Beyond core movement, I focused heavily on refining the game&#8217;s combat feel and user interface. Initial testing revealed that the physics were unbalanced, with characters suffering excessive knockback when attacked. I recalibrated the applied forces to create a more realistic and fair interaction. To improve player feedback, I also engineered a dynamic health bar system that smoothly transitions in colour from green to red as a character&#8217;s health approaches zero. Finally, I integrated our background assets, though this introduced a critical bug where characters would continuously phase through the environment. I quickly diagnosed this as a layering issue and resolved it by explicitly assigning the background to a distinct, lower rendering sorting layer, ensuring the characters remained firmly in the foreground.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"284\" height=\"34\" src=\"https:\/\/aarongafurov.com\/wp-content\/uploads\/2026\/03\/ezgif-461aae10bf2c1258.gif\" alt=\"\" class=\"wp-image-82\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">While the development phase concluded successfully, the morning of our demonstration presented a severe, unanticipated technical disaster. During our final preparations, a team member accidentally pushed a broken, uncompilable version of the project to our GitHub repository. Upon pulling this update to ensure we had the latest assets, my local, working build immediately broke. Having never experienced a repository failure of this magnitude, the team was entirely unsure of how to proceed. We spent a highly stressful hour\u2014bleeding directly into our scheduled class time\u2014attempting various fixes and rollbacks through the GitHub Desktop application, none of which resolved the compilation errors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With our presentation slot looming just minutes away, I realised I had to abandon the desktop app and pivot my troubleshooting strategy. I navigated directly to the GitHub website, located our commit history, and managed to download the entire Unity project as a ZIP file from the last known stable commit. Fortunately, because I had been diligently pushing my major updates throughout the week, this stable build already contained all my essential bug fixes and mechanics. The only elements missing were a few minor, last-minute adjustments I had been working on that very morning. Under extreme time pressure, I quickly reapplied those specific morning tweaks, successfully restoring a fully functional build a mere five minutes before we were called to present. While incredibly stressful, this crisis was an invaluable lesson in technical risk management. It highlighted the absolute necessity of regular commits, the dangers of pushing unchecked code before a deadline, and the importance of knowing how to manually recover a repository.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Weeks eight and nine were immensely intensive as we rapidly approached our postponed Monday presentation. With the deadline looming, my primary objective was to transition our static assets into a functional, playable state. I began by implementing the core movement logic for the &#8216;Earth&#8217; character, establishing a baseline for our game&#8217;s handling. Concurrently, I had&#8230;<\/p>\n<p class=\"more-link-wrap\"><a href=\"https:\/\/aarongafurov.com\/index.php\/2026\/03\/28\/weeks-8-9-final-mechanics-ui-integration-and-the-version-control-crisis\/\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &ldquo;Weeks 8 &amp; 9 \u2013 Final Mechanics, UI Integration, and the Version Control Crisis&rdquo;<\/span> &raquo;<\/a><\/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-53","post","type-post","status-publish","format-standard","hentry","category-battleofelements"],"_links":{"self":[{"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/posts\/53","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/comments?post=53"}],"version-history":[{"count":4,"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/posts\/53\/revisions"}],"predecessor-version":[{"id":83,"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/posts\/53\/revisions\/83"}],"wp:attachment":[{"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/media?parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/categories?post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aarongafurov.com\/index.php\/wp-json\/wp\/v2\/tags?post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}