MA:CE Tutorial Builder


Midair Ingame Tutorials are created from a series of Steps that are in turn based on Drills

A tutorial may be ‘basic movement’, wherein you have steps for ‘jetting up’, ‘skiing forward’, ‘skiing and jetting’. 

To open the tutorial menu, the default bind is ctrl-t. This is changeable in the settings menu. Tutorial data can be saved and loaded from the practice menu, defaulting to ctrl-p. Both menus are intertwined and data is shared. Press the ‘Create Tutorial’ header button in the tutorial menu to begin creating a tutorial. Individual tutorial steps are saved based on their names, and are contained within a parent tutorial, also saved via name. You can clone steps by saving an existing step with a new name, and remove undesired steps with the ‘remove’ button when that step is selected.

To playtest a tutorial, go to the ‘Play Tutorial’ Menu, select the desired tutorial and tutorial step, and hit ‘start step’. If a recording of the step is available, you can also hit the ‘Watch Step’ button to watch the step be performed.

Displaying Key Binds

It is important in the tutorial descriptions to include the actual user keys to perform various actions — telling them to jet without telling them the associated keybind is pointless. 

Several automatic text -> keybind conversions have been added to facilitate this. 

Available are:

  • JumpJet
  • Skate
  • ThrowGrenade
  • Suicide
  • TossFlag

In the tutorial step description, Add text like ‘When you are low health, throw the flag to a teammate with [TossFlag]’, which will be auto translated to ‘When you are low health, throw the flag to a teammate with [T]’

If you need one that isn’t here, message DL

Tutorial Hierarchy:

  • Tutorial
    • Tutorial Name
    • Tutorial Author
    • Tutorial Description
    • (One or Multiple) Tutorial Steps
      • Step Name
      • Step Description
      • Associated Drill – The drill being performed as a tutorial step. Functions as a normal drill, set up in the drill menu. Includes things like starting location, how to ‘win’ the tutorial step (be in a particular location, kill X bots, return a flag, etc), what bots are involved.
      • Associated Route – A recorded ‘route’ of the drill being performed to allow the player to watch the tutorial step being performed.
      • Display Route Trail – If a route recording is selected, this will display the route trail for it while the tutorial step is loaded.

Drill Creation

Each tutorial step points to a drill that contains most of the logic for the scenario presented to the player. Drills are highly configurable, but their core is simply a Victory Type. This specifies the condition that will end the drill successfully. If a drill length other than 0 is specified, the drill will also end after that many seconds in failure if the win condition has not already been met.

Drill Hierarchy:

  • Drill Name
  • Drill Description
  • Bots in Drill — all bots that have been added to the drill. Configure bots in the ‘bot’ menu, all bot behavior is wrapped up in the bot itself.
  • Available Bots — bots that have been configured and saved, but not yet added to this particular drill
  • Spawn Location — when the drill is triggered, it will warp the player to this spawn location. How much health, any movement speed, etc, is configured in the Locations menu.
  • Victory Type – Will trigger the end of the drill/tutorial step when this condition is met. Can also have a Victory Amount, for thinks like # of kills or movement speed.
  • Drill Length – Time at which to end the drill/tutorial step if no victory condition has been met.
  • Number of bots – will randomly choose bots added to the drill to spawn, up to this number. 
  • Can Repeat Bots – If yes, it will allow the same bot to be spawned multiple times in the drill. If you want each bot once, choose FALSE for this and set the number of bots equal to the number of bots you added to the drill.
  • Reset Flags — if true, will reset the flags to stands when the drills starts.

Bot Creation

Bots are created in the ‘bot’ sub-menu in the practice menu. You can configure what type of bot it is (Offense, Stay At Home, only runs assigned routes with no AI, etc), what routes it knows how to run (only matters if it is offense or route runner bot), and a number of other properties for how the bot behaves.

