Code34/Sandbox – User
Arma 3 Apex introduces new main menu.
World Scene
World scene is a scenario shown behind main menu when a specific terrain is loaded and -skipIntro is not used. If you're playing on Altis and leave to main menu, Altis scene will be used.
The scene is configured with the terrain and is responsibility of a terrain creator.
Guidelines
The scene should meet following criteria:
- High FPS is important! Lower performance makes navigating the menu uncomfortable.
- Low view distance (~200 m) is recommended.
- Camera looking down or towards sloped terrain, so the view distance is not as apparent.
- All content of the scenario should be placed in the Intro phase.
- Camera is static, all the movement should be in the scene (e.g., vegetation in the wind, sea, wildlife, etc.)
- Avoid following settings (not mandatory, it may work in some cases):
- Unlit night scenes (dark menus on dark scene don't look well).
- Bad weather (hides shadows).
- Avoid following settings (not mandatory, it may work in some cases):
- The scene should work on 16:9 screen. Multiple monitors doesn't need to be considered, as the main menu shows a grey background there.
Configuration
class CfgWorlds
{
// Class of your terrain
class MyWorld
{
cutscenes[] = {"MyWorldScene"}; // Class names of used scenes. When more than one is present, the system will pick one randomly.
};
};
class CfgMissions
{
class Cutscenes
{
class MyWorldScene // Class referenced in 'cutscenes' property in CfgWorlds
{
directory = "\MyAddon\MyScene.MyWorld"; // Path to scenario with the scene
};
};
};
Scenario
- Open Eden Editor on the desired terrain
- Switch to Intro phase and place a player character (the system will not work without a player!)
- Save the scenario using the name defined by directory property in config (MyScene.MyWorld in our example)
- Open scenario folder (Scenario > Open Scenario Folder)
- Create initIntro.sqf file, it will be run automatically at the scene start
- Copy the code below to the file
[ //--- Underwater plane { ["InitDummy",["Stratis",[1445.92,4802.16,-4.05235],140.191,0.27,[-9.09091,-10.4773],2.74605,0,1049.08,0.00329716,1,1.10852,-0.157568,1.23792]] call bis_fnc_camera; setviewdistance 200; }, //--- Aegis { ["InitDummy",["Stratis",[2622.76,580.76,16.5994],25.2349,0.53,[-44.4346,0],0,0,526.374,0.00669019,1,1,0,1]] call bis_fnc_camera; } ] call BIS_fnc_initWorldScene;
The script will automatically add a subtle vignette and play main menu theme repeatedly.
- Replace scenes in the array with your scenes captured by Arma 3: Splendid Camera. Make sure to use "InitDummy" string at the beginning. The example currently uses two Stratis scenes, you replace them with as many scenes as you wish.
- Optionally, add assets to the scene in the editor if needed (e.g., soldiers walking around, parked vehicles, etc.)
- Move the scenario folder to your addon folder (as defined by directory property in config; \MyAddon\MyScene.MyWorld in our example)
Spotlight
Three large square buttons in the middle of the main menu are spotlight buttons. While the left and right ones are hard-coded, the middle one can be used by any mod-maker.
It's possible to define a list of spotlights, with the system picking randomly from them every time the menu refreshes (i.e., startup or returning from sub-menu).
Configuration
class CfgMainMenuSpotlight // RscDisplayMain >> Spotlight works but is considered obsolete since SPOTREP #00064
{
class CoopCampaign
{
text = "Coop Campaign"; // Text displayed on the square button, converted to upper-case
textIsQuote = 1; // 1 to add quotation marks around the text
picture = "\a3\Ui_f\Data\GUI\Rsc\RscDisplayMain\spotlight_1_apex_ca.paa"; // Square picture, ideally 512x512
video = "\a3\Ui_f\Video\spotlight_1_Apex.ogv"; // Video played on mouse hover
action = "ctrlactivate ((ctrlparent (_this select 0)) displayctrl 101);"; // Code called upon clicking, passed arguments are [<button:Control>]
actionText = $STR_A3_RscDisplayMain_Spotlight_Play; // Text displayed in top left corner of on-hover white frame
condition = "true"; // Condition for showing the spotlight
};
class AnotherCoopCampaign
{
text = "Another Coop Campaign";
picture = "\a3\Ui_f\Data\GUI\Rsc\RscDisplayMain\spotlight_1_eastwind_ca.paa";
action = "ctrlactivate ((ctrlparent (_this select 0)) displayctrl 149);";
actionText = $STR_A3_RscDisplayMain_Spotlight_Play;
condition = "isKeyActive 'FinishedCoopCampaign';";
};
class JoinServer
{
text = "Splendid Server";
picture = "my_mod\data\spotlight.paa";
action = "connectToServer ['127.0.0.1', 2302, '']";
actionText = "Join the Splendid Server";
condition = "true";
};
};