Level Editor desktop app for my RetroFPS game.
The app allows map creation with many customization options. Configure each level's layout, textures, enemy and pickup placement and much more with great ease.
Created using C# and .NET 7.
- Graphical grid display of map layouts
- Simple and accessible user interface
- Parameter customization (health, patrol range, damage...) for every object on the map
- Map grouping into Level Editor Projects.
To play levels from a project created using the Editor, place the project's .lep file and "/maps/" folder into the game's "PandemoniumFPS_Data > StreamingAssets" directory.
The following section will cover creating a new project, opening an existing one and editing levels inside a project.
Creating a new project is a two-step process:
- On the Home window, click the "Create New Project" button in the Getting Started section.
- Next, enter the project's information. Project Name and Path are the only mandatory fields.
Note: All of the project info (project name, game title, subtitle and author) except the project path can be edited later in the Project View
When a project is created, the app will create a Project Directory in the path the user selected. This directory will contain two items:
- A .lep (Level Editor Project) file, which contains the project data
- A /maps/ sub-directory, which will contain .lem (Level Editor Map) files which contain level and story data
To open an existing project, click the "Open Project" button in the Getting Started section.
Find the project's .lep file and select it to open the project.
The .lep file you selected must be in the same directory as the /maps/ directory. Otherwise, an error will occur when trying to open a level or story segment.
Any time a project is created or opened it will be added to the top of the "Recent projects" list in the Home window.
Levels (gameplay segments) and Story Segments are both added to the project's Maps section, and are both considered as Maps.
Story segments are always shown to the player after a level. If you put one on the top of the Maps list, the player will not be able to access it.
To add a Map, click the green '+' button in the Project View and then add the level's name and type.
To remove a Map, click on a Map and then click the red '-' button.
Deleting a Map deletes the map file, so you should make a backup to prevent data loss.
Maps can be reordered using the arrow buttons next to each map's name.
A map can be move one place up or down, or to the top/bottom of the list.
To edit a level after adding it, double click on the segment's name in the Map list.
This will open the grid window in which the level's layout and object properties can be customized.
When in Draw Mode, to draw on the grid, use the left mouse button. To erase, use the right mouse button.
To edit an object's properties choose Select Mode and click on that object on the grid. When entering a value, press Enter to confirm input.
The bottom toolbar contains brushes (object types) you can use to draw on the map.
Brushes displayed can be changed in the toolbar in View > Brushes.
The following brush types can be chosen:
- Walls (Regular and Cobweb Walls)
- Enemies (Imp, TriHorn and PlasmaEater)
- Map Objects (ExitDoor, Key, DoorGate, EnergyBall, Torch, ArmorBlink, Stone, ArchwaySingle and ArchwaySmall)
- Pickups (SmallMedkit, ShotgunAmmo, smgAmmo and Bullets)
- Player

Player must be added to be able to start the level in-game.
The player object has multiple parameters that can be edited:
- Starting Health (Max Health is 100 during a level, but Starting Health can be above 100)
- Weapon ammo (Ammo for the Revolver, Shotgun and Uzi can each be set)
- Weapon Possession (Check the boxes for the weapons you want the player to have during a level)
Wall brush texture can be chosen in the toolbar in Wall Brush.

Border wall texture can be chosen in the toolbar in Map Settings > Border Wall Texture
- Slowest enemy type
- Fires 1 projectile when attacking
- Faster than Imp
- Fires 3 smaller projectiles (damage inputed is divided by 3 for each projectile)
- Same speed as TriHorn
- Fires 4 smaller projectiles (damage inputed is divided by 4 for each projectile)
- Gains +60HP when shot with Uzi's plasma ammo (hence the name) and increases slightly in size.
ENEMY PARAMETERS Enemy behaviour and attributes can be modified with the following parameters:
- Health
- Projectile Damage
- Time Between Shots - Pause between enemy attacks in seconds
- Patrol Range - Radius inside which the enemy will pick next patrol target point randomly
- Sight Range - Range from which enemy can detect Player if no obstacles are between them (if the player is detected, the enemy will start chasing him)
- Attack Range - Range from which enemy will attack Player if no obstacles are between them
- Can Move - Enables/Disables enemy movement
Map Objects are divided into two categories:
- Keys and Doors
- Decorations and Traps
Use of decorations is encouraged to help the player navigate the map easier.

(items are listed in same order as image)
Keys and Doors
- ExitDoor - ends the level (place above player on map so player enters from underneath on the grid)
- Key - unlocks DoorGate so player can progress (only one key per level)
- DoorGate - blocks part of map away (only one key per level)
Decorations and Traps
- EnergyBall - small brick surrounded by energy balls that do 8HP damage upon contact
- Torch - light source
- ArmorBlink - possesed piece of armor, blinks at you if you stare long enough
- Stone - spawns one of the pebble sprites (randomly chosen)
- ArchwaySingle - column with arch on top
- ArchwaySmall - smaller column with arch on top
Pickups restore the players heatlh and ammo. The value of each individual pickup can be edited.

(items are listed in same order as image)
There are 4 types:
- Health
- Shotgun Shells
- Plasma Ammo (for the Uzi)
- Bullets (for the Revlover)
To edit a story segment after adding it, double click on the segment's name in the Map list.
-
Ctrl + S - Save (in Grid and Story Editor mode)
-
Ctrl + W - Close (in Grid and Story Editor mode)
-
D - Draw Mode (in Grid Mode)
-
S - Select Mode (in Grid Mode)
-
MouseWheel Up/Down - Scroll Up/Down (in Grid Mode)
-
Shift + MouseWheel Up/Down - Scroll Left/Right (in Grid Mode)
-
Ctrl + MouseWheel Up/Down - Zoom In/Out (in Grid Mode)
-
MouseWheel Click - Toggles Mouse Movement scrolling (in Grid Mode)





