Skip to content
DaLouuuPublic

About

PBL Repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

749 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Strain-X: Pandemic Survival RPG

Godot Engine Language Genre Course

An episodic 2D top-down survival role-playing game simulating quarantine protocols, resource scavenging, personal protective equipment (PPE) management, and biological pathogen defense.


📖 Table of Contents


🦠 Project Overview

Strain-X is an interactive 2D top-down story-driven RPG game built on the Godot Engine. Designed as an educational and immersive Problem-Based Learning (PBL) simulation, the game places players in the shoes of an everyday citizen during the sudden outbreak of a dangerous biological virus named Strain-X.

Players must balance family survival, community awareness, and hostile threats by:

  • Scavenging essential rations and medical supplies from grocery stores.
  • Donning appropriate Personal Protective Equipment (Cloth Masks, Surgical Masks, Face Shields).
  • Defending against mutated infected creatures ("Volatiles") and boss entities ("Carnage") using sanitizing tools and UV weapons.
  • Navigating interactive moral and quarantine decisions across a 3-day story arc.

🗓️ Storyline & Episodic Progression

Episode Objective Key Events & Challenges
Day 1: The Outbreak Secure essential supplies Wake up to emergency broadcast; talk to family (Mom, Dad, Sister); venture out to the local grocery store; gather canned goods, cereal, and masks; safely return home before nightfall.
Day 2: Community Spread Assist vulnerable neighbors Rising infections in the street; interact with neighborhood residents; gather medical supplies and PPE; combat aggressive early-stage Volatiles.
Day 3: The Final Stand Secure the bunker High-stakes infected surge; confront the mutated apex organism Carnage in a multi-phase boss fight; protect family retreat into the emergency survival bunker.

🎮 Key Features & Mechanics

1. Dynamic Inventory & Gear System

  • Category-Based Items: Consumables (Vitamins, Cherries, Cereal, Canned Goods), Defensive Equipment (Cloth Masks, Surgical Masks, Face Shields), and Weapons (Alcohol Spray, UV LightSaber).
  • Stacking & Equipping: Real-time slot-based inventory with drag-and-drop mechanics and statistical buffs (health restoration, speed modifiers, damage resistance).

2. Sanitize & Defense Combat

  • Alcohol Spray: Ranged disinfectant attack effective against airborne contagion and minor Volatiles.
  • UV LightSaber: Close-range ultraviolet sterilizing blade to neutralize viral mutations.
  • PPE Mitigation: Reduces infection tick damage and collision impact from viral hazards.

3. Interactive Dialogue & Cutscenes

  • Rich JSON-driven dialog system featuring typewriter text animations, portrait displays, character dialogue branching, audio cue triggers, and seamless scene transitions.

4. Adaptive Audio & Visual Atmosphere

  • Pixel-art aesthetics with dynamic lighting, day-to-night environment transitions, tension-building BGM, and sound effects for footsteps, combat, and monster screeches.

⌨️ Default Controls

Action Primary Key Alternate Input
Move Up / Down / Left / Right W / S / A / D Arrow Keys
Attack / Use Weapon K Controller Button
Interact / Pick Up Item E Contextual Prompts
Inventory Toggle I In-game UI Button
Dialogue Confirm / Next Enter / Space Mouse Left Click
Pause Menu Escape Pause HUD Button

🛠️ Technology Stack

  • Game Engine: Godot Engine v3.2.3 Stable
  • Scripting Language: GDScript (Python-like language tailored for Godot)
  • Data Serialization: JSON (ItemData.json, cutscene dialogue scripts)
  • Renderer: GLES3 (OpenGL ES 3.0) with custom 2D pixel lighting & shaders
  • Platform Targets: Windows (x64), Linux, macOS, and HTML5 WebGL

Core Autoload Singletons:

  • global.gd: Global state manager, active day tracking, player variables.
  • JsonData.gd: Parses item databases and stats into runtime dictionaries.
  • PlayerInventory.gd: Handles player inventory slots, item drops, and equipment.
  • PlayerStats.tscn: Manages health points, damage calculations, and death events.

📂 Project Directory Architecture

