Skip to content

josephchay/restoration-zero

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

189 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Restoration Zero

The Game Title suggests being the first (Zero) in a mission to restore humanity, implying the protagonist's journey to save both themselves and others.

🔻 Time isn't just running out for humanity - it's running out for you. Will you expose their plan before your mind fractures completely? Or will you become another failed experiment in their quest for perfect control? 🔻


Tik Tok… Tik Tok… Hear that? It’s the sound of humanity’s last breaths. The fight for the future? More like a slow, twisted death rattle.

Protocol: CHIMERA-X Initiated. The first T-virus outbreak taught them a costly lesson. Their dream of a domesticated humanity was shattered by something they never accounted for - human resilience. A single girl with an antidote had dismantled decades of research. They wouldn't make the same mistake again.

The APEX-T Strain wasn't about creating zombies. It was about creating guardians - hyper-evolved enforcers to ensure absolute control. You were meant to be the first of their "Oversight Protocol" - a new breed of enhanced beings engineered to hunt down any spark of resistance before it could ignite. The rabbit genetics weren't chosen for speed or strength, but for their survival programming. The research files revealed their obsession with specific lagomorph traits: heightened threat detection, ability to function in perpetual fight-or-flight state without mental degradation, capacity to remain hypervigilant while appearing calm, and most crucially - the evolutionary adaptability to thrive in any environment while staying undetected. These traits, perfected over millions of years of evolution, made rabbits the perfect template for their perfect predator.

You were never meant to look like this - a grotesque hybrid of human and hare. The original blueprints showed something far more subtle: a perfect human appearance masking enhanced genetics. The final stage was supposed to rewrite your exterior back to human form while maintaining the internal lagomorph adaptations. But the quantum accident interrupted the sequence, leaving you trapped in this incomplete state. Now you're caught between forms - your mutated body a visible testament to their failed experiment. Your enhanced eyesight, augmented muscle density, and advanced fighting strategy capabilities weren't part of the plan. - they were meant to be internalized traits, hidden beneath human skin. Instead, you've become a walking warning of what they're trying to create.

But they never finished. The quantum reactor breach began as intentional sabotage - someone or something in the lower labs broke containment. But what followed was beyond anyone's calculations. The facility's AI detected an anomaly so catastrophic, it triggered a total systems failure. The last thing you saw through your containment chamber was emergency protocols failing as a massive wave of quantum-charged plasma erupted from the particle accelerator chamber - far more devastating than any planned breach could have been. The blast twisted everything it touched, warping the very fabric of space within the facility.

But you weren't the only thing that broke free that day. The quantum cascade ripped through the facility's classified sectors, shattering containment units across all thirteen underground levels. Through the chaos and sirens, you heard them - screams and roars that shouldn't exist in nature. The research logs you've found speak of other programs: APEX-V variants tested on wolves with predatory instincts enhanced beyond recognition. APEX-R subjects spliced with reptilian DNA, their thermal signatures completely masked. Some were deemed 'successfully conditioned' - loyal attack dogs ready to be weaponized. Others were marked 'failed containment protocols' - feral things driven mad by their own mutations.

They're out there now, hunting through the ruins. Some still follow their programming, acting as deadly sentinels protecting the facility's darkest secrets. These 'loyal' ones are almost worse than the feral - they hunt with calculated precision, coordinating their attacks with terrifying intelligence. But the feral ones... they're something else entirely. Driven mad by incomplete mutations, their bodies constantly shifting between forms, they attack anything that moves. You've seen the security footage: whole squads of cleanup teams torn apart by things that used to be human.

The truly haunting part? The logs suggest these weren't failed experiments at all. They were meant to be the cleanup crew - the failsafe if their perfect world of controlled humans ever started to crack. Living weapons designed to hunt down anyone who showed signs of breaking their mental conditioning. Now they're loose, their programming twisted by the quantum blast, creating a deadly maze between you and any hope of a cure.

You can feel them watching. Every shadow could hide a sentinel, every vent could harbor something waiting to pounce. And time is running out - not just for you, but for anyone trying to expose the truth. These creatures are spreading, adapting, hunting. Some are even showing signs of coordinated behavior, as if the quantum blast gave them a savage kind of collective intelligence. The facility's containment protocols weren't just trying to stop an accident - they were trying to prevent an exodus of apex predators engineered for one purpose: hunting humans who dare to think freely.

