FAForever Forums
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Login
    1. Home
    2. maudlin27
    3. Best
    The current pre-release of the client ("pioneer" in the version) is only compatible to itself. So you can only play with other testers. Please be aware!
    Offline
    • Profile
    • Following 0
    • Followers 7
    • Topics 21
    • Posts 1,067
    • Groups 2

    Posts

    Recent Best Controversial
    • M28AI Devlog (v246)

      What is M28AI
      M28AI is an adaptive AI for Supreme Commander: Forged Alliance, intended to provide a challenging experience for players, making extensive use of microing skills coupled with strong macro capabilities to defeat opponents.

      Competent at both 1v1 and team based games, M28AI adopts an aggressive approach to the game, utilising a wide variety of tactics that will adapt based on what the player does.

      A variant of M28AI, M28Easy, disables M28AI's micro capabilities, while other variants include land, air, and turtle options. There are also various configuration options (in game options, which contain the prefix "M28AI:") to allow players to further refine how it plays, including:

      • Hybrid AI option - if enabled, you can enable M28AI logic on selected units you control (note that this option should only be enabled if you intend to use the feature, as it will result in all normal M28AI calculations being applied to your own units which may impact on the sim speed with high unit counts)
      • AIx overwhelm option - allows you to increase or decrease the AIx modifier over time to make it harder/weaker
      • Micro level - In addition to the option to disable all microing with the M28Easy option, a 'M28 time between orders' option allows you to adjust M28's general responsiveness level for most units. By default units consider new orders every second, but this allows you to increase the delay up to 10 seconds (which, for example, will make M28's kiting behaviour much weaker, as well as making M28 run faster)

      M28AI is highly compatible with mods and unusual map settings, including (but not limited to) popular mods such as BrewLAN, BlackOPs and Nomads. It can also handle a wide array of unit restrictions in FAF (e.g. it is capable of completing the original supcom campaign which in early missions can involve restrictions such as only building t1 air units).

      It also supports campaign missions, both as an AI teammate; or as a replacement for the campaign AI (whether for AI allies such as the rebels in the FA Mission 2 Dawn campaign or for the enemy AI); Further details on the configuration options available, including campaign specific ones, are summarised in the FAF wiki for co-op missions.

      M28AI was originally developed for FAF, and this is recommended for the most competitive experience. However, it also supports LOUD, QUIET, steam and GOG (see the installation.txt file for details of how to setup M28AI for these; for FAF setup you can either refer to this same file or the FAF wiki which details how to play with custom AIs).

      Why should you use M28AI

      • AI that provides a challenge through use of advanced logic instead of cheating in bonus resources or units (although you can give it bonus resources for even more of a challenge if you want)
      • Runs significantly faster than M27AI in larger teamgame scenarios (in addition to being harder than M28 both 1v1 and teamgames)
      • Chance to see the AI improve and influence it's development via feedback
      • Different playstyle to M27AI and other AIs
      • Greater compatibility with mods and unusual game settings
      • Compatible with campaign missions (FA, SC and custom campaigns) as an AI teammate (in co-op), and/or as a hostile campaign AI.
      • Highly configurable, including unique modes (such as shared armies and MOBA mode), adjustible micro, and different AI personalities.

      Background
      M28AI was intended as a long term potential successor to M27AI, involving a complete rewriting of the AI framework to run significantly faster in large teamgame scenarios and provide greater tools for the AI to make use of. As of February 2024 it was able to outperform M27 on most maps and settings, and has improved further since then.

      As with M27 it makes extensive use of microing and its focus is in trying to win games, with an estimated global rating of around 900-1200. An M28Easy option is available that disables most micro (along with a setting to effectively set the level of micro used for the normal M28AI), and an AIx overwhelm option is available for people wanting to customise the difficulty more (by increasing / decreasing it over time).

      Find out more information
      This forum thread contains summary information of M28AI updates. A detailed devlog is available where I've noted my progress with M28AI and include far more details on updates made (e.g. the devlog relating to the v1 release of M28AI is more than 100 pages!). Due to file size issues, this is split between:

      • Devlog covering pre-release to v103
      • Devlog covering v104 to v207
      • Devlog for v208 onwards and a list of possible future changes.

      Provide feedback

      • Send me a message on discord (maudlin27), either via direct message, the AI development discord or alternatively there's a general AI feedback channel in FAF.
      • You can also post in this thread

      Where providing suggestions or highlighting bugs it'd be helpful if you would describe the issue, include the replay ID, and the time in the replay where the issue occurs.

      Playing offline
      If you want to play against M28 offline and can't access the FAF client (e.g. due to DDoS attacks), you can download the mod from Github and ensure the M28AI folder is saved to:
      C:\ProgramData\FAForever\user\My Games\Gas Powered Games\Supreme Commander Forged Alliance\mods\M28AI

      The mod files can be obtained from Github by downloading a ZIP of the code (and then extracting these):
      https://github.com/maudlin27/M28AI

      While the game can be run offline either by clicking the offline mode from the FAF client, or running the shortcut C:\ProgramData\FAForever\bin\ForgedAlliance.exe /init init_faf.lua

      Trophy holders
      These are a virtual recognition of the last person to win against an M28 AI that gets a significant boost to resources:

      • The Radde trophy - awarded for beating a 1.4+ resource (1.0 resource) M28 on a 15km+ mapgen
        RaddeTrophy2.png
        Current holder - Radde and Microplastic - beating 1.4 resource v239 on a 15km mapgen

      • Sladow trophy - awarded for beating a 1.5+ AIx (i.e. resource and build rate) M28 on any 5km or larger map (i.e. 256 x 256 or larger)
        1b47c644-4bcf-4520-aab1-3a433247f71a-image.png
        Current holder - Vindex (v227, 1.5 AIx on the 20km map the ditch, for which the previous best I'd seen was Sladow beating v144 1.4 AIx)

      posted in AI development
      maudlin27M
      maudlin27
    • AI Development Guide and M27AI v81 Devlog

      Note: Most of my focus is currently on M28AI, and M27 is expected to receive minimal updates in the future

      Installation notes
      To play with M27AI, go to the mods section in the FAF client and search for M27AI. Download the mod, then when hosting a game make sure you have enabled the M27AI mod. This should allow you to then select M27AI as one of the players in the game.

      Further details including screenshots on how to setup custom AI are included on the FAF Wiki:
      https://wiki.faforever.com/en/Custom-AIs

      Summary of how M27 plays compared with default/sorian AI
      M27 is intended for players in search of a greater challenge than the default/Sorian AI. Some of its features include:

      • Adaptive playstyle, responding to player actions, and actively seeking out vulnerabilities in player forces and building units to exploit these
      • Making use of player tactics/unit microing and certain 'try-hard' type approaches, for example kiting with units, hover-bombing, synchronising MMLs to overwhelm TMD, manual reclaiming, ctrl-King T2 mexes to build T3
      • Being built with FAF balance/meta in mind

      To give a couple of examples of the challenge it provides compared to the default and Sorian, 1 (normal) M27 AI has managed to beat an Adaptive and/or Sorian adaptive AiX with a 2.0 modifier, and also beaten 7 Sorian adaptive (on the same team) on Setons, and is consistently the winner of AI vs AI tournaments (although RNGAI is a close second and worth checking out as well since it offers an alternative play style).

      M27AI background and status
      Following the 2021 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 (2022-12 update - as people were having issues viewing the original file I've split it out and have separated the main 'devlog' part of M27 development from the more general notes on getting things setup to develop the AI and useful functions)
      Devlog extracts: https://docs.google.com/document/d/1uQlEoN-kti7G2MnhwD60uaaHwVevPNYH/edit?usp=sharing&ouid=100973959280546778272&rtpof=true&sd=true
      Development guide extracts: https://docs.google.com/document/d/1puzW5hKcOBNE7wu7bXj6qXfTJ60r2f93/edit?usp=sharing&ouid=100973959280546778272&rtpof=true&sd=true

      You can also access the mod on Github:
      https://github.com/maudlin27/M27AI
      While in theory it should be possible to install the mod by copying the M27AI folder (from Github) into the FAF mods directory, some people have reported issues with that. It's recommended that the mod is installed through the FAF client (via the mod vault).

      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 (v70-74 summary)

      V70 summary of changes:
      Update based primarily on issues spotted from the first weekend of the Rainbow Cup tournament:

      • Fixed a bug that caused MAA to stay way too far back from the ACU when there were nearby enemy tanks (i.e. the MAA would run away from the tanks even if they were needed to protect the ACU from gunships/bombers)
      • Significantly improved the speed at which the AI will try and get T2 PD if the enemy gets a guncom and attacks its base
      • Added new capture logic to capture certain civilian units on the map (e.g. titans on big bang dry)
      • 6 other bugfixes, and 12 misc changes, mostly relating to building ground based anti-air, and being a bit more cautious with bombers (including not overbuilding them once a very large bomber force has been assembled).
        v71 - 8 Minor bugfixes and tweaks
        V72 - 4 fixes, including AIX fix
        v73 - M28 compatibiltiy fix and energy storage adjust for FAF balance change
        v74 - Minor bug fixes, primarily relating to the mobile factory and Aeon gun upgrade FAF changes

      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-35 - Turtling
      v36 - Skirmishers
      v37-38 - Game enders
      v39 - Quantum optics
      v40 - Deceiver
      v41 - Hives and shield disruptor
      v42 - Misc and multi-TML defence
      v43 - Misc and UEF experimentals
      v44-46 - Teamwork
      v47 - Optimisation
      v48 - Personality
      v49 - Hotfix
      v50-51 - Navy
      v52 - Desync hotfix
      v53 - Shield boats
      v54 - Temporary eco strategy
      v55 - Experimental defence
      v56 - Stealth boat
      v57 - Pathfinding (again!)
      v58 - Misc (RC tweaks)
      v59 - Gunships
      v60 - Naval enhancements
      v61 - Stats
      v62 - Land spam
      v63 - T3 arti prioritisation
      v64 - Mass fabs
      v65-v66 - Skirmisher and T3 arti tweaks
      v67 - Misc
      V68-tml enhancements
      v69 - Misc
      v70 - Guncom defence and capture
      v71 - 74 Mini updates - bugfixes
      v75-78 - small bugfixes and rating support
      v79-81 - FAF navigational mesh

      posted in AI development
      maudlin27M
      maudlin27
    • RE: M28AI Devlog (v246)

      M28AI's release day has arrived!

      The main changes made from before were focused on compatibilty, (cpu) optimisation, and increasing its difficulty.

      Compatibility
      Tested M28AI with the following mods and map settings (usually this just consisted of a single game, so please let me know if you come across any issues):

      • Maps with water starts (including all-water maps such as Dreadnought Chasm)
      • Survival maps
      • AI Wave survival mod
      • Flying engineers mod
      • Norush game setting
      • Low unit caps
      • Crazy rush
      • Nomads
      • BlackOps
      • BrewLAN
      • Max AiX modifier (IIRC 5.9)

      Optimisation
      Big thanks to @Jip who helped me achieve a significant reduction in the time taken by M28AI to analyse the map at the start of the game. Previously M28AI was taking more than 2 minutes on 10km maps such as polar depression, with one of the functions being run taking c.102 seconds. With Jip's help this function's time was reduced to roughly 0.2 seconds, with M28AI completing its analysis in most cases in 30s or less (slower CPUs will take longer). The devlog contains more information and profiling for this.

      This also allowed me to make use of more accurate water zone generation (without increasing the analysis time).

      Jip also helpfully provided code to allow M28AI to get the navmesh label (broadly, whether a particular part of the map is pathable by particular units) for a particular point on the map (which was needed for the optimised code mentioned above to work properly).

      Competitveness
      Various tweaks and improvements were made to make M28AI provide a harder challenge. As part of this I made sure that M28 was capable of beating RNGAI and/or DilliDalli AI on a number of maps (including those maps I'm aware of where they're capable of beating M27AI some of the time).

      Rather than try and achieve >50% win rate on all these maps, I instead just aimed for a single win, and did the AI version of 'save scumming' with replays until M28AI either won the replay, or creating a new game on the map resulted in it winning. Outside of Astro Crater (where M28AI is able to beat M27AI a majority of the time) I didn't test M28AI against M27AI. This is because I realised early in the development of M28AI it was too demotivating to watch it get crushed by M27AI (wheras against RNGAI and DilliDalli AI even if it loses often it's a close fought game, providing me with motivation to try and improve M28AI as opposed to giving up).

      As a rough count this process involved 109 tweaks and improvements to M28AI (examples of more impactful changes within this include T2 artillery construction, destroying obsolete radar, and basic logic for building and managing bombers).

      Since I've played a grand total of 1 game against M28AI (just to make sure M28 didnt take control of my units when it was my ally against 2 enemy M28AI), I expect it will need a lot more changes to improve its performance against players and become 'cheese resistant'. Almost all games were 1v1s (since they're faster to test) so although the code was all written with the aim of working in team game scenarios, I expect these aspects of it logic will be a bit rougher around the edges.

      Please let me know if you have any feedback, suggestions, or encounter bugs.

      posted in AI development
      maudlin27M
      maudlin27
    • RE: M28AI Devlog (v246)

      Progress update: The end of the beginning? or the beginning of the end?

      A lot has happened with M28 in just 2 weeks, such that I'm hopeful that it's release date could be in a matter of weeks rather than months. To summarise what's been implemented:

      • Naval logic, including building and upgrading naval factories, building naval units, and using naval units
      • Novax
      • Nukes
      • TML
      • T2 PD (although in a very limited/niche way comapred to M27)
      • Ahwassa
      • T3 arti
      • Various small changes to improve its performance slightly (e.g. less likely to overflow mass, doing better on maps where it can only reach the enemy with air, logic for engineer order reprioritisation)

      M28 now has all the core features that I'd set out to implement ahead of the release (some original points such as T3 bombers were pushed to be post-release but others like T3 arti and T2 PD that were planned for post-release have already been implemented). The main areas it needs work on are compatibility (making sure various niche scenarios work), and a new set of 'competitiveness' related goals I recently added - in short, making sure that while it may not be as good as M27 it should perform similar or better to the other custom AI when released.

      The most exciting point for me personally though is the performance gains M28 is still suggesting it will provide compared with M27. When I'd previously ran it on the scenario I used for M27 for benchmarking (4v4 UEF on Africa) it was significantly faster, but that was before air and naval logic were added, and there was always the danger that I could spend half a year building an AI hoping it would run faster, only to find out it was slower. Now though it has almost all core features, and is still much faster (more than double the speed).

      • For example, taking M27's 'benchmark' map of a 4v4 UEF mirror on Africa, M27 v67 took 167s to run the first 10m, and encountered stuttering for 20.8 seconds cumulatively.
      • By contrast, M28 took 67s, and the cumulative time of freezes was just 0.4 seconds. The only main caveat to this is it freezes the game for a while (probably at least 1 minute) at the start of the game which is much longer than M27, but overall it should still be faster for games running 10+ minutes even after factoring this into account.
      • Although not tested (as it's hard to produce an easily comparable scenario), I'm also confident that logic for T3 arti should be far lighter on the CPU than M27's approach which should help late game (as I suspect this was a likely culprit of some of the slowdown, along with M27's preference for swarms of T1 bombers).
      posted in AI development
      maudlin27M
      maudlin27
    • 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
      maudlin27M
      maudlin27
    • RE: Looking for New Client Maintainer

      Another thought (sorry for the double post) - could you record your ‘client briefing’, a bit like what Jip did a while ago with some of his tutorials for doing work on the mainFAF code base? That way anyone interested in contributing who misses what you talk through would still have a basic starting point to refer to

      posted in Contribution
      maudlin27M
      maudlin27
    • RE: Website faction text - vote for preferred wording

      UEF
      Order: The United Earth Federation is the successor to the empire that once controlled the galaxy. The UEF imposes its authority with durable armies designed to control territory.
      Cybran
      Freedom: The Cybran Nation began as a cyborg conspiracy to liberate workers enslaved by the Earth Empire. Because it began as a resistance movement using hit-and-run tactics, its armies are fast, stealthy, and versatile.
      Aeon
      Purity: The Aeon Illuminate is a religious order based on devotion and sacrifice. Followers of "The Way" are zealous and single-minded missionaries. Aeon units tend to excel at only one single purpose.
      Seraphim
      Revenge: The Seraphim are alien invaders from another dimension. Seeking revenge for a bio-weapon attack by the Earth Empire, and fearing humanity's genocidal intentions, Seraphim weapons create overwhelming destruction.

      posted in General Discussion
      maudlin27M
      maudlin27
    • RE: M28AI Devlog (v246)

      Progress update:
      Most of my work (when I wasn't updating M27 for the rainbow cup) has been focused on having M28 function on maps with water - for now, without building a single naval or air unit. This took far longer than I expected despite using a very similar approach to how M28 handles land units, and I expect there will still be a number of issues to work through once I have M28 able to build naval units (although most of the hard work should be done now).

      • Shields should be built to defend against enemy T3 arti/novax
      • SAMs should be built across the map if lacking in air control (which M28 will since it doesnt built any air units!)
      • Added logic to consider locations on an island by island basis, so engineers can move from one island to another, and establish a beachhead on an island to try and take control of it
      • Put in place framework for 'water zones', which divide the map up into areas similar to what M28 does for land zones, so that naval forces can be handled on a localised manner. These zones are much larger than land zones in size, and for now use simplistic pathing which I expect I'll need to revisit at some point if I can speed up the logic for this.
      • Combat units in water are now managed, and will consider fighting other water based threats or to move onshore (if amphibious) to fight for an island
      • Engineers can now reclaim and build underwater mexes

      I'm also going to start using branches for future updates (so if anyone's running the AI off github, the main release version is likely to be more stable as sometimes when I'm in the middle of a major update Ill post the changes to backup them, which could lead to the logic breaking if trying out the latest branch)

      posted in AI development
      maudlin27M
      maudlin27
    • RE: Game Councilor

      @thomashiatt said in Game Councilor:

      Your only abuses of privilege, in my opinion, are radically altering the balance of the GC, and making numerous UI changes that are all enabled by default. If you make changes to the UI, either release them as UI mods, like everyone else does, or just do not enable them by default. Respect me enough to let me opt-in to your changes, or else I will complain about it.

      I'm failing to see how providing a UI option that can be opted out of is an abuse of privilege. If a UI change will make things easier for newer players, then it makes sense for it to be enabled by default. Also worth noting how you comment you'd be pleased if Jip focused on fixing bugs as they are found, yet the GC change you complain about I think was a bugfix. From what I've seen Jip also keeps in contact with the balance team about changes that will have a balance impact and fixing that bug is hardly an abuse of his position (it'd be a different matter if the balance team told Jip not to fix the GC issue and Jip ignored them and put through the change anyway and refused to revert it, but that would be a matter for the balance team to raise anyway. Tagada's also already flagged that the GC is being rebalanced so I expect it'll be in the next balance patch).

      While I'm no fan of the factory changes, Jip's worked wonders with FAF over the past 1.5 years. You may not be interested in graphics or performance but other players are (making up a 99.9% figure to support your argument also does you no credit). Even if you're not interested in them, changes that in the long term significantly improve FAF's performance and/or graphics are a good thing since they make the game more attractive to new players as well as increasing the potential pool of players (you dont need as good a CPU to play on most FAF maps). Jip's also clearly listened to the feedback on factory changes (per the various forum threads inviting suggestions), so while in the short term the factory change may not be an improvement, hopefully in the long term it is.

      Jip's also significantly improved documentation on FAF and made it significantly easier for current and future contributors to improve FAF (another of the stated aims in the original posts in this thread).

      It's one thing to give Jip feedback that you don't like a change, quite another to accuse Jip of an abuse, while the changes that prompted your accusation related to attempts to improve the graphics of the game (which as Jip rightly pointed out was one of the key areas of focus flagged in his post above). Overall the changes Jip's brought have significantly improved FAF, and I hope Jip doesn't get disheartened reading comments such as yours accusing him of an abuse of privilege.

      posted in General Discussion
      maudlin27M
      maudlin27
    • RE: M28AI Devlog (v246)

      v9 Release
      Main changes were reworking how Ahwassas target units (including a bugfix that stopped them targeting buildings) and replay based changes (12 tweaks and bugfixes in addition to the Ahwassa changes), including:

      • Ahwassas should be more aggressive, particularly in larger numbers, while also being slightly better at avoiding ground AA fire
      • MMLs should be slightly more likely to try and overwhelm a TMD defended positon
      • ACU should be more aggressive (by factoring in the threat of allied units approaching its current position)
      • Fixed some bugs with gunship targeting logic
      • Adjusted experimental behaviour slightly so they're less likely to attack-move if an enemy experimental is attacking them just outside their range.

      Also implemented logic provided by Jip to make M28 compatible with the upcoming FAF develop release.

      Acknowledgements:

      • Jip - Providing voice chat and code for the upcoming FAF develop changes (that introduce a new brain class for each AI)
      • Azraeelian Angel - Human vs AI replay
      • Radde - Human vs AI replays
      posted in AI development
      maudlin27M
      maudlin27
    • Mini27AI

      For anyone interested in getting into AI development I've created 'Mini27AI' which is a very basic AI acting as a proof of concept of how to write an AI to carry out some simple tasks outside of the default AI framework, to help as a potential starting point for developers.

      Anyone is free to copy/make use of this AI as they wish and build on it for creating their own AI.

      At a high level, the AI takes the following approach (which obviously has a number of flaws, as the AI isn't intended to be competitive):

      • ACU will build land factories, power and mexes, unless there are nearby enemy units
      • Factories will build tanks and LABs
      • Tanks and LABs will attack the nearest visible enemy that it can path to (or the enemy base if there are no visible targets)

      Mini27AI can be downloaded from the FAF client as a mod, or from github:
      https://github.com/maudlin27/Mini27AI

      posted in AI development
      maudlin27M
      maudlin27
    • Spawn ACU at start positions

      The Spawn ACU at start positions mod allows you to spawn ACUs under your control at specified start positions at the start of the game.

      For example, say you're playing a 4v1 on Setons but don't want the disadvantage of only having 1 ACU to start with. This mod allows you to have an ACU at each of the standard start points, under you control.

      To use it, enable the mod and then select "Spawn ACU" as the player/AI in each of the slots where you want to spawn an ACU, and specify the faction of the ACU to spawn.

      At the start of the game the Spawn ACU AI will then be defeated and their ACUs will be given to a human player on the same team.

      Let me know if you encounter any issues using this.

      posted in Modding & Tools
      maudlin27M
      maudlin27
    • RE: No Veterancy Coalition

      Veterancy adds greater depth and makes games more interesting. There have been plenty of entertaining moments both in games and watching casts where for example an ACU is about to die and gets a sudden rank of veterancy allowing it to just escape a kill. It also gives a spotlight to units that have a massive effect for their cost (e.g. units that reach 5 stars).

      However Ive no issue with allowing a unit's mass kills and veterancy progress being visible to all players (if it was possible)

      posted in General Discussion
      maudlin27M
      maudlin27
    • RE: AI Development Guide and M27AI v81 Devlog

      v47+ note - the page numbers for sections 4+ will be slightly different in the actual version (since I'm no longer showing the section 3 topics below I wont be updating the below listings often)

      1. Overview 35
        1.1) AI goals 35
        1.2) Background 36
        1.3) Approach 36
      2. Setup and background 37
        2.1) Lua editors and IDEs 37
        2.1.1) Intellij IDEA 37
        2.1.2) Visual Studio (VS) 38
        2.2) Other guides which include a section on AI: 39
        2.2.1) General information: 39
        2.2.2) How AI in FAF works 39
        2.2.3) AI markers and how AI uses them: 40
        2.2.4) Hooking (e.g. replacing/appending existing game code) 40
        2.2.5) Creating custom scripts for Sorian AI: 40
        2.2.6) Pathfinding 40
        2.2.7) How platoons work 40
        2.2.8) AI Research (non-FAF related) 41
        2.3) Lua coding 41
        2.3.1) How to code in Lua 41
        2.3.2) Stand alone Lua code testing 41
        2.3.3) Lua optimisation 41
        2.3.4) Common causes of errors for non-Lua coders 41
        2.4) Debugging in FAF 42
        2.4.1) Console 42
        2.4.2) Cheats 42
        2.4.3) Log window and error messages 42
        2.4.4) Debug window and shortcuts 43
        2.4.5) Platoon names for debugging 43
        2.4.6) Function hooks and identifying infinite loops 43
        2.4.7) Destroyed objects 44
        2.4.8) Fast speed 44
        2.4.9) In-game tools and information 44
        2.4.10) Other shortcuts and game startup options 46
        2.4.11) Suggested shortcut 47
        2.4.12) Using FAF Develop 48
        2.4.13) Error handling 49
        2.4.14) Optimisation – benchmarks and monitoring 50
        2.4.15) Debugging via replay 51
        2.5) AI development discord 52
        2.6) Core FAF Lua files 53
        2.6.1) Accessing core Lua code 53
        2.6.2) Other built in functions 53
        2.6.3) Unit blueprints 53
        2.7) Testing AI against other AI 54
        2.7.1) Simple offline testing 54
        2.7.2) Mass offline AI testing 55
        2.8) Getting started – using a simple AI template as a starting point 56
        2.9) Downloading and setting up MicroAI 56
        2.10) Giving the AI mod your own name 56
        2.11) General - Hooks, and getting the code to recognise if it’s running your AI 56
        2.11.1) Hooking – Unit callbacks/events – applied example 57
        2.12) Github 61
        2.12.1) Github advantages and Github desktop 61
        2.12.2) Linking Github with a local repo via creating your own init file 61
        2.12.3) Pro Git ebook 61
        2.12.4) Git commit messages 62
        2.12.5) Own notes – contributing to FAF Git 62
        2.13) Uploading your AI to FAF 62
        2.13.1) Pre-upload checklist 62
        2.13.2) FAF rules on uploading mods 62
        2.13.3) Uploading to FAF 63
        2.14) Other AI documentation 63
      3. AI changes 63
        3.1) Build order - Changing the initial build order 63
        3.1.1) Adding/removing buildings 63
        3.1.2) Change build order based on map resource positions 64
        3.1.3) Build order conditions 64
        3.2) Build order – ACU builds without moving at start 65
        3.2.1) BaseTemplate 65
        3.3) Build factory and power to benefit from adjacency 66
        3.3.1) Record all mexes on the map, and reference this information 66
        3.3.2) Determine com start position 67
        3.3.3) Identify mexes near to start 68
        3.3.4) Hook onto the core code relating to building a structure at a location 68
        3.3.5) Call build order from custom aiBrain function, to edit how things are built 69
        3.3.6) Adjust build template based on mex location - conditions 70
        3.3.7) Adjust build template based on mex location – build location adjustment 70
        3.3.8) Build initial PGens by existing factory 71
        3.3.9) Adjacency bonus where ACU is away from start location 73
        3.3.10) Referencing unit blueprints for information such as unit size 75
        3.4) Platoons and sending engineers to reclaim 77
        3.4.1) How platoons work 77
        3.4.2) Send the first engineer on reclaim duty 82
        3.4.3) Determine where to send the engineer to reclaim 83
        3.4.4) Identifying reclaim mass value 84
        3.4.5) Find out if a location is accessible by ground: 84
        3.4.6) Mapping reclaim locations and assigning preferred location to an engineer 86
        3.4.7) Don’t send early reclaiming engi if there’s minimal starting reclaim 86
        3.4.8) Issue new reclaim command if engineer becomes idle 87
        3.4.9) Send more engineers to reclaim later (as lower priority) based on the reclaim currently on the map 87
        3.4.10) Send 5 engineers at the start to reclaim and build mexes 88
        3.4.11) Reclaiming trees when no main mass left 89
        3.5) Building and assisting hydro 89
        3.5.1) Check if hydro near start area and have engineer build hydro 89
        3.5.2) Have ACU assist engineer with hydro 90
        3.5.3) Get ACU to continue build order after hydro complete 90
        3.5.4) Subsequent build order changes 92
        3.6) Attack force composition changes and check of AI performance 92
        3.6.1) Build Moar Tanks 92
        3.7) Pre-v1: AI Progress check 92
        3.7.1) Land factory buildings and other build order refinements 93
        3.8) Raiding AI 95
        3.8.1) Raiding behaviour - overview 95
        3.8.2) Queue up move commands for mexes 95
        3.8.3) Identify mexes to target 96
        3.8.4) Locating mexes near to an existing pathing route 98
        3.8.5) Determine when raiders need new targets 99
        3.8.6) Handling complications (stuck units, move orders built on, platoon units dying) 99
        3.8.7) Change factory rally point so units are assigned orders sooner 101
        3.8.8) Making use of platoon names for debugging 103
        3.8.9) Ensure 1 land scout included in each platoon 104
        3.8.10) Use microbots before switching to tanks 104
        3.8.11) Have scouts stay with the platoon 106
        3.8.12) AI scouting, threat detection, and identifying nearby enemy units 107
        3.8.13) Attack engineers en-route: Overview 110
        3.8.14) Tracking when have reached movement points 110
        3.8.15) Determining the platoon minimum range 110
        3.8.16) Identifying nearby enemy units and assessing their threat 112
        3.8.17) Actions based on enemy threat 114
        3.8.18) Avoid attacking enemy mexes for small platoons 115
        3.8.19) Other issues – cheating, walls and min range 116
        3.8.20) Larger raiding platoons 117
        3.9) Large attack wave 117
        3.9.1) Checking when to form a large attack wave 117
        3.9.2) Generalising raider AI 118
        3.9.3) Creating separate platoon AI for the large attack force 118
        3.9.4) Run nearer to base when outnumbered 119
        3.9.5) Recalling nearby raiders to join attack force 119
        3.9.6) Updating threat assessment for ACU health and upgrades 121
        3.9.7) Don’t chase small numbers of faster units 122
        3.9.8) Switch to hunt and kill enemies once reached destination 124
        3.10) Pre-v1: AI Progress check 124
        (3.11 onwards - left out due to post size limitations)
      4. Future possible changes 512
      5. Index of useful functions 592
        5.1) Map, game setup and general aiBrain information 594
        5.1.1) aiBrain - general 594
        5.1.2) AI Brain – Economy 595
        5.1.3) Map Markers and start positions 596
        5.1.4) Map size and playable area 597
        5.1.5) Terrain info 597
        5.2) Getting a list of units by category, location, or other method 598
        5.2.1) All units that meet a particular category 598
        5.2.2) Units at/near a location 599
        5.3) Unit information 600
        5.3.1) Units on radar 600
        5.3.2) Blueprints and unit categories 600
        5.3.3) Unit upgrades (enhancements) 602
        5.3.4) See 5.4.10) Other unit commands 602
        5.3.5) Location and pathfinding 602
        5.3.6) Unit’s ai Brain owner 602
        5.3.7) Unit’s current commands and whether it’s alive 603
        5.3.8) Unit bones 603
        5.3.9) Shields 603
        5.3.10) Units with missiles/anti-nukes 603
        5.3.11) Unit resource usage 604
        5.4) Unit and platoon commands 604
        5.4.1) Building 604
        5.4.2) Assisting 605
        5.4.3) Pausing 605
        5.4.4) Reclaim 605
        5.4.5) Factory specific commands 605
        5.4.6) Movement and attack-move 606
        5.4.7) Transport 606
        5.4.8) Combat related 607
        5.4.9) Stopping 607
        5.4.10) Other unit commands 607
        5.4.11) Upgrades and enhancements 607
        5.4.12) Current commands and targets 608
        5.4.13) Unit status 608
        5.4.14) Change a unit’s name 610
        5.5) Platoon additional functions 610
        5.5.1) Units platoon handle 610
        5.5.2) Get AIBrain 610
        5.5.3) Get units in a platoon 610
        5.5.4) Disband 610
        5.5.5) Platoon exists 610
        5.5.6) Platoon position 610
        5.5.7) Get all platoons 611
        5.5.8) Platoon ai plan name 611
        5.5.9) Add units to a platoon 611
        5.5.10) Army pool and removing units from a platoon 611
        5.5.11) Create a platoon 611
        5.5.12) Change or reset an AI plan 612
        5.5.13) Platoon movement formation 612
        5.6) Weapon information 612
        5.6.1) Get a unit’s weapon 612
        5.6.2) Get information on that weapon 612
        5.7) Time and thread related 612
        5.7.1) Game time 612
        5.7.2) System time 613
        5.7.3) Wait/delay the code 613
        5.7.4) Fork thread (run independently) 613
        5.8) Events 614
        5.8.1) Creating custom events 616
        5.9) Changing the game itself 616
        5.9.1) Spawning units 616
        5.10) Other 616
        5.10.1) Visual changes – Draw Circles and Lines 616
        5.10.2) On Intel Change 617
        5.10.3) ScenarioInfo.Options 617
      posted in AI development
      maudlin27M
      maudlin27
    • RE: Monthly 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
      maudlin27M
      maudlin27
    • RE: AI Development Guide and M27AI v81 Devlog

      Latest changes (v66 summary)

      • Refinements to the logic for experimentals to dodge shots (and more generally) so they're hopefully less likely to turn around in a full circle doing no damage while being attacked
      • 7 tweaks to T3 arti targeting logic, none of which are major but which for example now assign a value to heavily shielded units (previously none was given), firing infront of mobile units, reducing the value of targets that we have fired a huge number of shots at without killing, and factoring in how long it will take for the T3 arti to turn towards the target
      • 15 other misc changes or bugfixes, a number of which relate to decisions on when units should retreat (e.g. MML running from ravagers, skirmishers running from PD, GC/Monkey/Ythotha being more likely to run from a fatboy based on how close it is)

      Acknowledgements:

      • Radde - several teamgame replays on both land and naval maps
      • Jip and Magge for highlighting a missing units error message that appeared a lot, and also Jip for helping me figure out how to determine which direction a T3 artillery is aiming at.
      posted in AI development
      maudlin27M
      maudlin27
    • RE: M28AI Devlog (v246)

      Progress update:

      • M28 can now manage tanks, skirmishers, and indirect fire units
      • Expanded engineer logic to cover radar construction and tracking queued buildings
      • MAA will be constructed and utilised
      • Mobile shield logic incorporated

      The M28 Devlog has been updated with more detail on the various changes.

      As a reference point, on forbidden pass M28 has a c.75% win rate against DilliDalli, a 50% win rate against RNG, and a 0% win rate against M27, so its performance is slightly below that of v41 M27 on that map (although it's managing to do it without using PD, air, or its ACU, all three of which M27 typically needs to beat DilliDalli).

      posted in AI development
      maudlin27M
      maudlin27
    • RE: M28AI Devlog (v246)

      v125 Update
      New MOBA mode! Ever wonder what FAF would be like reimagined as a MOBA? No? Well you can still get an idea - set M28AI to MOBA mode (in the shared armies game option), and you can take control of your ACU while M28AI handles all other units.

      • 7 improvements and fixes to the shared AI armies, including a MOBA mode (M28 gives orders to every unit except the ACU), and the ability for units to inherit their M28AI control setting from their 'parent'/constructing unit. For example, build a land factory at an expansion point, toggle it to be controlled by M28AI, and with this setting M28AI will also take control of any units built from that factory (and any units they build). Essentially allowing you to hand off control of expansion points to the AI while you focus on something else. Also fixed a bug that could sometimes crash the game in LOUD.
      • Skirmisher units should no longer try and kite enemy land scouts
      • Water zones should track enemy T2 arti firebases, and be a bit less likely to request lots of engineers or engage with enemy forces within range of said firebase
      • Added 'netting off' logic for engineer allocation - if one land or water zone decides to send an engineer to another zone, and that engineer already has engineers travelling to the first zone, then no engineers should go to either zone. While this doesn't eliminate the issue of large groups of engineers moving from one side of a pond to another (to assist the naval factory) it does at least reduce the frequency/severity of it.

      Acknowldgements

      • Fearghal - Replay with shared armies where M28 built in it's/Fearghal's base
      • Azraeel - Replay on a water map
      • Tematus - noting a scenario where LOUD would crash with M28 shared armies enabled
      posted in AI development
      maudlin27M
      maudlin27
    • 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
      maudlin27M
      maudlin27
    • 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
      maudlin27M
      maudlin27