ALiVE : Uprising — The Base ALiVE Mission

Eric T Grubaugh
The Creation of ALiVE : Uprising
6 min readMay 25, 2015

This is a quick guide to the base setup I use for any ALiVE mission; it discusses the basic required modules and the set up of a preview unit to use while building and debugging. A link to the official ALiVE documentation is provided for each module; I highly recommend reading each page as you get to it, and then experimenting with that module in the editor. At the very least, place the module by itself in the editor, and take a look at its configuration page in-game so that you can match the documentation with the editor interface.

The base ALiVE mission setup

Tutorial Series

  1. The Uprising Backstory
  2. Familiarization and Resources for building with ALiVE
  3. The Base ALiVE Mission (You are here)
  4. Creating the Occupying Force
  5. Creating Civilian Population
  6. Creating the Asymmetrical Force
  7. Creating the Attacking Force
  8. Creating Playable Forces
  9. Troubleshooting Information

The ALiVE (Required) Module

The very first and most essential module to place is the ALiVE (Required) module. In addition to enabling ALiVE functionality in your mission, the purpose of this module is to configure:

  • ALiVE version matching for players — you can either warn or kick players when their version of ALiVE does not match the server’s.
  • Allow Single Player Save — This allows players to save the mission data without a database. Be warned that allowing this may cause many clients to crash because of the massive amount of data. SP Save is disabled by default.
  • Advanced Markers — Enable or disable ALiVE’s Advanced Map Markers and SPOTREPs.
  • Admin Actions — Enable or disable access to ALiVE’s Admin functionality.
  • Garbage Collector settings — The garbage collector is responsible for periodically cleaning up dead units or unused items to keep the mission performing well; you can configure how often the garbage collector runs and what items it will ignore.

The Virtual AI System Module

The second required module to place is the Virtual AI System module, which is responsible for the management of AI simulation. This module is the reason that ALiVE can run extremely large scenarios without crippling the performance of the system running the mission. Essentially, it controls when a group of AI units should be spawned into the game or can be relegated back to the virtual layer of the mission. You can use this module to control how many groups of AI can be active at any given time. You can also configure it such that virtualized (de-spawned) AI units move slower than a spawned in unit would.

The Debugging Unit

While you’re building your mission, you’ll want to frequently preview and debug your mission to make sure each piece works the way you expect. I find it best to do this with a single playable unit and the Zeus module. This may be common sense for some, but I feel it’s worth mentioning explicitly.

  1. Place a Player unit anywhere on the map. I prefer to put them way out of the way of any action, like out on their own island. The type of unit is irrelevant and up to you; all that matters is that the unit is a Player (not just Playable).
  2. Place the Zeus Game Master module. Set it up as depicted below so that whoever the Admin user is has Zeus access, but is not restricted to the Zeus interface. If you don’t want this functionality available once your mission is live and ready, just delete this module before publishing.

Now you don’t have to worry about tracking down your player unit and dragging them to the right area that you’re trying to preview; you can simply start the preview then immediately switch to Zeus and fly yourself wherever you need to watch.

Pro Tip: ALiVE treats the Zeus camera just like a Player unit and will spawn in any virtualized AI around the camera and virtualize those far from the camera. You can use this to test your virtualization distance settings in critical areas. You can also use it to play around and get an understanding of how ALiVE represents virtualized and non-virtualized units on the map in debug mode.

description.ext

I’ve also set up a very basic description.ext file that you can use for simple missions. For those not familiar, the description.ext file just contains several configuration options and settings for describing your mission to both the game engine and other players.

Once you’ve saved a mission that you are editing, ARMA will create a mission folder where any files you need for that mission (images, scripts, etc) can be placed. By default, this is at:

C:\Users\<your username>\Documents\Arma 3 — Other Profiles\<your profile name>\missions\<your mission name>

I bookmarked the missions folder in my file explorer for convenience. Simply create a new file with your favorite text editor (I recommend Notepad++) and save it as “description.ext” in the folder for your mission. Then you can copy and paste this into the file:

/*
Sets the overall mission attributes, and defines some global entities that
will be available to other scripts

See Also:
* https://community.bistudio.com/wiki/Description.ext
* https://community.bistudio.com/wiki/Loading_Screens
* https://community.bistudio.com/wiki/Mission_Overview
* https://community.bistudio.com/wiki/Multiplayer_Game_Types
* https://community.bistudio.com/wiki/Arma_3_Mission_Parameters
*/
// The author of the mission; the name will be shown above the loadScreen
// displayed as “by <author>”
author = “GRUBES”;
// Name of the mission shown in a larger font above the loadScreen
onLoadName = “Mission Name”;
/* Mission Overview details */// Image displayed during Mission Selection. Image should be .paa format and
// in 2:1 aspect ratio.
overviewPicture = “”;
// Description of the mission displayed during Mission Selection
overviewText = “”;
// Game Type settings
class Header {
gameType = CTI;
minPlayers = 1;
maxPlayers = 40;
};
/* Intro Loading details */// The description displayed while the Intro is loading
onLoadIntro = “”;
// Whether to display time and date while the Intro loads
// 1 = visible; 0 = hidden
onLoadIntroTime = 1;
/* Mission Loading details */// The description displayed in the mission browser and while the Mission is
// loading
onLoadMission = “Mission Description”;
// Whether to display time and date while the Mission loads
// 1 = visible; 0 = hidden
onLoadMissionTime = 1;
// The image to display while the Mission loads; the path is relative to the
// mission folder. Image must be in PAA file format with 2:1 aspect ratio,
// ideally 1024x512 pixels. Different aspect are rendered correctly as well,
// but won’t cover the whole area.
loadScreen = “”;
/* Respawn settings */// Respawn mode — can be any of:
// 0 or “NONE” : No respawn
// 1 or “BIRD” : Respawn as a seagull
// 2 or “INSTANT” : Respawn exactly where you died
// 3 or “BASE” : Respawn on markers set by mission maker
// 4 or “GROUP” : Respawn into an AI unit in your group, otherwise seagull
// 5 or “SIDE” : Respawn into an AI unit on your side, otherwise seagull
respawn = 3;
// Respawn timer for players, in seconds
respawnDelay = 15;
// Respawn timer for vehicles, in seconds
respawnVehicleDelay = 300;
// Show scoreboard and timer during respawn countdown
// 1 for visible, 0 for hidden
respawnDialog = 0;
// Whether to respawn player upon joining
// 1 will respawn the player and run the respawn script
// 0 will not respawn the player but will run the respawn script
// -1 will not respawn the player nor will it run the respawn script
respawnOnStart = 0;
// Respawn templates for things like custom camera modes
respawnTemplates[] = {};

Of course update the settings according to your mission.

Once I had my base mission in place for Uprising, I started building the Occupying force.

Tutorial Series

  1. The Uprising Backstory
  2. Familiarization and Resources for building with ALiVE
  3. The Base ALiVE Mission (You are here)
  4. Creating the Occupying Force
  5. Creating Civilian Population
  6. Creating the Asymmetrical Force
  7. Creating the Attacking Force
  8. Creating Playable Forces
  9. Troubleshooting Information

--

--

Eric T Grubaugh
The Creation of ALiVE : Uprising

I advise NetSuite development leaders on building sane, sustainable software practices.