FlappyCow
A dark-humor wuxia parkour game released on Steam — play a rookie courier racing against terrain, stamina, and office politics.

Project Description
FlappyCow is a dark-humor wuxia parkour game. You play a rookie courier fresh on the job — master qinggong, manage your qi, cross treacherous terrain, and deliver every order to your esteemed customers on time. Every delivery affects your performance review, and every mistake could get you "optimized" — between running for your life, chasing that promotion, and saving your aching back, do your best to enjoy the blessings the agency bestows upon you.
Game Loop
Morning dialogue → daytime delivery runs → evening settlement → the next day. Every order affects your performance review, and every mistake might get you "optimized".
Core Features
Side-scrolling deliveries, run for your life — control your jumps and dodge obstacles; when your qi runs dry, burn your own health to keep going.
Day shift not enough? Run night deliveries — give up rest to take extra orders. No bonus pay, but the agency sees your "dedication".
Wuxia agency, corporate blessings — performance reviews, last-place elimination, voluntary overtime. The agency never forces you to work hard.
Beyond deliveries, you still have to live — train, eat, rest, pay rent, and make trade-offs between limited wages and energy.
Every colleague has a secret — meet all kinds of couriers, get pulled into their side stories, and gradually uncover what the agency hides.
My Roles
Responsible for the design and development of the progression system, the content database framework, the save system, Steam integration, the audio system, and the dialogue system.
Progression System
- Designed the city's functional layout, module unlock order, and progression structure
- Designed module dependencies, resource costs, stat changes, and progression feedback
- Designed interaction flows such as purchase previews, confirmation dialogs, tooltips, and status hints
- Implemented modules including building interaction, home and restaurant, sutra library, letters, promotion tasks, and ranking cycles
- Built the connections between city features and the story, tutorial, daily loop, and promotion reviews
Frameworks and Tooling
- Built a generic ScriptableObject content database framework with Unity Editor table tooling
- Implemented the runtime data management and local save framework
- Integrated Steam launch detection and achievement sync
- Implemented music, SFX, and scene audio management
- Extended the Yarn Spinner dialogue system
System Architecture
Gameplay Systems
Progression System
Between delivery runs, the player manages daily life in the city: spending limited wages and energy on stat growth, and gradually unlocking new facilities and higher ranks.
What the progression system includes:
- Home & Restaurant — rest to recover energy, eat to stay in shape; rent and meals make up daily expenses
- Training — invest time and money to improve qinggong, qi, and other delivery stats
- Sutra Library & Letters — read collected lore, receive agency notices and letters from colleagues, and advance side stories
- Promotion Tasks & Ranking Reviews — complete promotion tasks to climb the ranks and survive last-place elimination reviews
How progression works:
- Progression modules depend on each other and unlock in sequence along the growth structure
- Every progression action costs resources and produces stat changes and growth feedback
GameModuleandModuleManagermanage module states, parent-child dependencies, and batch unlocking, triggering tutorials and auto-saves on unlockZCBuildingconnects building visuals, interaction states, and functional module statesZCUIManagermanages city windows, global windows, the window stack, ESC closing, and window routing- Purchase previews, confirmation dialogs, tooltips, and status hints support every progression decision
Music and SFX System
SoundManagermanages BGM, SFX, and ambient audioSO_SoundAssetandSoundDatabaseconfigure audio assets and their scene bindings- Supports BGM crossfade, automatic scene-based audio switching, and an SFX object pool
- Includes random variations, random pitch, looping ambient tracks, and independent volume control
Dialogue System Extensions
- Extended Yarn Spinner with custom Yarn Commands that call into game systems
- Added a dialogue queue, auto-play, skip, and dialogue history
- Skipping compensates for critical commands inside skipped lines, keeping story, tutorial, and module states consistent
Frameworks & Systems
The project is built with Unity and C#, organized around ScriptableObject, Singleton, event-driven architecture, coroutines, and object pooling.
Content Database Framework
- A generic ScriptableObject content database framework manages resources such as tutorials, restaurant content, letters, audio, achievements, and levels
- The generic
SO_Database<T>handles different data types, whileSO_BaseAssetInDatabaseprovides a unified asset name, unique ID, and resource reference BaseTableTab<T>builds a shared editor table with add, delete, search, paging, edit, and save support, extended with Odin InspectorRuntimeAssetBase<T>separates static configuration from runtime state, linked to the save system by unique ID
Runtime Data and Local Saves
SaveManagermanages save slots, auto-saving, and data recoveryISavable,SaveableBehaviour, andSaveableSingletonunify the lifecycle of saveable objectsCaptureState()andRestoreState()separate runtime objects from persisted data- Unique asset IDs,
SaveId, andSaveGuidkeep database assets and runtime state stably linked ES3StorageProviderwraps Easy Save 3 with save directory, format compatibility, compression, and encryption options
Steam Integration
- Built on Steamworks.NET to access the Steam achievement API
- A client interface abstracts platform calls, with an achievement queue, batch submission, callback confirmation, and retry on failure
- Achievement sync works when Steam is not running, offline, or reconnecting