Navigation

    FAForever Forums
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    1. Home
    2. maudlin27
    3. Best
    • Profile
    • More
      • Following
      • Followers
      • Topics
      • Posts
      • Best
      • Groups

    Best posts made by maudlin27

    AI Development Guide and M27AI v34 Devlog

    Following the recent Supreme Computer Cup I was inspired to have a go at developing a basic AI for FAF. As I had zero experience of coding in Lua, I thought at the same time I would write down things as I learnt them to have both a guide for other people interested in getting started in developing an AI, and a dev log for the creation of my AI.

    See below for a link to the current AI development guide and devlog:
    https://docs.google.com/document/d/1uQlEoN-kti7G2MnhwD60uaaHwVevPNYH/edit?usp=sharing&ouid=100973959280546778272&rtpof=true&sd=true

    You can also access the mod on Github:
    https://github.com/maudlin27/M27AI

    I've copied the current overview from the guide below:

    This document is intended to do 3 things at once (meaning it does none of them very well!):
    • Act as a guide to people new to FAF AI development, including collating any other useful resources out there on AI development
    • Be a sort of dev log of my thought process and development steps for creating my first FAF AI, with extracts of code thrown in
    • Form my main ‘todo’ list for further developments of my AI
    If you see any errors, or have any comments or suggestions (in particular any AI developers who read this since you’ll probably know better/easier ways of doing things than the methods I’ve chosen) let me know and I can update the guide where relevant.

    If you’re here for useful resources and/or details of how to write AI and don’t care about the dev log aspect then just skip to section 2) Setup and background and section 5) Index of useful functions, and/or browse the index for points that may be of interest.

    Latest changes (v34 summary)
    v34 - Dynamic firebases

    • M27 will in some scenarios build firebases, including T2 artillery. These will be built in response to what the enemy does for now, although a future update is likely to introduce pre-planned firebases at chokepoints.

    • Improved T3 arti protection with shield assist logic.

    • 15 Bug fixes, including an issue that stopped torpedo bombers working (they'd only attack enemies that got near them previously), and an error that would happen when building experimentals if the enemy had an experimental

    • 33 misc changes, including improving ecoing ability slightly by trying to always have something upgrading (sometimes this can hurt it though)

    Key areas of focus by version (history):
    v1-3: Release
    v4 - Intel and threat detection
    v5 - Use of ACU and hotfix
    v7 - Engineers and building upgrades
    v9 - Air
    v10 - Anti-Turtle
    v11-v12 - Pathfinding and misc changes
    v13 - Anti-navy
    v14 - ACU and mobile shields
    v15-v18 - CPU optimisation and hotfixes
    v19 - Rally points and air domination strategy
    v20 - Late game
    v21-23 - Eco management
    v24 - Bombers
    v25 - Misc
    v26 - Nukes
    v27 - T3 Arti
    v28 - Game options/compatibility
    v29 - Optimisation and TMD
    v30 - Czar, Soulripper and Defences
    v31 - Bombers (again) and TML
    v32-33 - Plateaus
    v34 - Firebases (part 1)

    posted in AI development •
    Player Councilor elections - shorten future timeframe

    Having only started following the FAF forums and news the start of this year I'd not come across the PC election before, but one thing that's surprised me is just how long the process has gone on for. To summarise the timings for the PC election that's almost now finished:

    • 6 May 21 - election announced, candidates requested
    • 30 May - Signups closed (includes 1 week extension to accommodate further debate following disqualification of certain candidates/clarification of conditions to apply)
    • 6 June - voting begins
    • 6 July - voting ends

    So essentially, 3 months taken up with the PC election.

    Regardless of whoever wins the current election, I'd suggest shortening this period significantly, as 1/4 of the PC's time will potentially be in 'election mode'.

    I'd therefore suggest allowing 3 weeks for candidates, and then 3 weeks for voting, to halve the time involved overall, for next year's election, while still giving enough of a period to allow most people who might be on holiday at some point in that time to be able to stand and/or vote, without having the election go on for so long.

    I'd also be curious if anyone has stats on the timeframe of when votes were cast, as I suspect they will be weighted significantly towards the start of the voting period (which would give further support for there not being a need for a whole month to vote). If this isn't the case and votes tend to be evenly spread over the time period (or even weighted more towards the end of the voting period) then it may still be worth retaining 4 weeks for voting.

    posted in Suggestions •
    RE: AI Development Guide and M27AI v34 Devlog
    1. Overview 32
      1.1) AI goals 32
      1.2) Background 33
      1.3) Approach 33
    2. Setup and background 34
      2.1) Lua editors 34
      2.1.1) Intellij IDEA 34
      2.2) Other guides which include a section on AI: 35
      2.2.1) General information: 35
      2.2.2) How AI in FAF works 35
      2.2.3) AI markers and how AI uses them: 37
      2.2.4) Hooking (e.g. replacing/appending existing game code) 37
      2.2.5) Creating custom scripts for Sorian AI: 37
      2.2.6) Pathfinding 37
      2.2.7) How platoons work 37
      2.2.8) AI Research (non-FAF related) 37
      2.3) Lua coding 37
      2.3.1) How to code in Lua 37
      2.3.2) Stand alone Lua code testing 37
      2.3.3) Lua optimisation 38
      2.3.4) Common causes of errors for non-Lua coders 38
      2.4) Debugging in FAF 38
      2.4.1) Console 38
      2.4.2) Cheats 39
      2.4.3) Log window and error messages 39
      2.4.4) Debug window and shortcuts 39
      2.4.5) Platoon names for debugging 40
      2.4.6) Function hooks and identifying infinite loops 40
      2.4.7) Fast speed 40
      2.4.8) In-game tools and information 41
      2.4.9) Other shortcuts and game startup options 42
      2.4.10) Suggested shortcut 44
      2.4.11) Using FAF Develop 44
      2.4.12) Error handling 45
      2.4.13) Optimisation – benchmarks and monitoring 46
      2.4.14) Debugging via replay 47
      2.5) AI development discord 48
      2.6) Core FAF Lua files 49
      2.6.1) Accessing core Lua code 49
      2.6.2) Other built in functions 49
      2.6.3) Unit blueprints 50
      2.7) Testing AI against other AI 50
      2.7.1) Simple offline testing 50
      2.7.2) Mass offline AI testing 51
      2.8) Getting started – using a simple AI template as a starting point 52
      2.9) Downloading and setting up MicroAI 52
      2.10) Giving the AI mod your own name 52
      2.11) General - Hooks, and getting the code to recognise if it’s running your AI 53
      2.11.1) Hooking – Unit callbacks/events – applied example 53
      2.12) Github 57
      2.12.1) Github advantages and Github desktop 57
      2.12.2) Linking Github with a local repo via creating your own init file 58
      2.12.3) Pro Git ebook 58
      2.12.4) Git commit messages 58
      2.13) Uploading your AI to FAF 58
      2.13.1) Pre-upload checklist 58
      2.13.2) FAF rules on uploading mods 58
      2.13.3) Uploading to FAF 58
      2.14) Other AI documentation 59
    3. AI changes 59
      3.1) Build order - Changing the initial build order 59
      3.1.1) Adding/removing buildings 59
      3.1.2) Change build order based on map resource positions 59
      3.1.3) Build order conditions 60
      3.2) Build order – ACU builds without moving at start 60
      3.2.1) BaseTemplate 61
      3.3) Build factory and power to benefit from adjacency 62
      3.3.1) Record all mexes on the map, and reference this information 62
      3.3.2) Determine com start position 63
      3.3.3) Identify mexes near to start 63
      3.3.4) Hook onto the core code relating to building a structure at a location 64
      3.3.5) Call build order from custom aiBrain function, to edit how things are built 65
      3.3.6) Adjust build template based on mex location - conditions 65
      3.3.7) Adjust build template based on mex location – build location adjustment 66
      3.3.8) Build initial PGens by existing factory 67
      3.3.9) Adjacency bonus where ACU is away from start location 69
      3.3.10) Referencing unit blueprints for information such as unit size 71
      3.4) Platoons and sending engineers to reclaim 73
      3.4.1) How platoons work 73
      3.4.2) Send the first engineer on reclaim duty 78
      3.4.3) Determine where to send the engineer to reclaim 79
      3.4.4) Identifying reclaim mass value 80
      3.4.5) Find out if a location is accessible by ground: 80
      3.4.6) Mapping reclaim locations and assigning preferred location to an engineer 82
      3.4.7) Don’t send early reclaiming engi if there’s minimal starting reclaim 82
      3.4.8) Issue new reclaim command if engineer becomes idle 83
      3.4.9) Send more engineers to reclaim later (as lower priority) based on the reclaim currently on the map 83
      3.4.10) Send 5 engineers at the start to reclaim and build mexes 84
      3.4.11) Reclaiming trees when no main mass left 84
      3.5) Building and assisting hydro 84
      3.5.1) Check if hydro near start area and have engineer build hydro 84
      3.5.2) Have ACU assist engineer with hydro 85
      3.5.3) Get ACU to continue build order after hydro complete 86
      3.5.4) Subsequent build order changes 87
      3.6) Attack force composition changes and check of AI performance 87
      3.6.1) Build Moar Tanks 87
      3.7) Pre-v1: AI Progress check 88
      3.7.1) Land factory buildings and other build order refinements 89
      3.8) Raiding AI 90
      3.8.1) Raiding behaviour - overview 90
      3.8.2) Queue up move commands for mexes 91
      3.8.3) Identify mexes to target 91
      3.8.4) Locating mexes near to an existing pathing route 94
      3.8.5) Determine when raiders need new targets 94
      3.8.6) Handling complications (stuck units, move orders built on, platoon units dying) 95
      3.8.7) Change factory rally point so units are assigned orders sooner 96
      3.8.8) Making use of platoon names for debugging 99
      3.8.9) Ensure 1 land scout included in each platoon 99
      3.8.10) Use microbots before switching to tanks 100
      3.8.11) Have scouts stay with the platoon 102
      3.8.12) AI scouting, threat detection, and identifying nearby enemy units 102
      3.8.13) Attack engineers en-route: Overview 105
      3.8.14) Tracking when have reached movement points 106
      3.8.15) Determining the platoon minimum range 106
      3.8.16) Identifying nearby enemy units and assessing their threat 108
      3.8.17) Actions based on enemy threat 109
      3.8.18) Avoid attacking enemy mexes for small platoons 110
      3.8.19) Other issues – cheating, walls and min range 111
      3.8.20) Larger raiding platoons 112
      3.9) Large attack wave 113
      3.9.1) Checking when to form a large attack wave 113
      3.9.2) Generalising raider AI 113
      3.9.3) Creating separate platoon AI for the large attack force 114
      3.9.4) Run nearer to base when outnumbered 114
      3.9.5) Recalling nearby raiders to join attack force 115
      3.9.6) Updating threat assessment for ACU health and upgrades 116
      3.9.7) Don’t chase small numbers of faster units 118
      3.9.8) Switch to hunt and kill enemies once reached destination 119
      3.10) Pre-v1: AI Progress check 120
      3.10.1) Summer duel 120
      3.10.2) Theta passage 120
      3.10.3) New issues 120
      3.11) Platoon AI – Generalised approach and further enhancements 121
      3.11.1) Embracing the table 121
      3.11.2) Moving units when shots blocked by cliffs 124
      3.11.3) Anti-stuttering protection 125
      3.11.4) Large attack AI – Rally point for merged units 125
      3.11.5) Raiders assume small numbers of enemies are engis/scouts 125
      3.11.6) T1 Artillery specifically target structures, and spread-attack units 125
      3.11.7) Keep scouts at back of platoon 127
      3.11.8) Platoons with non-Seraphim T1 artillery and no tanks don’t run unless against slower enemy 127
      3.11.9) Factor in nearby platoons when faced with enemies 127
      3.11.10) More T1 arti in platoons once reached certain level of tanks 128
      3.11.11) Don’t treat AA as a direct fire unit when forming a platoon 128
      3.11.12) Build hydro where it’s far away from base 128
      3.12) Expansion bases 129
      3.12.1) Background – expansions and the main base 129
      3.12.2) Having all units treated as available for platoons 129
      3.13) Upgrade ACU with gun and attack 130
      3.13.1) How to upgrade an ACU 130
      3.13.2) Get enough energy to support guncom 131
      3.13.3) Upgrade ACU’s gun once have enough energy 131
      3.13.4) Attack with ACU once upgrade finished 132
      3.13.5) ACU overcharge 133
      3.14) V1-3 release incl AI progress check 133
      3.14.1) Performance – v1-3 of M27AI 133
      3.14.2) Issues and planned improvements from testing 134
      3.14.3) Debug issues and other bug fixes 135
      3.14.4) Attack lauched as soon as ACU gun ready 139
      3.14.5) Default attack-move direct fire units at enemy (attack-move if platoon scattered) 139
      3.14.6) Limit of 1 microbot per early raider platoon, and tank defenders 140
      3.14.7) Skip move location if are closer to the next move location than the first one 140
      3.14.8) Build more engineers if are close to overflowing mass 141
      3.14.9) Add energy storage requirements to ACU initial land factory build order 142
      3.14.10) ACU and Engineers will move near mex to build 142
      3.14.11) Other minor misc changes 144
      3.15) On demand basic pathfinding 145
      3.15.1) Revised approach 145
      3.15.2) Mex raiding path optimisations 146
      3.15.3) Useful maps for testing map based logic 146
      3.15.4) Move to build structure – check pathing 147
      3.15.5) Platoon Merge location – have it check no pathing issues in nearby segments 147
      3.16) AI Overseer - responding to enemy attacks 147
      3.16.1) Overview 147
      3.16.2) Planned initial logic 148
      3.16.3) Run overseer on AI creation 148
      3.16.4) Assigning units to defender platoons 149
      3.16.5) Recording enemy threats 150
      3.16.6) Sending units to deal with enemy threats 152
      3.16.7) Sorting a multi-dimensional table 152
      3.16.8) Disbanded units return to base 154
      3.16.9) Intercepting platoons should leave at least 1 scout when removing spare units 154
      3.16.10) Don’t remove units when in combat 155
      3.16.11) Platoon and other build conditions 155
      3.16.12) Limit number of mobile AA in an intercepting defending platoon 156
      3.16.13) Remove ACU from defender platoon once the threat is dealt with 156
      3.16.14) Don’t have ACU join a platoon if its upgrading 156
      3.16.15) Disabling sorian base manager distress logic 157
      3.17) AI Overseer – Intel and ACU managers 157
      3.17.1) Intel manager - overview 157
      3.17.2) Planned logic – 1-off 157
      3.17.3) Planned logic – recurring 158
      3.17.4) Scout localised platoon AI 159
      3.17.5) ACU manager 160
      3.18) V4 release (incl AI progress check) 161
      3.18.1) Pre-release checklist 162
      3.18.2) AI performance results 163
      3.18.3) Notable issues noted from performance 163
      3.18.4) Resolution of immediate issues/bugs post-release 164
      3.19) ACU –aggression, support and micro enhancements 169
      3.19.1) ACU custom platoon - overview 169
      3.19.2) ACU expansion – choice of location 170
      3.19.3) Platoon completion actions 172
      3.19.4) Expanding more than once 173
      3.19.5) Getting nearby reclaim and/or unclaimed mexes while moving 174
      3.19.6) Assisting hydro construction (reworked) 176
      3.19.7) ACU defender platoon refinements 177
      3.19.8) ACU Scout helper and general scout build order 178
      3.19.9) ACU MAA helper and general behaviour 180
      3.19.10) Air threat assessment and MAA to build (initial) 181
      3.19.11) Large platoon scout and MAA helpers 181
      3.19.12) ACU attacks independently to large attack platoon 181
      3.19.13) ACU Build order tweaks 181
      3.19.14) Aeon ACU gets both gun upgrades 182
      3.19.15) ACU retreat 182
      3.19.16) ACU kiting 182
      3.19.17) Have ACU attack-move if kiting doesn’t return any action 183
      3.19.18) Manual overcharge 184
      3.19.19) Other misc changes/refinements 187
      3.20) V5 release (incl AI progress check) 187
      3.20.1) Pre-release checklist 187
      3.20.2) AI performance results 188
      3.20.3) Resolution of immediate issues/bugs 189
      3.21) V6 - Refinements, basic water based actions, v6 hotfix 189
      3.21.1) Misc refinements pre v6 189
      3.21.2) ACU water based actions – reclaim and move to shore 190
      3.21.3) V6 hotfix 191
      3.21.4) Error fixes subsequent to v6 191
      3.22) V7 - Custom build orders and platoon formers 194
      3.22.1) Proof of concept 194
      3.22.2) Initial complications – LABs and no valid units 196
      3.22.3) Related changes – scout conditions; tracking construction orders 196
      3.22.4) Linking production with threat detection overseer 196
      3.22.5) Increasing indirect fire units based on enemy PD usage 197
      3.22.6) Assign MAA similarly to how scouts are assigned 197
      3.22.7) Platoon former – manually assigning platoons based on threat distance 197
      3.22.8) Try to save raider scouts 198
      3.22.9) Not got enough units for a platoon – send spare units to intel path 198
      3.22.10) Call the platoon former if disband a platoon containing combat units 198
      3.22.11) Platoon merger – Periodically combining attack platoons where they’re nearby 198
      3.22.12) Delayed platoon formation 199
      3.22.13) Factories away from main base or with nearby enemies don’t build engineers 200
      3.23) V7 - Engineer overseer 200
      3.23.1) Overview 200
      3.23.2) Spare engineer action logic 200
      3.23.3) Nearby enemy logic 201
      3.23.4) Unclaimed mex logic 201
      3.23.5) Threat detector – adjust distance calculation and record 201
      3.23.6) Update engineer names to reflect their action 202
      3.23.7) Clear unit actions if factory idle (unexpected bug workaround) 202
      3.23.8) Have ACU assist assigned hydro builder and build land factory 202
      3.23.9) Retain existing engineer assignments in favour of nearest engineer 203
      3.23.10) Power assignment – longer term requirement check 204
      3.23.11) Optimisations and rollbacks 204
      3.23.12) Adjacency refinements 204
      3.23.13) Misc changes 205
      3.23.14) If an engineer changes its action and its being guarded, clear the current action and commands of the guards so they can be reassigned 205
      3.23.15) Consider engineer actions as soon as a factory finishes construction 206
      3.23.16) Constructing building – first check if part-complete similar building 206
      3.23.17) Building more engineers 206
      3.23.18) Engineers take into account ACU expansion path 207
      3.23.19) Initial engineers keep building mexes until they die or half the map is covered 207
      3.23.20) Have engineers queue up nearby unclaimed mexes and multiple T1 power 207
      3.23.21) Build a second power at the same time 208
      3.23.22) Build more energy storage based on power income 208
      3.24) V7 - Building Upgrade overseer 208
      3.24.1) Overview 208
      3.24.2) Refinements 209
      3.24.3) Have engineer overseer switch to assisting an upgrade instead of building a land factory 209
      3.24.4) Pause upgrade if low on resources (and track so can resume later) 209
      3.24.5) Mass stall – pause factories over mexes 210
      3.25) V7 - Idle platoon 210
      3.25.1) Army pool platoon and new idle platoon 210
      3.25.2) Approach 211
      3.26) v7 - Misc changes 211
      3.26.1) ACU is removed from defender platoons when allocating new threats 211
      3.26.2) Allocating overseers to different ticks 211
      3.26.3) Have defender platoons move in formation 212
      3.26.4) State of game log 212
      3.26.5) Intel path – allow scouts to move +/- 1 path 212
      3.26.6) ACU shots blocked 212
      3.26.7) Enemy ACU threat increase 213
      3.27) V7+V8 release (incl AI progress check) 213
      3.27.1) V7 - Minor enhancements to overseers due to testing (pre-release) 213
      3.27.2) Tracking revision 213
      3.27.3) Choosing nearby engineers based on mex location 214
      3.27.4) Pre-release check results 214
      3.27.5) V8 Hotfix – crash 215
      3.27.6) Other bugs – fixed in v9 215
      3.27.7) Other misc changes for v9 219
      3.28) V9 - Air scouting 220
      3.28.1) Determining when we last scouted an area 220
      3.28.2) How often we want to scout areas 221
      3.28.3) Deciding on nearest mex targets 222
      3.28.4) Deciding which area to scout first 222
      3.28.5) Adding via points to journey 223
      3.28.6) Take a detour if a scout has died 223
      3.28.7) Produce air factory 223
      3.28.8) Ignore locations too far away 224
      3.28.9) Number of air scouts wanted: 224
      3.28.10) Air factory unit builder 224
      3.28.11) Available scouts – factor in fuel and make use of air staging 224
      3.29) V9 - Air overseer – Bombers and Inties 225
      3.29.1) Generalised scout/air unit management 225
      3.29.2) Find targets for bombers 225
      3.29.3) Determine available bombers 225
      3.29.4) Assign targets to bombers 225
      3.29.5) Bomber production 226
      3.29.6) Make mexes nearer enemy base high priority scout target if idle scout and bomber 226
      3.29.7) Target power if no other targets 226
      3.29.8) Interceptor basic logic: 226
      3.29.9) Interceptor tracking: 227
      3.29.10) Inties built if not enough to meet current air threats 227
      3.29.11) Don’t build bombers if last 3 that died were ineffective 227
      3.30) V9 Release 228
      3.30.1) Pre-release checklist 228
      3.30.2) Post-release bug fixes 228
      3.30.3) Misc tweaks 229
      3.30.4) Initial build order done via my code 230
      3.31) V10 - Air overseer – minor enhancements 231
      3.31.1) Air scouts clear current target if it’s already been scouted recently 231
      3.31.2) Stop inties chasing enemy air to other side of map 231
      3.31.3) Send idle air units to refuel if they have <70% fuel or <80% health 231
      3.31.4) Surplus bomber attack 231
      3.32) V10 - Indirect fire units 232
      3.32.1) Indirect fire overseer/enhancements to threat detection 232
      3.32.2) Prioritise shields and TMD if near current target and wouldn’t cause us to come within range of an enemy PD 235
      3.32.3) Instead of using the average position of a platoon, use the position of the front units 236
      3.32.4) Improved ACU protection logic 236
      3.32.5) Raider/large related attack/run logic 237
      3.32.6) Pathfinding issues 238
      3.32.7) Disband indirect defenders if their current threat group is all dead 238
      3.32.8) Don’t issue override orders from the overseer if a platoon is attacking or running 238
      3.32.9) Syncronised attacks 239
      3.32.10) Include nearby defensive type structures when assessing PD threat 239
      3.32.11) Minor refinements 239
      3.32.12) Escort expanding engineers with 1 tank 240
      3.32.13) Remove escorts if too many 240
      3.32.14) Target upgrading ACU 241
      3.33) V10 - Strategic choices – switching to eco 241
      3.33.1) Stop building tanks and upgrade sooner if have map control 241
      3.33.2) Switch to eco if we have no core platoons we want tanks for 241
      3.33.3) Eco strategy – focus on defence with minimal raiders 241
      3.33.4) Upgrade factories to non hq factories once we have an hq 241
      3.33.5) Switch to eco if mex income not increased recently 242
      3.33.6) Don’t upgrade buildings near the frontline 242
      3.33.7) After upgrading a factory, build an engineer and power as a high priority 242
      3.33.8) Have spare combat units patrol around the mex on our side nearest the midpoint if in eco mode 242
      3.33.9) Keep building tanks in eco mode if we have high mass 243
      3.34) V10 Release 243
      3.34.1) Pre release checks 243
      3.34.2) AI Tournament performance 243
      3.34.3) Bug fixes 244
      3.34.4) Minor enhancements 246
      3.35) V11 - Pathfinding 3rd attempt 247
      3.35.1) Background 247
      3.35.2) Information wanted from pathfinding 248
      3.35.3) Can we path from A to B 248
      3.35.4) Pathing results 255
      3.35.5) Amphibious pathfinding 258
      3.35.6) Naval pathfinding 262
      3.35.7) Summary of time taken to generate level 1 pathing 263
      3.35.8) Optimisation – function integration 263
      3.35.9) Update existing code to make use of new logic in place of CanPathTo 264
      3.35.10) Update intel logic to determine intel paths at start of game 264
      3.35.11) Further changes – v11-v12 264
      3.35.12) V13 Issues – Serenity Desert 265
      3.35.13) V13 - Double-check all mex positions are pathable 265
      3.35.14) Manual height adjustment 267
      3.36) V11-v12 Releases – Mass storage, Anti-Nuke, Misc 267
      3.36.1) Further bug fixes 267
      3.36.2) Basic Anti-experimental and nuke logic 268
      3.36.3) Cap mexes with mass storage 269
      3.36.4) Factor in energy income before having engineers upgrade 269
      3.36.5) Other misc changes 269
      3.36.6) V12 release: Pre release checks 270
      3.36.7) Bug fixes 271
      3.36.8) Misc changes for v13 272
      3.37) V13 - Anti-Navy logic 273
      3.37.1) Navy threat detection overseer 273
      3.37.2) Build more air factories if significant shortfall in air units wanted 274
      3.37.3) Build radar at base once we have enough power 274
      3.37.4) Only produce amphibious land units if we can’t path to the enemy base 275
      3.38) V13 Release 275
      3.38.1) Post release bug fixes 275
      3.38.2) Misc changes 278
      3.39) V14 - ACU Upgrades 280
      3.39.1) Issuing an upgrade 280
      3.39.2) ACU requests help when damaged 280
      3.39.3) Mid-tier ACU upgrades 281
      3.39.4) Only upgrading if we can attack approaching enemy units 281
      3.39.5) Spare engineers don’t assist anything if ACU upgrading and we have low mass 281
      3.39.6) Disable reclaim and building functionality if ACU has big gun (sera+cybran) 281
      3.39.7) ACU won’t get slow upgrades unless it’s closer to our base than the enemy 281
      3.40) V14 - Mobile shields 282
      3.40.1) Shield platoon 282
      3.40.2) Shield production: 282
      3.40.3) Assign mobile shields to T2+ mexes if TML detected 283
      3.40.4) Other platoon changes 283
      3.40.5) Misc changes 283
      3.41) V14 - Assign land scouts to mexes 284
      3.41.1) Assign scouts to mexes and adjust upgrade logic 284
      3.41.2) Build scouts based on numbers needed 284
      3.41.3) Create new platoon logic for guarding a mex 284
      3.41.4) Only upgrade mexes if they are close to base or have intel coverage 284
      3.42) V14 - Anti-bomber logic 285
      3.42.1) Micro to dodge bombers 285
      3.42.2) Working out the position a unit is facing, and how that compares to another location 285
      3.43) V14 - All-in attack on ACU 287
      3.43.1) Deciding whether to launch an all-in attack 287
      3.43.2) Platoon and unit actions 287
      3.43.3) Production and upgrade logic 288
      3.43.4) Platoon formation 288
      3.43.5) Misc refinements 288
      3.44) V14 Release 289
      3.44.1) Pre-release checks 289
      3.44.2) Bug fixes post release 289
      3.44.3) Misc changes/tweaks 291
      3.45) V15 - Profiler 293
      3.45.1) Profiler 293
      3.45.2) Function count and time per tick 294
      3.45.3) Initial results (with no optimisation) 294
      3.45.4) Softles profiler 301
      3.45.5) Conclusion – functions to focus on 303
      3.45.6) Optimisation: Reclaim 303
      3.45.7) Optimisation: GetIntelCoverageOfPosition 303
      3.45.8) Optimisation – high usage functions 304
      3.45.9) Optimisation: GetNearestEnemyIndex 305
      3.45.10) Optimisation: AddNearbyUnitsToThreatGroup 306
      3.45.11) Optimisation – moving near a target and initial optimisation results 306
      3.45.12) Optimisation – GetPriorityExpansionMovementPath (part 2) 307
      3.45.13) Results of optimisation to date and reclaim adjustments 308
      3.45.14) Summary of time taken by different logic areas 313
      3.46) V15 - New reclaim logic 313
      3.46.1) Shortlist of reclaim locations 313
      3.46.2) Assignment 315
      3.46.3) Localised reclaim logic 315
      3.46.4) Reclaim tracking and checks 316
      3.46.5) Other Reclaim functions 316
      3.46.6) Further optimisation 317
      3.47) V15 Release, and v16-18 Hotfix releases 318
      3.47.1) Pre-V16 release bug fixes 319
      3.47.2) Pre-V16 release misc changes 319
      3.47.3) Intel path rewrite 319
      3.47.4) V16 Hotfix release 320
      3.47.5) Pre-v17 hotfix release bug fixes 320
      3.47.6) Pre-V17 hotfix release - Other misc changes 321
      3.47.7) V17 Hotfix Pre-release checks 322
      3.47.8) V18 Hotfix 323
      3.47.9) Post v18 bugfixes 323
      3.47.10) Misc changes 324
      3.48) V19 - Rally points 325
      3.48.1) Choice of rally point 325
      3.48.2) Use of rally points 326
      3.48.3) ACU Anti-TML Logic – retreat to rally point 327
      3.49) V19 - Air dominance strategy and bomber changes 328
      3.49.1) Conditions for switching to air dominance 328
      3.49.2) Production and upgrade changes 328
      3.49.3) Air AA targeting changes 329
      3.49.4) Bomber targeting changes 329
      3.49.5) Initial build order changes 329
      3.49.6) Bomber – ‘hard to hit’ target logic 330
      3.49.7) Other bomber changes 330
      3.50) V19 Release 331
      3.50.1) Pre-release checks 331
      3.50.2) Post-release bugfixes 332
      3.50.3) Misc fixes 333
      3.51) V20 - Experimentals 333
      3.51.1) First experimentals 333
      3.51.2) V20 Pre-release checks 334
      3.51.3) Progress assessment 335
      3.51.4) Post-release bug fixes: 336
      3.51.5) Post release misc changes: 337
      3.52) V21 - Improved ecoing 339
      3.52.1) Build order and eco adjustments 339
      3.52.2) Powerstall management 339
      3.52.3) Reclaiming redundant buildings 340
      3.52.4) Ctrl-K mexes 341
      3.52.5) Other engineer and upgrade improvements 341
      3.52.6) Tracking eco performance progress 342
      3.53) V21 - ACU protection strategy and v21-v23 release 343
      3.53.1) SML ACU protection logic 343
      3.53.2) Dedicated ACU protection mode 343
      3.53.3) V21 Pre-release checks 344
      3.53.4) Post-release changes: Bugfixes 344
      3.53.5) Post-release changes: Misc 345
      3.53.6) V22 Pre-release checks 347
      3.53.7) Post-release bugfixes 348
      3.53.8) Post-release misc changes 349
      3.54) V24 - Early T3 bomber 349
      3.54.1) Prioritise airHQ if enemy is vulnerable to strat bombers 349
      3.54.2) Assisting HQ upgrades 349
      3.54.3) Initial engineers 350
      3.54.4) Scouting 350
      3.54.5) Factoring in bomber success to air factories wanted 350
      3.54.6) Prioritising power over HQs sometimes 350
      3.54.7) Minor eco improvements 350
      3.54.8) Best bomb location 351
      3.54.9) Clear path for bomber 352
      3.54.10) AirAA Support adjustments 352
      3.54.11) Targeting shielded units 353
      3.54.12) Other bomber and air changes 353
      3.55) v25 – Misc issues 355
      3.55.1) Bug fixes 355
      3.55.2) Initial build order changes 356
      3.55.3) Land combat and ACU related 357
      3.55.4) Intel related 358
      3.55.5) Engineer related 359
      3.55.6) Factory production related 360
      3.55.7) Threat response 360
      3.55.8) Air related 360
      3.55.9) Economy upgrade related 362
      3.55.10) Optimisations 362
      3.55.11) Misc/General logic changes 363
      3.55.12) V25 pre-release checks 363
      3.56) V26 – Nukes, shields and novax 364
      3.56.1) Bugfixes (post v25 release) 364
      3.56.2) Misc changes (post v25 release) 365
      3.56.3) When to start a late game unit 367
      3.56.4) Impact on normal build logic 367
      3.56.5) What experimental unit to build: 367
      3.56.6) Nuke launcher construction logic 368
      3.56.7) Nuke launcher targeting logic 368
      3.56.8) Fixed Shield generators 368
      3.56.9) Novax – decision to construct 369
      3.56.10) Novax - Usage 369
      3.56.11) Pre release checks 371
      3.57) V27 – T3 Arti 371
      3.57.1) Bug fixes 371
      3.57.2) Misc changes 373
      3.57.3) Revised overcharge logic 375
      3.57.4) Failed optimisation attempt 376
      3.57.5) UEF remaining late game logic 380
      3.57.6) Pre release checks 381
      3.58) v28 – Compatibility/game options 382
      3.58.1) Bugfixes 382
      3.58.2) Misc changes 383
      3.58.3) Improved nuke logic 384
      3.58.4) Improved logic where we can’t path to the enemy base 384
      3.58.5) Changing focus when an enemy is nearly defeated 385
      3.58.6) Scenario info settings – non-assassination game modes 386
      Other game setting – Unit restrictions 387
      Extra support for mods 388
      Other game setting support – Norush timer 389
      3.58.7) Pre-release checks 390
      3.59) V29 – Optimisation (again) and TMD 391
      3.59.1) Bug fixes 391
      3.59.2) Misc changes 391
      3.59.3) Identifying sim mods 392
      3.59.4) Random optimisation – GetBlueprint and GetUnitId 392
      3.59.5) Reclaim optimisation (again) 394
      3.59.6) NewMovementPath optimisation 398
      3.59.7) Optimisation – engineer logic – Initial changes 398
      3.59.8) New basic profiling check – total game time 401
      3.59.9) Optimisation - Idle engineers 402
      3.59.10) New optimisation feature – showing the ms at a point in time 403
      3.59.11) Platoon raiding 403
      3.59.12) Anti-Mercy logic 405
      3.59.13) TMD 405
      3.59.14) Pre-release checks 409
      3.60) V30 – Czar, Soulripper and defence 409
      3.60.1) Bug fixes 409
      3.60.2) Misc changes 410
      3.60.3) Enemy cloaked com 411
      3.60.4) Fatboy logic enhancements 411
      3.60.5) Reclaim tweaks 412
      3.60.6) ACU running from enemy experimental threats 413
      3.60.7) Non-UEF choice of experimental 413
      3.60.8) Cybran experimental gunship logic 413
      3.60.9) Czar 414
      3.60.10) Further tweaks to czar and soulripper logic 414
      3.60.11) Building SAMs 415
      3.60.12) Building PD 415
      3.60.13) Pre-release checks 416
      3.61) V31 – Bombers, TML and late-game 417
      3.61.1) Bug fixes 417
      3.61.2) Misc changes 419
      3.61.3) Misc improvements to late game 421
      3.61.4) New bomber logic: Initial bombers 422
      3.61.5) New bomber logic: T1 bombers (general) 423
      3.61.6) New bomber target logic: T2 bomber 423
      3.61.7) New bomber target logic: T3 bomber: 423
      3.61.8) Other air changes 425
      3.61.9) T4 bomber targeting and usage 429
      3.61.10) New Logic for land experimental attacks 430
      3.61.11) Co-ordinated T3 arti and novax targeting 430
      3.61.12) TML 431
      3.61.13) Pre-release notes 432
      3.62) V32 – Plateaus 433
      3.62.1) Bug fixes 433
      3.62.2) Misc changes 434
      3.62.3) Transports 436
      3.62.4) Identifying plateaus of interest 436
      3.62.5) Building engineers and transports 437
      3.62.6) Managing transports 437
      3.62.7) Plateau logic - engineers 438
      3.62.8) Plateau logic - factories 438
      3.62.9) Plateau platoon logic 439
      3.62.10) Plateau logic – other 440
      3.62.11) Pre-release checks 440
      3.63) V33 – Hotfix 441
      3.63.1) Bug fixes 441
      3.63.2) Misc changes 443
      3.63.3) Pre-release checks 444
      3.64) V34 – Firebase and shield assisting 445
      3.64.1) Bug fixes 445
      3.64.2) Misc changes 446
      3.64.3) Dynamic Firebases 448
      3.64.4) Shield assisting/Arti war enhancements 450
      3.64.5) Pre-release checks 451
      3.64.6) Acknowledgements 452
    4. Future possible changes 452
    5. Index of useful functions 523
      5.1) Map, game setup and general aiBrain information 524
      5.1.1) aiBrain - general 524
      5.1.2) AI Brain – Economy 526
      5.1.3) Map Markers and start positions 527
      5.1.4) Map size and playable area 528
      5.1.5) Terrain info 528
      5.2) Getting a list of units by category, location, or other method 529
      5.2.1) All units that meet a particular category 529
      5.2.2) Units at/near a location 530
      5.3) Unit information 531
      5.3.1) Units on radar 531
      5.3.2) Blueprints and unit categories 531
      5.3.3) Unit upgrades (enhancements) 532
      5.3.4) See 5.4.10) Other unit commands 533
      5.3.5) Location and pathfinding 533
      5.3.6) Unit’s ai Brain owner 533
      5.3.7) Unit’s current commands and whether it’s alive 533
      5.3.8) Unit bones 533
      5.3.9) Shields 534
      5.3.10) Units with missiles/anti-nukes 534
      5.3.11) Unit resource usage 534
      5.4) Unit and platoon commands 535
      5.4.1) Building 535
      5.4.2) Assisting 535
      5.4.3) Pausing 535
      5.4.4) Reclaim 536
      5.4.5) Factory specific commands 536
      5.4.6) Movement and attack-move 536
      5.4.7) Transport 537
      5.4.8) Combat related 537
      5.4.9) Stopping 538
      5.4.10) Other unit commands 538
      5.4.11) Upgrades and enhancements 538
      5.4.12) Current commands and targets 538
      5.4.13) Unit status 539
      5.4.14) Change a unit’s name 540
      5.5) Platoon additional functions 540
      5.5.1) Units platoon handle 540
      5.5.2) Get AIBrain 540
      5.5.3) Get units in a platoon 541
      5.5.4) Disband 541
      5.5.5) Platoon exists 541
      5.5.6) Platoon position 541
      5.5.7) Get all platoons 541
      5.5.8) Platoon ai plan name 541
      5.5.9) Add units to a platoon 541
      5.5.10) Army pool and removing units from a platoon 542
      5.5.11) Create a platoon 542
      5.5.12) Change or reset an AI plan 542
      5.5.13) Platoon movement formation 542
      5.6) Weapon information 542
      5.6.1) Get a unit’s weapon 542
      5.6.2) Get information on that weapon 543
      5.7) Time and thread related 543
      5.7.1) Game time 543
      5.7.2) System time 543
      5.7.3) Wait/delay the code 544
      5.7.4) Fork thread (run independently) 544
      5.8) Events 544
      5.8.1) Creating custom events 546
      5.9) Other 547
      5.9.1) Visual changes – Draw Circles and Lines 547
      5.9.2) On Intel Change 547
    posted in AI development •
    RE: Aeon: effort vs. reward (average-ish player?)

    Aeon gun's increased range is massive - you can reliably kite enemy guncoms with it, and they're forced to either hope you slip up with the kiting (letting them get within range), have a load more nearby units to charge at you, or get enough T2 PD up to stop you. Oh and a cost decrease to gun upgrade is a buff to the gun upgrade.

    Aurora I don't like but it does at least give a clear difference to the other factions who all have a very similar main tank.

    Mercy - discussed a load in a separate threat - I'd prefer the oppsosite of your suggestion - instead of making them survive against MAA, make them die to MAA. IMO if the enemy has MAA by their com it should counter mercies. Making Mercies able to tank T1 MAA shots for a while would make them insane.

    GC - It gets omni and the claws, which are really powerful against some matchups. As an extreme (unlikely) scenario - I can beat other land experimentals with certain SACU mass equivalent combinations. Try that against a GC and it'll easily crush them due to its claws [Edit: Forgot that the sandbox scenario I was recalling was UEF Shield SACUs with Percies underneath them and for some reason thought the claws got the SACUs - instead it got the shielded percies]. It also easily beats a monkeylord, and its 'crush when walking' is more meaningful due to its huge HP.

    Czar - compare this to soulripper, there's just no contest. It's incredibly versatile - you can charge at the enemy com under shields with SAMs nearby and kill it (try that with a soulripper and you've just given them a big mass donation). You can kite enemy asfs with it; you can use it in a more attritional style thanks to its shield; you can do surprise attacks by storing air units inside it, etc.

    posted in Balance Discussion •
    RE: Influx of Pro-Putin/Anti-Ukraine behavior in chat and game title

    @cpt_cnullrufs sports are banning players that are representing Russia from competing. Big difference to banning/discriminating against someone just because they live in Russia which is what you seem to be suggesting.

    posted in General Discussion •
    RE: AI Development Guide and M27AI v34 Devlog

    V10 - Implemented anti-turtle logic:

    • Use of T2+T3 MMLs and mobile arti to break firebases
    • Ecoing (not very well, but better than before)
    • Reduced turtle feeding

    Misc changes:

    • Large bomber attack for if we end up with lots of spare bombers
    • T3 air factories can be built/upgraded
    • Support factories will be built/upgraded instead of HQs
    • Higher tier power is built sooner
    • Engineers can request guards
    • Various bug fixes (see section 3.30.2 of the guide)
    • Updated the guide with details on how to run in FAF Develop offline

    My AI also has a new icon 🙂

    M27AI.jpg


    For anyone that's interested in the background to the last 5 versions/2 months - back at v5 I was crushed by gunner1069 (I usually get them to play a match every couple of weeks against the latest AI version) with a simple turtle strategy on Theta Passage - they didnt bother getting any mexes and instead just rushed T2 PD with their ACU and my AI had no answer despite having 4x the mass income. My primary focus in all the versions since then has been coming up with the logic that will give my AI a chance in that scenario.

    Unfortunately, a relatively simple plan for a human (dont send units single-file into PD, upgrade mexes and then attack with MMLs) required a bunch of different bits of logic:

    • Checking for PD and running away from it (so the enemy isn't fed kills/mass), without running away when we're already in range of it and able to beat it (I had some frustrating to watch games where my AI would charge in at a firebase, overwhelm the shields, be about to destroy everything, before deciding to run and turning a winning position into a loss)
    • Realising there's PD when it kills our land scouts without being picked up by their radar
    • Making use of air scouts to reveal 'hidden' PD to avoid suiciding units and the ACU into the PD
    • Quickly expanding to uncontested mexes (including on enemy side of the map)
    • Focusing on maintaining map control and ecoing if faced with a turtle rather than trying to break them immediately, which in turn requires various logic for identifying if we're against a turtle, upgrading mexes, building T2+ buildings, upgrading factories, making use of support factories, etc. (I've still not got basic things done like capping mexes with mass storage)
    • Using indirect fire units to attack PD/long range enemy units while both protecting them from enemy mobile attacks, and not suiciding our own units trying to protect them

    These changes also mean my AI will be worse in other situations - e.g. against a non-turtle it might choose to eco when it would be able to finish the game by pressing the attack, and it's also still poor at the mid-T2+ stage so extending the game via ecoing means it's more likely to snatch defeat from the jaws of victory. Long term though it needed to happen as a 'T1 or die' strategy only has a decent chance on 5v5 maps.

    posted in AI development •
    RE: AI Development Guide and M27AI v34 Devlog

    v22-v23 Update
    There was no particular theme to these changes, other than that most of them arose from watching mistakes my AI made on a 1v1 against another AI on Burial Mounds

    • Tanks can now suicide (sometimes)
    • Fixed bug with power stall manager that made it far less effective; minor tweaks to this to prioritise HQ updates and initial engineer production (to allow more efficient power)
    • Minor logic improvements to experimentals (stopping them from trying to kite, making monkeylord move instead of attack-moving)
    • Ignoring PD that cant be pathed by land (so MMLs etc. arent overbuilt trying to counter it - relevant in particular for Burial Mounds)
    • Various tweaks to air logic (more likely to refuel, target transports with AA, make use of stealth)
    • More accurate logic for whether reclaim is within range (thanks to Marlo and Jip who helped me figure out how to determine the size of a reclaim object)
    • Another rework of my land scout 'intel path' logic - it should now form a path along the shoreline on island maps
    • Bugfix that caused my threat response logic to view each unit individually instead of grouping threats together
    • Various other bugfixes and tweaks

    Although there was no big area of focus with this release, I did manage to achieve one of my long term goals with it, beating gunner1069 (the human sparring partner who usually plays a match against each version of the AI; they're a 1.1k global from playing astro exclusively, with their preferred tactic being to turtle - originally they played M27AI on Theta Passage, until around v10 when M27AI would fare well against their turtling on conventional maps, at which point they switched to Astro Craters).

    Winning against a turtle on Astro Craters is harder than a normal map, since the normal advice against a turtle is to avoid attacking them, out-eco them with your map control (since T1 mexes are far cheaper per mass generated than T2 mexes), and then attack with an overwhelming force. Obviously this doesn't work so well if gaining map control just means you have 21 mexes to their 19. There are still plenty of flaws with my AI that a good astro player could exploit to win, but it can now at least offer a challenge on the map against weaker players.

    V23 hotfix - Thanks to relent0r for flagging - there was a bug in v22 which caused my T1 platoon formers to not work, which should be fixed now.

    posted in AI development •
    RE: Weekly AI Tourney Series

    AI biweekly/monthly tourney: 20km Combined arms
    The theme of this map was 20km maps that allow use of land, navy and air. The maplist chosen was:

    • Crossfire Canal - FAF version
    • Norfair
    • The Ditch - FAF version
    • Setons Clutch - FAF version
    • The Bermuda Locket - FAF version

    Setup
    Setup is similar to the last tourney - 12 AIs are split into 4 groups. The weakest 4 are eliminated in the first round, with the winners from one group fighting the runners up from the other in the quarter-finals in 3 matches.
    As there were 5 maps, maps were chosen randomly for the group and quarters, and then for the semis and finals each map was played.
    Starting positions are the default first and second positions set by the map (e.g. on Setons this means a 'mid vs mid' battle)

    Changes to AI
    5 of the featured AI have released new versions since the last tourney: M27, Swarm Terror, SCTA Arm, Sorian Edit, SCTA Core

    The results
    Group stages

    Group AI name Wins
    1 M27 4
    1 DilliDalli 2
    1 SCTA Core 0
    2 Swarm Terror 4
    2 Sorian Adaptive 2
    2 Sorian Edit 0
    3 Dalli 3
    3 Dilli 2
    3 Adaptive 0
    4 RNG Standard 4
    4 SCTA Arm 2
    4 AI: Turtle 0

    Quarter finals

    AI Name Wins AI Name Wins
    M27 3 Dilli 0
    Swarm Terror 3 SCTA Arm 0
    DilliDalli 3 Dalli 0
    RNG Standard 3 Sorian Adaptive 0

    Semi finals

    AI Name Wins AI Name Wins
    M27 5 Swarm Terror 0
    DilliDalli 5 RNG Standard 0

    Finals

    AI Name Wins AI Name Wins
    M27 5 DilliDalli 0

    Total wins by AI

    AI Name Wins Win %
    M27 17 100%
    DilliDalli 10 59%
    RNG Standard 7 58%
    Swarm Terror 7 58%
    Dalli 3 43%
    Dilli 2 29%
    Sorian Adaptive 2 29%
    SCTA Arm 2 29%
    Sorian Edit 0 0%
    SCTA Core 0 0%
    Adaptive 0 0%
    AI: Turtle 0 0%

    Detailed results
    The full results can be seen in the 'DetailedResults' worksheet of the following file:
    https://docs.google.com/spreadsheets/d/1i2ObsZ49S9gUTgWw0E68qZ8VrOkaP_Jk/edit?usp=sharing&ouid=100973959280546778272&rtpof=true&sd=true

    Other Observations

    • While some AI attempted to build navy, in all cases it proved ineffective with the mass invested in navy far exceeding the mass killed. Neither of the finalists built a single naval unit the entire tourney.
    • The finals were closer than the scoreline suggests, with DilliDalli dominating land on most of the maps and winning map control (e.g. holding 5 out of the 6 islands at one point on Crossfire Canals, and effectively raiding and even claiming mexes behind M27's main base on Setons). The finals ended up being an air vs land contest on most maps.
    • SCTA Arm managed to have 2 T3 tanks solo a GC (GC's shot was blocked by cliffs) but it wasn't enough to let it claim a win
    • Heroic unit of the tourney: DilliDalli's lone striker vs M27 on Setons which managed 19 kills and 1,720 mass kills raiding mexes
    • Notable changes in fortunes: Swarm managed a turnaround in speed, going from the slowest AI to claim wins in the last tourney to getting the second fastest win (11m21, beaten only by Dilli who got a win in 10m48)
    posted in AI development •
    RE: Noob matchmaker queue

    @BlackYps
    I fail to see how anyone could argue astro craters is like sim city with a straight face, even allowing for the way in which many people here (as shown on this thread amongst others) seem to look down with disdain on those of us that play such maps (even though they appear to be the most popular types of maps on FAF, at least for custom games). There's more variety in the gameplay on astro than the majority of 1v1 maps on ladder for those not in the highest ratings , where in most cases for ladder it's a case of 'T1 land spam or die' (with having a good APM being far more significant than making good strategic decisions). Perhaps you've just not played enough astro games to appreciate the range of strategies on it (since if you're using your main profile you don't appear to have any games on the map).

    I'd have also thought a focus on "the kind of players that faf wants to attract" (in the context of not wanting to attract people who don't like high APM play) very shortsighted. The more people who play faf (in a non-toxic way) the better its longevity/future prospects. Just using myself as an example, while I may play mostly astro I also sometimes play some 1v1 ladder. I doubt I'm the only person who has a favourite style of map such as astro/gap/setons but who also likes to sometimes play other maps or game modes. If all such players were to leave faf because we're 'not the kind of players that faf wants to attract' you get fewer people playing those maps/game mods you approve of such as 1v1 matchmaker.

    I also don't understand the logic proposed both here and in the PC election thread for removing the global ranking system. If you had a team of rank 1500s on astro or dual gap against a team of rank 500s (global rating), almost every time the 1500 ranks would crush the 500 ranks. While you may have a greater variance in ability (especially at lower ratings) than with a 1v1 rating, the rating is still a far far better guide to how well someone will play than having no rating at all. Removing the rating just seems like a way of punishing people who are playing maps that don't meet the personal preferences of those suggesting its removal, especially given how bad opti-balance is at balancing a game when you have newer players. As for manually balancing based on knowledge of players, the majority of my games have been from where I've hosted an all welcome lobby, but on average I won't recognise the names of the majority of people who join, and even of those whose names I recognise I'll only know how well some of them play/favoured strategies (there's probably only 4-5 people I could think of off the top of my head where I know how they tend to play and how good that style of play is).

    Going back to the OP, while I'd like the idea of an option to play 'lower APM' 1v1 maps (as opposed to currently where I can be given a 1v1 map on a map that's normally seen in the custom lobby as a 3v3 or 4v4 map), and think it would be a more gentle introduction to newer players, if implemented it'd need to be as an option on the existing matchmaker (e.g. you check the box for if you want to play 'new player friendly only' maps, and/or if you're open to playing the full map pool), or else you dilute the number of people on matchmaker even further.

    Since as I understand it something a bit like this is meant to happen (I don't think it's working well if it is though), it may be easier to just improve the current system of starting with a small map pool and then adding more complex maps as rating rises.

    The 'stone age' mode also sounds like an interesting idea for teaching the gameplay style that's required for 1v1, although I'm not sure how best it would be implemented (if as an option, people may just not choose it and/or it splits the pool of people queuing too much and makes finding games harder; if its as a tutorial mode with AI then people may not be aware of it and/or the AI may not offer enough of a challenge; if it's forced for the first x games then it could put off people who want to experience the full range of options and not be limited to the first tier).

    posted in Suggestions •
    RE: Sparky Rationalization

    The problem I've with them whenever I've got them is that a normal T2 engineer is often better at the role that it feels the sparky should be there to fill (frontline engineer firebase builder), and the main reason is the lack of intel.

    I'd therefore be fine with them either having an increase to their radar range to 50, or to allow them to build t1 radar. That way they keep their unique feel (they cant build power or factories), but can still build a firebase that can actually detect units within range of PD. T1 radar is also arguably more of a defensive structure, so still fits with the theme of an engineer only being able to build defences.

    Making them just another engineer (that can build everything) just with more health would mean they lose what makes them unique, even if from a balance perspective it might not be a big boost to them.

    posted in Balance Discussion •
    RE: Talking about FAF Code of Conduct

    @emperor_penguin
    My understanding of your proposal and its underlying assumptions are:

    1. FAF needs to be less toxic
    2. Its too toxic because the CoC isnt being enforced
    3. Having a rule that the CoC is enforced will solve this

    I’d agree that it would be good to reduce toxicity in FAF, but it doesn’t follow that inconsistent moderation is the cause, and even if it was I dont see what having a rule that the CoC is enforced would do to stop it.

    There are a bunch of other things that might impact on toxicity. To give a few possible examples:
    -too many reports for the mods to keep ontop of (note your proposal could exacerbate this problem if it led to an increase in immaterial reports being made-a lot of mod reports will be ‘false’ reports such as reporting a teammate who didnt play perfectly)
    -ignorance of the rules-as they dont strictly define what is acceptable but instead include a number of more subjective tests its possible people dont realise what they are doing is breaching the rules; and/or people dont even know the rules exist
    -lack of effective deterrent-FAF is cheap to buy so the offender might think they can just buy another copy if banned for offensive behaviour

    A solution to one problem can also cause others. Eg allowing anyone who volunteers into the mod team would be great for clearing the backlog of reports, but a bad mod could cause far more damage to FAF, and you’d likely see an increase in inconsistency. Very prescriptive code of conduct rules coupled with prescriptive punishments might reduce inconsistency of mod actions, but also lead to actions seen as unjust or unwarranted. Imposing changes to the mod team without their agreement also risks demotivating existing mods (who are volunteers).

    posted in General Discussion •
    RE: AI Development Guide and M27AI v34 Devlog

    V7 Update - T2 is now here! My changes were focused on creating my own engineer and platoon formation functionality (which took far far longer than I was expecting due to various difficult bugs - a lot of work for not much benefit), but at the end I threw in some basic upgrade logic so my AI now gets T2.

    Various bug fixes. More notable ones are that the AI should work better on adaptive maps that 'hide' some of their mexes, and should be less likely to try and build on unpathable mexes
    Custom platoon formation and engineer functionality. A couple of more notable features of this are that engineers now work together to build 1 building (e.g. power) rather than independently try and build 5 at once, and factor in what mexes theyre already planning to build on when choosing where to expand
    Building upgrade logic - AI will now upgrade mexes and land factories (meaning for the first time T2 units can hit the battlefield!)
    Load spreading of functionality to help counter the CPU performance hit of these changes
    I've also updated the guide for a couple of points (e.g. including a section on events)

    As before, much more detail on the changes/my thought process as I went about implementing them is in the dev log.

    posted in AI development •
    RE: Ban EcoManager & Similar Mods

    @marcspector thats not option 4. Option 4 I think is saying it is automatically part of FAF (presumably with an option in settings to turn it off) the way building storage around a mex is integrated.
    (Edit: posted pre your edit!)

    If it’s made a SIM mod (which I presume is what is meant by banning it-ie ban mods featuring this unless they are SIM mods) and Jips ideas for making it hard for most people to use are implemented I dont see an issue with this not being fullproof. Not being able to stop 1% of cases shouldnt mean giving up entirely.

    posted in General Discussion •
    RE: AI Development Guide and M27AI v34 Devlog

    v20 Update:
    This version improves some of the AI's late game ability, both fixing an issue that led to severe under-utilisation of T3 mobile artillery in some cases, and having it build experimental units.

    • Experimental units will now sometimes be built late game
    • Improved use of T3 mobile artillery (they're less likely to gather in huge numbers doing nothing...)
    • Better use of heavily upgraded ACUs (including bugfix that caused Cybran ACUs to do nothing after getting laser)
    • Tweaks to Engineer management
    • Other minor bugfixes
    posted in AI development •
    RE: TMM 3v3 and 4v4 coming soon

    I’d suggest highlighting the point about being able to join multiple queues in the news post when its released (and possibly even the game loading tooltips)-I doubt I’m the only one who assumed you could only be in one queue at a time.

    posted in Blogs •
    RE: AI Development Guide and M27AI v34 Devlog

    v24 Update
    The main focus of this update was having the AI rush bombers more often and various other changes to the air logic:

    • T3 bombers will sometimes be rushed depending on the map and game state (e.g. on 'island' maps)
    • Improved targeting for bombers, in particular when targeting enemy structures and considering whether to attack a shielded target (particularly relevant for strategic bombers who previously would ignore any shielded target)
    • Various tweaks to build orders and whether to upgrade an air factory in preference to a land factory
    • Various bugfixes
    posted in AI development •
    RE: AI Development Guide and M27AI v34 Devlog

    M27 turns 27!

    Main change in v27: T3 arti introduced
    Other changes: 23 bugfixes, 38 misc changes.

    I was expecting the T3 arti to be relatively straightforward since I already had logic for choosing a nuke target that I could adapt, but getting the power adjacency to work became a real headache and also led me to a separate bug where structures could be built ontop of each other (thanks to Jip for confirming it's an engine bug).

    The other bugfixes and misc changes included various updates relating to replays people helpfully provided:

    • Improved AI's ability to fight ghetto gunships (thanks to Babel for the replays highlighting this weakness)
    • Reworked overcharge logic (I'd originally written it when M27 could only build T1 units so there were a few flaws with it when fighting T2+ units)
    • Introduced a unit cap for ASFs (thanks to Azraeel for the replay highlighting 2 M27 AIs building c.900 asfs! and Fearghal for confirming a similar issue on the Air Wars map)
    • Fixed a hard crash that sometimes could happen at the start of the game. Also removed an amusing bug/feature where the Ythotha deathball would be controlled by the AI making it far deadlier (thanks to Relent0r for highlighting both of these)

    Edit: Also managed to introduced a painful new bug - the ACU will now suicide into enemy PD (due to the new overcharge logic) - this will be fixed in the next version.

    posted in AI development •
    RE: Weekly AI Tourney Series

    AI biweekly/monthly tourney: MapGen
    The idea of this tourney was to use MapGen to create a map for the AI to fight against for 5km, 7.5km, 10km, 15km and 20km. Due to the AI tourney still being run manually a single map was used for the map size for the tourney (rather than generating a new random map every time). The maplist chosen was:

    • neroxis_map_generator_1.8.5_vgf5tqx2uxrcu_aicae_
    • neroxis_map_generator_1.8.5_uydyqpk4utuuu_aidae_
    • neroxis_map_generator_1.8.5_xaghpcvo2lnrk_aieae_
    • neroxis_map_generator_1.8.5_bvwpdifwrols4_aigae_
    • neroxis_map_generator_1.8.5_44sxnthefcek6_aiiae_

    Setup
    Setup is similar to the last tourney - 12 AIs are split into 4 groups. The weakest 4 are eliminated in the first round, with the winners from one group fighting the runners up from the other in the quarter-finals in 3 matches.
    As there were 5 maps, maps were chosen randomly for the group and quarters, and then for the semis and finals each map was played.

    Changes to AI
    3 of the featured AI have released new versions since the last tourney: M27, SCTA Arm, SCTA Core

    The results
    Group stages

    Group AI name Wins
    3 DilliDalli 4
    3 Sorian Edit 3
    3 SCTA Arm 0
    2 M27 4
    4 SCTA Core 0
    4 Dalli 2
    4 RNG Standard 3
    1 Adaptive 1
    2 AI: Turtle 2
    1 Swarm Terror 4
    1 Dilli 2
    2 Sorian Adaptive 0

    Quarter finals

    AI Name Wins AI Name Wins
    Swarm Terror 2 Sorian Edit 1
    M27 3 Dalli 0
    Dilli 2 DilliDalli 1
    RNG Standard 3 AI: Turtle 0

    Semi finals

    AI Name Wins AI Name Wins
    Swarm Terror 0 M27 5
    Dilli 1 RNG Standard 4

    Finals

    AI Name Wins AI Name Wins
    M27 4 RNG Standard 0

    (M27 and RNG drew 1 game)
    Total wins by AI

    AI Name Wins Win %
    M27 16 94%
    RNG Standard 10 59%
    Swarm Terror 6 50%
    DilliDalli 5 63%
    Dilli 5 38%
    Sorian Edit 4 50%
    Dalli 2 29%
    AI: Turtle 2 29%
    Adaptive 1 20%
    Sorian Adaptive 0 0%
    SCTA Arm 0 0%
    SCTA Core 0 0%

    Detailed results
    The full results can be seen in the 'DetailedResults' worksheet of the following file:
    https://docs.google.com/spreadsheets/d/1i2ObsZ49S9gUTgWw0E68qZ8VrOkaP_Jk/edit?usp=sharing&ouid=100973959280546778272&rtpof=true&sd=true

    Other Observations

    • Notable changes in fortunes: In the final, RNG had c.25 mass to M27's 621, yet still managed a draw (M27 attacked RNG's base with its ACU leading to both ACUs dying)
    • The 7.5km map featured two land masses separated by water, which caused several AIs issues
    • Although SCTA failed to get a win it managed to match Sorian Edit for map control and eco for much of the game, with both games going over an hour
    • The group stages required two deciding matches to determine groupings, with an extra Dilli vs Adaptive and Sorian Edit vs DilliDalli match due to them getting the same number of wins as each other.
    posted in AI development •
    RE: Premade Teams in the upcoming TMM 4 v 4 Queue

    Wont it work itself out via ratings? If premade teams get an advantage theyll gain rank, and be up against individually better random players on average which will balance things out

    posted in Balance Discussion •
    RE: Create a casual noob-friendly matchmaker queue (to increase player retention)

    With a larger player base I'd be in favour of such a matchmaking idea. My concern though is that you'll only end up with a small number of people queuing at a time (except for very busy periods) similar to the existing matchmakers, and you'll inevitably have some people who are very good at whatever custom mode is highlighted compared to a new player.

    That said, one of the biggest issues I have with both the 1v1 and 2v2 matchmakers is that the maps are too much like hard work. That is, if I get a 1v1 map there's a good chance it's some large sprawling map with mexes everywhere that requires me to do a crazy amount of actions a minute to keep up with t1 land spam being mandatory (except on huge maps or naval ones), which ends up being stressful not fun. In 2v2 from what little I've played it's similar, but with the added pressure of a teammate who will be angry that I don't perform as well as they'd like.

    I think this is a large part of the reason games like gap, astro, dual gap, pass etc. are popular - you dont have to focus on as many areas of the map at once, and so there's more chance to just have fun, and it's alot easier to get into as a new player. Even setons and isis mirror this to a large extent (ignoring the players who will make your life miserable if you don't conform to the expected way of doing things when starting in a particular slot).

    Therefore I like the idea of having lots of different 'fun'/different types of modes that will make a change in gamestyle from the standard 1v1, especially if they include vs AI challenges, I'm just not sure how to solve the issue of too few new players wanting to do it leading to those that do try getting crushed by pros. One possibility might be to showcase it on the news page (e.g. you have a different mode each week, and the news page features it prominently).

    posted in Suggestions •