Bot Properties:

  • Bot Name
  • Bot Description
  • Known Routes – All routes the bot knows how to execute. It will randomly choose one of these options. Only matters if it is a route runner (follows route with no AI), or if it is Offense.
  • Available Routes — any configured routes not yet added to the bot.
  • Bot Type – Determines the AI to run. Route Runner will just follow the configured route path (good for defensive drills), Stationary Defense will aim and shoot but not move, all others just try to play their LT position. LO will not run routes.
  • Accuracy – Dictates how much the bots will intentionally miss their shots, and time between shots.
  • Spawn Location – if not specified, will spawn at a standard spawn point. Otherwise, choose from configured locations to dictate how and where the bot spawns.
  • Bot Spawn Type – Can specify at what point of a route the bot will spawn, if it runs routes.
  • Shoots – If false, bot doesn’t shoot.
  • Takes Damage – if true, bots following a route will not reset their health at each route waypoint.
  • Loops – If true, at the end of a route path, the bot will restart the path
  • Respawns — will respawn after dying.
  • Movable — if true, once a bot following a route path has been damaged, it will no longer auto-warp to the route markers
  • Swap Team — if true, will spawn as an enemy

Making Tutorials

Using these building blocks, you can make tutorials for many situations. A demo tutorial can be found in the ‘Movement’ section of the ‘How To Play’ menu in the main menu.

Load this in the practice menu.

Some examples:

Flag stand defense combo tutorial – add a bot that is a route runner that knows 1 route, set to spawn 5 seconds before grab. Make them movable and take damage. Set a spawn location for the player near their flag stand, and a win condition of NoFlagCarrier. Run the drill as a drill, and record yourself completing it by successfully using the stand combo. Save that recording as a route, and set that route into the drill to show players how to use the stand combo. 

Basic Movement Tutorial – Add a Location for a target area, and a location to spawn the player at. Give them X seconds to go from the spawn location to the target, longer than it would take to walk, so they need to skii.

Combat practice – Create 3 bots in the Stay At Home role, and spawn the player near the enemy flag. Have a victory type of total kills, with a victory amount of 2, and a duration of 10 seconds.

Flag Catching – Record yourself grabbing the enemy flag and throwing it back to your stand. Add that recording to a Route Runner bot, which spawns on your team. Set a spawn location near where the flag lands. Add in additional recordings of tosses to add some variety to the drill. Use the flag caught victory type.

Patch Notes –

This patch includes a new key bind for jetting without the auto jump. It also contains new flag capture audio and updates to practice mode and a number of maps.

General Changes

  • Added new key bind under Movement for jetting without the auto jump. Four options are now: Jump/Jet, Skate, Jump, Jet
  • Updates to flag capture sounds.
  • Playername countermeasure updates.

Practice Mode

  • Bot count calculation updated.
  • Completing a drill will no longer clear bots if ‘leave old bots’ is selected.
  • Prevented game from auto-ending if there’s only one player.


  • CTF – Nightflare: Floating spawn fixes and changes to flag stand and base.
  • CTF – Ingonyama: Floating spawn fixes.
  • CTF – Yolandi: Terrain updates.
  • CTF – Forlorn: Terrain, spawn, fog density and artwork updates.
  • CTF – Hadrian: Spawn tweaks, shadow, skybox and asset mirroring updates.

Patch Notes –

This patch includes a number of changes to bots, practice mode, stats, maps and also includes a new map and voicepack.

General Changes

  • Fixed ghost players spawning.
  • Player names now require two alphanumeric characters to avoid countermeasures.
  • Auto-balance no longer swaps players while pub starter mode is active.
  • Escape menu now closes when hitting spectate or change team.
  • End of match message trimmed to “Match has ended”.
  • Doppler effect added to jetpack.

Practice Mode

  • Updated route finder to auto-display the nearest route upon spawn (if active prior to spawn).
  • Added option in drills to not kill all existing bots.


  • Bots now earn stats for kills and damage.
  • Improved capper bot AI so they’ll respawn if their route fails.
  • Allowed game to start with just bots and one player.


  • Rounded stats to nearest integer.
  • Added Damage % stats.


  • Updated loading screen and other image assets on Kryosis and Yolandi.
  • CTF – Forlorn: Terrain and base rework.
  • CTF – Ingonyama: Overhauled and updated flagstand, general art updates.
  • CTF – Relay: Flagstand and terrain tweaks.
  • CTF – Yolandi: Terrain smoothing, spawn tweaks, flagstand blockout, mountains added.
  • CTF – Hadrian: New prototype map added.


