Ronaldo Cala.
All projects

shipped · PC (Steam)

Carnival of Souls

Shipped Steam FPS roguelite. Game direction, enemy and boss behavior, modular weapons, special ammunition, performance optimization and release work.

From a gameplay loop to a Steam release

Carnival of Souls is a round-based FPS roguelite built around escalating enemy waves and randomized weapon upgrades. I led game direction, built gameplay and enemy systems, and directed a three-person core team, working with external freelancers on additional assets. The game shipped on Steam.

My role combined design, implementation and production: defining the player experience, building and tuning systems, managing scope and finances, and preparing the Steam release. Development was primarily Blueprints with some C++.

Enemy and boss behavior

I implemented enemy behavior with Unreal Behavior Trees, built enemy spawners and randomized spawn-point selection, and differentiated regular enemies from bosses. I also directed boss attack patterns. One hammer-wielding clown's spinning attack forces the player to dodge; later rounds bring boss types into ordinary encounters with differentiated behavior.

Weapons and build choices

I built modular Blueprint weapon systems with interchangeable scopes, muzzles and ammunition effects. The loadout and upgrade design supports different weapon roles and combinations, with randomized purchases between rounds. Duplicate items upgrade the existing item; items can also be sold at a discount.

I owned the concept, design, gameplay logic and visual effects of special ammunition. Two examples show the different player decisions behind the systems:

  • Electric ammunition chains damage between nearby enemies and briefly stuns affected targets, rewarding shots into clustered waves.
  • Radiation ammunition accumulates radiation on an enemy. After a period without further damage, the enemy explodes, with damage and visual intensity scaling with the accumulated radiation.

Solving the map-loading problem

Testing exposed an expensive setup: every gameplay map was loaded at once even though players visited them in sequence. I replaced that with on-demand level streaming, using a lightweight intermediate area for portal transitions.

The sequence moves the player into the transition area, closes the old portal, unloads the previous map, loads the destination and brings the player through its portal before unloading the transition area. Inactive maps no longer need to remain loaded throughout the run.

I also tuned environment mesh LOD distances, preserving close-up detail while using lower-detail meshes sooner during normal play. Further CPU investigations led to optimization of AI, physics and costly Tick-driven work. Across the broader optimization effort, I recorded an approximately 50 to 120 FPS improvement on an RTX 4070; that figure reflects the combined work, rather than any one change.

Iteration and production decisions

Playtesting informed difficulty, tutorials and guidance. When new players skipped instructions, I improved prompts and optional in-game guidance; follow-up sessions showed better understanding.

The original scope called for a distinct boss every round. I helped reduce it to three bosses with encounters every five rounds, balancing animation and AI production against team capacity. I coordinated freelancers, asset briefs, budgets, grant administration, game marketing and Steam release preparation.

The Steam store page lists Early Access on October 25, 2024 and the full release on January 10, 2025. The screenshots below show the shipped game.

Gallery

Carnival of Souls screenshotCarnival of Souls screenshotCarnival of Souls screenshotCarnival of Souls screenshotCarnival of Souls screenshotCarnival of Souls screenshot

Looking for an Unreal developer or game designer?