top of page

OLLIVER H. PETKAC

GAMEPLAY DESIGNER

Screenshot 2026-05-27 161953.png

PRISM PANIC

Team: Solo Project  /  Tools: Unreal Engine 5, Maya, Rider /  Timeline: 1 Month

Prism Panic is a fast psychedelic arcade FPS where the player fights escalating swarms on a floating arena using one rapid-fire weapon, high-mobility movement, and score-chasing survival.

​

I built this project as a focused gameplay systems prototype. The goal was not to create a large FPS campaign. The goal was to explore control feel, weapon feedback, enemy pressure, spawn pacing, score chasing, and readability under escalating chaos.

Screenshot 2026-05-27 162013.png
Screenshot 2026-05-27 162025.png
Screenshot 2026-05-27 162017.png
ELEVATOR PITCH

Move fast. Shoot constantly. Survive the swarm. Chase a higher score.

​

Prism Panic is built around one core loop:

Move → Shoot → Survive → Score → Restart

​

The project uses a deliberately small scope:

  • One arena

  • One weapon

  • Two enemy types

  • One life per run

  • Continuous difficulty escalation

  • Local high score chasing

  • ​

This small scope allowed me to focus on tuning the moment-to-moment feel instead of spreading the design across too many systems.

Prism Panic Design Pillars.png

1. Panic Control

The game should feel chaotic, but not random. The player moves quickly, dodges swarms, escapes danger, and makes sharp decisions under pressure.

​

2. Readable Chaos

The screen can become crowded, but the player still needs to read enemies, projectiles, arena edges, weapon feedback, and movement space.

​

3. Arcade Replayability

Runs are short, score-driven, and restart quickly. The player should always feel like they can survive longer or score higher on the next attempt.

Core Loop.png
Player Movement and Gameplay Feel

Movement was one of the most important parts of the project. I wanted the player to feel fast, jumpy, and slightly slippery, closer to older arena shooters than modern grounded FPS movement.

​

The design goal was not realism. It was controlled panic.

 

I implemented and tuned the player character in C++, including:

​

  • Ground speed

  • Jump strength and gravity

  • Momentum preservation

  • Ground friction

  • Braking friction

  • Mouse/input feel

  • Footstep and jump audio timing

  • Fall death and restart flow

​

The movement needed to support three gameplay goals:

  • Survival under pressure: The player needs enough speed to dodge swarms and reposition.

  • Arena risk: The floating arena creates danger. Fast movement helps the player escape, but careless movement can lead to falling.

  • Skill expression: Slight slide and momentum give the player room to improve without making movement feel uncontrollable.

​

During Tuning, I reduced the amount of movement chaos when it started to hurt control. The final goal was a fast, bouncy feel where the player can recover through skill instead of feeling punished by the controls.

PrismPanic_Movement_Before.gif

Movement Tuning BEFORE: Notice Slippery Movement

PrismPanic_Movement_After.gif

Movement Tuning AFTER: Notice Tighter Movement but bouncer movement when jumping.

Movement Feel diagram.png
Weapon Design & Combat Feel

The Prism Blaster is the player’s only weapon. I chose a single weapon so the player could focus on movement, aim, positioning, enemy priority, and score pressure instead of inventory or ammo management.

 

The weapon is inspired by a Quake-style nailgun, but redesigned as a prismatic shard blaster with infinite ammo, no reload, rapid automatic fire, multiple muzzle sockets, slight spread, and bright impact feedback.

 

I tuned the weapon as a feedback system, not just a damage system. The goal was to make every shot feel readable and satisfying during high enemy density.

​

Key tuned elements included:

  • Automatic fire cadence

  • Projectile speed and spread

  • Damage values

  • Alternating muzzle behavior

  • Projectile mesh variation

  • Muzzle flash

  • Impact particles

  • Impact decals

  • Fire and impact audio

  • Recoil

  • Camera shake

  • Weapon bob and movement

​

Layering recoil, muzzle flash, impact effects, sound, decals, and projectile visuals helped the weapon feel more responsive and made combat easier to read when enemies filled the arena.

Weapon (1).png
Weapon (2).png
PrismPanic_Weapon_Before.gif

Weapon Tuning BEFORE: Feels generic and too rapid which removes player challenge.

PrismPanic_Weapon_After.gif

Weapon Turning AFTER: Has a "push" feel and timing between the main muzzle and two smaller muzzles.

ENEMY DESIGN

The enemies are intentionally simple. They are not designed to outsmart the player. They are designed to shape the player’s movement.

Buzzer Orb Diagram.png
Skuller Diagram.png

Together, the enemies create movement problems:

  • Where can I move safely?

  • Which enemy is most dangerous right now?

  • Am I being pushed toward the edge?

  • Can I keep my kill chain going?

  • Do I need to clear space or keep moving?

