Portal Reloaded How To Create Custom Maps (June 2021)

Portal Reloaded How To Create Custom Maps (June 2021) 1 - steamsplay.com
Portal Reloaded How To Create Custom Maps (June 2021) 1 - steamsplay.com
Basic knowledge of using the Portal 2 Authoring Tools required. This guide will teach you all the ins and outs of creating your own maps for Portal Reloaded inside the Hammer Editor. Design your own test chambers using the time travel mechanics, expand on them and try to push these concepts even further.



Hey there! Today, I’d like to show you how to create your own custom maps for Portal Reloaded. This tutorial assumes that you already know your way around the Portal 2 Authoring Tools. This guide is still a work in progress and will be expanded in the future.

Setting Up

Alright, let’s get started with some file management. To use some of the custom assets of Portal Reloaded in Hammer, you’ll have to copy a few files first.

drive.google.com – https://drive.google.com/file/d/1uOiEbUOZTbEZLMf0D4bMqUfqgZsRQdmd/view?usp=sharing

Download the zip archive, extract the files and copy the folders named ‘portal2’ and ‘sdk content’ into your Portal 2 root directory: …\steamapps\common\Portal 2

Now we’re ready to launch the Portal 2 Authoring Tools and create a new map inside Hammer. Save it as something like ‘pr_my_first_map.vmf’. Okay, let’s get going!

You can watch this video alongside for reference:


Global Entities

Let’s place some basic logic first. Create a func_instance and name it ‘main’. Next, select the ‘main.vmf’ as the filepath. It should be located inside your Portal 2 directory under:


This instance contains all the basic logic used in Portal Reloaded. Place it somewhere in your map. I like to keep it near the map’s origin.

Creating the Present Chamber

Now it’s time to actually design your test chamber. This part is mostly up to you. Keep all the time travel mechanics in mind and get to mapping!

Start with the present version of the chamber. I’d recommend only using developer textures at this stage. We’ll get into proper texturing later. Make sure to leave a 256×192 hole where you want your entry and exit to be.

This is where positioning becomes really important. The game places a future cube, portal or time portal by inverting the x- and y-coordinates of the present object. For this to work properly, you have to mentally divide the worldspace into two sections.

The present chamber should occupy the ‘negative space’ of the coordinate system, while the future version of the chamber should be positioned within the ‘positive space’.

Portal Reloaded Creating Custom Maps

Puzzle Elements

This section covers how different puzzle elements like cube dispensers, floor buttons and switches should be used in your map.

Cube Dispenser

Note, that you can only have one cube dispenser per chamber. Leave a 128×128 hole in your ceiling where you want your dispenser to be. Then, create a new func_instance and name it ‘cube1’. Naming conventions are important here, so make sure to follow these instructions carefully. Set the filepath to:


There is also a seperat instance if you want to use a laser redirection cube instead.

The present version of cube dispensers have the following inputs:

Main TriggerDispenses a cube
Autospawn EnableEnables automatic dispensing of a new cube when the old one is destroyed
Trigger Cube ListenerStarts checking for cube movement and spawning the future cube
Enable Cube ListenerActivates checking for cube movement and spawning the future cube
Disable Cube ListenerDeactivates checking for cube movement and spawning the future cube

IMPORTANT!For the time travel cube logic to work, you first need to call the ‘Trigger Cube Listener’ input once. You can do that on map spawn or with a trigger_once when the player enters the chamber.


Create a new func_instance and name it ‘switch_present_1’. Set the filepath to:


Switches have a ‘On Pressed’ and ‘On Unpressed’ output as well as a ‘Press In’ input. A typical I/O chain would look like this: switch_present_1 –> On Pressed –> cube1 –> Main Trigger

Floor Buttons

Create a new func_instance and name it ‘floor_button_present_1’. Set the filepath to:


Floor Buttons have a ‘On Pressed’, ‘On Unpressed’, ‘Box on Button’ and ‘Box off Button’ output.

