Its a common conception that AI developers have abandoned the content, and are embarking upon an orgy of development by reinventing the wheel and cavorting with new and exotic programming languages nobody needs. This is nonsense, ignorant speculation by people who didn├óÔé¼Ôäót read the forum threads and made wild assumptions without any effort to understand the problem.
1. It's not "ignorant speculation". Nothing new has been done in this arena, that hasn't been done in Lua. Now, I'm not saying that what Hoijui did wasn't entirely necessary, and I am glad he did so. But now it's done, so you're out of excuses either way
The Chicken AI represented a major step forward, yet there's been hardly any real discussion here about its obvious implications, and you have been guilty of saying, "waaah, I don't know the language", which is no excuse at all.
2. It's been obvious that the content has been abandoned. Nobody's actually doing anything about the serious problems that exist for Lua-based games, which became the mainstream almost a year ago.
3. The notes about "new and exotic programming languages" are right on- C#, Python, and others have all been mentioned, but you guys seem to have a massive blind spot when it comes to Lua. You talk about how to send it commands through the interface, but you're not looking at what's actually out there.
4. The seeming speed disadvantage of Lua is a chimera. As Lurker pointed out, Lua can run mainly on the unsynced side. There are some exceptions to this, but they're not that big of a deal.
Moreover... most of what makes current AIs relatively slow is big, giant analysis stuff, that isn't going to run significantly slower in Lua. Lua, when compiled, is nearly as fast, and for those large processing tasks, the final difference in efficiency isn't that big of a deal.
Lastly... why should an AI that can play a game adequately necessarily be a giant processing monster? Go play Chicken, and observe an AI that works and is not terribly slow. Once you get done sneering at calling it an "AI", because it's just following some simple rules, you might want to observe that CA has made it their default single-player experience, which says a lot about what they perceive players want- a challenging, fun experience, not necessarily a re-creation of play online.
As I've been saying all along, it's not necessary to build "smart" AIs... it's necessary to build AIs that can give players a fun experience, and work hand-in-glove with game development.
Quit confusing the two things. The whole effort to build "smart" AIs that play BA well is not equivalent to the real need, looking at the present-tense. We have a lot of games that need
any AI support they can get, because there isn't even a very dumb, cheating AI available that can work with their gameplay.
****************************************************
Meh, enough bitching. In the final analysis... here are some thoughts about a way forward:
1. AIs need to abandon the closed-cycle mode of development and quit being black-box. I said so almost three years ago, you guys didn't listen, and now we're here.
It's incredibly stupid and naive to develop AIs that were basically just customized for one game type, then wedge support code into them to half-heartedly support new game types. Yet, this is what has been done. Look at every AI that currently exists, and you can see the kludges that were done.
This is a dumb model for development. Game designers should be modifying your AI frameworks for final behavior. AIs should essentially be about developing smart ways to efficiently do certain types of analysis.
2. AIs should use as much Lua as possible, if not be written entirely in Lua. Perhaps it's necessary for AIs to perform a callin to a DLL to perform certain math-intensive tasks. Fine, put those modules into AI DLLs, let Lua talk to those DLLs. I'm not suggesting or supporting allowing Spring games to create or use any old DLL, mind ye- that's unsafe behavior, and should not be allowed. But stuff like finding optimized locations for mines, etc., could all be stuck into those DLLs, allowing for call-in behavior at the Lua level.
Why? So that game designers, who work in Lua, can modify them themselves, instead of having to set up a compilation environment, etc. That puts game designers in the position of being able to have a useful dialog, instead of having to waste huge amounts of time explaining to AI developers the gameplay we're hoping to create.
Here, lemme build the flow of a typical task:
1. Unit is damaged.
2. Lua-side AI code determines Unit can perform action X during combat.
3. Command is issued, via Lua, that makes the Unit perform action X.
No DLL-side behavior was even necessary.
Let's look at one that would require DLL-side behavior.
1. Lua basic determinant code returns values indicating that more of a Resource is needed. The Resource corresponds to Metal.
2. The method in this game for getting the Resource is to build a Mine. The DLL is called, sending arguments for the size of the Mine, the radius on the map, the maximum distance to search away from all candidate Units, etc.- the usual things an AI DLL currently needs to know, to perform this task efficiently. The DLL then runs an efficient search for the best-possible location to put the mine, and returns that value, the second-best location, and so forth.
3. The Lua-side picks one location from a hat, and gives the appropriate orders to the Unit.
See what I'm talking about here? Instead of looking at things as being all-or-nothing... perhaps a more synergistic approach would be better.