Skip to content

Justsomeguy241/Game-ProgrammingClass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Developer & Contributions

Muhammad Rafi Ramadhan (Game Developer and Game Designer)

About

Space Invaders Evolved is a fast-paced arcade shooter where you face endless waves of alien enemies. Multiple enemy types keep you on your toes. bombers that dive in for explosive damage, and snipers that fire deadly lasers to block off sections of the arena. Power-ups drop from enemies giving temporary boosts like explosive bombs, knockback blasts, and multishot upgrades that can stack up to four shots. The longer you survive, the harder and more chaotic the battle becomes.

Key Features & Personal Contributions

Core Gameplay Features

  • Endless Wave System — Implemented continuous enemy spawning with progressive difficulty scaling.
  • Universal Enemy Behavior System — Designed a shared behavioral framework governing all enemy types:
    • Enemies descend through six vertical tiers, each representing a phase of approach toward the player.
    • Tier transitions are triggered by the number of wall bounces, with each enemy type having distinct descent speeds and bounce limits.
    • Upon reaching the final (sixth) tier, all enemies switch to aggressive pursuit mode, directly chasing the player and detonating on impact as a punishment mechanic for delayed elimination.
  • Enemy Types & Behaviors
    • Strikers: Standard enemies that swarm the player in large numbers, firing straightforward projectiles and using group-based movement patterns.
    • Bombers: Slow-moving enemies that drop bombs creating area-of-effect explosions; maintain steady movement and drop rates regardless of wave speed.
    • Snipers: Faster enemies that descend through tiers quicker than others, firing lasers that block off sections of the arena.
  • Power-Up System — Developed instant-activation power-ups with timed effects and stackable upgrades, including:
    • Explosive Bullets: Projectiles that detonate with splash damage.
    • Knockback Bullets: Temporary stun and pushback effect on enemies hit.
    • Multishot Upgrade: Expands firing capacity up to four simultaneous projectiles.
  • Combat & Player Control — Designed responsive shooting mechanics, movement controls, and hit detection for a fluid arcade experience.
  • UI and Game Flow — Created scoring, wave tracking, and game-over logic with corresponding user interface elements.

Personal Contributions

System / Feature Description Time Spent
Gameplay Architecture Designed and implemented the main game loop, wave progression, and difficulty scaling systems. ~6 hours
Universal Enemy Behavior System Built a shared behavioral framework controlling tier-based descent, bounce tracking, and final pursuit mechanics across all enemy types. ~6 hours
Enemy AI & Behaviors Programmed three enemy archetypes (Strikers, Bomber, Sniper) with individual movement, attack, and descent-speed parameters integrated into the universal system. ~5 hours
Power-Up Mechanics Implemented a system for instant-activation power-ups with time-based effects and stackable upgrades. ~4 hours
Player Controls & Combat Developed responsive player control, shooting, and collision systems for consistent arcade gameplay. ~5 hours
UI / Game States Implemented UI components for score tracking, wave indicators, and game-over transitions. ~3 hours
Balancing & Playtesting Tuned enemy speed, bounce count thresholds, and tier timings for balanced pacing and fair difficulty scaling. ~4 hours
Audio & Visual Integration Integrated explosion effects, laser visuals, and impact sounds to reinforce gameplay feedback. ~4 hours

Total Development Time: ~37 hours

gameplay demo

Scene Flow

flowchart LR
  mm[Main Menu]
  gp[Gameplay]
  es[End Screen]

  mm -- "Start Game" --> gp
  gp -- "Player Death" --> es
  es -- "Play Again" --> gp
Loading

Layer / Module Design

---
config:
  theme: neutral
  look: neo
