Disclaimer 1: I am a noob myself.
Disclaimer 2: I'm doing this from memory so the exact keywords are incorrect.
Starting guide. There are lots of tidbits floating around on different forums with examples but normally just find a mod that does something similar and look at it's code. Critically, the FA code is overridden by the FAF code which is overridden by your mod.
IDE - no way. No go to definition or test runner. Think notepad. I use visual studio because it's just a nice text editor. You can get plugins that understand lua (syntax highlighting) but I don't use them. Basically all you need is something that can find text across many files at once quickly. I have the FA and FAF codebases unzipped and windows-search-indexed so that I can search quickly. When I'm trying to find references of a function I just use windows search to find them. It's really really shit but it works quickly. Some functions are defined in C++ and are not findable or editable.
Feedback cycle. This way I can actually help.
a) use cheats enabled. Use the AI_INSTABUILD command to instantly build land factories and units (zero construction time). Bind this command to a keyboard shortcut. Much faster than going through the cheat UI (alt F2) to generate units. You can build a fac, upgrade it t3, and get your first brick out in 2 seconds.
b) know that ctrl-F10 will restart a skirmish game or replay
c) you can use command line args to speed things up.
- specify /map XYZ then it will launch with that map and skip the lobby which is much faster. However you cant enable cheats this way, so have another shortcut without it. I have tried to edit the game to allow cheats from command line but haven't managed to.
- specify /windowed so that it doesnt launch full screen and you can easily see the log window (F9 to display)
- specify /init XYZ.lua to provide custom mod launching script to enable your mod (as FAF itself does)
- specify /enablediskwatch so that FA automatically reloads your changes on the fly (you don't have to restart)
d) You can get instant feedback with a little bit of setup. Create a mod containing "script A" - a loop that executes every second. All it does is import a file of yours - "script B". Now create script B file and edit it with your IDE. Whenever you save changes to it, the loop in A will reimport B. Combined with the /enablediskwatch command line arg, B will get re-executed immediately. So now you have a file that you can edit and every time you save it, it will get executed instantly and results logged to the log window. You actually need a copy of this setup for UI-land and a copy for SIM-land. You can enhance script A so that it wont crash when B contains an error, giving you a chance to fix it and try again.
So to put all that together, once you are setup you can launch a game with a few clicks, turn on AI instabuild with a keystroke, get whatever units you need for your test in a few seconds, then modify your B script in your IDE and hit save and it will instantly run.
Topics to get your head around:
You need to understand difference between sim and ui mods, and what a desync really is. Once you get why a desync happens you intuitively understand what is possible with a sim and ui mod. It's all got to do with how the engine doesn't send your opponent actual sim state but just the commands issued.
You need to understand hooking and mod load order and how merging works.You need to know about LOG and repr()
You need to know how FA files are structured (its a zip with certain folders inside)
If you want, I can provide those scripts I mentioned and the actual command line args I use. I also have a excel spreadsheet I made that contains all of the functions available ... kind of like luadoc but with heaps more in it that weren't mentioned. I built the spreadsheet by repr'ing all of the modules.
Long answer because this all took me an age to work out and if someone had of just told me that would have been great. I even applied for wiki access at some point to document stuff ... but it took so long I lost momentum.