Getting Started: Difference between revisions

From Pavlov VR Wiki
Jump to navigation Jump to search
m (minor text edits. also added shack modkit to page)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Capsule-editor}}
<br />
__TOC__
__TOC__
<br />
== Setting up the Project ==
== Download Unreal Engine ==
To start making Pavlov Maps, you'll need to register an account for Epic Games and Mod.io (for UE5.1.1). For the Mod.io account, you'll need to verify your email (or else you can't make your maps!).
[[File:UE4 Editor.png|thumb|The default layout of the UE4 Editor]]
1. Register an Unreal Engine Account and download the Unreal Engine Launcher at [https://www.unrealengine.com/ UnrealEngine.com] <br />
2. Once you have downloaded and installed the launcher you need to login with the Account you just created. <br />
3. Go to the "Unreal Engine" Tab and select "Library" on the left. '''(DO NOT press "Install Engine" as this will install the latest Engine build.)''' <br />
4. In the Libraries window press the '''"+ Add Engine Version"''', select your '''Engine Version''' and press on the yellow '''"Install"''' Button. Specify the installation path and continue. <br />
5. The engine will now download and install. Wait for it to finish and proceed with the next step.


Epic Games Launcher:
https://store.epicgames.com/en-US/download
Mod.io:
https://mod.io/g/pavlov
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 the one you want to mod with (shown below).
{| class="wikitable"
{| class="wikitable"
|'''Engine Version'''
|+
|'''Branch'''
!Shack & PC Engine
|-
!Legacy PC Engine
|'''UE4.21.x'''
|PC/Shack Main Branch
|-
|-
|'''UE4.27.x'''
|Unreal Engine 5.1.1
|Shack RC
|Unreal Engine 4.21.x
|-
|'''UE5.1.x'''
|PC Beta
|}
|}


:If you need further instructions on how to create an Unreal Engine Account and installing the engine please visit [https://docs.unrealengine.com/latest/INT/GettingStarted/Installation/index.html#bookmark1 the official Unreal Engine Documentation "Installing UE4" website]


== Download the PavlovVR ModKit (Workshop Tools) ==
NOTE: '''When installing UE5.1.1, select the following to install along with UE5.1.1:'''
1. You can download ModKit fromt the [https://github.com/vankruptgames/PavlovVR-ModKit the PavlovVR ModKit Github Page]. <br />
* Starter Content
2. Select the green "Code" drop down button and then select "Download ZIP". <br />
*Engine Source
*Android (needed for shack)
*Linux
Lastly, you need to install the Pavlov VR modkit corresponding to your Engine Version (once on github click "code" then "download zip").


== Setting up a new project ==
[[File:Setup_Example.png|thumb|Setup Example]]
1. Extract the "Pavlov.uproject" file, "Config" folder, and "Plugins" folder from the downloaded "PavlovVR-ModKit-master.zip" to your Unreal Project folder (Example: C:\My Documents\Unreal Projects\*ProjectNameHere*\*ExtractedFiles*) <br />
:NOTE: '''Do not rename the Pavlov.uproject.''' <br />
2. Are you creating a Pavlov PC map or Pavlov Shack (quest) map? <br />
:'''[Pavlov PC]''' Steam should be open and logged into an Account that owns Pavlov. Completely close and reopen your Epic Games Launcher and open the Pavlov project from the Libraries tab. <br /> <br />
:'''[Pavlov Shack]''' Do not open steam, or logout / put it in offline mode.  When you launch into UE4 editor, it should ask you if you are making a Shack Mod, answer yes.  Highly recommend following Junt's tutorial - as he goes into a variety of useful areas:  https://www.youtube.com/watch?v=dWMxWHxCa4U
3. Wait for the Editor to load (The first time you open UE4, expect it to hang at 45% for about an hour.) <br />
4. In the UE4 Editor, the first thing you have to do is to go to "Window" and select "Pavlov Workshop". <br />
5. In the Pavlov Workshop window - there are differences based on Pavlov PC and Pavlov Shack maps.
:'''[Pavlov PC]'''Press the "Create New" button '''once''' and wait for it to finish. This will create a new and unique UGCXXXXX folder inside the *ProjectNameHere*\Content\CustomMaps folder. Close the window. <br /> <br />
:'''[Pavlov Shack]''' On the setup tab, the map file name follows convention <creator>_<mapname>.  Eg. John_PoolDay for example. This will also create a new and unique SVR_<map name> folder inside the *ProjectNameHere*\Content\CustomMaps folder. Close the window. <br /> <br />
:NOTE: [Both PC and Shack] '''ALL Assets need to be inside the map folder (UGCXXXXX or SVR_YYYY_ZZZZ)''' otherwise those assets will not be included in the map and won't work ingame later on. '''DO NOT rename or delete this folder'''. <br />
6. Create a new Map asset by saving the Untitled template map anywhere inside the map folder. <br />
7. Open the "Definition" file inside the map folder and enter a Label (Map Name) and reference the Map file you just saved. You can set a Thumbnail for the map by importing a 512x512 PNG Image file. Do not change the UGC ID. Under Compatibility you can set the gamemodes your map will support.  For shack, make sure CUSTOM is selected so it is created as a custom map. <br />
:NOTE: '''Do not rename or delete the Definition file.''' <br />
8. Press the Save button and close the window. <br />
9. In the Modes window on the left of the screen, type "Pavlov" into the Search Classes field. <br />
10. Drag and drop a Pavlov Game Logic object anywhere on the map. Place any additional gamemode assets you want as well. (There should already be 1 player spawn placed; you need at least 1 to play the map) <br />
:NOTE: If the player spawn says "BAD SIZE", it's too far into the floor and you will fall through the floor when you spawn. <br />
11. Doubleclick the Pavlov Game Logic object you just placed and in the Details tab select the Definition file. <br />
12. Delete '''Player Start''' and '''Atmospheric Fog''' assets from map.  These assets do not work with Pavlov maps.  The player start will be replaced later with player spawns. <br />
13. Go to File and press Save All. The map should now be ready to Stage or Deploy. <br />
:TIP: Every time you open the project you will see a new unsaved, untitled template map. To make UE4 load straight into your actual map, go to Edit, select Project Settings, and in the Default Maps area reference your Map asset in the Editor Startup Map dropdown. <br />
:TIP2: Each new project will have a setting enabled by default that will launch Steam VR upon opening the project. Disable this in Unreal via Edit > Plugins, left panel: Virtual Reality > Steam VR. Uncheck the box and restart Unreal.




:For more information on how to develop a map and how Unreal Engine works, please visit [https://docs.unrealengine.com/latest/INT/GettingStarted/index.html the official Unreal Engine 4 Documentation "Getting Started" website] <br />
PC Modkit (UE 5.1.1):


== Migrating an existing map from another UE4 Project ==
https://github.com/vankruptgames/PavlovVR-ModKit/tree/5.1.1
Make sure you followed all the previous steps before doing this. <br />
1. Open the origin project with the Map you want to migrate. <br />
2. Find your Map file in the Content Browser, right click on it, and select "Migrate...". <br />
3. You will see a folder tree with all the referenced files of the map. Press "OK". <br />
4. A Windows Explorer prompt will appear. Select the "Content" folder of your destination Project (Default path is \Users\*winuser*\My Documents\Unreal Projects\) and press "OK". <br />
5. Close the origin project and open the Pavlov project you just migrated to. <br />
6. Move the migrated Map file and all the extra folders that came with it somewhere '''inside''' the UGCXXXXX folder. (Click the icon next to the "Seach Folders" field that toggles "Show the Sources Panel". Drag and drop the folders/files inside this panel to move them around.) <br />
7. Right click the Content root folder and select '''"Fix up redirectors"''' This will fix all the asset references so they are correctly pointing to each other within the UGCXXXXX folder. <br />


Shack Modkit (UE 5.1.1):


:For more information on how to migrate Assets to other Projects, visit [https://docs.unrealengine.com/latest/INT/Engine/Content/Browser/UserGuide/Migrate/ the official Unreal Engine 4 Documentation "Migrating Assets" website] <br />
https://github.com/vankruptgames/PavlovVR-ModKit/tree/Pavlov-Shack


== Mandatory Entities and their Configuration ==
UE4.21.x Modkit:


===Light===
https://github.com/vankruptgames/PavlovVR-ModKit


Pavlov VR only works with '''static baked lightning''' so you have to use a "Directional Light" entity with the '''"Mobility" set to "Static"''' <br />
Extract the modkit, and open the project. When loading the project, the modkit will stay at 45% while it compiles shaders. Once it finishes compiling, click window, open Pavlov Workshop then log in to your Mod.io Account (UE5.1.1 only).
Use a "Skylight" Entity for a realistic outdoor lightning. It also '''needs to be set to "Static"'''. <br />
For a more realistic look and better clarity in VR set the "Indirect Lightning Intensity" to a value between 2-6. <br />
You can use as many "Point Lights" and "Spot Lights" as you like, as long as they're set to "static" <br />


UE5.1.1 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 you need it).
#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.


NOTE: '''ALL assets used in your map MUST be in your UGCxxxxxxx folder.'''
== 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) if you're on UE5.1.1.


===Spawns===
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:
 
To be able to play your map, you need to have valid Spawnpoints. <br />
Use the "Pavlov Spawn" Entities from the "All Classes" category on the left in the "Modes" window, or use the searchbar at the top of the "Modes" window. <br />
You need to configure them according to the gamemodes you want to support with your map. <br />
<br />
{| class="wikitable"
{| class="wikitable"
!colspan="2"|Spawnflags
|+ 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.
|[[File:ChickenTrans.png|frameless|100x100px]]
|-
|Map
|The actual umap (level) to load.
|MyMap <small>(level)</small>
|-
|Quest Map
|Quest Map.
|MyMapShack <small>(level)</small>
|-
| Hidden
|Should this map be shown in the map combo boxes?
|Unchecked
|-
|Compatibility
| This is a filter for the map browser by game mode.
|<nowiki>Custom | Deathmatch | Team Deathmatch</nowiki>
|-
|-
|'''TeamID'''
| Custom Game Mode
|0 = Blue Team (Defenders) , 1 = Red Team (Attackers)
|Forces the server to load a bare bone game mode, everything else should be implemented by the GameLogic.
|Checked
|-
|-
|'''Dynamic'''
|Custom Game Mode Label
|Tick this for Deathmatch, This prevents spawning inside another person who occupies the spawn area
|For display purposes only in the server browser.
|MyGameMode
|}
 
 
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.
====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:
{| class="wikitable"
|+
|Global Info Class
|to
|Pavlov_GlobalInfo
|-
|-
|'''Only Team'''
| Player Info Class
|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
|to  
|Pavlov_PlayerInfo
|-
|-
|'''Special'''
|Player Proxy Class
|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
|to
|Pavlov_PlayerProxy
|}
|}


When using S&D "Special" spawns, make sure to leave some space to the right of it, as the other 4 Players will spawn in a line next to it. <br />
To set a spawn as DM only, use 2 in TeamID.


You can set these to your own custom info or proxies but these are the ones you should set 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:
{| class="wikitable"
|+
! colspan="2" |Spawnflags
|-
|TeamID
| -1 = Any Team
0 = Blue Team (Defenders)
1 = Red Team (Attackers)
|-
| 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.


:Protip: Select a spawn and move it '''above''' the position where you like it. Then press "END" to drop it to the floor. This will make sure that you'll spawn correctly ingame without falling trough the floor. <br />
Use together with TeamID.
|}When enabling Special, this allows 5-10 people to spawn from just one Pavlov_Spawn.
====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 are things that should be in your map before publishing to Mod.io or the Steam Workshop.
====Lights====
----All lights must be set to Static as Pavlov doesn't support Stationary or Movable.


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.


===Bot Navigation===
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.


[[File:UE4 Nav Mesh.png|thumb|The Navigation Mesh Visualisation in action]]
To make the Bots move on your map, you need to add a "Nav Mesh Bounds Volume", which you can find under the "Volumes" Category in the "Modes" Window. <br />
The Volume needs to cover '''ALL''' of the walkable space of your map. <br />
Press "P" on your keyboard to get a visual representation of the Navigation Mesh. The green area represents the walkable space for the Bots. <br />
'''DO NOT''' make '''ANY''' changes to the settings of the volume in the "Details" window, since this will cause the Bots to not move at all. <br />
The Bots will only move between areas that are clearly connected with the Navigation Mesh. (check the "P" Navigation visualisation) <br />
To connect areas that don't connect to eachother but are wide enough to fit a player, you can use a "Nav Link Proxy" <br />
Drag a "Nav Link Proxy" from the "All Classes" category in your map. The Proxy has two beacons that need to touch the green area of the Nav Mesh. <br />
Press "P" to see the bounds and the connection indicator.  Align the two beacons so they connect the two Nav Mesh areas. This way you can link a narrow doorway that won't connect to the Nav Mesh. <br />
You can change the Nav Link to be one way by changing the "Link Direction" setting in the "Details" window. <br />


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


Sphere and Box Reflection Captures are used to get these realistic reflections. Reflection captures prevent weapons from appearing black when playing.


===Reflection Captures===
You can them by searching for it in the "Place Actors" window.
====Bomb Plants====
----Bomb Plants are needed for the SND game mode to function properly and at least one bomb site is needed to function.


[[File:UE4 Reflection Captures.png|thumb|A Sphere- and Box Reflection Capture]]
You can have 2 bomb sites (A & B) but you can have as many bomb plants as you wish.
Reflection Captures are needed to have realistic reflections on all surfaces that are inside the reflection volume. <br />
There are 2 Types of Reflection Captures avaiable. "Box-" and "Sphere Reflection Captures". <br />
The only difference is the shape, so you can adjust the volumes to your level geometry. <br />
Having Reflection Captures in your map prevents shiny and reflective surfaces from looking pitch black ingame. (e.g. Weapons) <br />
Drag and Drop them into your Level from the "Visual Effects" Category of the "Modes" window. <br />
Adjust the size to the aproximate size of your room on eye level. <br />




===Bomb Spots===
By default the Bombspots will be treated as bombspot "A". To change it, simply tick the checkbox "Is B".


Search & Destroy maps need at least one bombspot. You can have up to 2 seperate bombspots ( A and B ) But you can have as many Bomb Placement Spots for the two Spots. <br />
The bomb will be placed at the root of the red arrow facing the direction of the arrow.
Drag the "Pavlov Bomb Spot" from the "All Classes" category on the left in the "Modes" window into you map. <br />
By default the Bombspots will be treated as bombspot "A". To change it, simply tick the checkbox "Is B". <br />
The bomb will be placed at the root of the red arrow facing the direction of the arrow. Leave some space between the wall and the arrow, otherwise the Bomb will clip into the wall. (About 5 Units) <br />


===King of the Hill===
Leave some space between the wall and the arrow, otherwise the Bomb will clip into the wall. (About 5 Units)
[[File:KOTHsettings.PNG|thumb|How to adjust King of the Hill for your map]]
====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<br />
----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.
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.
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.
====Materials & Physical Materials====
----Materials are needed in your map in order for it to have textures like brick walls, concrete floors, and more.
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.
You can get textures from these websites:
*https://ambientcg.com/
*https://polyhaven.com/textures
*https://www.textures.com/free (barely any free textures)




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.


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


===Blocking Volumes===
For Pavlov Shack, textures should be 512x512 as they'll get down-scaled at any other texture size higher than it.


Apart from regular walls, sometimes you want to use an "Invisible Wall" for blocking access to a certain area of the map. <br />
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.
To create an "Invisible Wall", drag a "Blocking Volume" from the "Volumes" category into your level and scale it to your liking. <br />
====Bot Navigation ====
The Geometry Editing Tool can also be used on this volume to easily adjust it to your Level Geometry. <br />
----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.
Use Blocking Volumes as a ramp over stairs to prevent the VR camera from aggressively hopping when walking up stairs. <br />
You can also use them for smoothing out narrow and busy areas to prevent getting stuck and assure smooth gameplay. <br />


===Killing Volumes===
The Nav Volume has to cover '''ALL''' of the walk-able space on your map.


Put a "Pavlov Kill Volume" about 1000 - 2000 units under your map, that is a bit bigger than your playspace.
This will kill players that somehow fell out of the map or gliched out of it. <br />
You can also use the Kill Volumes for harzardous enviroments 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) <br />


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.


Press "P" to see the Nav Bounds and the connection indicator.


===Pavlov Game Logic===


You must add this to your level or the Map will not show up ingame.<br />
NOTE''': DO NOT''' change the details of the Nav Mesh Bounds Volume or else it won't work!
This object can be placed anywhere in your Map.<br />
====Blocking & Kill Volumes====
Once you place the object in your level, you have to assign the definition file in the object's Details by doubleclicking it.<br />
----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.


===Ladders===


Overcoming walk-able angle restrictions is possible by using Pavlov Ladder Volumes.<br />
The Geometry Editing Tool can also be used on this volume to easily adjust it to your Level Geometry.
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.<br />
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 or have a large one that overextends as long as the overextended region isn't encompassing player-collidable surfaces you don't intend to be climbable.<br />
:TIP: '''Work in Player Collision View Mode to better see where the extents of the Volume need to be.<br />


===Bullet Penetration - Physical Materials===
Use Blocking Volumes as a ramp over stairs to prevent the VR camera from aggressively hopping when walking up stairs.


[[File:PhysMaterial01.jpg|thumb|Show Plugin Content]]
You can also use them for smoothing out narrow and busy areas to prevent getting stuck and assure smooth gameplay.
To enable bullet penetration, you first have to show the Plugin Content. Do this by selecting the View Options in the Content Browser and enabled Show Plugin Content. Next open your material, go into the General tab and select the Phys Material based on the object you're using. <br />
There are two options, normal and thin. Thin will be penetrable. <br />
Physical materials will also change the physics of the objects so metal sounds like metal, wood sounds like wood.<br />




== Shack Tips ==
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.
- Don't use textures bigger than 512p since everything will be downsized to max 512. <br />
- 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<br />
- Build your map from segments and merge Actors then as chuncks to improve performance<br />


== Testing 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)
There are different methods to test Pavlov PC and Pavlov Shack maps.  To test either type of map, start by openning the "Pavlov Workshop" window by clicking on "Window" > "Pavlov Workshop", then follow platform specific steps below. <br /><br />
====Ladders====
[Pavlov PC Map]
----Overcoming walk-able angle restrictions is possible by using Pavlov Ladder Volumes.
:Click on the "Testing" tab and then press the "Stage" button and wait for it to finish. It is finished when the 3 dots stop flashing and the "Stage" button returns.<br />
:This will create a local .pak file in your game's "\Pavlov\Content\Paks" folder, so you can load up the map offline for testing. <br />
:You can only Stage one map at a time. If you have already Deployed the map to The Workshop, you must be unsubscribed to it before playing a locally staged version of it.<br />
::NOTE: '''Your project won't Stage or Deploy if any asset filepaths exceed 260 characters.''' <br />
::TIP: '''View your Output Log when you Stage or Deploy to see if any errors or warnings occur. Do this by going to Window > Developer Tools > Output Log.''' <br />
<br />
[Pavlov Shack Map]
: Click on Server Map tab, make sure Android is checked for target, then press build selected platforms button. <br/>
: The map will be created in folder xxxx, which you then deploy to a dedicated server or your oculus quest for testing. <br />
::NOTE: For Shack build 24 and onwards, maps go in /sdcard/Android/data/com.vankrupt.pavlovbeta/files/maps. Before build 24, they were in /sdcard/pavlov/maps.


Testing tip:<br />
The player will only stick to player-collidable surfaces contained inside the Pavlov Ladder Volume.
Download the [https://my.hidrive.com/share/5rp-fojpmp copy2quest tool]  <br />
This application creates an entry in the explorer menu called "Copy to Quest"
To use it just right click on a folder or file and select "Copy to Quest".


In the path_config.txt you have to specify the Quest folder where the file or folder should be copied to.
Avoid overlapping Pavlov Ladder Volumes as this can cause the player to glitch between them.
The default is the Pavlov Shack maps folder. If you want to have another path, please change it.
The new path must start with the first folder on the Quest.
For example: "Android\data\com.vankrupt.pavlovbeta"


Install: Click on the "copy2quest_Install-Uninstall.exe"
        To make sure that the installation works properly, this should be done with administrator rights (Runs as Administrator)


        Make sure that the folder with the "copy2quest_Install-Uninstall.exe" is stored in a safe and
The Volumes only come as rectangular prisms.
        permanent place, because the exporter entry needs to access the .exe. There is no real installation


Uninstall: Click also on the "copy2quest_Install-Uninstall.exe". You can delete the folder now
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:'''


Small tip: You can also create a shortcut of the copy2quest_Install-Uninstall.exe and
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.
insert as destination the path of the folder behind the target location of the shortcut.
Example:
From target path: "D:\\QuestTools\copy2quest_Install-Uninstall.exe"
To target path "D:\\QuestTools\copy2quest_Install-Uninstall.exe D:\\UnrealBuilds\Glory_Stacks\SVR_Quacklin_GoldenEye_Stack"


Or create a batch and use copy2quest_Install-Uninstall.exe as command-line with the path as command


== Submitting and Updating your Map (Pavlov PC Maps only) ==
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.
To make your Map available on Steam, open the "Pavlov Workshop" window by clicking on "Window" > "Pavlov Workshop". <br />
===UE5.1.1===
Click on the "Deployment" tab and press the "Submit" button after you typed in some optional but recommended changenotes. <br />
----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 e playable on.
To update the Thumbnail or the Map name, edit the Definition file and press the "Sync Metadata" button on the Setup tab of the "Pavlov Workshop" Window (Where the "Create New" button was before). <br />
{| class="wikitable"
By default, the Steam Workshop page is set to "Hidden" and can only be interacted with by it's creators. (You can add people on your Friend's List as creators.) An orange prompt on the page will notify you if it's private still. If you're ready for the map to be available to everybody, set the visibility to "Public". <br />
|+Version
:NOTE: Before testing online, you must set the visibility to Public or Unlisted, or the server will kick to Datacenter.
!Windows
Just like any other map, you will need to Subscribe to download it. Make sure you delete the local staging .PAK of the map before doing this, if you made one. You may need to restart Steam as well. <br />
!Android
|-
|Pavlov VR
|Pavlov Shack
|}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".


:TIP: Add some screenshots to your Steam Workshop Page to promote the Map, and be sure the Thumbnail thoroughly represents the Map as it is used in the map selection screen ingame. To add screenshots, visit your Workshop Page on Steam and click on the "Add/edit images & videos" button on the right. <br />
Here, you can change your mod name, summary, and mod "logo".


== Creating an overhead map image ==
NOTE: '''The map logo is separate from the one that appears in the map boxes.'''


Add a Camera Actor to your map, preferable high (1000 units roughly) above your map<br />
Once your map is ready to be published, you can hit "Go Live", and now your map is published!
Rotate the camera -90° on the Y (green) axis so the camera is looking down<br />
===UE4.21.x===
Change the Projection Mode to Orthographic<br />
----Once you've completed your map, open the "Pavlov Workshop" window and open the "Deployment Tab". Press Submit. Building your map will take a while so just do other things while you wait.
Press G (Game View) which will hide editor stuff<br />
Right click the CameraActor and select Pilot 'CameraActor'<br />
Change the View Mode from Wireframe to Lit<br />
Change the Ortho Width so your whole map is in screen<br />
If you want to remove some ceilings from of the camera, increase the Ortho Near Clip Plane until the ceiling you want to be removed is hidden<br />


For taking a screenshot: Press F11 (Immersion Mode), press the arrow in the top left and choose "High Resolution Screenshot"<br />
Press the camera at the bottom right to create your screenshot. The screenshot will be saved in ../YourProjectName/Saved/Screenshots/Windows/ folder<br />


Stop piloting the CameraActor and delete the CameraActor. If you don't do this, your map will not load. <br />
Open steamcommunity.com.
:TIP: ''Pavlov VR does not use post processing effects, but many of them are on by default in the UE Viewports. You should disable them when Immersion Mode is active.'' <br />


== Troubleshooting ==
Login to your account and click on your profile. Open workshop items and find your map. When you're ready, set your map's visibility to public.




Your map is now uploaded.
==Troubleshooting==
This may be outdated as this was written for the UE 4.21 modkit.
{| class="wikitable"
{| class="wikitable"
!colspan="2"|FAQ
! colspan="2" | FAQ
|-
|-
|The "Create New" Button is missing.
|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.
| 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.
|The map does not update ingame or on the Workshop page.
Line 281: Line 296:
|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.
|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.
| Loading the map ingame leads back to the Lobby.
|Check the Definition file if the map is linked properly.
|Check the Definition file if the map is linked properly.
|-
|-
|Error "Definition not found".
|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.
|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.
|Map not loading ingame.  
|Check if you have added a Pavlov Game Logic and assigned the definition file to it.
|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.
|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").
| 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.
| 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.
|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.
|Nothing happens after I Stage or Deploy.
|Look at the Output Logs window for errors. Window > Developer Tools > Output Logs
| 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.
|I get an error saying "Pavlov installation not found", even though I'm building a Shack map.
Line 303: Line 318:
|-
|-
|I've done everything correctly but my Shack map isn't showing up in-game.
|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!
| 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 [https://discord.gg/Pavlov-VR discord.gg/Pavlov-VR].
 
If you need further support, check the pinned messages in the workshop channels at ''Discord.gg/Pavlov-VR''[http://Discord.gg/Pavlov-VR].
 
There's also an ''Unofficial Pavlov Map Making Guide''[https://docs.google.com/document/d/18twY6yTvGhKg6l9wXd3YArH4haX2B-cw3q5kaxULx3w/edit?usp=sharing] which may be more wordy and up-to-date.
 


There's also an [https://docs.google.com/document/d/18twY6yTvGhKg6l9wXd3YArH4haX2B-cw3q5kaxULx3w/edit Unofficial Pavlov Map Making Guide] which will get more into depth but is more outdated.




Thanks for Reading!
ty for reading!

Latest revision as of 01:30, 2 December 2023

Setting up the Project

To start making Pavlov Maps, you'll need to register an account for Epic Games and Mod.io (for UE5.1.1). For the Mod.io account, you'll need to verify your email (or else you can't make your maps!).

Epic Games Launcher:

https://store.epicgames.com/en-US/download

Mod.io:

https://mod.io/g/pavlov


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 the one you want to mod with (shown below).

Shack & PC Engine Legacy PC Engine
Unreal Engine 5.1.1 Unreal Engine 4.21.x


NOTE: When installing UE5.1.1, select the following to install along with UE5.1.1:

  • Starter Content
  • Engine Source
  • Android (needed for shack)
  • Linux

Lastly, you need to install the Pavlov VR modkit corresponding to your Engine Version (once on github click "code" then "download zip").


PC Modkit (UE 5.1.1):

https://github.com/vankruptgames/PavlovVR-ModKit/tree/5.1.1

Shack Modkit (UE 5.1.1):

https://github.com/vankruptgames/PavlovVR-ModKit/tree/Pavlov-Shack

UE4.21.x Modkit:

https://github.com/vankruptgames/PavlovVR-ModKit

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

UE5.1.1 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 you need it).
  4. 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.

NOTE: ALL assets used in your map MUST be in your UGCxxxxxxx folder.

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) if you're on UE5.1.1.

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:

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


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.

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 these are the ones you should set 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)

1 = Red Team (Attackers)

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 Special, this allows 5-10 people to spawn from just one Pavlov_Spawn.

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 are things that should be in your map before publishing to Mod.io or the Steam Workshop.

Lights


All lights must be set to Static as Pavlov doesn't support Stationary or Movable.

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.

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.


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

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.

Sphere and Box Reflection Captures are used to get these realistic reflections. Reflection captures prevent weapons from appearing black when playing.

You can them by searching for it in the "Place Actors" window.

Bomb Plants


Bomb Plants are needed for the SND game mode to function properly and at least one bomb site is needed to function.

You can have 2 bomb sites (A & B) but you can have as many bomb plants as you wish.


By default the Bombspots will be treated as bombspot "A". To change it, simply tick the checkbox "Is B".

The bomb will be placed at the root of the red arrow facing the direction of the arrow.

Leave some space between the wall and the arrow, otherwise the Bomb will clip into the wall. (About 5 Units)

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.

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.

Materials & Physical Materials


Materials are needed in your map in order for it to have textures like brick walls, concrete floors, and more.

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.


You can get textures from these websites:


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

For Pavlov Shack, textures should be 512x512 as they'll get down-scaled at any other texture size higher than it.

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.

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.

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.

Press "P" to see the Nav Bounds and the connection indicator.


NOTE: DO NOT change the details of the Nav Mesh Bounds Volume or else it won't work!

Blocking & Kill Volumes


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.

Use Blocking Volumes as a ramp over stairs to prevent the VR camera from aggressively hopping when walking up stairs.

You can also use them for smoothing out narrow and busy areas to prevent getting stuck and assure smooth gameplay.


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.

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)

Ladders


Overcoming walk-able angle restrictions is possible by using Pavlov Ladder Volumes.

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.


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.

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 (CMD+S on Mac). Your map is now ready to be published.

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 e playable on.

Version
Windows Android
Pavlov VR Pavlov Shack

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

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!

UE4.21.x


Once you've completed your map, open the "Pavlov Workshop" window and open the "Deployment Tab". Press Submit. Building your map will take a while so just do other things while you wait.


Open steamcommunity.com.

Login to your account and click on your profile. Open workshop items and find your map. When you're ready, set your map's visibility to public.


Your map is now uploaded.

Troubleshooting

This may be outdated as this was written for the UE 4.21 modkit.

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.


ty for reading!