Strain-X/
├── .gitignore                          # Git ignore configuration
├── README.md                           # Master project documentation
├── Day 1/                              # Core Godot project workspace
│   ├── project.godot                   # Godot engine project definition
│   ├── export_presets.cfg              # Build target export presets
│   ├── default_env.tres                # World environment settings
│   │
│   ├── addons/                         # Editor plugins & extensions
│   │   └── dialogs/                    # Dynamic JSON dialogue runner
│   │       ├── Dialog.tscn             # Dialog UI container
│   │       ├── dialog_node.gd          # Dialogue manager script
│   │       ├── *.json                  # Story & cutscene script data
│   │       └── Fonts/                  # Typography (Overlock fonts)
│   │
│   ├── Assets/                         # Raw & imported multimedia assets
│   │   ├── Effects/                    # Particle effects & death animations
│   │   ├── Enemies/                    # Volatile & Carnage sprite sheets
│   │   ├── Inventory/                  # Grid slots & UI frames
│   │   ├── Item_Icons/                 # Consumables, masks & weapons icons
│   │   ├── Music and Sounds/           # Ambient soundtracks & SFX
│   │   ├── Player/                     # Character animation sheets
│   │   ├── UI/                         # Health bars, cursors, menus
│   │   └── World/                      # Tilemaps, interior & outdoor tiles
│   │
│   ├── Data/                           # Configuration & item data
│   │   ├── ItemData.json               # Item stats, categories, stack sizes
│   │   └── m5x7.ttf                    # Retro pixel game font
│   │
│   ├── Scenes & Scripts (.tscn / .gd): # Gameplay entities & levels
│   │   ├── Title Screen.tscn           # Main game entry point
│   │   ├── Player.tscn / Player.gd     # Main player controller & state machine
│   │   ├── MCHouse.tscn                # House interior & family interactions
│   │   ├── Grocery.tscn                # Scavenging & shopping center
│   │   ├── Outside.tscn                # Streets, neighborhoods & enemies
│   │   ├── Carnagephase1.tscn / 2      # Multi-phase boss encounter
│   │   ├── MCHealthBar.tscn            # Player HUD health gauge
│   │   ├── Inventory.tscn              # In-game backpack overlay
│   │   └── GameOVer.tscn               # Defeat screen & retry handler
│   │
│   └── logs/                           # Godot runtime engine execution logs
│
└── Game/                               # Export utilities & build tooling
    └── Strain X/Others/rcedit-x64.exe  # Windows metadata & icon injector

🚀 Getting Started & How to Run

Prerequisites

Running in Editor

  1. Clone or extract the repository:
    git clone https://github.com/DaLouuu/Strain-X.git
  2. Open Godot Engine and click Import.
  3. Browse to the Day 1/ directory and select project.godot.
  4. Click Import & Edit.
  5. Press F5 (or click the Play icon in the upper right) to launch from Title Screen.tscn.

🔧 Resolved Issues & Quality Improvements

  1. JSON Syntax Error Fix in Item Database (ItemData.json):
    • Fixed illegal trailing commas in JSON object dictionaries that caused JSON.parse() to fail and crash item retrieval.
  2. Fixed Dialogue Script Parse Errors (Endofday3.json & NeighbotCutscene.json):
    • Corrected trailing commas before array closing brackets (]) that previously aborted day transition cutscenes.
  3. Restored Broken Dialog Plugin Font Path (Overlock.tres):
    • Updated internal resource path to res://addons/dialogs/Fonts/Overlock/Overlock-Black.ttf to prevent font loading crashes.
  4. Resolved Missing Script Reference (CannedGood.gd):
    • Created missing CannedGood.gd script handling area detection and pickup events for CannedGood.tscn.
  5. Resolved Missing Health UI Scene (HealthUI.tscn):
    • Added wrapper scene linking MCHealthBar.tscn to fix broken instance references in Health.tscn.
  6. Cleaned Orphaned Import Metadata:
    • Removed stale .import files for removed image assets, silencing Godot engine import warnings.

🎓 PBL Educational Value

As a Problem-Based Learning project, Strain-X addresses critical real-world challenges through game-based simulation:

  • Public Health Preparedness: Highlights the importance of masks, sanitizers, and proper safety equipment during contagion events.
  • Resource Management: Teaches prioritization of basic sustenance and medical reserves under quarantine constraints.
  • Community Responsibility: Illustrates mutual aid and social distancing protocols to protect vulnerable populations.

👥 Credits & Attribution

  • Development Team: ACES Project Team / DaLouuu
  • Framework: Godot Engine (MIT License)
  • Audio & Assets: CC0 / Royalty-Free pixel art and ambient audio

About

PBL Repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages