Nostalgia - Page 8

Nostalgia

Various things about Spring that do not fit in any of the other forums listed below, including forum rules.

Moderator: Moderators

User avatar
zwzsg
Kernel Panic Co-Developer
Posts: 7049
Joined: 16 Nov 2004, 13:08

Re: Nostalgia

Post by zwzsg »

EE is Expand & Exterminate, a Spring mod the author of ragequitted, officially because he was fed up with the community, yet is fondly remembered by many old timers.

What make you say KAIK is no longer used? I still see it shipped with Spring 96. Personally KAIK is my preferred AI because of how reliable it is. It just works, no matter the game/mod/engine/map. And not just work as "don't crash" but work as "build tons of stuff and put up a good fight".
User avatar
PicassoCT
Journeywar Developer & Mapper
Posts: 10450
Joined: 24 Jan 2006, 21:12

Re: Nostalgia

Post by PicassoCT »

zwzsg wrote: What make you say KAIK is no longer used? I still see it shipped with Spring 96. Personally KAIK is my preferred AI because of how reliable it is. It just works, no matter the game/mod/engine/map. And not just work as "don't crash" but work as "build tons of stuff and put up a good fight".
That thing has proven itself to be quiet a nice engineering masterpiece. If you want something to endure- make no assumptions
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Re: Nostalgia

Post by AF »

KAI was unmaintained for a while and Kloot picked it up, and it became KAIK. It's current performance isn't what it used to be, nobodies categorically stated why, and most of the native AIs are in a similar boat, be it interface behavior changes that subtley break functionality that weren't noticed or foreseen, etc

Errors AI had a better pathfinder, while it may not have been as good an AI at the economics and the rest as KAI at its height, it's pathfinding and micromanagement far excelled KAIs ( KAIs pathfinder cells were too large to compete with Errors AI, and were kept as large as they were for performance reasons )

Of note I obtained permission to use Errors pathfnder in Shard, if you have similar plans I'm sure you'd get the same response, or if you planned a lua port of his code
User avatar
Anarchid
Posts: 1384
Joined: 30 Nov 2008, 04:31

Re: Nostalgia

Post by Anarchid »

It just works, no matter the game/mod/engine/map
Unsure, it just froze when i tried it with ZK. So *some* mods, apparently, matter.

This was with "relaxed" mex placement rules (anything within 50 elmos of spot is accepted), just enough for Shard to get massaged into acceptance.
User avatar
1v0ry_k1ng
Posts: 4656
Joined: 10 Mar 2006, 10:24

Re: Nostalgia

Post by 1v0ry_k1ng »

KAI was unmaintained for a while and Kloot picked it up, and it became KAIK. It's current performance isn't what it used to be, nobodies categorically stated why, and most of the native AIs are in a similar boat, be it interface behavior changes that subtley break functionality that weren't noticed or foreseen, etc
KAIK was never even close to the performance of KAI while it was maintained.

I hugely miss the golden age of spring AI where KAI, RAI, AAI and NTAI were all working optimally.
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Re: Nostalgia

Post by AF »

I think the best path to get back to that is if we can distribute AI the way native AIs are distributed, but use that method for lua gadget AIs. That way the lua AIs can be handed out on a whim like NTai/KAI/etc were, yet those AIs such as CAI aren't trapped in the game archive
User avatar
knorke
Posts: 7971
Joined: 22 Feb 2006, 01:02

Re: Nostalgia

Post by knorke »

New versions of gadget AI are already routinely "handed out on a whim", simply by releasing new mod versions, which since some years is hassle-free for devs and players. It would be a step back to download gadget AIs from third party sites or including in engine (the way native AIs are distributed)
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Re: Nostalgia

Post by AF »

No

It's a massive stumbling block for academia, and a faff for testing if you don't have the support of said developer or have no intention of it being widespread.

