xienwolf
Deity
I would love it if the people who are doing AI would focus their efforts. AI which we write in FF won't often be able to be ported out to base FfH too easily, but it is an area I am paying far more attention to of late.
I would have one request though if you 3 AI people got together: Please don't hardcode the DLL. If you want a specific "IF X_item, then Y_action" keep that in Python and try to think of a way to convert it to "IF X_attributeOfItem then Y_actionValue enhancement" Nothing which is in the XML should ever appear in the DLL unless it is required to (Enums, Globals and Text). Using GlobalDefines to sort of "cheat" and still hardcode a decision or link of functions is fine, because at least then you can easily set up a "If this actually is defined and exists" check so that people who mod based on your work are able to change what the Define points at, or remove it completely without a crash.
I haven't looked at the source for any of your 3 mods yet (Better AI seems to have converted some spaces to tabs in a few files, which makes comparing to find changes a nuisance, and I just haven't gotten around to Wild Mana, but he posted evidence of Hardcoding in response to Opera and I lost most interest in looking at his work).
Hardcoding is a good way to get instant results, but it isn't quite as robust, causes issues for people who borrow your work, and prevents the AI from crunching the numbers and coming up with a strategy that is amazingly brilliant, but nothing a human would have decided to do himself (which is the one advantage a well written AI generally has in strategy games), plus it makes it require a rewrite any time you add a new feature or modify the relative worth of features which required choosing between. (ie - If I told the AI to always prefer building Warriors and then Upgrading them to something else, but months later I increased the upgrade costs across the board, so now that is actually a horrible idea. Now I have to go back and change the AI)
I would have one request though if you 3 AI people got together: Please don't hardcode the DLL. If you want a specific "IF X_item, then Y_action" keep that in Python and try to think of a way to convert it to "IF X_attributeOfItem then Y_actionValue enhancement" Nothing which is in the XML should ever appear in the DLL unless it is required to (Enums, Globals and Text). Using GlobalDefines to sort of "cheat" and still hardcode a decision or link of functions is fine, because at least then you can easily set up a "If this actually is defined and exists" check so that people who mod based on your work are able to change what the Define points at, or remove it completely without a crash.
I haven't looked at the source for any of your 3 mods yet (Better AI seems to have converted some spaces to tabs in a few files, which makes comparing to find changes a nuisance, and I just haven't gotten around to Wild Mana, but he posted evidence of Hardcoding in response to Opera and I lost most interest in looking at his work).
Hardcoding is a good way to get instant results, but it isn't quite as robust, causes issues for people who borrow your work, and prevents the AI from crunching the numbers and coming up with a strategy that is amazingly brilliant, but nothing a human would have decided to do himself (which is the one advantage a well written AI generally has in strategy games), plus it makes it require a rewrite any time you add a new feature or modify the relative worth of features which required choosing between. (ie - If I told the AI to always prefer building Warriors and then Upgrading them to something else, but months later I increased the upgrade costs across the board, so now that is actually a horrible idea. Now I have to go back and change the AI)