Skip to main content

Creating Custom Maps

How to create and export maps from Unreal to HELIX

Maps and Levels are quite the most straightforward asset that you can create and import. In Unreal, maps are called Levels, usually these levels are filled with a Landscape component to make the terrain, some Lights and some Static Meshes (Trees, Houses, etc).

Rules for creating a Map/Level

  1. Do not spawn/place Dynamic Meshes (with Physics), as they will not be synced in-game. You need to spawn them as a Prop through the scripting.
  2. Add a “Sun” actor-tag to all Lighting/Sky/Sun related actors (DirectionalLight, SkyLight, DomeMesh, SkyAtmosphere or SunSky), this will allow, if wanted, to your light to be overridden by scripters to use, instead, the Official HELIX Sun through World.SpawnDefaultSun(), which allows in-game light/sun customization.
  3. If you are creating a Map, please remember to nullify (set to None) all references it has for Unreal GameModes Override in the World Settings:

GameMode Overrides nullified

Preparing the asset pack to save the map

Prerequisites

Before proceeding, please make sure you read Creating & Importing Assets Guide.
In order to follow this document, you need to have prepared the Asset Development Kit, read more about this and download it from the Asset Development Kit page.

Please go to Asset creation, using plugin content to get more detailed step to create the plugin folder.
When creating the plugin folder rememeber to use lowercase letters and dash symbols only, uppercase letters and numbers are not allowed.

Plugin creation quick steps:
1.- Click on Edit and then select "Plugins" from the menu.
2.- Click on Add in the plugin window.
3.- In the New Plugin window, click on "Content Only", set a name using only lowercase letters and dashes.
4.- Click on the "Create Plugin" button.

Plugin making of

To create the Map itself (in Unreal, maps are called Levels) do a left click inside the folder just created in the step before.
From the context menu, click on "Level" to create a new level and then define a name for your map.

Double click on the level created and the viewport will be all dark, this is because the just opened map is empty.

Adding Objects

Adding a floor.

To add a floor a simple plane will be used. To do this:

Click on "Quickly Add to the Project" Icon
Then go to Shapes option
Select Plane option on the submenu.

With the plane selected, you will notice it is a simple Static Mesh, this Static Mesh is a model already included in the Engine, so it is important that you copy this Mesh to your folder created using the plugin to avoid any further export problem.
To find where your Mesh is located, press the magnifying glass at the right of the Static Mesh item at the right of the screen:

This will open the Engine’s folder which contains some Basic meshes which come with the Engine:

Let’s copy some Basic Meshes into our AssetsPack folder to be used later, including the Plane:

Use CTRL+C + CTRL+V to copy the assets into your folder:

The plane mesh must be replaced with the one just copied, to do this

Click on the copied Plane Mesh.
Press the arrow on your Plane Actor to replace it’s Static Mesh (alternatively you can just Delete the spawned Plane and drag and drop the new Plane from your assets pack’s folder)

After that, with the Plane (floor) selected, set the scale values to X = 5, Y = 5, Z = 5 and centralize it by setting the location values on X = 0, X = 0, X = 0

Adding a Skylight

Click on "Quickly Add to the Project" Icon
Go to "Lights" option on the menu
Click on "Sky Light"

⚠️ Note: If after adding the light the screen is still black, save all the changes and close + open the project to see the light and the plane on screen.

Adding Materials

Applying color and textures in Unreal are made through Materials, to do this a Material has to be created.

Do a right click on the empty space inside the folder in the content browser

Rename the created material to M_Plane and double click to open it up:

All aspects of Materials won't be covered in this tutorial, for now pin a Vector3 node with a color into Base Color input, to do that Right Click on the screen and search for Constant3Vector

Click in Constant3Vector and pin it into Base Color input

Double click on the Vector3 node and select a color for it (Keep in mind this will be the color for the plane/floor)

Save and close the Material Window. The material M_Plane with the selected color will be shown in the content drawer. Drag and drop it on the plane mesh.