Patch Notes –

Another Hotpatch that fixes an issue where players positions on the client are different to the server resulting in nonreg’s.

General Changes

  • Fixed an issue where smoothing was applied to players in game that was only intended to run during slowmo demo playback, this was causing player models to sometimes be offset slightly on the server vs client and causing non registration of hits.
  • CTF-Kryosis stand overhaul to make it more playable
  • Cap sound effects adjusted again
  • ESC menu graphics tweaked
  • Added back some garbage collection code that should reduce stutters

Patch Notes –

Hotpatch to address issues with client side projectiles

  • Revert a change that was causing timing issues with client projectiles
  • Fixed an issue with “test” crosshair crashing the game
  • Fixed an issue with ghost players spawning
  • CTF-Brynhildr: minor lighting tweaks
  • Improvement on how demo playback handles variable speed playback
  • Adjustments to cap SFX and announcer timing on cap/game end, boosted volume of remaining announcer lines to match previously boosted ones, based on player feedback

Patch Notes –


This patch has been a long time coming, so there’s a lot to go through!
We’ve completely overhauled the UI, added some limited HUD customization, added and overhauled a lot of maps, added some really cool new Practice mode features, new skies and foliage, and done a whole bunch of optimization work!


  • Added all new skies across the entire game
  • Refined and optimized foliage assets across the entire game
  • Temporarily removed the TDM and Arena game modes. They’ll come back once we’ve fixed some critical issues

Bug fixes

  • Fixed Out of Bounds grid wall thickness to prevent people from escaping bounds without flag timer 
  • Fixed blurry IFFs on lower quality settings
  • Fixed Chaingun overheat visuals – should be more reliable
  • Fixed chaingun heat for spectator and demos
  • Possible fix for flag de-sync in field bug.


  • Fixed various performance issues related to UI
  • Fixed garbage collection issues that could result in stuttering
  • Fixed audio loading issues that could result in stuttering
  • Optimized culling distance settings across various maps
  • Added AMD FidelityFX Support for AMD GPUs
  • Added an Integrated GPU Mode setting for low end hardware
  • Added a few more rendering commands for low end hardware to reduce VRAM usage 
    • r.streaming.limitpoolsizetovram 1
    • r.streaming.scaletexturesbyglobalmybias 1
    • r.streaming.dropmips 2
    • If you want to dive in, more info can be found here
  • Made various improvements to the lowest graphics settings
  • Tempest projectile effect now has a simpler version on low settings


  • Various maps have been either removed or revamped. This is part of our ongoing process to keep refining the map pool.
  • Removed TDM and AR maps from map lists for now to prevent crashes, as neither mode currently works
  • New Maps for initial gameplay testing: CTF-Yolandi, CTF-Sunward
  • CTF-Raptor
    • Various fixes to collisions and other minor bugs
  • CTF-Elite 
    • Updated fog values
    • Fixed some collision issues on flagstand
  • CTF-Brynhildr 
    • Updated fog values 
  • CTF-Forlorn changes:
    • Changes to main flag base, spawn locations
    • Shrunk OOB
    • Added blocking volume to upper area of side tower to prevent camping bug
    • Mirrored health kit  in both bases 
  • CTF-Twilight Grove
    • Players no longer get stuck in tree stump behind base
    • Spawn tweaks
  • CTF-Exhumed 
    • Spawn tweaks
  • CTF-Ingonyama
    • Flagstand overhaul – prototype
  • CTF-Nightflare 
    • Flagstand and base overhaul – prototype.
    • Minor terrain changes.
  • CTF-Minora
    • Foliage and general visual updates 
    • Fixed a bug where certain spinning components would start spinning in the wrong direction
  • CTF-Silvas
    • Minor art updates, some grass and foliage added
  • CTF-Relay (formerly Coral) 
    • Art overhaul
    • Spawn tweaks


  • New announcer voice!
  • Boosted volume on flag grab announcer to match other lines
  • Announcer removed from flag grab notification
  • Another Male voice pack added
  • New flag sound cues
  • Changed voicebind ‘Heh, woops’ to ‘Oops!’
  • Changed 250+ flag grab sound


  • Fix demo playback for long demos and reduce stuttering
  • Fix demo pausing and unpausing
  • Fix demo playback stuttering because of pitch not being smoothed
  • Add demo rewind speed variable
  • Fixed an issue where the server could overwrite a demo before it was uploaded
  • Updated compression for smaller file size