As a result:
  • Collaborations such as the one that made KAI great are now difficult if not impossible because a private fork of the game has to be maintained prior to the publishing of the thesis or article. You cant just hand your latest and greatest for full open distribution to the game developer because now you have a supervisor breathing down your neck and you've broken numerous academic rules
  • Super fast iterations are no longer possible, I remember releasing NTai multiple times in a single day at one point, imagine having to download updates to BA multiple times in a day because i'd made a minor change
  • It forces AI developers to stick to the release cycle the game developer uses. What if my AI isn't ready when the next release is made? What if I have important changes that fix critical bugs but deploying a new version of the game would introduce unfinished changes that broke balance?
  • What if my copy of the AI is newer than everybody elses and I want to host a test game? With a native AI I just add the bot and go, with a gadget based AI I need to make sure everybody gets a copy of my fork of the game with my modified AI
  • What happens if I need to push out a newer version but the game dev is in hospital, camping, away from a computer, etc etc
  • What happens if I want to make an AI and the game dev looses interest? If I made a lua gadget AI for EEE should I pester Fang to come back? Do I have to burden myself with non-AI development?
  • What if the game developer disagrees with how my AI works?
  • What if my AI is not intended for public consumption?

One of the prime driving factors that allowed AIs to flourish back then was that we could iterate, and iterate fast, and we were independent, and didn't have to rely on game developers, who more often than not were apathetic to our requests.

If however I am wrong, then please, explain why we no longer have a wealth of competitive actively maintained AIs vieing for eachother like we used to in the lua gadget world? Where are the AI test matches we used to have? The ladders? It's not happened...
User avatar
PicassoCT
Journeywar Developer & Mapper
Posts: 10450
Joined: 24 Jan 2006, 21:12

Re: Nostalgia

Post by PicassoCT »

i ve read your article - you have a point.

But the world that was there back then - its gone. Basically ever *A game did hold to a lot of standards, that are broken in various ways by lua now, making a game and its rules a mysterious thing to any AI using it.

(For example the Journeyman Fungi building kills everything that gets in infectious range- such concepts can not be grasped by any non Game specific AI. Viewed from the AlgoEgo- it builtding something and suddenly everyonne drops dead. Or buildings- stuff gets build in jw by Plan-buildings, but the actually build process is handled by worker drones - who get destroyed doing so. Lots of fun for ) so - nonTAism is what killed the AI comunity in the long run.

So a actual reasonable Demand would be :
You have a point in demanding standards. So Interface discussions it is.
Supply standard Info so the AI has a grasb at whats going on.

Implement this Interface to gain support by the well developed Strong-AIs.

Supply anonymous-Lua-functions if you want Strong-AIs to do reasonable things with your LUA-Units

Break this Interface and the AI-Comunity will send you a horse-head.
User avatar
FLOZi
MC: Legacy & Spring 1944 Developer
Posts: 6240
Joined: 29 Apr 2005, 01:14

Re: Nostalgia

Post by FLOZi »

AF wrote: If however I am wrong, then please, explain why we no longer have a wealth of competitive actively maintained AIs vieing for eachother like we used to in the lua gadget world? Where are the AI test matches we used to have? The ladders? It's not happened...
Because generic AIs were an evolutionary dead end as Spring became an engine in its own right allowing games to diverge from TA 2.0.
gajop
Moderator
Posts: 3051
Joined: 05 Aug 2009, 20:42

Re: Nostalgia

Post by gajop »

The main reason we don't have competitive AIs is because we don't have AI developers, but to attract them we really need to provide a way for non Lua AIs to be competitive.

Also AI development isn't nearly as independent as it should be, and there is a notable lack of documentation.

We really need to be able to offer more to the AI devs than the competition : http://webdocs.cs.ualberta.ca/~cdavid/starcraftaicomp/
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Re: Nostalgia

Post by smoth »

What is wrong with lua AIs?
User avatar
zwzsg
Kernel Panic Co-Developer
Posts: 7049
Joined: 16 Nov 2004, 13:08

Re: Nostalgia

Post by zwzsg »

Lua AI are very good for game developer wanting to make their own little AI to play their game.

But for programmers interested in AI themselves, they'll want a more powerful and more mainstream language, such as C++ or Java.

I don't mean to say that Lua AI or inferior or something, but they have totally opposite strength, weakness, and usage, so are for totally differently minded coders.
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Re: Nostalgia

Post by smoth »

so it is more language preference crap? or just the perspective that by doing it in some language other than lua they are somehow developing a better product? that reeks of biased distortion.
gajop
Moderator
Posts: 3051
Joined: 05 Aug 2009, 20:42

