User:ZXCubed: Difference between revisions

From Pavlov VR Wiki
Jump to navigation Jump to search
mNo edit summary
m (i forgot again sob)
 
(8 intermediate revisions by the same user not shown)
Line 7: Line 7:
the getting started page but better :3
the getting started page but better :3


== Setting up the Project ==
== Setting up your Project ==
To start making Pavlov Maps, you'll need to register an account for Epic Games and Mod.io. For Mod.io, you'll need to verify your email (or else you can't make your maps!).
In order to begin producing maps or projects for Pavlov, you must:


Epic Games Launcher:
* Use Windows.
* Have at least 16GB of RAM <small>'''''(any less and issues may occur when uploading your map to mod.io).'''''</small>
* Have Steam and Pavlov installed <small>'''''(not required if mapping for shack).'''''</small>
* Register a [https://mod.io Mod.io] & [https://store.epicgames.com Epic Games] Account.
* Install Epic Games Launcher


https://store.epicgames.com/en-US/download
Afterward, head to the Unreal Engine tab, and begin installing Unreal Engine 5.1.1.


Mod.io:


https://mod.io/g/pavlov
<big>'''NOTE: When installing, select the following packages to install alongside UE5.1.1:'''</big>
 
 
 
You'll also need to install Epic Games Launcher (if you don't have it already). Next, open the Unreal Engine tab in the launcher and install Unreal Engine 5.1.1.
 
NOTE: '''When installing UE5.1.1, select the following to install along with UE5.1.1:'''


* Starter Content
* Starter Content
* Engine Source
* Engine Source
* Android (needed for shack)
* Android '''(required for shack)'''
* Linux
* Linux
Lastly, you need to install the Pavlov VR modkit corresponding to your Engine Version (once on github click "code" then "download zip").
 
 
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”.
{| class="wikitable"
{| class="wikitable"
|+
|+
Line 38: Line 37:
|}
|}


Extract the modkit, and open the project. When loading the project, the modkit will stay at 45% while it compiles shaders. Once finished, click window, open Pavlov Workshop and then log in to your Mod.io Account.


UE5.1.1 Login Steps:
 
Extract your chosen Modkit and open the project.
 
If the <code>.uproject</code> 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 (<code>UE5Editor.exe</code>). Eventually upon relaunching UE5.1.1, you will be prompted to let UE recognize <code>.uproject</code> 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.
# Agree with the Mod.io TOS.
# Enter your Email Address.
# Enter your Email Address.
# Open your Email and paste the code from the Email to the Editor (request another if you need it).
# Open your Email and paste the code from the Email to the Editor (request another if needed).
# You're signed in!
# You're signed in!
To create a mod in UE5.1.1, you need to open the "Create Mod" tab and enter your map name and description. Logo image isn't required when making a map. Once putting in all of the information, press "Create Mod". This will create a UGCxxxxxxx folder, giving your mod a unique code (shown as the 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.
 
<!-- ALL assets used in your map MUST be in your UGCxxxxxxx folder. -->
 
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.
 
 
<big>'''NOTE: ALL assets used in your map MUST be in your UGCxxxxxxx folder.'''</big>
 
 
 
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.
 
'''<big>SKIP THE NEXT STEP IF YOU ARE CREATING A CONTENT MOD (ie. static meshes for a level.)</big>'''
 
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 ==
== Creating your Map ==
To create your map, you need to enter your UGCxxxxxxx folder (easier to do this) and press CTRL+S (CMD+S on Mac). This saves your map (currently filled with nothing). You can add objects into your map using the "Place Actors" window. You should also add BP_Sky_Sphere (located in the Engine folder), a Directional Light (search for it in the "Place Actors" window), and a Sky Light (search for it in the "Place Actors" window).
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'''.




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're able to see:
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:
{| class="wikitable"
{| class="wikitable"
|+
|+
Line 102: Line 174:
|}
|}


'''''"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.


You should change your "Label" to the name you want your map to have. Version should only be changed if you made changes to an already existing map you've made.


Link your Map or Quest Map to the level you saved earlier which should be called "NewMap" if you haven't changed the name yet. Compatibility should be changed later on (depending on how you make your map) but can be changed now if wanted.
'''<big>NOTE: Do not select a gamemode if you did not add functionality for it (ex. Prop Hunt or Push).</big>'''


==== Pavlov Game Logic ====
==== 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:
----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:
{| class="wikitable"
{| class="wikitable"
|+
|+
Line 125: Line 202:
|}
|}


You can set these to your own custom info or proxies but set it to these if you aren't customizing anything.
You can set these to your own custom info or proxies, but set it to these if you aren't customizing anything.


==== Spawns ====
==== Spawns ====
Line 135: Line 212:
|TeamID
|TeamID
| -1 = Any Team
| -1 = Any Team
0 = Blue Team (Defenders)
0 = Blue Team (Defenders) (Allied in WW2 TDM)


1 = Red Team (Attackers)
1 = Red Team (Attackers) (Wehrmacht in WW2 TDM)
|-
|-
|Dynamic
|Dynamic
Line 153: Line 230:
Use together with TeamID.
Use together with TeamID.
|}
|}
When enabling Special, this allows 5-10 people to spawn from just one Pavlov_Spawn.
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. [https://www.worldofleveldesign.com/categories/cat-level-design.php 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. [https://blender.org 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 [https://dev.epicgames.com/documentation/en-us/unreal-engine/geometry-brush-actors-in-unreal-engine#blockingoutlevels Block Brushing]. Personally, I've commonly used:
 
* Box
* Cylinder
* Linear Stair
* Sphere
 
 
The shape of these can be manipulated further when entering [https://dev.epicgames.com/documentation/en-us/unreal-engine/geometry-brush-actors-in-unreal-engine#brusheditingmode "Brush Editing Mode"].
 
There are two states for Geometry Brushes.
{| class="wikitable"
|+
!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 ====
==== 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.
----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 ==
== Mandatory Entities ==
These entities are things that should be in your map before publishing to Mod.io or the Steam Workshop.
These entities should be in your map before publishing to Mod.io or the Steam Workshop.


==== Lights ====
==== Lights ====
----All lights must be set to Static as Pavlov doesn't support Stationary or Movable.
----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 [https://mod.io/g/pavlov/r/dynamic-shadows-2-mapping-guide Dynamic Shadows 2 Mapping Guide] (PC only).
 
 
The types of lights typically used in maps are:
 
* Directional Light
* Sky Light
* Spot Lights
* Point Lights
 


This includes the Directional Light and Sky Light. Spot Lights and Point Lights are the most commonly used in Pavlov maps. There is no limit to the amount of lights that can be inside of your map.
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.


For a more realistic look and better clarity in VR set the "Indirect Lightning Intensity" on the Sky Light and Directional Light to a value between 2-6.
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 of the editor before building is inaccurate. To see how it'll really look like in game, click the "Build" tab and click either "Build All Levels" or "Build Lighting Only".
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 ====
----Reflection Captures are needed to have realistic reflections on all surfaces that are inside the reflection volume. They're useful whenever using materials with normal textures.
----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 and Box Reflection Captures are used to get these realistic reflections. Reflection captures prevent weapons from appearing black when playing.
# Sphere Reflection Captures
# Box Reflection Captures


You can them by searching for it in the "Place Actors" window.
 
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 ====
----Bomb Plants are needed for the SND game mode to function properly and at least one bomb site is needed to function.
----Bomb Plants are required for the SND gamemode. At least one is required in order to function properly.


You can have 2 bomb sites (A & B) but you can have as many bomb plants as you wish.
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".


By default the Bombspots will be treated as bombspot "A". To change it, simply tick the checkbox "Is B".
The bomb faces outward in the direction of arrow pointing outward of the model.


The bomb will be placed at the root of the red arrow facing the direction of the arrow.
Leave room between the wall and Bomb Plant (approx. 5 units) to prevent the bomb from clipping into the wall behind it.


Leave some space between the wall and the arrow, otherwise the Bomb will clip into the wall. (About 5 Units)
==== 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.


==== KOTH ====
----The blueprint actors can be found in the CustomMapTools Content folder -> Blueprints (please make sure "show plugin content" is enabled in your view options for your content browser


To place a KOTH point, drag BP_KOTHObjectiveProxy onto your map where you want hill points to show up, similar to placing CTF flag points.
'''''"BP_KOTHObjectiveProxy"''''' should be used in your level in areas where you want hill points to appear.


If you want to edit the score to win or limited ammo, then you place a BP_KOTHSettingsProxy into the level and adjust the settings accordingly.
'''''"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 & Physical Materials ====
----Materials are needed in your map in order for it to have textures like brick walls, concrete floors, and a lot more.
----Materials can be used to make your map's environment more visually interesting. <blockquote>''" You '''could''' publish your map with the default UE textures but it doesn't mean you '''should'''... "''
 
- zxcubed <small>(the one writing this whole page)</small></blockquote>
 
 
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.
{| class="wikitable"
|+
!Default
!Thin
|-
|Does not allow bullets to pass through.
(No bullet penetration/wallbang.)
|Allows bullets to pass through.
(Allows bullet penetration/wallbang.)
|}


Physical Materials are used inside of materials and determine the properties your Material has. There is a default and thin variant of the Physical Materials.


The thin variant of the Physical Materials allows bullets to pass through them.
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.




You can get textures from these websites:
There are various websites you can receive textures from for free including:


* https://ambientcg.com/
* https://ambientcg.com/
* https://polyhaven.com/textures
* https://polyhaven.com/textures
* https://www.textures.com/free (barely any free textures)
* https://www.textures.com/free <small>''(contains very few free textures)''</small>
 
 
[https://dev.epicgames.com/documentation/en-us/unreal-engine/creating-and-using-material-instances-in-unreal-engine 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.


Material Instances are not required to be used on Pavlov VR & Pavlov Shack but they are recommended to be used on Pavlov VR.


For Pavlov Shack, textures should be 512x512 as they'll get down-scaled at any other texture size higher than it.
Multiple guides exist on what you should do with your textures. Some are listed below:


Keep your UV's inside 0 to 1 coordinates. Every UV bigger as 1 or smaller than 0 will result in pixelated textures on the quest.
* 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  


==== Bot Navigation ====
==== Bot Navigation ====
----In order for bots to walk around your map, a Nav Mesh Bounds Volume is needed for the bots to walk around your map. You can find it by searching for it in the "Place Actors" window.
----"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.
 
The Nav Volume has to cover '''ALL''' of the walk-able space on your map.




If there are areas that don't connect to each other but are wide enough to fit a player, you can use a "Nav Link Proxy" to fill in those spaces. You can find it by searching for it in the "Place Actors" window.
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.
Press "P" to see the nav bounds and the connection indicator.


<big>'''NOTE: DO NOT''' change any details within the "Nav Mesh Bounds Volume" or else it will not work.</big>


NOTE''': DO NOT''' change the details of the Nav Mesh Bounds Volume or else it won't work!
==== Blocking & Kill Volumes ====
----Blocking Volumes can be used to prevent players from accessing specific areas of your map.


==== Blocking & Kill Volumes ====
Kill Volumes kill any player who enters it's area. Both volumes appear transparent.
----Sometimes on a map, you'd want to use an "Invisible Wall" for blocking access to a certain area of the map. This can be done by using a Blocking Volume. You can find it by searching for it in the "Place Actors" window.




The Geometry Editing Tool can also be used on this volume to easily adjust it to your Level Geometry.  
"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.


Use Blocking Volumes as a ramp over stairs to prevent the VR camera from aggressively hopping when walking up stairs.  
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.


You can also use them for smoothing out narrow and busy areas to prevent getting stuck and assure smooth gameplay.
They can also be used to smooth out narrow and busy areas of the map to prevent players from getting stuck.




Put a "Pavlov Kill Volume" about 1000 - 2000 units under your map, that is a bit bigger than your play space. This will kill players that somehow fell out of the map or glitched out of it.  
"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.


You can also use the Kill Volumes for hazardous environments in that the Player should die when touching the Volume. (e.g. the front of a moving train or a pool of lava/deep water)
They should also be used for hazardous objects placed within your environment like deep water or the front of a moving train.


==== Ladders ====
==== Ladders ====
----Overcoming walk-able angle restrictions is possible by using Pavlov Ladder Volumes.
----"Pavlov Ladder Volumes" allow the player to go up walls or areas that'd normally be inaccessible like very steep slopes.


The player will only stick to player-collidable surfaces contained inside the Pavlov Ladder Volume.


Avoid overlapping Pavlov Ladder Volumes as this can cause the player to glitch between them.
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.


To match the shape of a surface that isn't rectangular/square, use many smaller Volumes without overlapping them.
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 ==
== Uploading & Testing your Map ==
'''BEFORE UPLOADING:'''
'''<big>BEFORE UPLOADING:</big>'''


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.
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 (CMD+S on Mac). Your map is now ready to be published.
 
Once fully rendered, save your completed map by pressing CTRL+S on your keyboard.
 
<big>'''REMINDER: If you have 16GB of RAM or less, you will very likely have issues when building and packaging your map to Mod.io.'''</big>
 
Your map is now ready to be published.


=== UE5.1.1 ===
=== UE5.1.1 ===
----Once you've completed your map, open the "Pavlov Workshop" window and open the "Upload Mod" tab. Next, you'll need to select your mod's UGC. After, select the version of Pavlov you want your map to be playable on.  
----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.
{| class="wikitable"
{| class="wikitable"
|+Version
|+
!Windows
!Windows
!Android
!Android
|-
|-
|Pavlov VR
|Pavlov (PC)
|Pavlov Shack  
|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.
{| class="wikitable"
|+Requirements
!Name
!Description
!Example
|-
|Mod Name
|The name that appears on your project's Mod.io page.
|My Map
|-
|Mod Listing Image
|The image which appears on your project's Mod.io page.
(16:9, Min 512 x 288, Max 8MB)
|[[File:ChickenTrans.png|frameless|100x100px]]
|-
|Summary
|The description of your map (must be at least 10 characters long).
|This is longer than 10 characters.
|-
|Visibility
|Whether your mod will appear on the Pavlov Mod.io page.
|Public
|-
|Tags
|The type of mod your project is (Map, Mod, or Gamemode).
|Map
|}
|}


Building your mod will take a while so just do other things while you wait.


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 "Edit".
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".
Here, you can change your mod name, summary, and mod "logo".

Latest revision as of 07:12, 1 July 2025

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:

  1. Agree with the Mod.io TOS.
  2. Enter your Email Address.
  3. Open your Email and paste the code from the Email to the Editor (request another if needed).
  4. 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.

  1. Mods
  2. Maps
  3. 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:

Definition File Contents
Name Description Example
Unique Id (do not change) Published id if this is a workshop map, otherwise user-generated. UGC1234567
Label User friendly label, ie "My Map". My Map
Version Version # for this mod/map. 2
Thumbnail Thumbnail 512x512. ChickenTrans.png
Map The actual umap (level) to load. MyMap (level)
Quest Map Quest Map. MyMapShack (level)
Hidden Should this map be shown in the map combo boxes? Unchecked
Compatibility This is a filter for the map browser by game mode. Custom | Deathmatch | Team Deathmatch
Custom Game Mode Forces the server to load a bare bone game mode, everything else should be implemented by the GameLogic. Checked
Custom Game Mode Label For display purposes only in the server browser. MyGameMode

"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:

  1. Sphere Reflection Captures
  2. 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:


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:

Bot Navigation


"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.

Requirements
Name Description Example
Mod Name The name that appears on your project's Mod.io page. My Map
Mod Listing Image The image which appears on your project's Mod.io page.

(16:9, Min 512 x 288, Max 8MB)

ChickenTrans.png
Summary The description of your map (must be at least 10 characters long). This is longer than 10 characters.
Visibility Whether your mod will appear on the Pavlov Mod.io page. Public
Tags The type of mod your project is (Map, Mod, or Gamemode). Map


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