---
graph TD
    %% ====== INITIALIZATION ======
    subgraph "Initialization Phase"
        Start([Game Start])
        BootNote([Boot Sequence - Load Managers Systems and First Scene])
    end

    %% ====== CORE SYSTEMS ======
    subgraph "Core Systems"
        InputManager[Input Manager]
        AudioManager[Audio Manager]
        SceneLoader[Scene Loader]
        UIManager[UI Manager]
        SaveSystem[Save and Scoreboard System]
    end

    %% ====== GAMEPLAY ======
    subgraph "Gameplay Logic"
        GameManager[Game Manager]
        PlayerController[Player Controller - Movement Shooting Health]
        UpgradeSystem[Upgrade System - Power Ups and Buff Timers]
    end

    %% ====== ENEMY SYSTEM ======
    subgraph "Enemy System"
        EnemyManager[Enemy Manager - Controls Waves and Tier Behavior]
        SpawnManager[Spawn Manager]
        EnemyEntity[Enemy Entity - Base Enemy Logic]
    end

    %% ====== USER INTERFACE ======
    subgraph "UI System"
        MainMenu[Main Menu]
        HUD[In Game HUD]
        EndScreen[End Screen and Scoreboard]
    end

    %% ====== FLOW CONNECTIONS ======
    Start --> BootNote
    BootNote --> InputManager
    BootNote --> AudioManager
    BootNote --> SceneLoader
    BootNote --> UIManager
    BootNote --> SaveSystem

    %% Gameplay Links
    InputManager --> PlayerController
    PlayerController --> GameManager
    UpgradeSystem --> PlayerController
    GameManager --> UIManager
    GameManager --> SaveSystem

    %% Enemy Links
    GameManager --> EnemyManager
    EnemyManager --> SpawnManager
    SpawnManager --> EnemyEntity
    EnemyEntity --> UpgradeSystem
    EnemyManager --> GameManager

    %% UI Links
    UIManager --> MainMenu
    UIManager --> HUD
    UIManager --> EndScreen
    MainMenu --> GameManager
    HUD --> PlayerController
    EndScreen --> MainMenu

    %% ====== STYLING ======
    classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef systemStyle fill:#ede7f6,stroke:#4a148c,stroke-width:2px
    classDef gameplayStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
    classDef enemyStyle fill:#f1f8e9,stroke:#33691e,stroke-width:2px
    classDef uiStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px

    class Start,BootNote initStyle
    class InputManager,AudioManager,SceneLoader,UIManager,SaveSystem systemStyle
    class GameManager,PlayerController,UpgradeSystem gameplayStyle
    class EnemyManager,SpawnManager,EnemyEntity enemyStyle
    class MainMenu,HUD,EndScreen uiStyle

Loading

Modules and Features

The core gameplay of Space Invaders Evolved including player control, enemy wave progression, upgrade mechanics, and score tracking. Each module is responsible for managing specific gameplay, UI, or system-level functionality to ensure stable performance and scalability.

📂 Name 🎬 Scene / Scope 📋 Responsibility
GameManager Gameplay - Controls overall game state (active, paused, game over)
- Manages game flow between gameplay and end screen
- Handles timing, score updates, and wave coordination
AudioManager Global - Controls background music and sound effects
- Handles mute toggles and audio settings persistence
MainMenu Main Menu - Displays title and main interface
- Provides access to game start and exit options
EndScreen End Scene - Displays post-game results (score, waves survived)
- Interfaces with SaveSystem to store high scores
HUD / UIManager Gameplay - Manages player HUD including score, health, and active upgrades
- Displays current wave number and notifications
PlayerController Gameplay - Controls player ship movement, shooting, and health
- Handles collision with enemies and projectiles
Projectile System Gameplay - Manages player bullet instantiation and movement
- Optimizes object reuse using projectile pooling
Upgrade System Gameplay - Handles upgrade drops from defeated enemies
- Applies instant temporary effects (e.g., Multishot, Explosive Shots, Knockback)
- Manages duration and cooldown tracking
EnemyManager Gameplay - Central controller for all enemy-related logic
- Integrates Wave and Tier systems for pacing and progression
- Coordinates spawn timings and enemy variations
SpawnManager Gameplay - Spawns enemies at calculated positions per wave
- Randomizes spawn timing and enemy type for gameplay variety
EnemyEntity Gameplay - Defines base enemy behavior (movement, attack, destruction)
- Handles collision detection and triggers power-up drops upon death
SaveSystem Global - Saves and retrieves persistent data such as high scores and best wave reached

