User:ZXCubed
Hi!! I'm cubed. I'm currently working on the Getting Started page.
You can learn more about me on my carrd!
the getting started page but better :3
Setting up your Project
In order to begin producing maps or projects for Pavlov, you must:
- Use Windows.
- Have at least 16GB of RAM (any less and issues may occur when uploading your map to mod.io).
- Have Steam and Pavlov installed (not required if mapping for shack).
- Register a Mod.io & Epic Games Account.
- Install Epic Games Launcher
Afterward, head to the Unreal Engine tab, and begin installing Unreal Engine 5.1.1.
NOTE: When installing, select the following packages to install alongside UE5.1.1:
- Starter Content
- Engine Source
- Android (required for shack)
- Linux
Lastly, install the version of the Pavlov Modkit corresponding to the game version you’d like to make projects for. When on the GitHub page, click on “Code”, and then press “Download ZIP”.
PC Engine | Shack Engine |
---|---|
Pavlov VR PC Modkit | Pavlov VR Shack Modkit |
Extract your chosen Modkit and open the project.
If the .uproject
does not open from the folder, right click the project and select "Open with..." and "Choose another app" and select the directory for UE5's executable (UE5Editor.exe
). Eventually upon relaunching UE5.1.1, you will be prompted to let UE recognize .uproject
files.
The project will take a while to load as Unreal Engine is busy compiling shaders. Once completed, click “Window” in the menu bar then locate and open “Pavlov Workshop”. A window will open asking for you to log in to your Mod.io account.
Pavlov Workshop Login Steps:
- Agree with the Mod.io TOS.
- Enter your Email Address.
- Open your Email and paste the code from the Email to the Editor (request another if needed).
- You're signed in!
To create a project in UE5.1.1, open the "Create Mod" tab and enter your map name and description. Logo image isn't required when making a project. Once you've input all the map information, press "Create Mod". This will create a UGCxxxxxxx folder, giving your mod a unique code (represented as x's) that'll be used to figure out what map is currently being played in a server and if it'll need to be downloaded locally.
You may produce multiple projects within the same Modkit, simply go back to "Create Mod" and fill out the name and description again and another UGCxxxxxxx folder will appear.
NOTE: ALL assets used in your map MUST be in your UGCxxxxxxx folder.
There are three different options for project type. This brings us to...
Mods, Maps, and Gamemodes
As of Update 30 on Pavlov and Pavlov Shack's release, the Modkit introduced three different categories of mod type.
- Mods
- Maps
- Gamemodes
Mods can contain gameplay assets, level geometry, etc.
Maps and Gamemodes can rely on mods for their content, but mods should not rely on Maps, Gamemodes, or other mods. They shouldn't alter the gameplay loop; if this is your goal, create a Gamemode instead.
Maps can function as a complete package, containing a map and gamemode (a "Legacy" setup), or as the environment itself, where the game logic is handled by a separate, custom game mode.
Maps can rely on mods for additional content, however, when enabling a custom game logic to the map, the map will be locked to use that game logic only, preventing other gamemodes or logic from being used.
Lastly, Gamemodes completely override the game logic of a level.
Gamemodes can rely on mods for additional content.
All of these different types of project can be created when opening the "Workshop" window in the Modkit. There are buttons at the bottom of the "Create Mod" tab, allowing you to pick between the three.
Creating a Mod
In order to create a mod, you must select "Mod" while you're still in the "Create Mod" menu in the "Workshop" window. Afterward, create a "Pavlov_ModInitializer" actor inside your UGC folder.
This gets created on the client and server, but it is not replicated. Use this class to spawn additional content, get access to the globalinfo, gamelogic etc.
A modifier called "OnModInitialized" will be attached to the "Pavlov_ModInitializer" which can be overridden. It can be used to add custom guns, items etc similar to the setup previously done in the global info.
SKIP THE NEXT STEP IF YOU ARE CREATING A CONTENT MOD (ie. static meshes for a level.)
Open your mod definition, set the "ModInitializer" to the "Pavlov_ModInitializer" actor we just created.
Add any additional content you'd like inside your UGC folder. If the mod is being used as a content pack, then you can map/gamemode dependencies on this mod and use this content with other UGC plugins.
Lastly, upload your mod to Mod.io, and you're done!
Creating a Gamemode
1. Create the UGC (make sure to select Gamemode)
2. Create a Pavlov_GameLogic (we will not be covering how to create a gamemode loop just the basics of uploading). Leave the definition blank inside the game logic, you can assign your own player proxy and global info.
3. Open your definition inside your ugc, assign the Pavlov_GameLogic you created.
4. Upload to Mod.io
Note: You cannot load a custom gamemode if the map is a custom gamemode map (it has custom gamemode enabled in the map definition)
Creating your Map
There are multiple ways to make a new level in Unreal Engine. You may create a new level by clicking "File" > "New Level" and pick between "Basic" or "Empty Level". Delete "ExponentialHeightFog" and "VolumetricCloud" from the level. You can also press CTRL + S to save if you just want to make an empty level. You can place objects and actors into your map using the "Place Actors" window. Set the directory of your level to be within your UGCxxxxxxx.
Be sure to press "Save All" in the Content Browser to save everything in the UGC, not just the level.
In order for your map to function properly in Pavlov, you need to link your map to the "definition" file in your UGCxxxxxxx folder. In the definition file, you'll see:
"Label" should be changed to the name of your map as this is the one which appears in map select.
"Version" should be changed only if you've made any changes to the project and the map has already been uploaded to Mod.io.
"Map" should be linked to a level built specifically for the PC branch and a different (hopefully more optimized) level should be applied to "Quest Map" for the Shack branch. The selected level should default to "NewMap" unless you've already changed it.
"Compatibility" opens a drop down displaying the various gamemodes your map completely supports.
NOTE: Do not select a gamemode if you did not add functionality for it (ex. Prop Hunt or Push).
Pavlov Game Logic
Before publishing your map, in order for your map to work, you need to add a Pavlov Game Logic. You can find it by searching it up in the "Place Actors" window. Once placed in the map, change its settings under the Pavlov tab inside of the Game Logic. Set "Definition" to the definition file inside of your UGCxxxxxxx folder. You'll also need to set:
Global Info Class | to | Pavlov_GlobalInfo |
Player Info Class | to | Pavlov_PlayerInfo |
Player Proxy Class | to | Pavlov_PlayerProxy |
You can set these to your own custom info or proxies, but set it to these if you aren't customizing anything.
Spawns
In order to properly spawn in your map, you need Pavlov Spawns in your map (search for Pavlov_Spawn in "Place Actors"). The settings to the Spawns are:
Spawnflags | |
---|---|
TeamID | -1 = Any Team
0 = Blue Team (Defenders) (Allied in WW2 TDM) 1 = Red Team (Attackers) (Wehrmacht in WW2 TDM) |
Dynamic | Tick this for Deathmatch.
This prevents spawning inside another person who occupies the spawn area |
Only Team | Use this Together with the TeamID parameter to only allow for a certain team to spawn.
Search & Destroy (S&D) spawns needs this. Uncheck for random Deathmatch spawns. |
Special | Tick this for marking the Spawn to be used for Search & Destroy gamemodes.
Use ONLY ONE spawn per Team. Teams will spawn together at one spawn. Use together with TeamID. |
When enabling Dynamic ONLY, it allows 5-10 people to spawn from just one Pavlov_Spawn.
Spawns for teams need at least 4.5m of space to their right for them to spawn properly.
Your spawn may not be inside the floor as it will cause players to fall through the floor. To counteract this, move your spawn above the ground slightly, and press the "END" key on your keyboard.
Map Layout
When creating the layout of your map, it's best to make a sketch to preview so you know what to do when making your map. This isn't necessarily a tutorial on how to make a map, simply how you'd go about making the environment for it. World of Level Design is a good starting point on learning how to create a good level.
Once you've settled on a layout, you can either build the map out in a different program (ie. Blender) or use Geometry Brushes to shape out your map within your UE project.
I am personally against using meshes for your maps as they're less efficient to make maps with and are much more troublesome to use compared to Geometry Brushes.
Geometry Brushes can be found in the "Place Actors" window, which are quite good for Block Brushing. Personally, I've commonly used:
- Box
- Cylinder
- Linear Stair
- Sphere
The shape of these can be manipulated further when entering "Brush Editing Mode".
There are two states for Geometry Brushes.
Additive | Subtractive |
---|---|
Takes up space in your environment in the shape of the Geometry Brush. | Hollows out additive Geometry Brushes if currently intercecting one. |
Migrate maps to Modkit
To migrate maps from Unreal Engine projects to the Modkit, open the project with the map, select the level file. Right click the file and select migrate. A folder tree with all the referenced files of the map will show up. Press "OK." A file explorer will open after and you'll need to find the UGCxxxxxxx folder directory to import the map to the Modkit. After, right click the Content root folder and select "Fix up re-directors". This will fix all the asset references.
Mandatory Entities
These entities should be in your map before publishing to Mod.io or the Steam Workshop.
Lights
Lights are required to be set to Static as Pavlov does not support Stationary or Movable lights. If you wish to have dynamic lighting, follow the Dynamic Shadows 2 Mapping Guide (PC only).
The types of lights typically used in maps are:
- Directional Light
- Sky Light
- Spot Lights
- Point Lights
Other types of lights should be fine as well. There is no limit to how many you're allowed to use, it'll simply just make baking your lights take much longer.
If you'd like your lighting to appear more lifelike, set "Indirect Lighting Intensity" at a value between 2-6 on your Sky Light and Directional Light.
The lighting you see inside the editor view is inaccurate before building your map. To preview how it'll appear in game, click "Build" in the menu bar and click "Build All Levels" or "Build Lighting Only".
Reflection Captures
Reflection Captures allow for realistic reflections to appear on all surfaces within it's reflection volume. They're useful for materials which have normal textures.
These are two types of Reflection Captures that are typically used:
- Sphere Reflection Captures
- Box Reflection Captures
Any area NOT covered by a Reflection Capture will cause weapons to have no reflections and appear black during gameplay.
They're all accessible from the "Place Actors" window.
Bomb Plants
Bomb Plants are required for the SND gamemode. At least one is required in order to function properly.
You can set 2 bomb sites (A & B) but you can have as many bomb plants as you wish.
By default, the Bomb Plants will be treated as Bomb Plant "A". To change it, simply tick the checkbox "Is B".
The bomb faces outward in the direction of arrow pointing outward of the model.
Leave room between the wall and Bomb Plant (approx. 5 units) to prevent the bomb from clipping into the wall behind it.
KOTH
Blueprint Actors for KOTH (King of the Hill) can be found in "CustomMapTools" > "Blueprints" Content folder. Remember to have "Show Plugin Content" ticked (or enabled) in the Content Browser's view options.
"BP_KOTHObjectiveProxy" should be used in your level in areas where you want hill points to appear.
"BP_KOTHSettingsProxy" should be used in your level if you wish to change win conditions or limit a player's max ammo.
Materials & Physical Materials
Materials can be used to make your map's environment more visually interesting.
" You could publish your map with the default UE textures but it doesn't mean you should... " - zxcubed (the one writing this whole page)
Physical Materials can be used within a material to determine the type of properties your base Material has. There are two variants of each Physical Material.
Default | Thin |
---|---|
Does not allow bullets to pass through.
(No bullet penetration/wallbang.) |
Allows bullets to pass through.
(Allows bullet penetration/wallbang.) |
If Physical Materials do not appear when making a material, follow "CustomMapToolsContent" > "PhysMaterials" in the Content Browser. Select all of the Physical Materials and right click. Do this for the Default and Thin variants. They should appear now. Any Physical Materials you haven's used will have this problem upon relaunching UE. Fix it by repeating the previous steps.
There are various websites you can receive textures from for free including:
- https://ambientcg.com/
- https://polyhaven.com/textures
- https://www.textures.com/free (contains very few free textures)
Material Instances are not required on your maps but allow for better optimization and a slightly higher frame rate during playtime.
On Pavlov Shack, textures should be maxed out to dimensions at or under 512 x 512 as any textures higher than that will be down-scaled.
UV's should be stored within 0 to 1 coordinates as any UV's less than 0 or greater than 1 will cause your texture to become a pixelated mess on Pavlov Shack.
Multiple guides exist on what you should do with your textures. Some are listed below:
- https://mod.io/g/pavlov/r/how-to-fix-low-quality-textures-and-shadows
- https://mod.io/g/pavlov/r/best-practices-for-shack-materials
- https://mod.io/g/pavlov/r/how-to-fix-pixelated-textures
"Nav Mesh Bounds Volume" is used for bot navigation, allowing them to walk around your map. It must cover the entire playable (or accessible) area of your map.
If certain areas do not fill that a player could walk through, a "Nav Link Proxy" can be used to fill that area in.
Press "P" to see the nav bounds and the connection indicator.
NOTE: DO NOT change any details within the "Nav Mesh Bounds Volume" or else it will not work.
Blocking & Kill Volumes
Blocking Volumes can be used to prevent players from accessing specific areas of your map.
Kill Volumes kill any player who enters it's area. Both volumes appear transparent.
"Brush Editing Mode" can be used to adjust the volume to however you need it. You can vastly change the shape if you wanted to using this mode.
It's recommended to use Blocking Volumes over stairs in the shape of a ramp to prevent the camera from hopping aggressively when walking up the stairs.
They can also be used to smooth out narrow and busy areas of the map to prevent players from getting stuck.
"Pavlov Kill Volumes" should be put ~1000-2000 units under the playable area your map. It should be bigger than the entire map to kill players that glitched out or somehow fell out of your map.
They should also be used for hazardous objects placed within your environment like deep water or the front of a moving train.
Ladders
"Pavlov Ladder Volumes" allow the player to go up walls or areas that'd normally be inaccessible like very steep slopes.
When a player walks into this volume, they will stick to the area they've walked into and their position will go up linearly.
Do not overlap these volumes as a player can get stuck between them. These volumes are very buggy, and players can fling themselves off of these volumes. Use with caution.
The Volumes only come as rectangular prisms. Do NOT attempt to change their shape using "Brush Editing Mode."
To match the shape of a surface that isn't rectangular/square, use many smaller Volumes without overlapping them.
Uploading & Testing your Map
BEFORE UPLOADING:
Be sure to save your map and bake the lighting in your map by pressing "Build", then "Build All Levels". Rendering the lights & Reflection Captures will take a while so do other things while you wait.
Once fully rendered, save your completed map by pressing CTRL+S on your keyboard.
REMINDER: If you have 16GB of RAM or less, you will very likely have issues when building and packaging your map to Mod.io.
Your map is now ready to be published.
UE5.1.1
Once your map is ready for the public's eyes, open the "Pavlov Workshop" window and click "Upload Mod". Select your mod and select which version(s) you want to upload to Mod.io.
Windows | Android |
---|---|
Pavlov (PC) | Pavlov Shack |
Below, a tick box labeled "Share Mod Assets" will be grayed out if your project is not a Content Mod. Only Content Mods are allowed to have this ticked.
Once you're ready, hit "Upload Mod" at the bottom. This will begin the building process of your mod. This will take approximately 40-60 minutes. Building for the first time will take significantly longer than your next.
After your mod has finished building, go to Mod.io, open "My Content", and look for your mod. Click "Manage" and edit all of the required forms.
Once it's finished building, go to Mod.io and open "My Teams" on the sidebar (shown as a folder). Look for your mod. Once you've found it, click "Manage".
Here, you can change your mod name, summary, and mod "logo".
NOTE: The map logo is separate from the one that appears in the map boxes.
Once your map is ready to be published, you can hit "Go Live", and now your map is published!
Troubleshooting
This may be outdated.
FAQ | |
---|---|
The "Create New" Button is missing. | Steam needs to be open and the used Account needs to have Pavlov purchased. Also check your firewall settings if it blocks any UE4 application. |
The map does not update ingame or on the Workshop page. | Restart Steam, close the Editor and go to your Project folder, delete the "Intermidiate", "Saved" and "Build" folder. Restart the Editor and try updating again. |
The map was updated on the Workshop page but Steam won't download it. | If Pavlov is open, close it. Be sure you are subscribed to it. Try restarting Steam. If it still won't download, unsubscribe from it and then resubscribe to it. |
Loading the map ingame leads back to the Lobby. | Check the Definition file if the map is linked properly. |
Error "Definition not found". | Check if your UGC ID matches the UGC ID in the Definitions file. The definitions file needs to be directly inside of the "UGCXXXXX" folder. This error also tends to appear in some cases where the project has multiple "UGC" folders, so make sure only the primary UGC folder is present when staging. |
Map not loading ingame. | Check if you have added a Pavlov Game Logic and assigned the definition file to it. |
Textures or Models are not showing in-game and/or in the editor. | Use "Fix up redirectors" and delete the "Build", "Saved" and "Intermediate" folder inside the Project folder. Also make sure ALL Assets are inside the UGCXXXXX Folder. Additionally, if having moved files between folders in the project, make sure to move the files in smaller groups and use "Fix up redirectors" after each move of a batch of files. (Right-click the "Content" folder, and choose "Fix up redirectors"). |
I lost my definition file. | First make sure it's really gone, if it is, add a new Data Asset in the UGCXXXXX folder. Right click in the UGC folder, Miscellaneous > Data Asset > Choose Pavlov_Map > Name it definition (all lowercase). Fill in your Unique Id which is your UGC foldername ie. UGC123456789. |
Nothing happens after I Stage or Deploy. | Look at the Output Logs window for errors. Window > Developer Tools > Output Logs |
I get an error saying "Pavlov installation not found", even though I'm building a Shack map. | You can work around this by creating a dummy Pavlov executable in your Steam. Open up any Steam library in Windows Explorer, create a "steamapps\common\PavlovVR" folder, and put a blank file in this folder named "Pavlov.exe". Restart Unreal Engine and the Pavlov Workshop should tell you it's found a Pavlov installation. |
I've done everything correctly but my Shack map isn't showing up in-game. | Try deleting the map completely from your Quest, open and close Shack, then re-upload the map. Simply overwriting the map with a new copy is not always enough! |
If you need further support, check the pinned messages in the workshop channels at discord.gg/Pavlov-VR.
There's also an Unofficial Pavlov Map Making Guide which will get more into depth but is more outdated.
-zxcubed