This thread is intended to be a series of documentation posts on how the gamemode system works, how to create new gamemodes, rulesets, and other game-flow objects.
On the high level, Game Flow is broken down into 3 different objects:
Gamemode: The gamemode sets up the generic squad flow (respawns, team creation, putting players on teams), but delegates the match flow tasks off to the Rulesets, of which there can be many.
Rulesets: The primary instigator of game flow. Rulesets are 'mini gamemodes' that handle specific game events and allow for flow. AAS, Insurgency, Flag Scoring... these are all handled by Rulesets. Rulesets are Server Only, so they can be created on a per-server basis as well.
Important Actors: Important Actors are objects that specifically notify the Gamemode (and by extensions, all of the Rulesets) of their existence. These are objects that exist in the world and are very specifically intended to be objects the Rulesets can use to direct game flow. This includes FOBs, Capture Zones, Insurgency Caches... stuff like that.
Creating a Game Mode
Given that many of the important tasks of a gamemode are handled in C++, Creating a gamemode is mostly a task of creating a number of Rulesets and associating them with a gamemode. You can also override some of the default classes for the gamemode, allowing you to create custom Controller actors and game states.
Required Reading for how GameModes work: https://docs.unrealengine.com/latest/INT/Gameplay/Framework/GameMode/index.html
To create a new GameMode, create a child blueprint from BP_GameMode
As mentioned above, Most of the actual match flow logic is delegated out to Rulesets. These Rulesets can be sourced from 3 places:
Gamemode Config: Rulesets can be sourced directly from the gamemode blueprint. This is the primary source for rulesets
World Settings: Rulesets can also be added directly to a world settings class, giving Mappers and Modders the ability to create map-layer specific rulesets. This can be useful for map events or specific scoring for doing something (Blowing up a radio tower, for example).
Holiday Events: These are stored in the DefaultGame.ini and used to do holiday events. They can be configured in the project properties. Mods and Custom Servers can make use of these. They require a date and time to start and end, and will only ever be active with matches started during that window.