Game Flow Chart

---
config:
  theme: redux
  look: neo
---
flowchart TD
  start["Start Gameplay"]

  %% === GAMEPLAY CORE ===
  start --> loop["Gameplay Loop"]
  loop --> input{"Player Input"}
  input -->|"Move / Shoot"| player["Player Controller"]
  player --> shoot["Fire Bullets at Enemies"]

  %% === ENEMY SYSTEM ===
  loop --> EM["Enemy Manager"]
  EM --> spawn["Spawn Wave"]
  spawn --> enemy["Enemy Entity"]
  enemy --> behavior["Apply Tier & Movement Behavior"]
  behavior -->|"Tier 6"| chase["Chase Player and Explode"]
  enemy -->|"Destroyed"| drop["Drop Power-Up"]

  %% === POWER-UP SYSTEM ===
  drop --> upgrade["Grant Temporary Upgrade"]
  upgrade -->|"Affects Player Stats"| player
  upgrade -->|"Time Expired"| revert["Revert to Normal State"]
  revert --> player

  %% === WAVE / SCORE LOGIC ===
  enemy --> waves{"Wave Cleared?"}
  waves -->|"Yes"| score["Increase Score"]
  waves -->|"No"| loop
  score --> nextWave["Spawn Next Wave"]
  nextWave --> spawn

  %% === HEALTH / GAME OVER ===
  player --> hit{"Player Hit?"}
  hit -->|"Yes"| hpCheck{"Health > 0?"}
  hpCheck -->|"No"| endScr["End Screen: Display Scoreboard"]
  hpCheck -->|"Yes"| loop

  %% === LOOP BACK AFTER DEATH ===
  endScr --> reset["Reset Player & Enemy States"]
  reset --> loop

Loading

Event Signal Diagram

%%{init: {'theme':'neutral'}}%%
classDiagram
    class GameManager {
        +OnGameStart()
        +OnGameOver()
        +OnWaveCleared()
        +OnScoreUpdated(score: int)
    }

    class PlayerController {
        +OnShoot()
        +OnHit()
        +OnDeath()
        +ApplyUpgrade(type: string, duration: float)
    }

    class EnemyManager {
        +OnSpawnWave()
        +OnEnemyDestroyed()
        +OnAllEnemiesCleared()
    }

    class EnemyEntity {
        +OnDestroyed()
        +OnReachFinalTier()
        +Explode()
    }

    class UpgradeSystem {
        +OnUpgradeCollected(upgradeType: string)
        +ApplyTemporaryEffect(player: PlayerController)
    }

    class UIManager {
        +UpdateScoreUI(score: int)
        +ShowEndScreen()
    }

    class AudioManager {
        +PlaySFX(event: string)
        +PlayBGM(track: string)
    }

    %% --- Relationships ---
    GameManager --> PlayerController : starts / resets
    GameManager --> EnemyManager : triggers wave spawn
    GameManager --> UIManager : updates score / end screen
    GameManager --> AudioManager : plays bgm/sfx
    
    PlayerController --> GameManager : emits OnDeath / OnScoreUpdated
    PlayerController --> UpgradeSystem : collects upgrades
    PlayerController --> AudioManager : requests shoot / hit SFX

    EnemyManager --> EnemyEntity : spawns and tracks enemies
    EnemyEntity --> EnemyManager : emits OnDestroyed
    EnemyEntity --> GameManager : emits OnWaveCleared
    EnemyEntity --> PlayerController : deals damage on explosion

    UpgradeSystem --> PlayerController : applies temporary effect
    UpgradeSystem --> UIManager
    
    UIManager --> GameManager : invokes restart / return to gameplay



Loading

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages