Bring your own map
Your game can run on your own map: a city, an island, a race track. You build it in your own Unreal Engine project and put it into a game package, a content-only plugin. The GAMPEON server and the players load the map from that package. Your rules stay in Lua.
What a game package is
Section titled “What a game package is”- A content-only plugin from your Unreal project: maps, meshes, materials, textures, animations, sounds. No C++ modules. GAMPEON refuses a package with code.
- Its name is its mount point. A package
GamCityputs everything under/GamCity/, for example the map/GamCity/Maps/PalmCity. - Images and fonts for your web interfaces can go into a folder
Nuiof the package, so store graphics never sit in a resource. - It belongs to your game. Store packs you bought for your own game go here and never into a Git repository, the marketplace or a resource. See Third-party assets.
1. Make the plugin in your project
Section titled “1. Make the plugin in your project”- Create a project with the same Unreal Engine version as GAMPEON (5.8).
- Open Edit → Plugins → Add, choose Content Only and name it, for example
GamCity. Names use letters, digits and_, start with a letter and must not be a built-in name such asGameorEngine. - Leave Explicitly Loaded off, so your own editor loads the plugin as usual.
2. Move your map into the plugin
Section titled “2. Move your map into the plugin”- Move the map and everything it uses into the plugin’s content folder in the Content Browser, for example from
/Game/PalmCityto/GamCity/PalmCity. - Right-click the old folder and choose Fix Up Redirectors.
- Open the map from its new place and check the log: nothing may still point to
/Game/. GAMPEON does not have your project’s/Gamefolder. - Check the materials for references to editor plugins, for example Quixel Bridge (
/Bridge/...). Copy such textures into your plugin and point the material to the copy, because the game has no editor plugins.
Some content needs engine plugins, for example Water for an ocean. List them in your plugin under Plugins. If GAMPEON does not have one of them, the server log says so and those assets are missing.
3. Prepare the map for GAMPEON
Section titled “3. Prepare the map for GAMPEON”- Place Player Start actors where players should appear. With several, players are spread over them. Without one, players appear on the ground at the point 0, 0 of the map, and your scripts can move them with
SetEntityCoords. - The GameMode Override in the World Settings does not matter: GAMPEON always uses its own game mode, so joining, characters and the network work the same on every map. Clear it anyway (set it to None). Otherwise the server still loads the template character and its animations and writes warnings about missing input axes.
- Remove backdrop meshes far outside the playable area that you do not need, such as skylines and mountain ranges. Each one costs loading time for every player.
- Gameplay belongs in Lua. Blueprint logic in packages is not checked yet in this stage and will not pass the upload check later.
4. Choose the map in server.cfg
Section titled “4. Choose the map in server.cfg”set gp_map "/GamCity/Maps/PalmCity"The server starts as usual and then switches to your map. If the map cannot be found, the server log says so and the server stays on the built-in test map.
5. Test it on your computer
Section titled “5. Test it on your computer”In an editor build of GAMPEON, server and client load the plugin itself. Add the path to the plugin’s .uplugin file:
-gppackage="C:/MyGame/Plugins/GamCity/GamCity.uplugin"Several packages are separated with ;. In the log you then see Game package GamCity … mounted at /GamCity/. A player without the package cannot load the map; their log says to start with -gppackage=.
The packaged GAMPEON client and server load only cooked packages. To play with others, cook and upload the package: Upload your game package. Players then get it from the launcher when they press Play.
The first start with a new map takes longer, because the game prepares the shaders of your materials. Until then some surfaces can show a checkerboard for a moment.
Your map and a block world
Section titled “Your map and a block world”A block world also works on your own map. Put your map into a zone, so no blocks grow inside it, and set groundZ to the street level in meters. If the map has a sea or low ground inside the zone, set floorZ below it, so the hidden foundation of the zone does not cover the water. GamCity does this for Palm City, whose streets lie at 0 m and whose sea floor lies at about -11 m:
EnableBlockWorld({ seed = 20261106, zones = { { minX = -340, minY = -350, maxX = 280, maxY = 330, groundZ = 0, floorZ = -14, blend = 32 } },})Outside the zone the block land starts with a shore at street level. Where the block land is lower than the map’s water, the water shows as lakes. Remove backdrop meshes far outside the city, such as skylines or mountains, from your map, because the block land takes their place. Player Starts of the map still win over the spawn spots of the block world, also when a player falls out of the world.
Not there yet
Section titled “Not there yet”- The check for Blueprint logic in the upload and the encryption of the package. See Upload your game package.
- Your own models for
CreateObjectfrom a package (<package>/<name>).