Practice Mode 2.0 – Dodo Bot evolves!

Bots now can play CTF, move around, shoot back, and run cap routes. Configure a bot via the ‘Bots’ tab in the practice menu. When configuring a bot, you can set them as Cap, Chase, LO, or Stay at Home, and they will play the position (as best they can). The old style dodo bots can be created as ‘Route Runner’ bots, which will only follow a recorded route path.

Several new drill victory conditions have been added, and instead of adding routes to a drill, you add bots (which in turn themselves know routes). 

Can store multiple locations and warp between saved locations, or use saved locations as bot/drill spawn spots.

Pub Starter Mode – Automatically spawns in bots on both teams up to a desired player count (ie 7v7). As real players join or swap teams, the bots will be kicked/swapped so teams stay even. Can be toggled on at the server config, or via the practice menu.

Route Finder – New tool available for showing route paths during games. To help new players learn routes, they can use Route Finder (default ctrl-c) to display the route trail that starts nearest to them. Cycle through available routes with – and +, configurable in settings. Update the default loaded routes via the practice files found in MidairCE\Content\Practice\. Route trails are visible to only the player who uses the route finder, and are not available with tournament mode on.

Tutorial Builder – GUI for building tutorials from practice mode drills and routes. Opens via Ctrl-T. Help us out and build a tutorial! Check out an example basic movement tutorial from the ‘Movement’ topic under ‘How To Play’. Playback of the tutorial currently happens via the builder menu, a more focused UI for playing tutorials will be implemented soon.

For more detailed information on Tutorial Builder and how to use it (and tips for Drill/Bot creation), see here

Practice (Main Menu) – Quickly open up a local map via the Practice button in the main menu, either solo or with bots.

How To Play (Main Menu) – Skeleton implementation of How To Play menu, with video tutorials and links to in-game tutorials. More to come!


Added experimental, configurable, method of increasing direct disc/nade stopping power. Configurable via server settings and admin console command, it will increase the velocity cancellation properties of direct hits (non splash) based on the configurable factor. We can experiment with it as needed, and it is NOT enabled by default.


  • UI overhaul
    • User Interface across the entire game has been redesigned and updated. This is still a work in progress and we’re interested in hearing your feedback.
  • Added menu setting for hiding hit markers
  • Added menu setting for hiding Quick Chat (V-Chat)
  • Added customizable HUD support through console commands
  • Added IFF scaling, Crosshair scaling. A basic minimal HUD created by JP can be found here
  • Added Camera Roll, Steady zoom in/out for spectate/demos. Montage tools!

Quality of Life

  • Updated auto kick to only happen in public servers
  • Prevented enabling or disabling practice mode and tournament mode if already enabled/disabled.
  • Added keybind to Pause/Unpause a match (ctrl-v default)

JP’s Minimal HUD

/jp minimal hud

/weapon hud 105

hud.VerticalBox_0.px 5 1.2 1.2

/health and energy

hud.SizeBox_0.px 2000 -5 1.2 1.2


hud.SizeBox_1.px -500


hud.WBP_Speedometer_53.px 980 -55

Patch Notes –


  • Minor texture optimizations across the board.
  • Tweaked texture streaming options.
  • Possibly fixed an issue with players colliding with their own Grenade Launcher grenades.
  • Possibly fixed an issue with flag inbounds status not being correctly updated, needs more gameplay testing.
  • Fix second loadout grenade slot.


  • Adjusted underwater audio filter.
  • Fixed an issue where the Chaingun sound would loop.
  • Added soundcues for match start/end countdown under content/audio/notifications/countdown.
  • Added announcer lines to flag grabbed game event audio notifications.


  • New map: CTF-Forlorn.
  • CTF-Raptor: New redesigned bases and art pass.
  • CTF-Silvas: Updated base art.
  • CTF-Elite: Increased fog levels by 25%.
  • CTF-Brynhildr: Increased fog levels by 25%.
  • CTF-Trailblazer: Expanded width of red OOB, Rotated inner oob by 45 degrees and adjusted dimensions, Added a spawn on top of the small tower, Added a small health pickup on top of the center building.

