FPS Leveling & Upgrade System Scrapped

Custom Zombies Map

Programmer & Level Designer 2026

An original Zombies survival map for Black Ops III, combining environmental storytelling, gameplay scripting, and level design in the Radiant Engine.

Radiant Engine GSC Scripting Black Ops III Mod Tools Windows
Custom Zombies Map

Creating a custom Zombies map has become one of my favourite ways to improve as a game developer. This personal project gives me the freedom to experiment with level design, gameplay systems, and scripting inside the Black Ops III Radiant Engine.

Since the engine has very limited documentation, I taught myself by studying the original game's scripts, experimenting with existing systems, and learning from the modding community. as my understanding grew, I started helping other modders solve problems with the engine too.

Rather than recreating an existing map, I wanted to design an original experience that rewards exploration and builds mystery through its environment.


Key Features


Level Design

Every map starts with a story. Before placing a single gameplay element, I build a narrative that guides every design decision, whenever I add a new mechanic, room, or prop, I ask myself whether it supports the story I'm trying to tell.

For this project, I chose the setting of an abandoned warehouse where unethical experiments were once carried out. Every environment, gameplay objective, and visual detail is designed to reinforce that setting while encouraging exploration, rather than filling rooms with random objects for their own sake.

Custom Zombies Map

Gameplay & Programming

GSC
//========== TELEPORTING SEQUENCE ==========\\
level waittill("teleporter_control_main");
level.teleporterState++;

//Kill Zombies in Area for Duration of Player Teleporting
thread KillZombiesInTeleporterArea(MainPadTriggerRadius, 3);

exploder::kill_exploder("teleporter_control_lights_green");
exploder::exploder("teleporter_control_lights_red");
level.teleporterState++;

//Teleport Players
players = GetPlayers();
for (i = 0; i < players.size; i++)
{
    if (players[i] IsTouching(MainPadTriggerRadius)) {
    players[i] thread TeleportPlayer(i);
}
        }
        level waittill("teleporter_sequence_end");

//Wait for cooldown
wait(TELEPORTER_COOLDOWN);
exploder::kill_exploder("teleporter_control_lights_red");
level.teleporterState = 1;

Radiant uses GSC, a scripting language based on C. Because documentation is scarce, I learned most of it by reading the original game's scripts and experimenting with my own implementations.

One of the first systems I built was a teleporter: players must first restore power, activate the teleporter, and spend points before they can travel to another part of the map. I plan to keep expanding the map with additional gameplay systems as development progresses.


Lighting, Atmosphere & Environment

Lighting is one of my favourite tools when designing levels. I experiment with different times of day, colour temperatures, fog settings, and light intensity to shape the mood of each area.

Instead of placing arrows on the screen, I use environmental storytelling to guide players. Blood trails, broken machinery, damaged walls, and lighting subtly lead them toward important objectives. This makes discovering new areas feel much more rewarding than simply following a waypoint.

Custom Zombies Map

Designing Player Flow

A Zombies map is more than a collection of connected rooms. I continually adjust room sizes, corridor widths, sightlines, and escape routes to create combat spaces that feel fair while maintaining tension, and make each area visually distinct so players can recognise where they are without depending on the HUD.

Custom Zombies Map

Status

This is an ongoing personal project, I'm continuing to expand the map with new gameplay mechanics, additional areas, and more advanced scripting while deepening my understanding of the Radiant Engine.