Re: Nostalgia

Post by gajop »

smoth wrote:What is wrong with lua AIs?
As far as I know current Lua AIs must be distributed with the game, and I think it's obvious how that isn't suitable for independent AIs and AI competitions. This is a big problem.

Even if we could distribute Lua AIs, it's still wrong to force people to choose Lua, for two main reasons:
1. A large portion of AI potential devs are (undergrad) students, and as Lua is rarely taught at universities, they would first need to learn a new language.
2. (Spring) Lua prohibits you from using any library, which means you have to come up with your own implementations of algorithms commonly used in AIs for: graph search (A*), local optimization (GAs) , clustering (K-means), learning (ANNs), and so on.

A minor issue I have with how Lua AIs is with regard to the API it exposes. When you write Lua AIs you write them in the same way you would write widgets and gadgets, so you have the entire Spring API exposed, as well as access to other widget and gadget information, which you probably shouldn't: it's harder to find functions relevent to the AI and it reduces modularity/independence between AIs and games.
User avatar
knorke
Posts: 7971
Joined: 22 Feb 2006, 01:02

oh i typed too slow

Post by knorke »

The only really valid point of that is: gadget AI code is human readable and at the moment has to be given to all players. For some academic bla open source like that can be problem.
Afaik that is also why your idea would not work: gadgets run in sync on all computers, so other clients would have to download the gadget-AI anyway, thus giving them access to code. Unless want to change all that?

The other points are all solved already or bit off topic: For example if you want to use an old discontinued game like E&E you have to do some "non-AI development" anyway, even just to play it.
"Download a mod multiple times a day for minor changes": that is already the reality.
(Just look at the commit-list of zero-K for example.) It takes few seconds to update mod, lobbies have solved that problem. If want then can comment on the other points too but tbh think it goes nowhere?
If anyone wanted to have competeting Lua-AIs playing the same mod, that could be arranged too.

One of the prime driving factors that allowed AIs to flourish back then was that we could iterate, and iterate fast, and we were independent, and didn't have to rely on game developers, who more often than not were apathetic to our requests.
So what changed? It is still possible to make native AIs and upload new versions of them to springfiles (or whereever) in whatever tempo you like.
It is not like gadget-AIs made it impossible to make other AIs.
If you want to make a gadget-AI and want to be independent from game dev, then there are technical solutions for that, too.
If however I am wrong, then please, explain why we no longer have a wealth of competitive actively maintained AIs vieing for eachother like we used to in the lua gadget world? Where are the AI test matches we used to have? The ladders? It's not happened...
technical:
There never were that many AI-dev to begin with: by nature it is quite a small niche, and once the "old" AI-devs eventually left/stopped developing, it slowly fizzled out.
There were some new AI-devs in forum and lobby but afaik none of them released anything.
From reading AI-forum, imo the reasons are as following:
1) AI-interfaces seem bit broken and confusing.
eg With 2 NullJavaAI's, one of them gets iniitialized twice , http://springrts.com/phpbb/viewtopic.php?f=15&t=28011
Not idea if/how bad some things really are, but reading some threads makes me scratch head.

2) Little documentation, sometimes outdated.
For recent examples see http://springrts.com/wiki/Special:Contributions/Meriton , http://springrts.com/phpbb/viewtopic.ph ... 7&p=558262 , http://springrts.com/mediawiki/index.ph ... ldid=28559
New peoplepersons who should be using the documentation are writing and fixing it!

3) To use spring AIs in academic stuff one should already be familiar with spring AIs or at least spring in general. For anyone else it is risky to start some academic project with spring and then maybe run into obstacles like the ones mentioned before.
I think it was pure luck that 2 or 3 people...
...studied in the right field
...were familiar with spring stuff
...were already making spring AI stuff
...wanted to make their paper about spring AI stuff
To me seems like lots of things aligned and such situations are unlikely to happen regularly.

blogosphere:
Think over time bit nostalgia grew on native AIs. I only casually followed the springgrid AI ladder thing but beside some teststuff never saw any results of tourneys or replays. Not on site or in forum. To me it seemed in perpetual development. Would love to see some replays or top-10 or similiar, if anyone still has something like that. Also from perspective of players: even on KAI wiki and in thread it mentions the AI being "crash prone."