Creating the Future Chamber

Once you are finished with the basic level geometry and puzzle elements, we can go ahead and create the future version of the test chamber. For that, follow these 4 steps carefully:

These actions should all be beformed in the 2D top viewport.

1. Align the present chamber on your preferred grid size
Portal Reloaded Creating Custom Maps

2. Select your chamber and shift-drag everything into the positive worldspace
Portal Reloaded Creating Custom Maps

3. Rotate the newly created copy of the chamber 180 degrees
Portal Reloaded Creating Custom Maps

4. Align the future chamber on the exact opposite site of the map’s origin
Portal Reloaded Creating Custom Maps

Next, replace every cube dispenser, floor button and switch instance with its future variation. Remember to rename them and adjust their outputs accordingly.

IMPORTANT: Name your future cube dispenser ‘partner_cube1’.

Great! Assuming you aligned everything correctly and followed the naming convetions, the basic time travel logic should now work as intended. Now you can add some environmental detail like destruction props and foliage.

Arrival & Departure

You can use Portal Reloaded’s arrival and departure logic for your custom map. Decide, whether you want the player to start in the present or the future. Create a new instance and name it ‘arrival’. As the filepath, set either


Since this area does not need to exist in the other timeline, you can use one of these instances for the arrival door in the timeline the player does not start in:


If your test chamber is solvable in either timeline, it’s important to use departure logic for both the present and the future. Create two new instances and name them ‘departure_present’ and ‘departure_future’. Set the filepaths to:


The departure logic also includes proxy relays for opening and closing the exit doors.


The most important thing for making our two chambers look distinct from one another is proper texturing. Thankfully, the Portal 2 base game already provides us with different versions of the same texture. A clean version for the normal test chambers and a destroyed version for the overgrown sections. I would recommend using these pairs of textures:

Floor Textures


Wall Textures


Ceiling Textures




Lighting is a great way to further distinguish the two different timelines from each other. Especially color can have a huge impact on the feel of your level. Personally, i like giving the present chambers a blue tint, while lighting the future chambers in a yellow tone. These are the RGB-values I often use:

Present: 230 230 250
Future: 250 250 220

For the lightcovers, make sure to use skin 2 for the present and skin 1 for the future models.

Soundscapes & Music

Audio design is another great tool to set your timelines apart. Here’s a list of soundscapes I like to use in my chambers with clean and overgrown environments:

Soundscape PresentSoundscape Future

If you want to use a track from Portal Reloaded’s score in your map, simply create a new func_instance and name it ‘music’. Set the filepath to


The instance takes two parameters. One for the present and one for the future track. There are a total of 10 tracks to chose from. They are located in here:

…\steamapps\common\Portal 2\portal2\sound\music

Most tracks are divided into multiple layers. An additional layer is automatically added to the music, whenever the player enters the future timeline and muted, when the player returns to the present.

If you want to use the first track, for example, set the instance parameters like this:

Present Track#music/pr_track_001_1.wav
Future Track#music/pr_track_001_2.wav

Using triggers, you then have to manually enable and disable the music when the player enters and exits the chamber. The music controller instances provides ‘Activate’ and ‘Deactivate’ inputs for that.

Compile & Play

Once you are happy with your map, hit compile and copy the resulting .bsp file into

…\steamapps\common\Portal Reloaded\portalreloaded\maps\

To play your custom map, launch Portal Reloaded on Steam, open the developer console and type ‘map ‘ + the name of your map. That’s it!

Send in your Creations

If you’d like to share your level with me, you can send in your map to this email: [email protected]

I will handpick a few of my favorites and feature them on the official Portal Reloaded website, crediting you of course. Thanks for reading and have fun mapping. I look forward to all your awesome creations!


Hope you enjoy the post for Portal Reloaded Creating Custom Maps, If you think we should update the post or something is wrong please let us know via comment and we will fix it how fast as possible! Thank you and have a great day!

Be the first to comment

Leave a Reply

Your email address will not be published.