Marko Sohrakoff • Game Design

Personal Projects

Self-directed work, prototypes, and exploring AI assisted coding.

Ultra Violet cover
Ultra Violet cover image

Ultra Violet: Roguelike Twin-Stick

Solo DeveloperVertical slice focused on combat loop, combat tasks, and item synergies.

  1. Roguelike Twin-Stick Action: Players blast through procedurally structured combat tasks with fast, responsive twin-stick shooting and scaling enemy waves.
  2. Persistent Progression: Runs are shaped by active and passive artifacts, bullet modifiers, and gold-based rewards that carry across encounters, ensuring variety and long-term growth.
  3. Clock-Driven Structure: A bulletin board hub and advancing time system frame the loop, balancing choice and urgency while pushing toward boss encounters.
Godot 4.3RoguelikeSystemsAI coding

Gameplay Video

Short capture from the current vertical slice.

Enemy Manager

Central controller for pacing, spawning, and escalation.

  • Wave orchestration from WaveData with immediate, delayed, and on-clear chaining; emits signals designers hook to UI, music, or objectives.
  • Hands-off spawning: per-enemy timers, pool and max alive caps, camera-relative points, and radius jitter for data-driven difficulty.
  • Rewards flow: wave clear pops a window with task-locked drops; integrates with passives and loot tables.
  • Stable playtesting: safety checks, one-shot timers, death tracking, and full cleanup to avoid brittle states.
  • Easy integration: call start_next_wave(), swap reward tables via game state, and tune spawn cadence and groups per node/biome.
Enemy Manager - Godot inspector setup

Enemy Shot Editor

Lightweight tool to author projectile patterns and behaviors.

  • Resource driven config on NpcShootData so designers tune in the Inspector.
  • Targeting modes: player, self, or custom path for instant archetype swaps.
  • Overrides for muzzle socket and sprite visuals per enemy.
  • Fast shaping via bullet_count, spread_degrees, and shoot_angle.
Enemy Shot Editor GIFs
1 / 3
Shooter ability setup in Godot inspector