Patch Notes –

Version of Midair: Community Edition will be live tonight


  • Tempest explosion sound buffed.
  • Chaingun bullet audio reduced
  • Reduced blaster projectile volume
  • Enemy flag grab and return sound notifications increased in volume


  • CTF-Silvas: Rotated bases, updated midfield assets, minor terrain tweaks.
  • CTF-Brynhildr: Updated lighting and atmosphere, updated base areas.
  • CTF-Trailblazer: Updated lighting and atmosphere, reduced out-of-bounds grid size.
  • CTF-Elite: Updated lighting and atmosphere.
  • CTF-Exhumed: Updated rock formations near bases,
  • Removed CTF maps Crushdepth, Authority, Cerberus, FatalFortress
  • Updated collisions on common rock assets to be more accurate.

General, Bug fixes & Balance

  • Fixed several server crashes.
  • Added code to decompress demos downloaded directly from
  • Re-added version checking, because test version could join live and run into invisible objects.
  • Removed Santa hats. Happy New Year!
  • Whitelisted some toaster.cfg commands to bring some performance back.
  • Increased default texture streaming budget
  • After discussion with some pubbers, reduced default max players on a server from 16 to 14.
  • Default Server bandwidth should be increased.

Known issues, Future updates

  • The visibility increases on Elite, Bryn, and Trailblazer might be too much, we’ve only managed to have a handful of lower tier PUGs on them so we’re look at how this plays with a view to changing it in the next patch
  • Server admin via SteamID is not currently working, the default admin password is not consistent across servers either.
  • Demo downloading in-game
  • Another sound pack, more weapon skins, another map in the works.
  • CTF-Raptor: Updated prototype base design
  • Potential fix for the flag sometimes returning from the OOB when it is already back in the OOB.
  • Potential fix for the chaingun looping noise.

Patch Notes –

Version of Midair: Community Edition is now ready to download.

In November and December, the community ran a successful “Bring Your Own 5” tournament, with over 50 matches played across two days, with teams from Australia, Europe and North America competing. Player VODs and commentary videos are available on our Twitch and Youtube, and moving forward the Midaire:CE CTF ladder is now open on the website. This incremental patch resolves the server stability issues we encountered early on in the tournament.


  • Adjusted the quality settings of some audio tracks that should reduce stuttering for players on older hardware.
  • Updated enemy flag grab sound to be more unique.
  • New tempest explosion sound.
  • Corrected some grammatical errors in the VGS menu.


  • CTF-Silvas has had an overhaul of terrain, spawn points, flag stand, and OOB.
  • Added missing flag stand cameras for CTF-Nightflare and CTF-Trailblazer


All Game Modes

  • Midair’s, and Midair Kills are no longer tracked when they are against a teammate.


  • If you killed a flag carrier, in midair — It didn’t give you a Flag Carrier kill. Now it does.
  • Added Furthest Midair stat to tab menu for CTF.
  • Fix for players receiving points for flag capture even if the flag is returned.


  • Award first blood and first to die on each round.
  • Set Arena tab menu to display weapon stats, and few game mode specific stats. More to come…

Store items

  • Demonic / Putrid plasma weapon models added.
  • Female voice pack added
  • 5 new sprays

Bug fixes & Balance

  • Fixed several server crashes.
  • Fixed an issue where the server kicked players at the end of each map.
  • Removed some rendering commands that players were using to gain an unfair advantage.


  • Blaster inheritance increased from 50 to 100.
  • Plasma inheritance increased from 35 to 50.


  • Demo play back performance has been increased.
  • Demos should switch back to last spectated player on respawn during playback.

Happy Holidays from the Midair:Community Edition Dev team