Now you're trapped between two evolutionary paths, and the clock is ticking against your survival. The fragmented research data tells a grim truth: your interrupted transformation is wildly unstable. Your cells are degrading faster than they can mutate. According to their projections, you have days, maybe weeks before total systemic failure - or worse, complete cognitive collapse. The human consciousness they wanted to preserve in their enforcers is slowly being torn apart by incomplete genetic sequences.

The truth was buried deeper in the scattered data. Project APEX-T was just the beginning - the enforcer program. They knew their plan for mass control would need guardians, and that's where you were supposed to come in. But the real horror lay in the fragments of what they called "Project SUBTLE REIGN." Unlike the original T-virus's obvious mutations, this was something far more insidious. The blueprints revealed a virus designed for invisible subjugation - a pathogen that leaves its hosts seemingly untouched on the surface.

No zombies. No visible mutations. Just perfectly normal human beings, going about their daily lives... except their capacity for independent thought would be surgically stripped away. The research logs were chilling: "Subject maintains all basic functions. Holds conversations. Performs complex tasks. Shows appropriate emotional responses. Yet exhibits perfect compliance to embedded directives."

You were meant to be part of their enforcement protocol - enhanced beings designed to silently eliminate anyone whose consciousness somehow broke through the viral programming. The perfect predators to maintain their perfect illusion. The quantum accident that transformed you also exposed their master plan: a two-pronged assault on human freedom. While SUBTLE REIGN would quietly enslave the masses, the APEX-T enhanced enforcers would eliminate any resistance.

The facility's ruins hold more than just hints of a cure. Every fragment of data reveals another layer of their scheme: automated dispersion systems, contaminated water supplies, modified food chains - all designed to slowly infect populations while maintaining the illusion of normalcy. A world of smiling slaves, never knowing they're imprisoned in their own minds.

Your degrading body is a twisted blessing - it's given you access to mutations they never intended, letting you pierce their veil of secrecy. But these same mutations are killing you. Each seizure brings another fragment of memory loss, each transformation tears more of your consciousness away. The theoretical PROTOCOL: GENESIS might be your only hope, if it exists at all...

thumbnail-talk-interactable-preview

thumbnail-dialogue

thumbnail-wz-dashing

thumbnail-wz-door

thumbnail-drops2

thumbnail-obsidian-assassinate-ability2

thumbnail-obsidian-assassinate-ability3

thumbnail-revolver-four3

thumbnail-revolver-four4

thumbnail-smg

thumbnail-rifle

thumbnail-awm-deadeye

thumbnail-dirgemire-blade

thumbnail-dirgemire-blade3

thumbnail-inventory

thumbnail-inventory-submenu

thumbnail-inventory-submenu2

thumbnail-grenade-explosion4

thumbnail-grenade-explosion2

thumbnail-grenade-explosion3

thumbnail-respawn

thumbnail-fall-respawn

thumbnail-debug-visualizations

Gameplay

Controls

General Controls

Key Action
Left Click Attack
Right Click Use Skill
Tab Use Consumable

Movement & Platforming

Key Action
A Move Left
D Move Right
S (Hold) Drop Through Platform
Space Jump

Weapon & Abilities

Key Action
Mouse Wheel Up / Down Switch Weapon
Q Weapon Skill 1
W Weapon Skill 2
R Reload

Inventory

Key Action
E Open / Close Inventory
W / S Navigate Up / Down
A / D Navigate Left / Right
Space Select Option

Interaction

Key Action
F Pick Up / Interact
F Progress Dialogue

Settings & Debug

Key Action
Esc Exit
P Log FPS
L Profiler Output
K Enable Profiler
B Toggle Bloom
O Debug Stats
F4 Toggle Debug Visualizations
F11 Toggle Scaled Window

Development

Clone the repository

git clone https://github.com/josephchay/restoration-zero.git
cd restoration-zero

Setup a virtual environment

You may choose to setup a virtual environment to manage dependencies.

Install dependencies

pip install -r requirements.txt

Run the game

python main.py

Regarding the modification of save.json file, refer to the Checkpoint Saves Guide for more information.

Level Editor

The level editor is a separate tool that allows you to create and edit stage levels for the game.

For more information on how to use the level editor, please refer to the Level Editor Guide.

Adding New Weapon

Sprite Asset

When adding a new weapon, create a pixel art for that weapon and place it into the data/images/animations directory with the pattern name: item_{weapon_name_without_space}, as well as into the data/images/weapons directory in pattern of {weapon_name_without_space}.

