<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Unity on Left Jun</title>
        <link>/en/tags/unity/</link>
        <description>Recent content in Unity on Left Jun</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Fri, 20 Mar 2026 10:00:00 +0800</lastBuildDate><atom:link href="/en/tags/unity/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Asherah&#39;s Lament</title>
            <link>/en/projects/ashe-lament/</link>
            <pubDate>Fri, 20 Mar 2026 10:00:00 +0800</pubDate>
            <guid>/en/projects/ashe-lament/</guid>
            <description>&lt;img src=&#34;/&#34; alt=&#34;Featured image of post Asherah&#39;s Lament&#34; /&gt;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&lt;p&gt;Asherah&amp;rsquo;s Lament is a 2D platformer and resource-management game created for the Tencent University Game Extreme Development Competition, Chengdu site. The player becomes the last &amp;ldquo;root speaker&amp;rdquo; in a dying world sustained by Asherah, the Mother Tree. To delay the final silence, the player travels between underground roots and the surface trunk, gathers remaining spirit energy, builds shortcuts, climbs upward, and tries to return the last power to the heart of the world before their own energy runs out.&lt;/p&gt;&#xA;&lt;p&gt;The project is not only about moving quickly or jumping precisely. Its central challenge is management: time, resources, risk, and route planning all compete with each other.&lt;/p&gt;&#xA;&lt;h2 id=&#34;worldbuilding&#34;&gt;Worldbuilding&#xA;&lt;/h2&gt;&lt;p&gt;The story takes place during the Great Withering. Asherah was once the source of life: her roots reached into the earth, her crown touched the stars, and spirit energy flowed through her like a living cycle. As that energy dries up, forests lose color, civilizations scatter, and the Mother Tree enters a long final decline.&lt;/p&gt;&#xA;&lt;p&gt;The player is the last root speaker and the final manager of this fading world. There are no legendary heroes left, only concrete decisions: collect a little more energy or return before it is too late, spend bones to build a shortcut or save them for later, move faster through a risky form or preserve spirit energy for the ending.&lt;/p&gt;&#xA;&lt;p&gt;In this setting, &amp;ldquo;management&amp;rdquo; is not an abstract theme. It is the last attempt to maintain order inside an irreversible collapse.&lt;/p&gt;&#xA;&lt;h2 id=&#34;core-gameplay&#34;&gt;Core Gameplay&#xA;&lt;/h2&gt;&lt;p&gt;The game is built around two connected loops.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Underground exploration: the player enters root-like spaces under strict time pressure, using platforming skills to collect spirit energy and bones.&lt;/li&gt;&#xA;&lt;li&gt;Surface climbing: the player spends gathered resources to climb the dead trunk of the Mother Tree, build shortcuts, and reduce the difficulty of later attempts.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Spirit energy functions as health, action fuel, time pressure, and ending resource at once. It naturally drains over time and can be consumed faster through risky actions. The amount of spirit energy delivered at the end determines the ending, directly connecting resource management to narrative outcome.&lt;/p&gt;&#xA;&lt;h2 id=&#34;screenshots-and-systems&#34;&gt;Screenshots and Systems&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;/projects/ashe-lament/screenshot-notice-board.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Gameplay notice board&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The notice board explains spirit energy, bones, the timer, enhanced form, and shortcut construction in one screen, helping players understand the resource pressure before entering the main loop.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/ashe-lament/screenshot-dialogue.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Story dialogue box&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The dialogue system carries both progression and worldbuilding. Qizhi, the remaining echo of the Mother Tree&amp;rsquo;s will, introduces rules and gives emotional guidance during the journey.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/ashe-lament/screenshot-underground.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Enhanced form and underground collection&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The underground area focuses on time pressure and execution efficiency. The player can enter an enhanced form to move more effectively, but spirit energy drains faster, forcing a tradeoff between reward and risk.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/ashe-lament/screenshot-shortcut.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1438&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Surface climbing and shortcut construction&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;427px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The surface phase is more about long-term planning. Players can spend resources to build shortcuts, turning underground collection results into route advantages.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/ashe-lament/screenshot-speed-board.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Spirit-energy prompt&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Process prompts are layered directly into the scene, giving strong feedback when player actions consume or change core resources.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/ashe-lament/screenshot-ending.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Ending screen&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Different endings are triggered by the final amount of delivered spirit energy, connecting the player&amp;rsquo;s resource-management performance to the narrative conclusion.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/ashe-lament/screenshot-epilogue.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Epilogue screen&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The epilogue visualizes a new pulse after decay, echoing the game&amp;rsquo;s themes of cycle, sacrifice, and renewal.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/ashe-lament/screenshot-staff.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Staff roll&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The staff screen records the team roles and gives the 72-hour collaboration a clear closing note.&lt;/p&gt;&#xA;&lt;h2 id=&#34;my-role&#34;&gt;My Role&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Served as team lead, main programmer, gameplay designer, and music producer.&lt;/li&gt;&#xA;&lt;li&gt;Designed and implemented core movement, dual-state switching, spirit energy consumption, collection loops, shortcut construction, and multi-ending checks.&lt;/li&gt;&#xA;&lt;li&gt;Coordinated the overall flow from underground collection to surface climbing to ending feedback.&lt;/li&gt;&#xA;&lt;li&gt;Worked with writing and art teammates to translate concepts such as the Mother Tree, root speaker, Great Withering, and spirit energy into scenes, UI, and progression.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;technical-implementation&#34;&gt;Technical Implementation&#xA;&lt;/h2&gt;&lt;p&gt;The game was developed in Unity, with the main challenge being to build a complete and adjustable system under a short production window.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Implemented movement, jumping, dashing, wall detection, respawn, area triggers, and dual-state switching.&lt;/li&gt;&#xA;&lt;li&gt;Built a spirit-energy system that unifies health, time pressure, action cost, and ending conditions.&lt;/li&gt;&#xA;&lt;li&gt;Implemented underground safe time, surface climbing rhythm, resource collection, bone spending, and shortcut construction.&lt;/li&gt;&#xA;&lt;li&gt;Used asynchronous scene loading and area triggers to connect underground and surface phases with less friction.&lt;/li&gt;&#xA;&lt;li&gt;Designed tunable thresholds for multiple endings so that the player&amp;rsquo;s management performance could be clearly resolved.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;system-structure&#34;&gt;System Structure&#xA;&lt;/h2&gt;&lt;p&gt;To keep the 72-hour project manageable, I separated the scripts into five main modules:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Player control: &lt;code&gt;PlayerMove&lt;/code&gt;, &lt;code&gt;PlayerJump&lt;/code&gt;, &lt;code&gt;PlayerDash&lt;/code&gt;, &lt;code&gt;GroundCheck&lt;/code&gt;, &lt;code&gt;WallCheck&lt;/code&gt;, and &lt;code&gt;Respawn&lt;/code&gt; for the platforming feel.&lt;/li&gt;&#xA;&lt;li&gt;Form and spirit-energy systems: &lt;code&gt;MaskControl&lt;/code&gt;, &lt;code&gt;EnergyManager&lt;/code&gt;, &lt;code&gt;EnergyDrainController&lt;/code&gt;, and &lt;code&gt;SafetyTimer&lt;/code&gt; for normal/enhanced states, energy drain, and underground safety time.&lt;/li&gt;&#xA;&lt;li&gt;Level interaction: &lt;code&gt;CheckPoint&lt;/code&gt;, &lt;code&gt;PlatformMove&lt;/code&gt;, &lt;code&gt;TrapCheck&lt;/code&gt;, and &lt;code&gt;ShortcutBuilder&lt;/code&gt; for checkpoints, moving platforms, hazards, and shortcut construction.&lt;/li&gt;&#xA;&lt;li&gt;Dialogue and UI: &lt;code&gt;SimpleDialogue&lt;/code&gt;, &lt;code&gt;AdvancedText&lt;/code&gt;, &lt;code&gt;UIManager&lt;/code&gt;, and &lt;code&gt;ChoicePanel&lt;/code&gt; for text display, interaction, and feedback.&lt;/li&gt;&#xA;&lt;li&gt;Presentation and endings: &lt;code&gt;BackgroundSwitcher&lt;/code&gt;, &lt;code&gt;CharacterLightController&lt;/code&gt;, &lt;code&gt;MusicManager&lt;/code&gt;, and &lt;code&gt;EndingManager&lt;/code&gt; for background changes, lighting, music, and ending logic.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The core flow links player input to movement, jump, dash, collision checks, state switching, energy updates, safety timers, interaction feedback, and ending resolution. This structure helped the gameplay, resource management, dialogue, and presentation systems stay readable under a short production window.&lt;/p&gt;&#xA;&lt;h2 id=&#34;design-highlights&#34;&gt;Design Highlights&#xA;&lt;/h2&gt;&lt;p&gt;The strongest part of Asherah&amp;rsquo;s Lament is the way theme, mechanics, and narrative share the same center. Spirit energy draining represents the world&amp;rsquo;s decay. Underground exploration creates pressure. Surface planning gives the player room to think. Multiple endings reflect the long-term results of the player&amp;rsquo;s management decisions.&lt;/p&gt;&#xA;&lt;p&gt;As a result, each jump and each resource cost carries more than mechanical weight. It also asks whether anything can still be saved before the world goes silent.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Relativity of a Dot</title>
            <link>/en/projects/relativity-of-a-dot/</link>
            <pubDate>Tue, 10 Feb 2026 10:00:00 +0800</pubDate>
            <guid>/en/projects/relativity-of-a-dot/</guid>
            <description>&lt;img src=&#34;/&#34; alt=&#34;Featured image of post Relativity of a Dot&#34; /&gt;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&lt;p&gt;This is a 2D / 3D switching puzzle prototype. I used it to test whether the same level could produce different solutions under different spatial rules.&lt;/p&gt;&#xA;&lt;p&gt;The idea came from the keyword &amp;ldquo;dot.&amp;rdquo; A dot can be a point in one dimension, a mark on a 2D plane, or a projection inside 3D space. I turned that idea into a spatial prototype where the player switches between 2D projection and 3D space to understand the same level through different rules.&lt;/p&gt;&#xA;&lt;h2 id=&#34;screenshots-and-mechanics&#34;&gt;Screenshots and Mechanics&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;/projects/relativity-of-a-dot/screenshot-2d-view.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;2D view&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In 2D mode, the player sees a side-view projection of the level. Movement is constrained to one plane, and obstacles behave more like a traditional 2D puzzle.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/relativity-of-a-dot/screenshot-3d-view.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;3D view&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;After switching to 3D, the camera and movement rules change together. Structures that look like blockers in 2D can be reinterpreted through spatial depth.&lt;/p&gt;&#xA;&lt;h2 id=&#34;my-role&#34;&gt;My role&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Designed the mechanic and developed the prototype independently.&lt;/li&gt;&#xA;&lt;li&gt;Rapidly verified dimension switching, camera switching, and object-behavior synchronization.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;technical-implementation&#34;&gt;Technical implementation&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Used &lt;code&gt;DimensionManager&lt;/code&gt; to control dimension state, camera switching, and object behavior.&lt;/li&gt;&#xA;&lt;li&gt;Allowed the same player object to switch movement rules between 2D and 3D.&lt;/li&gt;&#xA;&lt;li&gt;Used collider switching and projected-position correction to make one scene support multiple solutions.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;system-structure&#34;&gt;System Structure&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Dimension switching: &lt;code&gt;DimensionManager&lt;/code&gt; controls 2D/3D state and synchronizes Cinemachine camera priority.&lt;/li&gt;&#xA;&lt;li&gt;Player control: &lt;code&gt;PlayerMove&lt;/code&gt;, &lt;code&gt;PlayerJump&lt;/code&gt;, &lt;code&gt;GroundCheck2D&lt;/code&gt;, and &lt;code&gt;GroundCheck3D&lt;/code&gt; handle movement, jumping, and grounded checks under two spatial rules.&lt;/li&gt;&#xA;&lt;li&gt;Spatial object rules: &lt;code&gt;DimensionObject&lt;/code&gt; enables different colliders depending on the current dimension and corrects projected player position in 2D mode.&lt;/li&gt;&#xA;&lt;li&gt;Menu and flow: start menu, pause menu, and basic flow control keep the prototype playable as a complete loop.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The prototype focuses on validating one clear chain: pressing &lt;code&gt;Tab&lt;/code&gt; changes the dimension state, switches the camera, changes movement axes, updates collision rules, and creates a new spatial solution inside the same level.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Emotion Mask</title>
            <link>/en/projects/emotion-mask/</link>
            <pubDate>Sun, 25 Jan 2026 10:00:00 +0800</pubDate>
            <guid>/en/projects/emotion-mask/</guid>
            <description>&lt;img src=&#34;/&#34; alt=&#34;Featured image of post Emotion Mask&#34; /&gt;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&lt;p&gt;Emotion Mask is a 2D platformer-puzzle game centered on emotion switching. It was my solo entry for Global Game Jam 2026, responding to the theme &amp;ldquo;Mask.&amp;rdquo; The player controls a boy wearing a blank mask and switches between three emotional states: Calm, Joy, and Anger. Each state changes how the character moves, reads the world, and interacts with obstacles.&lt;/p&gt;&#xA;&lt;p&gt;The project was later published on TapTap. For me, it was not only a game jam prototype, but also my first complete practice of turning a small game into a public-facing portfolio piece with a store page, screenshots, tags, platform information, and a playable build.&lt;/p&gt;&#xA;&lt;h2 id=&#34;core-gameplay&#34;&gt;Core Gameplay&#xA;&lt;/h2&gt;&lt;p&gt;The mask works as a bridge between character ability and level solution. Each emotion is tied to a distinct gameplay function rather than being a simple visual change.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Calm reveals hidden paths and clues, helping the player understand the level.&lt;/li&gt;&#xA;&lt;li&gt;Joy improves mobility with higher, lighter jumps.&lt;/li&gt;&#xA;&lt;li&gt;Anger grants destructive force and dash-based obstacle breaking.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The level design encourages players to keep switching states. The strongest solution is rarely staying in one mode; it is choosing the right emotional state for the current problem.&lt;/p&gt;&#xA;&lt;h2 id=&#34;screenshots-and-mechanics&#34;&gt;Screenshots and Mechanics&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;/projects/emotion-mask/screenshot-neutral-platform.png&#34;&#xA;&#x9;width=&#34;1250&#34;&#xA;&#x9;height=&#34;565&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Platforms visible under the Calm mask&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;221&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;530px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In the Calm state, certain hidden platforms become visible, allowing the player to observe the level and choose a safer route.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/emotion-mask/screenshot-happy-platform.png&#34;&#xA;&#x9;width=&#34;1269&#34;&#xA;&#x9;height=&#34;541&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;The same platform logic under the Joy mask&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;234&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;562px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;After switching to Joy, the same platform is no longer visible, but the character gains faster movement. This contrast shows the core idea: masks are not simple buffs; they change how the level can be read.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/emotion-mask/screenshot-level.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Platforming and state switching inside the level&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The level combines spikes, walls, moving platforms, and mask states so the player keeps switching between execution and decision-making.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/projects/emotion-mask/screenshot-mask-tutorial.png&#34;&#xA;&#x9;width=&#34;2559&#34;&#xA;&#x9;height=&#34;1439&#34;&#xA;&#x9;loading=&#34;lazy&#34;&#xA;&#x9;&#xA;&#x9;&#x9;alt=&#34;Mask-switching tutorial area&#34;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;class=&#34;gallery-image&#34; &#xA;&#x9;&#x9;data-flex-grow=&#34;177&#34;&#xA;&#x9;&#x9;data-flex-basis=&#34;426px&#34;&#xA;&#x9;&#xA;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The tutorial area explains the three mask abilities: Calm reveals moving platforms, Joy is faster, and Anger can destroy obstacles.&lt;/p&gt;&#xA;&lt;h2 id=&#34;theme&#34;&gt;Theme&#xA;&lt;/h2&gt;&lt;p&gt;The game explores the idea that emotions are not mistakes to be removed, but different ways of responding to the world. Calm, Joy, and Anger each have value: observation, movement, and breakthrough.&lt;/p&gt;&#xA;&lt;p&gt;In that sense, the mask is both a mechanic and a metaphor. It turns inner emotional shifts into readable rules, actions, failures, and retries.&lt;/p&gt;&#xA;&lt;h2 id=&#34;my-role&#34;&gt;My Role&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Independently handled game design, programming, level design, art integration, sound integration, and release preparation.&lt;/li&gt;&#xA;&lt;li&gt;Designed three emotional mask states and connected them to movement parameters, dash logic, visual feedback, and level interactions.&lt;/li&gt;&#xA;&lt;li&gt;Completed a playable loop within the 48-hour jam window, including menu flow, level progression, death and respawn, collectible fragments, and ending feedback.&lt;/li&gt;&#xA;&lt;li&gt;Prepared the public TapTap and Global Game Jam pages with descriptions, tags, platform information, and presentation material.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;technical-implementation&#34;&gt;Technical Implementation&#xA;&lt;/h2&gt;&lt;p&gt;The game was built in Unity with C#, with a focus on responsive character control and fast iteration.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Implemented movement, variable jumping, double jump, dash, wall detection, death, and respawn.&lt;/li&gt;&#xA;&lt;li&gt;Used a state-machine structure to drive emotion-specific abilities, visual changes, movement tuning, and scene feedback.&lt;/li&gt;&#xA;&lt;li&gt;Connected hidden platforms, breakable obstacles, and emotion fragments to the state system so that ability switching becomes the core puzzle language.&lt;/li&gt;&#xA;&lt;li&gt;Prioritized a minimal but complete gameplay loop under game jam time pressure, making sure the prototype had readable feedback and a finishable flow.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;system-structure&#34;&gt;System Structure&#xA;&lt;/h2&gt;&lt;p&gt;The scripts are mainly organized into five modules:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Player control: &lt;code&gt;PlayerMove&lt;/code&gt;, &lt;code&gt;PlayerJump&lt;/code&gt;, &lt;code&gt;PlayerDash&lt;/code&gt;, &lt;code&gt;GroundCheck&lt;/code&gt;, &lt;code&gt;WallCheck&lt;/code&gt;, &lt;code&gt;HurtCheck&lt;/code&gt;, and &lt;code&gt;Respawn&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Mask switching and presentation: &lt;code&gt;MaskControl&lt;/code&gt;, &lt;code&gt;MaskAnimator&lt;/code&gt;, &lt;code&gt;EmotionalPlatform&lt;/code&gt;, and &lt;code&gt;MusicManager&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Level interaction: &lt;code&gt;CheckPoint&lt;/code&gt;, &lt;code&gt;PlatformMove&lt;/code&gt;, &lt;code&gt;TrapCheck&lt;/code&gt;, and &lt;code&gt;CollectibleRotation&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Flow and settlement: &lt;code&gt;GameManager&lt;/code&gt;, &lt;code&gt;GameTimer&lt;/code&gt;, and &lt;code&gt;PlayerCheckpoints&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Menu and UI: start menu, pause menu, and basic interface feedback.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The three masks change more than character stats. They also affect platform visibility, obstacle handling, background state, and music feedback. Player input flows through movement, jumping, dashing, mask switching, character-parameter updates, scene-state changes, platform logic, and final settlement.&lt;/p&gt;&#xA;&lt;h2 id=&#34;release&#34;&gt;Release&#xA;&lt;/h2&gt;&lt;p&gt;Emotion Mask was published on TapTap and submitted to Global Game Jam 2026. The TapTap page presents the game description, platform requirements, developer note, and player rating, while the GGJ page records the jam year, theme, site, platform, tools, and project links.&lt;/p&gt;&#xA;&lt;p&gt;This project helped me understand that finishing a prototype is only one part of showing a game. Screenshots, cover art, tags, store copy, download links, and external pages all affect how the work is perceived.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
