Virtual Reality Custom Courses – Arma 3
Here's a basic guide on how to configure your own VR training courses:
If there are some community Courses configured, a new selector will appear with a list of the Courses. This selector will have different colour than the official ones.
Config
class CfgVRCourses { class Default; class MyCourse1: Default { title = "Course Name"; icon = "\A3\Structures_F_Bootcamp\VR\Helpers\Data\VR_Symbol_default_CA.paa"; class Stages { class Stage1 { title = "Stage 1 Name"; function = "BIS_fnc_VRFunctionName1"; }; class Stage2 { title = "Stage 2 Name"; function = "BIS_fnc_VRFunctionName2"; }; class Stage3 { title = "Stage 3 Name"; function = "BIS_fnc_VRFunctionName3"; }; }; }; };
icon: Path to icon that will be shown on a billboard throughout the Course.
title: Text that will be shown ingame during Course selection or when loading a Stage.
function: Function to run for each Stage. Must be defined in cfgFunctions (see https://community.bistudio.com/wiki/Functions_Library_%28Arma_3%29#Adding_a_Function, VR functions are usually defined in category "VR").
Functions
Stage functions are typically FSMs (you can get the FM editor here: https://community.bistudio.com/wiki/BI_Tools_2.5). There are certain guidelines to follow:
- player's starting coordinates are always markerPos "BIS_center"
--- you should use coordinates relative to this one for spawning your assets
- there is a brief timeout before player gains control in a Stage - you can spawn all your assets during this period
--- you can determinate the moment player gains control by checking variable BIS_interruptable for TRUE
--- any mission tasks or hints should be created after this period, once player is actually ingame
- there is a logic unit used for icon helper (group icon) - BIS_icon and its group, BIS_iconGrp
--- do not delete these!
--- example of use:
BIS_icon attachTo [BIS_UAV, [0,0,-3.5]]; BIS_iconGrp setGroupIconParams [BIS_TT_colorWarning, "", 1, TRUE];
- if player wanders too far away from his starting position, he is automatically moved back - default allowed radius is 100m
--- this can be changed via variable BIS_stageArea in a Stage function
--- example of use:
BIS_stageArea = 150;
- any assets you spawn will be deleted automatically when the Stage ends
- a Stage is completed by using this code:
call BIS_fnc_VR_stageDone;
- always make sure you've properly terminated your function upon Stage end; keep in mind player can fail a Stage too
--- for Stage failure, use code before you terminate the function:
[] spawn BIS_fnc_VR_stageFailed;
--- condition to check player's "death" or him leaving the Stage:
damage player > 0.015 || !BIS_interruptable
--- you don't need to call any code in this case, just make sure to properly terminate the function
Stage function example
To help you understand how a typical Stage FSM may look like, here's a link to a basic Stage function (it's a slightly tweaked Stage 2 of the Launchers Course): https://www.dropbox.com/s/5429wbhsl4f0sky/fn_VRCourseExample.fsm
The End
I hope I covered everything here. Have fun creating your own VR Courses!