The approach to AIs seems to have changed:
First it was maybe about having "the best AI" and the AIs were made by AI-devs.
Goal was to win against other AIs or players. Play as many mods as good as possible.

Maybe today having the absolutely best AI is no longer the goal.
For gamedevs who are also making a gadget-AI the AI is just one part of game, like any other gadget.
It is more about giving the player some enjoyable singleplayer experience, not anymore about having the hardest challenge or beating other AIs. More about having an AI that uses all the quirky game rules that the mod provides.
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Re: Nostalgia

Post by AF »

Java/C++ are irrelevant to my question as I'm asking about Lua AIs such as the ones we already have, distributed in the same style as the native AIs ( but not native ), using the same API game devs use.

Also the generic AIs problem was that they couldn't reach into the games and read the lua rules, coupled with the AI interface going tits up, it's hard to be an AI developer when the platform everyone uses is no longer supported, the interface is rebuilt with no documentation, and the game dev community start calling for the death of your projects.

However I don't see how this is relevant to my question, as it assumes everyone is going to build generic AIs, and the AIs that you're arguing against, are the ones you're already using, e.g. CAI.

So let me rephrase the question.

Why can I not take a Lua Gadget AI, such as CAI and its derivatives, and put it in the AI folder instead of bundling it with the game, so that I can privately distribute and test, and iterate at my own speed?
User avatar
knorke
Posts: 7971
Joined: 22 Feb 2006, 01:02

Re: Nostalgia

Post by knorke »

The problems of Java/C++ AIs are relevant because it partly answered the question of "explain why we no longer have a wealth of competitive actively maintained AIs vieing for eachother like we used to in the lua gadget world."
Why can I not take a Lua Gadget AI, such as CAI and its derivatives, and put it in the AI folder instead of bundling it with the game, so that I can privately distribute and test, and iterate at my own speed?
:arrow:
[...]afaik why your idea would not work: gadgets run in sync on all computers, so other clients would have to download the gadget-AI[...]
There is no system in place for such user-to-user file uploading and it defeats the idea of keeping the AI code closed. (for academic rules)
If the gadget-AI only ran on local client then it would no longer be a gadget...maybe a widget?
Also I do not see the advantage of that, except for keeping the LuaAI's code secret which is imo a niche case since Lua is so non-academic. (or so I have read)
For private testing there are better ways anyway.

Which derivatives of CAI are there? Afaik none of the Lua-AIs are related to the CAI from zero-K.
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: Nostalgia

Post by Silentwings »

Why can I not take a Lua Gadget AI, such as CAI and its derivatives, and put it in the AI folder instead of bundling it with the game, so that I can privately distribute and test, and iterate at my own speed?
Doing so would cause desyncs. What you could do instead is make a mutator incorporating the gadget AI while you were developing it - the mutator woudl take no time to be auto-dl-ed via rapid and could be updated as frequently as needed. Alternatively, you could make a widget AI (which you could then privately distribute and test, like any other widget) but with the drawback that your widget AI would not be able to cheat - it would only have access to the same info that a human player on its team would have.
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Re: Nostalgia

Post by AF »

I was under the impression that the lua AIs themselves ran in unsynced code. If that's not the case then they should.

As for why native AI development died, it didn't die because of how they were distributed, they managed to flourish fine with it in place. It was because most people used Visual Studio and suddenly that wasn't an option, you had to use the mingw32 toolchain or a full linux stack to compile an AI, or build the engine under Visual studio, which if you had problems with, tough, engine only supports mingw32/gcc. When the C API came along fixing that, it had issues, and little to no documentation, wasn't finished in parts, and remains in a similar state to this very day.

May I also add that I was an active AI developer through most of this and faced the issues first hand, you knorke, weren't, and to suggest that native AIs failed because they weren't a synced gadget inside a game archive is naive, and it doesn't explain why we had a thriving AA/BA ecosystem of native AIs back then, but not today, even though there's no special reason BA or XTA can't be played via those AIs.
Locked

Return to “General Discussion”