For more information regarding the data/images/animations directory, refer to the Sprite Asset Guide.

JSON Configuration

  1. Add config for the weapon to data/config/weapons.json file.
  2. Add item information of the weapon to data/config/items.json file.
  3. If a range weapon, add the weapon item projectile information to data/config/projectiles.json file.
  4. If a melee weapon, add a new hitbox information to data/config/hitboxes.json file.

For more information regarding configuring the json files, refer to the Configuration Guide.

Cartridge Capacity
  1. For melee weapons, the cartridge_capacity should be set to -1.
  2. For throwable weapons, the cartridge_capacity should be set to -2.
  3. For other weapons, the cartridge_capacity should be set to the maximum amount of ammo (per cartridge) the weapon can hold.

Palette Swapping

If needed, add your weapon path to the locations list in the data/palette_swapper.py file and execute it.

For more information regarding the data/palette_swapper.py file, refer to the Palette Swapper section in the Data Guide.

Adding New Skill

Sprite Asset

When adding a new skill, create a pixel art for that skill and place it into the data/images/skills directory with the name of {skill_name_spaced_using_underscore}.

JSON Configuration

  1. Add the item information of the skill to data/config/items.json file.
  2. Add the skill usage to the respective weapon in data/config/weapons.json file skill_list attribute, where the first skill is skill_1 and the second skill is skill_2.
    1. Make sure to update the max_rank attribute of the weapon to the number of skills it has.

Note that the skill_1 and skill_2 unlock requirements are based on the weapon affinity as seen in the weapons.json file, where the calculation for subsequent ones are from the rank property method in Weapon.

Skill Implementation

  1. Implement the skill in the skills.py file with a new dedicated skill class that inherits from the Skill class.
  2. Add the skill to the SKILLS dictionary in the skills.py file.

Adding New Consumable

Sprite Asset

When adding a new weapon, create a pixel art for that weapon and place it into the data/images/animations directory with the pattern name: item_{consumable_name_spaced_with_underscore}, as well as into the data/images/consumables directory in pattern of {consumable_name_spaced_with_underscore}.

JSON Configuration

  1. Add item information of the weapon to data/config/items.json file.
  2. Add the consumable as dropable in destructables.json file.

Consumable Implementation

  1. Implement the consumable in the consumables.py file with a new dedicated consumable class that inherits from the Consumable class.

TODO

The Story

  • The Unexpected Ending
    • Realization that it was all an experiment on the protagonist, and see how they react to the entire fabrication of his reality. Everything from the quantum reactor breach to the fragmented blueprints and laid out resources was all part of the experiment.
  • Back to Square One
    • The protagonist finally (after winning) end up into another laboratory of the exact same layout and type of the old one, with doctors congratulating the protagonist for the success.