PrismPanic_BuzzerOrb_Model.gif
PrismPanic_Buzzer_SwarmPressure.gif

Buzzer Orbs


The Buzzer Orb creates swarm pressure. It crowds space, follows the player, and pushes the player toward dangerous positions near the arena edge.

PrismPanic_Skuller_Model.gif
PrismPanic_Skuller_SwarmPressure.gif

Skullers

​

The Skuller acts as a priority threat. It breaks the player’s rhythm with projectile pressure and burst damage, forcing the player to decide whether to keep moving, clear space, or focus fire.

Spawn Manager and Difficulty Escalation

The spawn system creates continuous escalation instead of traditional waves. The match starts readable, then gradually compresses the player through enemy density, spawn rate, and enemy mix.

​

The level uses placed enemy spawners, but the overall match pacing is controlled globally. This keeps the system designer-friendly while allowing the full run to escalate from one central difficulty model.

​

The system controls:

  • Global max alive enemies

  • Per-spawner alive limits

  • Spawn interval

  • Spawn interval randomness

  • Minimum and maximum spawn count per pulse

  • Enemy spawn weighting

  • Difficulty percentage

  • Spawn visibility rules

  • Spawn collision validation

  • Spawn distance validation

​

The main difficulty driver is not complex AI. It is density over time. As enemy count increases, the player has less space, less reaction time, and more pressure to keep moving.

Difficulty Curve.jpg

The main difficulty driver is not complex AI. It is density over time. As enemy count rises, the player has less space and less reaction time. More pressure to keep moving. Simple rules, fast decisions, escalating panic.

Early game at 1 minute, 5 minutes, and 10 minutes comparison

PrismPanic_1min_Gameplay.gif

1-minute gameplay

Scoring and Replayability

Prism Panic uses a simple arcade scoring structure:

Screenshot 2026-05-30 162325.png

The scoring system supports the intended loop: survive longer, kill faster, maintain pressure, and restart after death to chase a better run.

PrismPanic_5min_Gameplay.gif

5-minutes gameplay

Difficulty Table.png

Difficulty Curve and Tuning Values from beginning of the game to 10 minutes+ of the game.

PrismPanic_10min_Gameplay.gif

10-minutes gameplay

Visual Design and Readability

Prism Panic uses a PS1-inspired psychedelic style, but readability is more important than visual noise. Enemies, projectiles, impacts, arena edges, and weapon feedback need to stay clear even when the screen becomes chaotic.

​

The arena layout is intentionally simple: a flat floating platform with spawners placed around it. This keeps the focus on movement, enemy pressure, and survival decisions rather than navigation complexity.

Screenshot 2026-05-27 160035.png
Screenshot 2026-05-27 160006.png
Playtesting and Iteration

Private testing helped identify which parts of the game felt unfair, unclear, or under-tuned.
 

Problem 1: Too much chaos hurt readability

Early versions became visually and mechanically overwhelming when too many enemies filled the arena. I addressed this by adding hard enemy caps, spawn pacing controls, and difficulty tuning.
 

Problem 2: Enemies overlapped too heavily

Swarm pressure worked, but enemies needed spacing so the player could read the threat. I added separation behavior to reduce clumping and improve readability.
 

Problem 3: Weapon feedback needed more impact

The weapon worked mechanically, but it needed stronger feedback to feel satisfying. I improved the weapon by layering muzzle FX, impact FX, recoil, sound, camera shake, and decals.

PrismPanic_SpawnCollisionDEBUG.gif
DESIGN LESSONS

Chaos needs structure
More speed, more enemies, and more visual effects do not automatically make the game better. The player needs enough structure to read the situation and recover through skill.

Simple enemies can create strong decisions
The enemies do not need complex AI to create pressure. Clear roles, spacing, density, and timing can force meaningful player decisions.

One strong weapon can carry the loop
A single weapon can work when its feedback, cadence, damage, readability, and role are tuned carefully.

Small scope helped the design
Keeping the game to one arena, one weapon, and two enemy types let me focus on control feel, combat feedback, spawn pacing, and replayability.

Future Improvements
If I continued development, I would focus on:

  • Final HUD, menus, and game over screen

  • High score UI with arcade-style initials entry

  • Stronger score presentation

  • One additional enemy type to increase replayability

  • More polished onboarding for first-time players

RESULT

Prism Panic became a playable solo Unreal Engine 5 arcade FPS prototype focused on movement feel, weapon feedback, enemy pressure, spawn pacing, and score-driven replayability.

​

The project helped me practice gameplay systems design in a controlled scope and gave me a stronger understanding of how tuning, readability, feedback, and escalation work together in a fast arcade shooter.

FULL GAMEPLAY VIDEO
bottom of page