{"name":"Arma 3: Steam Game Recording","title":"Arma 3: Steam Game Recording","type":"topic","url":"https://community.bistudio.com/wiki/Arma_3:_Steam_Game_Recording","revid":376706,"updated":"2025-11-10T09:42:53Z","aliases":[],"markdown":"Arma 3 v2.20\n\nArma 3 supports the [Steam Timeline](https://partner.steamgames.com/doc/features/timeline) feature as part of [Steam Game Recording](https://store.steampowered.com/gamerecording).\n\nThe game has implemented timeline events for:\n\n- Various events in general gameplay\n- Arma 3: Time Trials\n- Arma 3: Firing Drills\n- Arma 3: Invaders\n\nScenarios and mods are able to also trigger (custom) events! This is primarily done via the steamGameRecordingEvent script command.\n\n### Events\n\nEvent configs can be in Mission description.ext or mod config. The description.ext takes priority.\nIn mod config's the events are in \"SteamManagerConfig >> GameRecording\".\nIn description.ext the events are in \"SteamGameRecording\"\n\nAdding custom events in a mod config:\n\n```cpp\nclass SteamManagerConfig\n{\n    class GameRecording\n    {\n        class YourEvent //Class name referenced in the event trigger by script\n        {\n            scope = 2; //Accessor scope (2: public)\n            title = \"Your Event\"; //Title text\n            description = \"Your event has triggered at %1.\"; //Description text (possibly with parameters)\n            icon = \"a3_steam_x\"; //Icon from the list below\n            priority = 100; //Priority relative to other events near the same time (0 - 1000)\n            clipPriority = 2; //1: None, 2: Standard, 3: Featured\n        };\n    };\n};\n```\n\nDisabling default Events in a mission description.ext:\n\n```cpp\nclass SteamGameRecording\n{\n    class UnitKilled\n    {\n        scope = 0; //Accessor scope (0: private)\n    };\n    class VehicleKilled\n    {\n        scope = 0;\n    };\n};\n```\n\n### Special Utilities\n\nWhile steamGameRecordingEvent is primarily used to trigger events defined in configs, it can also be used for triggering special utilities. These can mark game phases, set phase tags / attributes, and more. Explore the scripts and FSMs for the content listed above for inspiration (UI_F, Modules_F_Beta and Modules_F_Kart). Here are various examples to help get started:\n\n```sqf\nsteamGameRecordingEvent [\"StartGamePhase\", \"Your Game Phase ID\"]; //Start a game phase, separately presented in the clip listing\n```\n\n```sqf\nsteamGameRecordingEvent [\"EndGamePhase\"]; //End a game phase\n```\n\n```sqf\nsteamGameRecordingEvent [\"SetGamePhaseTag\", \"TagName\", \"TagGroup\", \"a3_steam_x\"]; //Apply a tag with associated icon in the current game phase\n```\n\n```sqf\nsteamGameRecordingEvent [\"SetGamePhaseAttribute\", \"AttributeName\", \"AttributeGroup\"]; //Apply an attribute in the current game phase\n```\n\n```sqf\nsteamGameRecordingEvent [\"SetTooltip\", \"TooltipText\"(, StartOffset)]; //Apply a tooltip to the timeline\n```\n\n```sqf\nsteamGameRecordingEvent [\"ClearTooltip\"(, StartOffset)]; //Clear tooltip from the timeline\n```\n\n### Icons\n\nWhile Steam itself has a [set of icons available](https://partner.steamgames.com/doc/features/timeline), Arma 3 has a (larger) set available as well.\nThis includes a duplication of the Steam set, which are better visually consistent with the rest of the icons (prefixed with \"a3_**steam**_\", see list below).\n\n| Icon ID | Preview |\n|---|---|\n| *a3_aow* |  |\n| *a3_grenade_throw* |  |\n| *a3_armad* |  |\n| *a3_explosive_trigger* |  |\n| *a3_arsenal* |  |\n| *a3_revive* |  |\n| *a3_heal* |  |\n| *a3_respawn* |  |\n| *a3_icon* |  |\n| *a3_curator* |  |\n| *a3_kart* |  |\n| *a3_heli* |  |\n| *a3_mark* |  |\n| *a3_expansion* |  |\n| *a3_jets* |  |\n| *a3_argo* |  |\n| *a3_orange* |  |\n| *a3_tacops* |  |\n| *a3_tank* |  |\n| *a3_enoch* |  |\n| *a3_dlc* |  |\n| *a3c_gm* |  |\n| *a3c_vn* |  |\n| *a3c_csla* |  |\n| *a3c_ws* |  |\n| *a3c_spe* |  |\n| *a3c_rf* |  |\n| *a3c_ef* |  |\n| *a3_artillery* |  |\n| *a3_radio* |  |\n| *a3_supply_drop* |  |\n| *a3_camera* |  |\n| *a3_task_success* |  |\n| *a3_task_failure* |  |\n| *a3_challenge_timer* |  |\n| *a3_challenge_cp* |  |\n| *a3_challenge_target* |  |\n| *a3_challenge_finish* |  |\n| *a3_challenge_bronze* |  |\n| *a3_challenge_no_bronze* |  |\n| *a3_challenge_silver* |  |\n| *a3_challenge_no_silver* |  |\n| *a3_challenge_gold* |  |\n| *a3_challenge_no_gold* |  |\n| *a3_challenge_no_special* |  |\n| *a3_invaders* |  |\n| *a3_zeus* |  |\n| *a3_rank_captain* |  |\n| *a3_rank_colonel* |  |\n| *a3_rank_corporal* |  |\n| *a3_rank_general* |  |\n| *a3_rank_lieutenant* |  |\n| *a3_rank_major* |  |\n| *a3_rank_private* |  |\n| *a3_rank_sergeant* |  |\n| *a3_reload* |  |\n| *a3_inventory* |  |\n| *a3_take* |  |\n| *a3_vehicle_driver* |  |\n| *a3_vehicle_passenger* |  |\n| *a3_vehicle_commander* |  |\n| *a3_vehicle_gunner* |  |\n| *a3_vehicle_pilot* |  |\n| *a3_eject* |  |\n| *a3_steam_achievement* |  |\n| *a3_steam_attack* |  |\n| *a3_steam_bolt* |  |\n| *a3_steam_bookmark* |  |\n| *a3_steam_bug* |  |\n| *a3_steam_cart* |  |\n| *a3_steam_caution* |  |\n| *a3_steam_chat* |  |\n| *a3_steam_checkmark* |  |\n| *a3_steam_chest* |  |\n| *a3_steam_circle* |  |\n| *a3_steam_combat* |  |\n| *a3_steam_completed* |  |\n| *a3_steam_crown* |  |\n| *a3_steam_death* |  |\n| *a3_steam_defend* |  |\n| *a3_steam_diamond* |  |\n| *a3_steam_edit* |  |\n| *a3_steam_effect* |  |\n| *a3_steam_explosion* |  |\n| *a3_steam_fix* |  |\n| *a3_steam_flag* |  |\n| *a3_steam_gem* |  |\n| *a3_steam_group* |  |\n| *a3_steam_heart* |  |\n| *a3_steam_info* |  |\n| *a3_steam_invalid* |  |\n| *a3_steam_marker* |  |\n| *a3_steam_minus* |  |\n| *a3_steam_pair* |  |\n| *a3_steam_person* |  |\n| *a3_steam_plus* |  |\n| *a3_steam_purchase* |  |\n| *a3_steam_question* |  |\n| *a3_steam_ribbon* |  |\n| *a3_steam_screenshot* |  |\n| *a3_steam_scroll* |  |\n| *a3_steam_square* |  |\n| *a3_steam_star* |  |\n| *a3_steam_starburst* |  |\n| *a3_steam_timer* |  |\n| *a3_steam_transfer* |  |\n| *a3_steam_triangle* |  |\n| *a3_steam_trophy* |  |\n| *a3_steam_view* |  |\n| *a3_steam_x* |  |","sections":[{"heading":null,"level":1,"markdown":"Arma 3 v2.20\n\nArma 3 supports the [Steam Timeline](https://partner.steamgames.com/doc/features/timeline) feature as part of [Steam Game Recording](https://store.steampowered.com/gamerecording).\n\nThe game has implemented timeline events for:\n\n- Various events in general gameplay\n- Arma 3: Time Trials\n- Arma 3: Firing Drills\n- Arma 3: Invaders\n\nScenarios and mods are able to also trigger (custom) events! This is primarily done via the steamGameRecordingEvent script command."},{"heading":"Events","level":3,"markdown":"Event configs can be in Mission description.ext or mod config. The description.ext takes priority.\nIn mod config's the events are in \"SteamManagerConfig >> GameRecording\".\nIn description.ext the events are in \"SteamGameRecording\"\n\nAdding custom events in a mod config:\n\n```cpp\nclass SteamManagerConfig\n{\n    class GameRecording\n    {\n        class YourEvent //Class name referenced in the event trigger by script\n        {\n            scope = 2; //Accessor scope (2: public)\n            title = \"Your Event\"; //Title text\n            description = \"Your event has triggered at %1.\"; //Description text (possibly with parameters)\n            icon = \"a3_steam_x\"; //Icon from the list below\n            priority = 100; //Priority relative to other events near the same time (0 - 1000)\n            clipPriority = 2; //1: None, 2: Standard, 3: Featured\n        };\n    };\n};\n```\n\nDisabling default Events in a mission description.ext:\n\n```cpp\nclass SteamGameRecording\n{\n    class UnitKilled\n    {\n        scope = 0; //Accessor scope (0: private)\n    };\n    class VehicleKilled\n    {\n        scope = 0;\n    };\n};\n```"},{"heading":"Special Utilities","level":3,"markdown":"While steamGameRecordingEvent is primarily used to trigger events defined in configs, it can also be used for triggering special utilities. These can mark game phases, set phase tags / attributes, and more. Explore the scripts and FSMs for the content listed above for inspiration (UI_F, Modules_F_Beta and Modules_F_Kart). Here are various examples to help get started:\n\n```sqf\nsteamGameRecordingEvent [\"StartGamePhase\", \"Your Game Phase ID\"]; //Start a game phase, separately presented in the clip listing\n```\n\n```sqf\nsteamGameRecordingEvent [\"EndGamePhase\"]; //End a game phase\n```\n\n```sqf\nsteamGameRecordingEvent [\"SetGamePhaseTag\", \"TagName\", \"TagGroup\", \"a3_steam_x\"]; //Apply a tag with associated icon in the current game phase\n```\n\n```sqf\nsteamGameRecordingEvent [\"SetGamePhaseAttribute\", \"AttributeName\", \"AttributeGroup\"]; //Apply an attribute in the current game phase\n```\n\n```sqf\nsteamGameRecordingEvent [\"SetTooltip\", \"TooltipText\"(, StartOffset)]; //Apply a tooltip to the timeline\n```\n\n```sqf\nsteamGameRecordingEvent [\"ClearTooltip\"(, StartOffset)]; //Clear tooltip from the timeline\n```"},{"heading":"Icons","level":3,"markdown":"While Steam itself has a [set of icons available](https://partner.steamgames.com/doc/features/timeline), Arma 3 has a (larger) set available as well.\nThis includes a duplication of the Steam set, which are better visually consistent with the rest of the icons (prefixed with \"a3_**steam**_\", see list below).\n\n| Icon ID | Preview |\n|---|---|\n| *a3_aow* |  |\n| *a3_grenade_throw* |  |\n| *a3_armad* |  |\n| *a3_explosive_trigger* |  |\n| *a3_arsenal* |  |\n| *a3_revive* |  |\n| *a3_heal* |  |\n| *a3_respawn* |  |\n| *a3_icon* |  |\n| *a3_curator* |  |\n| *a3_kart* |  |\n| *a3_heli* |  |\n| *a3_mark* |  |\n| *a3_expansion* |  |\n| *a3_jets* |  |\n| *a3_argo* |  |\n| *a3_orange* |  |\n| *a3_tacops* |  |\n| *a3_tank* |  |\n| *a3_enoch* |  |\n| *a3_dlc* |  |\n| *a3c_gm* |  |\n| *a3c_vn* |  |\n| *a3c_csla* |  |\n| *a3c_ws* |  |\n| *a3c_spe* |  |\n| *a3c_rf* |  |\n| *a3c_ef* |  |\n| *a3_artillery* |  |\n| *a3_radio* |  |\n| *a3_supply_drop* |  |\n| *a3_camera* |  |\n| *a3_task_success* |  |\n| *a3_task_failure* |  |\n| *a3_challenge_timer* |  |\n| *a3_challenge_cp* |  |\n| *a3_challenge_target* |  |\n| *a3_challenge_finish* |  |\n| *a3_challenge_bronze* |  |\n| *a3_challenge_no_bronze* |  |\n| *a3_challenge_silver* |  |\n| *a3_challenge_no_silver* |  |\n| *a3_challenge_gold* |  |\n| *a3_challenge_no_gold* |  |\n| *a3_challenge_no_special* |  |\n| *a3_invaders* |  |\n| *a3_zeus* |  |\n| *a3_rank_captain* |  |\n| *a3_rank_colonel* |  |\n| *a3_rank_corporal* |  |\n| *a3_rank_general* |  |\n| *a3_rank_lieutenant* |  |\n| *a3_rank_major* |  |\n| *a3_rank_private* |  |\n| *a3_rank_sergeant* |  |\n| *a3_reload* |  |\n| *a3_inventory* |  |\n| *a3_take* |  |\n| *a3_vehicle_driver* |  |\n| *a3_vehicle_passenger* |  |\n| *a3_vehicle_commander* |  |\n| *a3_vehicle_gunner* |  |\n| *a3_vehicle_pilot* |  |\n| *a3_eject* |  |\n| *a3_steam_achievement* |  |\n| *a3_steam_attack* |  |\n| *a3_steam_bolt* |  |\n| *a3_steam_bookmark* |  |\n| *a3_steam_bug* |  |\n| *a3_steam_cart* |  |\n| *a3_steam_caution* |  |\n| *a3_steam_chat* |  |\n| *a3_steam_checkmark* |  |\n| *a3_steam_chest* |  |\n| *a3_steam_circle* |  |\n| *a3_steam_combat* |  |\n| *a3_steam_completed* |  |\n| *a3_steam_crown* |  |\n| *a3_steam_death* |  |\n| *a3_steam_defend* |  |\n| *a3_steam_diamond* |  |\n| *a3_steam_edit* |  |\n| *a3_steam_effect* |  |\n| *a3_steam_explosion* |  |\n| *a3_steam_fix* |  |\n| *a3_steam_flag* |  |\n| *a3_steam_gem* |  |\n| *a3_steam_group* |  |\n| *a3_steam_heart* |  |\n| *a3_steam_info* |  |\n| *a3_steam_invalid* |  |\n| *a3_steam_marker* |  |\n| *a3_steam_minus* |  |\n| *a3_steam_pair* |  |\n| *a3_steam_person* |  |\n| *a3_steam_plus* |  |\n| *a3_steam_purchase* |  |\n| *a3_steam_question* |  |\n| *a3_steam_ribbon* |  |\n| *a3_steam_screenshot* |  |\n| *a3_steam_scroll* |  |\n| *a3_steam_square* |  |\n| *a3_steam_star* |  |\n| *a3_steam_starburst* |  |\n| *a3_steam_timer* |  |\n| *a3_steam_transfer* |  |\n| *a3_steam_triangle* |  |\n| *a3_steam_trophy* |  |\n| *a3_steam_view* |  |\n| *a3_steam_x* |  |"}],"categories":["Arma 3: Editing","Introduced with Arma 3 version 2.20"],"groups":["Game and Troubleshooting"]}