<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>C# on Left Jun</title>
        <link>/en/tags/c%23/</link>
        <description>Recent content in C# on Left Jun</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sun, 25 Jan 2026 10:00:00 +0800</lastBuildDate><atom:link href="/en/tags/c%23/index.xml" rel="self" type="application/rss+xml" /><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>