Game

  • Toast message system for displaying messages as a layer on top of the game world.
    • Remove black color text outline from text.
  • Respawn mechanic saved location for player after death.
    • After normal death by kill.
    • After falling to a certain threshold below the lowest possible tile of the map.
    • Transition effect to the saved location of exact world map.
  • Inventory menu
    • Automatic vertical scroll (initial ones fading out and pulling the next ones) effect for items list after hovering over a certain item count.
    • New option for each item to allow the user to drop the item (then back to the 'Item Drop' phase).
      • New submenu containing drop one, drop all, and back options for each droppable item.
    • Add inventory capacity limit.
  • Main menu panel.
    • Buttons for Play, Settings, and Quit.
    • Interactive background without health UI, weapons, minimap, and player actions, etc.
  • Settings panel.
    • Enable toggle option for automatic / manual respawn upon death.
    • Disable only making equipped weapon to be visible from the weapon list of the top left corner of the game.
  • Grenade.
    • Pixel art.
    • Explosion effect with physics on surrounding items.
    • Rare and only found in certain crates.
    • When player throws the grenade, it should have the "pin" ejected like how the revolver shell is ejected.
    • Tracker shown on the minimap when thrown.
    • Allow user to left_hold the grenade to enable the cooking timer countdown before throwing it.
    • Add a new item hotbar box to the left of the center one with just slightly some space. This can be animated to show cooking time.
  • Equipped weapons list
    • Currently used weapon slightly larger than others.
    • Sliding transition effect when switching weapons.
  • Make the final "Superpower" (fourth) shot for the weapon special ability 2 "FOUR" also perform pushback on the player like the first 3 shots.
  • Music and Sound FX.
  • Item Drops
    • Make disposed items such as pin and shells from weapons to be dropped as collectible items.
  • Check the lowest tile by a certain chunk size instead of the entire map around the player's current position to determine death.
  • Split up the grenade into a separate type of munitions.
  • Key Commands
    • Add a key command to toggle for debug visualizations in game.
  • Particle Effects
    • For grenades (and possibly future throwables) as they bounce off the ground, just like for the player walking.
  • Bloom Effects
    • Add bloom effect to enemy projectiles.
    • Add bloom effect to melee weapon attacks (Arc class in vfx.py).
  • Portal (door) on far right in outpost.json world map config.
    • Fix it as its unseeable and uninteractable.
    • Currently going through in a loop into wz_4.json and outpost.json. Create new world map to portal to.
  • Interactables
    • When player moves in-and-out of a certain range of an interactable, the interactable text animation looks glitchy.
    • When multiple interactables are grouped together, player swaying left and right makes the interactable text animation look glitchy.
    • Fix: When player interacts with an NPC, the player should not be able to move / and prior registered movement should be canceled.
  • Entities
    • Add a final boss (with cutscenes).
  • HUD
    • Upon death, make health bar, weapons list, and hotbar to fade out and come back upon granting respawn permission.
  • Camera
    • Enable temporary camera tracking onto piercing projectiles.
  • Weapon and Skill Systems
    • Do TODO: attach weapon info to projectiles and hitboxes and use that data instead of checking current weapon in player.py. Currently, when a player kills an enemy, the game increases the player's "weapon affinity" value for the currently equipped weapon.
    • Create levels using tracked affinity value, bringing in more perks and abilities to the weapon as levels increase.
    • Implement "Worn" and "Broken" weapon states - make the weapon degrade over time and use.
    • Add shotgun Franchi SPAS-12.
    • Add grenade launcher M79.
    • Add crossbow.
    • Obsidian Knife
      • Skill: Assassinate - Currently VFX (circle and sparks) are hard-drawn into the pixel art, make it dynamic with actual VFX code.
    • Add AWM sniper.
      • Skill: Deadeye! Deadeye! Deadeye! - Shoot through multiple enemies.
    • Add Dirgemire Blade - blade that drips with sorrow, bound to the restless dead
      • Each hit causes the enemy to further take a percentage of the damage dealt twice.
      • Have a unique flaming particle effect when its in idle state (equipped but not being used).
      • Skill: Incendiary Strike - For the next 5 seconds, each hit with the blade will ignite the enemy, dealing damage over time.
      • Skill: Eidolon Moribund - Spawns an ally soul decoy that mimics and move, attacks like the player and distracts the enemies.
        • Use good algorithms, and tactics for the AI.
    • Add Bazooka - Rocket launcher.
      • Skill: Rocket Jump - Shoot at the ground to propel the player into the air.
      • Skill: Cluster Bomb - Shoot a tracking bomb which will first lock onto the enemy and then follow when shot.
    • Magazine types
      • short mag.
      • standard mag.
      • extended mag.
      • drum mag (for explosive shooting weapons).
    • Cycle wheel effect for weapon list when scroll switching.
    • Add scope item for weapons that can be added with scopes.
      • Improved accuracy and range.
  • Weapon abilities
    • Upon the unlock of any ability after hitting the required weapon affinity, use an aesthetic toast and particle effect to show the unlock.
  • Cursor
    • Different cursor crosshair for different weapons.
  • Items
    • Consumables
      • Veil Brew Potion - allows player to be invisible for a short duration.
  • Shop System
    • Maps dedicated as shops, where transactions can be made.
    • Tokens / coins gained via itemdrops from destructables or enemies.
  • Ally System
    • Add prototype allies where the player can find and recruit allies to help them in combat.
    • Can be bought with tokens / coins.
    • Player Decoy
      • Allow user player to "swap" bodies with the player Decoy.
        • Death of player depends on last body (decoyed body will not cause player to die).
      • Allow player to see inventory of decoy AI.
      • Make decoy follow closely to the player.
  • Debugging
    • F4 key command to toggle debug visualizations in game.
    • Debug visualizations for lowest chunk point in tilemap.
    • Debug visualizations for grenade damage radius.

Features & Updates

For a detailed changelog, please refer to the CHANGELOG file.

About

Time isn't just running out for humanity - it's running out for you. Will you expose their plan before your mind fractures completely? Or will you become another failed experiment in their quest for perfect control?

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages