Typical game progression
This is a guide explaining how a typical game progresses, after a typical opening. The game can be thought of as being organically split up into a few phases, each with a characteristic set of units and goals.
- Note that these are general scenarios - depending on the map and factory match-up the game can play very differently!
- From a 1v1 perspective
Contents
Raider phase
The raider phase is the first phase in a typical game. It is defined by a few characteristics:
- Most of the map is untaken by either player.
- No defenses covering most areas.
Due to this, the mobility that raiders have tends to make them the dominant unit class.
Expansion
Raider Usage
Why not other unit classes?
Riots
It may seem intuitive to make riot units in this phase of the game. They are good against raiders aren't they?
Any other class
Skirmishers, artillery, assaults - all of these do very badly against raiders, so are not worth building at this point.
Midgame phase
In this phase, strategic diversity opens up significantly. Players typically transition out of raiders into some of the following.
Skirmishers
Air switch
Lategame
Eco
Heavies
Late-late game
In this phase you will see striders and some of the more exotic tools available to the player.
Debug data:
[SQLBagOStuff] MainObjectStash using store ReplicatedBagOStuff
[objectcache] MainWANObjectCache using store EmptyBagOStuff
IP: 216.73.216.149
Start request GET /mediawiki/index.php?direction=prev&oldid=4130&title=Typical_game_progression
HTTP HEADERS:
CONTENT-TYPE:
CONTENT-LENGTH: 0
USER-AGENT: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HOST: zero-k.info
COOKIE: wikidb229_mw__session=tpji5lhv6h2c2h17gemmdbgmos04ufl1
ACCEPT-ENCODING: gzip, br, zstd, deflate
ACCEPT: */*
CONNECTION: close[localisation] LocalisationCache: using store LCStoreDB
[session] SessionManager using store SqlBagOStuff
[session] Session "tpji5lhv6h2c2h17gemmdbgmos04ufl1" requested without UserID cookie
[DBReplication] Cannot use ChronologyProtector with EmptyBagOStuff
[DBReplication] Wikimedia\Rdbms\LBFactory::getChronologyProtector: request info {
"IPAddress": "216.73.216.149",
"UserAgent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
"ChronologyProtection": false,
"ChronologyPositionIndex": 0,
"ChronologyClientId": false
}[DBConnection] Wikimedia\Rdbms\LoadBalancer::lazyLoadReplicationPositions: executed chronology callback.
[DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: connected to database 0 at 'localhost'.
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: connected to database 0 at 'localhost'.
Title::getRestrictionTypes: applicable restrictions to [[Typical game progression]] are {edit,move}
[ContentHandler] Created handler for wikitext: WikitextContentHandler
[MessageCache] MessageCache using store SqlBagOStuff
[localisation] LocalisationCache::isExpired(en): cache for en expired due to GlobalDependency
[localisation] LocalisationCache::recache: got localisation for en from source
[DBQuery] startAtomic: entering level 0 (LCStoreDB::finishWrite)
[DBQuery] endAtomic: leaving level 0 (LCStoreDB::finishWrite)
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[SQLBagOStuff] SqlBagOStuff::lock failed due to timeout for wikidb229-mw_:messages:en.
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[MessageCache] MessageCache::load: Loading en... local cache is empty, global cache is expired/volatile, loading from database
ParserFactory: using preprocessor: Preprocessor_Hash
Unstubbing $wgLang on call of $wgLang::_unstub from ParserOptions->__construct
[caches] parser: SqlBagOStuff
Article::view using parser cache: no
Article::view: doing uncached parse
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #126 (handle id #120) will be used for SqlBagOStuff
Parser cache options found.
[Preprocessor] Cached preprocessor output (key: wikidb229-mw_:preprocess-hash:1b07383502ca03020d98fcdc50c48c7d:0)
[Preprocessor] Cached preprocessor output (key: wikidb229-mw_:preprocess-hash:1b07383502ca03020d98fcdc50c48c7d:0)
[DBPerformance] Sub-optimal transaction on DB(s) [localhost (wikidb229-mw_) (TRX#a657c0)]:
0 5.609245 query-m: DELETE FROM `mw_l10n_cache` WHERE lc_lang = 'X' [TRX#a657c0]
1 0.003398 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
2 0.003259 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
3 0.002860 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
4 0.003299 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
5 0.003779 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
6 0.003124 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
7 0.002948 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
8 0.003190 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
9 0.002882 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
10 0.002995 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
11 0.003034 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
12 0.002731 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
13 0.003395 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
14 0.003144 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
15 0.003031 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
16 0.004817 query-m: INSERT INTO `mw_l10n_cache` (lc_lang,lc_key,lc_value) VALUES ('X') [TRX#a657c0]
17 0.000928 query-m: REPLACE INTO `mw_objectcache` (keyname,value,exptime) VALUES ('X')MediaWiki::preOutputCommit: primary transaction round committed
MediaWiki::preOutputCommit: pre-send deferred updates completed
MediaWiki::preOutputCommit: session changes committed
MediaWiki::preOutputCommit: LBFactory shutdown completed
Title::getRestrictionTypes: applicable restrictions to [[Typical game progression]] are {edit,move}