Adding Meshes to the plane

A new Material can be created to paint these meshes as well by repeating step when creating material

By Selecting the Directional Light, the rotation can be changed so the shadow cast can be modified also, set the Directional light to Movable so it’s shadows work in Real Time.

When completed take a screenshot of the whole map, it will be used for a thumbnail later on (save it anywhere with the same name as your Map as .jpg, in this case: MyAwesomeMap.jpg):

Save all, next step is to export the map.

Exporting the Map

After you completed all steps, you can export them into HELIX! Please refer to Exporting & Cooking your Assets section before proceeding.

Configuring the Asset Pack

First the server must be set up in order to test the map created before. To know more about the server and how to create a package, go to the Developers Quick Start Guide

Open a terminal where your HELIXGameServer.exe is and input the following command and fill the required fields

.\HELIXGameServer.exe --cli add package awesome-map
[warning] Config.toml not found! Creating a new one!
[debug] Fetching Store Data...
[display] Please enter the Package Title: (awesome-map)
maps
[display] Please enter the Package Author: ()
x
[display] Please enter the Package Type ('script', 'game-mode', 'map' or 'loading-screen'): (game-mode)
map
[debug] Creating Package 'awesome-map' folder...
[debug] Creating Package 'awesome-map' Package.toml...
[display] Package 'awesome-map' has been created!

Inside the Server folder, create an Asset folder here you will paste the cooked assets, the end result will be as the following image:

Next, configure the Asset Pack! To do that please refer to Configuring your Assets.toml docs page before proceeding. In shot:

inside the Assets folder you should have a folder with the cooked assets.
And inside that folder, you should create a simple text file and name it Assets.toml
Below you see the configuration used in this example:

# vault configurations
[meta]
# friendly name
title = "my-map"
# contributors
author = ""
# version
version = "0.0.1"

# asset pack configurations
[asset_pack]
# asset packs requirements
assets_requirements = [

]

# unreal engine configurations
[unreal]
# unreal engine folder - the exact name of the root folder inside Content/ or Plugin/ used in Unreal
unreal_folder = "my-map"
# unreal engine version - unreal version this asset pack was compiled on
unreal_version = "5.3.2"
# whether this asset pack was created as a plugin content
is_plugin_content = true

# assets files
[assets]
# maps
[assets.maps]
Mymap = "map"

Save the Assets.toml file close it.

Now in the root of the Server Folder open the Config.toml and add the game-mode, define the asset to be used (the one created here)

Your Config.toml should look like the following:

# server configurations
[server]
# server name
name = ""
# server description (max 127 characters)
description = ""
# max players
max_players = 64
# leave it blank for no password
password = ""
# server IP. we recommend leaving it 0.0.0.0 for default
ip = "0.0.0.0"
# server port (TCP and UDP)
port = 7777
# server tick rate in milliseconds (dangerous! server will tick at each [tick_rate] ms, affecting both server and client performance. 33 ms means 30 ticks per second and is the default and recommended value)
tick_rate = 33
# log Level. (1) normal - (2) debug - (3) verbose
log_level = 1

# HELIX configurations
[world]
# game-mode package to load (set the main game-mode package to load - you can load only one 'game-mode' package type at once)
game_mode = "awesome-map"
# packages list (set the packages you want to load)
packages = [

]
# asset packs list (this will additionally load the asset packs you define here)
assets = [
"my-map",
]
# default startup map
map = "my-map::Mymap"
# banned HELIX account IDs
banned_ids = []

Save the Config.toml file and close it.

Testing the map

To test the map, just double click on the HELIXGameServer.exe

Open the Helix Client, click in the world search bar and press enter to load the map which is running through the server.

This simple map has no players on it, so you can move using W A S D and Spacebar

Configuring your Map

Also it is possible to add a Configuration File, Custom Data and even an exclusive Package (scripting) for your map! Please refer to Map Script and Configuration for more information!