Design

Devlog: Design
Topic
Working Title: Train Survivors
Genre: Survivors-like / Action Roguelite
Platform: PC (Windows) / Android
Concept:
A first-person 3D survivors-like game set on a moving train, where the player fights off endless hordes of enemies attacking the train while managing train weapons, upgrades (modules), and survival distance. The goal is to travel X km to reach the next station or boss, unlocking new train parts and weapons.
Inspirations:
- Megabonk / Vampire Survivors — for the stat-based passive systems and auto-attacking loop
- Voidtrain / Metro Exodus — for the moving train management / aesthetic
Visual Design
The game will use a cartoony, stylized, and slightly humorous visual style to maintain a light-hearted atmosphere despite the survival gameplay. The goal is to make the world readable, colorful, and cohesive rather than realistic. This art direction allows creative freedom for exaggerated weapons, silly enemy designs, and vibrant effects while keeping the project visually achievable with simple models and materials.
Key Visual Traits:
- Simplified geometry (low-to-mid poly models)
- Bold colors and clear silhouettes for readability
- Stylized lighting rather than realistic shadows
- Minimal but expressive particle effects for weapon fire, impacts, and train damage
- Cartoon shaders or flat-lit materials to maintain consistent tone
Main Game Loop
Gameplay Flow
Setup Phase
-
Player chooses:
- Starting Engine (defines passive bonuses)
- Starting Weapon (mounted on first wagon)
-
Train departs; gameplay starts.
Travel Phase
- Train automatically moves forward.
- Enemies spawn in waves and attack the train.
- Player defends the train using their personal gun and mounted train weapons.
Combat & Maintenance
- If enemies damage the train, its speed decreases.
- Player can manually repair the train to restore speed.
- Defeated enemies drop XP orbs that are magnetically pulled toward the train/player.
- When XP bar fills, player chooses one of 3 random upgrade offers:
- Offers could be:
- New Module → passive upgrade (+speed, +XP, +HP, etc.)
- New Weapon → added to new wagon (if available)
- Upgrading existing weapon or module
- Modules and weapons occupy space on wagons, weapons occupy almost whole wagons.
Progression Milestones
- Every X kilometers, a new wagon is automatically added.
- Every Y kilometers, player gets to open a chest that would get them random item with some special ability (dealing more damage with less health, spawning helping NPCs, etc.)
Boss Encounter
- Upon reaching the goal distance, a boss fight occurs (e.g., giant creature chasing the train).
- Defeating it completes the run → new location unlocked.
Game Over
- If player or train HP reaches zero → run ends.
- Player earns metaprogression currency to unlock new:
- Engines
- Weapons
- Modules
Plan how to achieve R, C, and A requirements
R requirements
- R1 - Main development and testing will be done on PC (using mouse/keyboard). Then, I’ll adapt the game for Android.
- R2 - I’ll use free sound assets from Freesound.org.
- R3 - It will be.
- R4 - I’ll use Canvas Scaler (Scale with Screen Size) and Anchors to ensure correct placement across resolutions.
- R5 - I plan to use DOTween extensively.
- R6 - I’ll make a custom editor extension. I’ll also use tooltips in serialized fields.
- R7 - Player control will use the Unity Input System package.
- R8 - The project will be created in URP.
C requirements
-
C1:
-
Procedural level segments (train path or environment): I have random short prefabs of different sections of the location player is currently in. The game randomly stitches them together as the train moves forward. Some segments include special events (e.g., ambushes, bosses, bonuses).
-
Procedural enemy wave system: The spawner dynamically decides how many and what enemies appear depending on: distance traveled, player level, current biome type. Enemy stats (speed, health, damage) scale procedurally.
-
Procedural upgrade offers: Level-up screen randomly rolls 3 upgrade cards out of a large pool, with weighted probabilities.
-
-
C2:
-
Enemies: Idle → Run → Attack → Die transitions. Attack animation triggers damage on a specific frame (via animation event). Blend Tree for random variations or speed scaling.
-
Train weapons: Rotating barrels, recoil animations when firing, reload animations. Animator controlling different firing states (ready, firing, overheated, reloading).
-
Player: First-person hands holding a tool/gun. Repair animation (wrench hitting panel, sparks flying).
-
Extensive use of Tweening
-
A requirements
- A3 - Use particle systems for example for train exhaust, sparks when repairing etc.
- A6 - Focus on visual and sound polish near the end.
- A7 - Implement controller bindings via the new Input System; support Xbox and PlayStation layout, responsive UI navigation with gamepad.
- A8 - Add adjustable sliders for volume, graphics quality, mouse sensitivity, keybindings, etc. Settings saved using PlayerPrefs.
- A13 - Add at least 2 languages (e.g., English + Russian) using Unity’s Localization package. Text stored in localization tables, switchable from settings.
- A17 - Create a simple debug console (accessible with key like ~) that can run commands such as spawn_enemy, add_module, or set_distance.
Credit
cuni-mff-ncgd008-25-26
| Status | Released |
| Author | andrground |
| Tags | cuni-mff-ncgd008-25-26 |
Leave a comment
Log in with itch.io to leave a comment.