top of page
Role:

-System Designer

-Blueprint Programmer

-Car Physics

-UX Designer

-Sound Design

-Music

Timeline:

Necromancer Delivery Service is a 3D physics-driven action racing game where players control a struggling necromancer at Borz Bash, the city's fastest-growing delivery service. Complete deliveries in set times to collect money and souls while exploring the city and causing chaos with devious magic spells. This game is inspired by arcade classics like Crazy Taxi, emphasizing fast-paced, chaotic fun.

 

This is a team project consisting of 3 developers, currently in active development in Unreal Engine 5.5, specifically so we can have legacy chaos car physics.

August 2025 - June 2026

Engine:

Unreal Engine 5.5

NDS_Library_Logo.png

Delivery System

The delivery system is the core gameplay loop of Necromancer Delivery Service, where players deliver packages to marked locations within a time limit. While the method of delivery is unrestricted, the system supports player expression through physics-based movement and spell usage. After completing a delivery day, players return to Borz Bash HQ to progress and prepare for the next set of challenges.

 

The delivery loop was designed to be modular and easily adjustable using a data table, allowing for rapid iteration and consistent scaling across multiple in-game days.

Delivery System Flowchart.png

Spell System

The spell system adds a dynamic gameplay layer that allows spells to affect the player, vehicles, and the environment in real time. Spells were designed to enhance mobility and moment-to-moment decision-making. The system was iteratively developed and refined to align with the core delivery loops, supporting fast-paced deliveries through traversal, obstacle navigation, and player-driven problem-solving.

The final implementation features four distinct spells, supported by a dedicated selection UI and an unlockable upgrade-based progression system. This structure encourages players to experiment with different abilities while maintaining balance and clarity across all delivery in-game days.

Magic Blueprint.png

Progression

The progression system is designed to guide players through spell unlocks and upgrades while maintaining a steady sense of growth. Spells are unlocked through in-game day progression, with each new delivery route introducing scenarios that encourage players to utilize newly acquired abilities for faster and more efficient deliveries.  The unlock system also serves as a key onboarding tool, clearly introducing players to the existence and importance of the spell system. Early playtesting revealed that players were not always aware of available abilities, so progression was structured to reinforce discovery and understanding as new spells are introduced.

Upgrades are purchased using souls earned by completing deliveries, following a consistent cost structure that supports steady progression throughout the game. The system is balanced to enhance player abilities while encouraging meaningful choices, as full upgrades require post-game completion. Each upgrade is designed to feel impactful, improving traversal, efficiency, and overall performance during late-game deliveries.

Progression Flow.png

Customization

Players use in-game money earned from completing deliveries to customize their necromancer appearance through colors, hats, and accessories. Customization is implemented by modifying material parameters assigned to the necromancer for color changes. Hats and accessories are applied as static meshes with adjustable pivot points for each section of the character model, allowing for proper alignment and attachment. 

All customization options are organized within a data table that references a character customization struct. Each entry defines its associated category via an enum (such as body part type), the UI thumbnail displayed in the customization screen, the static mesh used for the item (or none for color-based options), the linear color value used for material updates, and the cost required to purchase the item. This data-driven approach keeps the system modular, making it easy to add new customization features, and ensures that any new item added to the data table is automatically populated in the customization widget through the scroll box’s child elements.

Future free updates are planned to expand customization to include vehicle and dorm customization.

Customization Flow.png

Optimization

Throughout development, optimization was a key focus to ensure the open-world environment remained stable and performant across lower-end platforms. The process began with profiling tools, using Unreal's GPU profiler in specific sections of the game to identify performance bottlenecks and areas requiring improvement. Several engine features were adjusted or disabled to better align with the project’s stylized visual direction. High-cost systems such as Lumen and Nanite were disabled, as the game did not require hyper-realistic rendering. Anti-aliasing was reduced to Temporal Anti-Aliasing (TAA) at a lower setting to maintain visual clarity while improving performance. Lighting and shadow systems were also optimized, as dynamic shadows from a large number of moving objects introduced significant frame drops. Since the game’s lighting does not rely on large-scale dynamic changes, static shadows were primarily used, with movable shadows reserved only for key gameplay-relevant elements where performance impact was minimal.

Additionally, level streaming was implemented to manage world complexity by loading and unloading sections of the environment as needed. The city was divided into multiple layers based on verticality (ground, second, and third floors), with the ground layer further segmented into center, left, and right regions due to its larger scale. Core persistent elements include delivery buildings, essential non-interactable scenery, and roads, while interactive blueprints like AI NPCs, AI-driven vehicles, and less critical objects are streamed in and out to maintain performance and memory efficiency.

FPS Comparission.png
Level Streaming UPDATED.png
bottom of page