Author Topic: Prerelease 3.024 (Basic Keep-Formation Movement, Scouts vs AOE buff, bugfixes)  (Read 7387 times)

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
On the subject of formation-move, for 3.025:

- Changed J+right-click formation move to set new formation offset fields on the ships themselves, and the offsets are applied to all subsequent move orders.

- Added Alt+J which clears formation offsets for all selected ships (note that this is the only way to clear those offsets, so that they are fairly durable).

At the moment alt -J rightclick, formation moves and puts the ship into the yellow mode when they arrive.
This is kind of handy and intuitive. I am wondering if another combination than alt-J might be better for clearing formation move....

dM
Actually we're going to scrap the Alt+J command altogether and just have End clear the offsets with everything else.  Some other changes to that feature in the queue anyway, will give more details when it's stabilized.
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline I-KP

  • Hero Member
  • *****
  • Posts: 681
  • Caveat Pactor
The AI indeed does not give group orders in the style of the player at present.  At this time, I'm not interested in formations for the AI, I feel that in most cases it will lead to suboptimal behavior despite the occasional benefits to ships such as starships.
In what way suboptimal?
Atmospheric & Lithospheric Reticulator,
Post-accretion Protoplanet Aesthetic Seeding Team,
Celestial Body Design & Procurement Division,
Magrathea Pan-Galactic Planets Corp.,
Magrathea.

Offline I-KP

  • Hero Member
  • *****
  • Posts: 681
  • Caveat Pactor
I could have it randomly use the isFormationMove flag but could you really tell it was moving that blob of ships in formation move or not? ;)
Yes, probably every single time. 
What I mean is that it would just maintain the relative positioning of its ships that existed when the move order was given, which is no more rational than having them converge on the destination point since their original relative positioning was not planned.  Also, honestly not sure if the AI even gives group move orders in the same way as the player... anyway, I don't think Chris would want me to make it use formation move right now ;)
Ah, right.  If they don't regroup then yes, it would be daft.
Atmospheric & Lithospheric Reticulator,
Post-accretion Protoplanet Aesthetic Seeding Team,
Celestial Body Design & Procurement Division,
Magrathea Pan-Galactic Planets Corp.,
Magrathea.

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
The AI indeed does not give group orders in the style of the player at present.  At this time, I'm not interested in formations for the AI, I feel that in most cases it will lead to suboptimal behavior despite the occasional benefits to ships such as starships.
In what way suboptimal?

As in, an AI with multiple agents that give emergent behavior no longer has that capability if they are all tethered to a guard location (whether that guard location -- starship -- is mobile or not).  For reference: http://arcengames.com/forums/index.php/topic,3310.0.html

It's a slippery slope, trying to build in intentional higher-order logic for the AIs in groups, and it's something I'm fundamentally opposed to with the AI in AI War.  It's the sort of thinking that is the downfall of most RTS AI, in my opinion, and the incremental benefits in specific combat scenarios are not worth the systemic collapse that causes to emergent and reactive behavior in general.
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline I-KP

  • Hero Member
  • *****
  • Posts: 681
  • Caveat Pactor
...alternatively everything needn't simply travel in a straight line, every time, at full speed, leaving far behind many (star)ship archetypes that are designed to complement others.  That doesn't sound particularly emergent to me, it sounds like the very definition of linear.  No one is suggesting that all ships should be somehow tethered to one singular tactic -- even tho at the moment they are tethered to one singular behaviour tactic: the single-minded drive of simply belting hell for leather toward the target and be damned with what can’t keep up – or at least I wasn’t.  Yet to have another tool added to the arsenal, to spice things up from time to time and to use in conjunction with the current single-minded behaviour, particularly when Starships are involved, can only increase the gamut of possible outcomes rather than suppress them.

I’d be interested to learn which particular RTSs you think engineered their own downfall by incorporating even rudimentary combined arms.  Combined arms are generally the sign of a clever AI, not a weak one.
Atmospheric & Lithospheric Reticulator,
Post-accretion Protoplanet Aesthetic Seeding Team,
Celestial Body Design & Procurement Division,
Magrathea Pan-Galactic Planets Corp.,
Magrathea.

Offline Kalzarius

  • Sr. Member Mark II
  • ****
  • Posts: 422
I have another patch to the music code that addresses a bug preventing the current playing song from ending:

Code: [Select]

        private void DataTransferActivity()
        {
            // load all sectors
            //for ( int i = 0; i < NumberOfSectorsInBuffer - 1; i++ )
            //{
                //// get a block of bytes, possibly including zero-fill
                //TransferBlockToSecondaryBuffer();
            //}
            TransferToSecondaryBuffer(StreamBufferSize);
           
            buffer.CurrentPlayPosition = 0;
            this.UpdateVolume();
            buffer.Play( 0, PlayFlags.Looping );
            State = BufferPlayState.Playing;

            int endWaveSector = 0;
            int fillSize;
            while ( MoreWaveDataAvailable )
            {
                if ( AbortDataTransfer || NotificationEvent == null )
                {
                    return;
                }
                //wait here for a notification event
                NotificationEvent.WaitOne( Timeout.Infinite, true );
                fillSize = buffer.CurrentPlayPosition - SecondaryBufferWritePosition + StreamBufferSize;
                fillSize %= StreamBufferSize;
                if ( fillSize < SectorSize )
                    continue;
                fileSize -= fillSize % SectorSize;
                //endWaveSector = SecondaryBufferWritePosition / SectorSize;
                //MoreWaveDataAvailable = TransferBlockToSecondaryBuffer();
                MoreWaveDataAvailable = TransferToSecondaryBuffer(fillSize);
                endWaveSector = (SecondaryBufferWritePosition / SectorSize) - 1;
            }

            // Fill one more sector with silence, to avoid playing old data during the
            // time between end-event-notification and SecondaryBuffer.Stop().
            Array.Clear( TransferBuffer, 0, TransferBuffer.Length );
            NotificationEvent.WaitOne( Timeout.Infinite, true );
            SetEndNotification( SecondaryBufferWritePosition + (SectorSize / 2) );
            WriteToSecondaryBuffer(SectorSize);
            NotificationEvent.WaitOne( Timeout.Infinite, true );
            //int silentSector;
            //silentSector = SecondaryBufferWritePosition / SectorSize;
            ////WriteBlockToSecondaryBuffer();
            //WriteToSecondaryBuffer(SectorSize);

            //// No more blocks to write: Remove fill-notify points, and mark end of data.
            //int dataEndInBuffer = DataBytesSoFar % StreamBufferSize;
            //SetEndNotification( dataEndInBuffer );

            //bool notificationWithinEndSectors = false; // end of data or the silent sector
            //// Wait for play to reach the end
            //while ( !notificationWithinEndSectors )
            //{
                //NotificationEvent.WaitOne( Timeout.Infinite, true );

                //int currentPlayPos = buffer.CurrentPlayPosition;
                //int currentPlaySector = currentPlayPos / SectorSize;

                //notificationWithinEndSectors = currentPlaySector == endWaveSector
                                                //| currentPlaySector == silentSector;
            //}
            buffer.Stop();
            State = BufferPlayState.Complete;
        }


Offline Kalzarius

  • Sr. Member Mark II
  • ****
  • Posts: 422
I am not sure if this has been mentioned anywhere, but formation move doesn't appear to work on force field generators.

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
...alternatively everything needn't simply travel in a straight line, every time, at full speed, leaving far behind many (star)ship archetypes that are designed to complement others.  That doesn't sound particularly emergent to me, it sounds like the very definition of linear.  No one is suggesting that all ships should be somehow tethered to one singular tactic -- even tho at the moment they are tethered to one singular behaviour tactic: the single-minded drive of simply belting hell for leather toward the target and be damned with what can’t keep up – or at least I wasn’t.  Yet to have another tool added to the arsenal, to spice things up from time to time and to use in conjunction with the current single-minded behaviour, particularly when Starships are involved, can only increase the gamut of possible outcomes rather than suppress them.

Generally speaking, you then turn it into one large agent instead of many independent agents, and thus that one agent does only one thing.  As it stands, sometimes they will combine into larger groups based on having the same objectives get decided upon, and other times they will not.  It makes for much more variance.  Suffice it to say, the AI does not really use starships in the same way that humans do, most of the time.  That does make them somewhat less effective than perhaps they could be at best, but they are still quite damaging all over the place.

As it stands, sometimes they happen to do combined arms, and sometimes they don't, and that tends to make for the most variance overall.  You do have a good point that sometimes having them guard the starships as those move would be interesting.  That would indeed be one of those things that could add to the strategic repertoire.  But I wouldn't do that more than half the time, I don't think -- and from that perspective, the starships tend to wind up fighting near their allies about half the time already, anyway.  I think it could be an interesting thing to look at as a sometimes-branch at some point, but it will take a lot of tuning and should only be used a minority of the time.  It tends to cut down on emergence a lot, which I see as a bad thing, so it would have to be very carefully integrated.  It could lead to a lot of gap-in-the-wall style exploits, since the group would somehow have to target-select as a group, etc.

I’d be interested to learn which particular RTSs you think engineered their own downfall by incorporating even rudimentary combined arms.  Combined arms are generally the sign of a clever AI, not a weak one.

That's a very loaded question, there.  Combined arms is one thing, but having that be intentionally scripted versus emergently occurring is where I see the issue as being.  The AI in AI War does combined arms all the time, and that's part of why it is so effective -- ships give weight to what their peers are doing, and that leads to a bit of combined arms.  Does that sometimes result in a starship being off by itself?  Yes.  Is that starship sometimes more effective on its own?  Yes.  Is that starship sometimes slaughtered based on being on its own?  Also yes.  And lastly, does that often dynamically result in exactly the exact sort of scenario you're wanting me to hardcode in?  Very much yes.  I was seeing this right this past weekend, repeatedly, in my current 3-player game.

One thing to remember is that the AI is reactive in many ways to the board states that you as a player set up.  So it may be that your particular style of play leads the AI to do this sort of thing less.  I can't comment, as I don't know exactly how you play.  But the beautiful thing about an emergent AI is that it is capable of all manner of things, versus a single "optimal" path that counters a specific playstyle.  Therein lies the advantage here, and why it works better in the majority of cases, compared to AIs in which there is too much code for "optimal" cases.  My goal as an AI designer is never to make the AI play optimally, or even close -- that makes it predictable.  My goal, instead, is to design both the game and the AI in such a way that there is the maximum number of possible semi-optimal choices that will lead to the most possible valid variance and thus unpredictability.  And by layering those complexities,  you wind up with the most possible second-order and third-order unintended effects, where the AI does things that are truly surprising and innovative-seeming.

The reason I'm so resistant to making them group around starships in this way is that it takes all the possible actions and interactions and layered consequences of a few dozen or a few hundred ships, and condenses them down into one big blob of death that has only one objective at most, and plods slowly toward said objective.  Will that make the AI more effective in some specific cases?  Yes.  But I contend that it won't make it a more interesting opponent.  It's trading nimbleness and the ability to disrupt, distract, and confuse for slow brute force that can be countered much more easily.

The same thing goes for adjusting the AI ships to use group-speeds more often: that cuts down on the possible number of different things they can do there, as well.  The decision space shrinks, and the number of possible interactions and surprises goes down.  In the main, does this sort of logic that I currently have often wind up with the fastest ships getting to large battles and becoming slaughtered too soon?  Yes.  (Am I asking a lot of rhetorical questions?  Yes, because I'm annoyed at having a variant of the same conversation for the bajillionth time.)  But in the course of sometimes getting slaughtered in that way, those faster ships accomplish a variety of things.  Sometimes they simply force the human players to stay back and defend while the further-away fleet does something else.  Sometimes those faster ships make it to sub-objectives and complete them before the human players can react.  And sometimes they reach a location, lay down some suppressing fire in a manner of speaking, and then are reinforced by their slower counterparts that then carry the day.

All sorts of interesting things can, and regularly do, happen with an emergent system.  You don't see that sort of thing in any other RTS, especially not in a dynamic and non-predictable fashion.  In AI War, this also means that you get some general "guys falling on their spears" type behavior every so often, as well, but that happens in every RTS and normally isn't accompanied by the flashes of brilliance.

What frustrates me, to be honest, is that 1) I create an AI system that is widely regarded to be a huge leap forward for its genre, 2) I write extensively about how I did it, and what the rationale behind it is, and then 3) a lot of players then completely disbelieve that this is why the AI works, and try to convince me to violate the meta-rules that makes the whole thing functional in the first place.  The AI in AI War is heavily, heavily hybridized and complex all over the place, and I've spent a lot of time thinking about it.  It's not that I don't want feedback on it -- I do -- but the degree to which players tend to second-guess my responses to their feedback on the AI is, in general, pretty frustrating.  If I have the only RTS AI system that works in this fashion, and which works so well in general, might it not stand to reason that I sort of know what I'm talking about in the realm of this specific AI?  I don't mean to rant, but it seems like some player or other (always well-intentioned) is dragging me into a lengthy debate on something relating to emergence every couple of weeks lately.

As I once wrote, don't squeeze a handful of sand, which is precisely what suggestions of this nature boil down to.  If I'm not comfortable implementing an emergence-diminishing tactic for the AI, there's generally a reason.  And it's the disregard of this sort of restraint that has led every other RTS AI I've played lately to be over-engineered and thus exploitable.

Will I likely do something to make the AI have some more interesting behaviors with the starships at some point?  Probably.  It is an interesting idea for some new ways to add some more emergence, and to increase the decision space.  Having them sometimes "flock" i a dynamic group manner might be just the ticket to making them more effective more of the time.  But it won't have anything to do with the formation move mode, or making them one larger meta-battlegroup in the traditional sense.  A school of fish is never a codified battlegroup, though they might trend to flying together even in certain semi-dynamic patterns.  Enhancing the flockability of the starships is an interesting goal, and if I can think of some algorithmic rules that might make it more flockable without introducing gap-in-the-wall issues, then that would be a great improvement.  The battlegroup feature as outlined, though, is far too rigid and other-RTS-like to work in an emergent scenario.

I always hate to rant, and please understand that this is largely not even directed particularly at you, I-KP (or any other individual here).  But it is very wearying to be second-guessed from the traditional design standpoint by the same players who otherwise laud how effective my nontraditional method is.  I think part of the problem is that most people don't really understand what makes emergent behavior work.  Even though I understand it intellectually, it's something I wrestle with at a gut level; it's just too counter to how most humans think, and we have a hard time accepting that the cause of complex behavior can be rules that are so simple at another level.  But the entire premise of something like this is simple rules applied to a large number of independent agents in a large decision space, and anything that makes the rules too complex, the number of agents lessened (or the agents less independent in certain key ways), or which shrinks the valid decision space in other ways, is counter to what is healthy for this specific game's AI.

In the end, I think part of the issue with this sort of argument continuously coming up is my inability to really express (concisely) why this AI does work as well as it does.  And so then folks think I'm giving their idea the brush-off when I am not, or think that I'm just hiding behind "emergence for teh winz" to exclude their ideas, when I'm not.  I'm also not asking people to just accept my rulings that something will or won't work on faith, but my collected writings on the AI are intended to give enough background that people can decide on their own why a given change might not be beneficial.  I'll be the first to admit that is a hard thing to do, but I also don't have the time to defend the same stance against new debate opponents on a biweekly basis.  I guess I'm going to need to add a second to the Design Philosophy section of the wiki, or something, to just refer people to a collected explanation there.

At any rate, what my hesitation on such ideas boils down to is this: I am supremely, supremely aware that this AI is balanced on a hair.  It works as well as it does because of a lot of tuning and a certain design style.  Even simple changes to that, if the ramifications of them are not thought through extremely well, can lead to a massive drop in effectiveness and all sorts of gap-in-the-wall problems.  So I tend to be much slower to add new functionality to the AI compared to the rest of the game, and all of those changes tend to be incremental and extremely well thought-through.  And, no matter what, they don't violate those core tenets of emergence.

Thanks for listening, and I hope that perhaps this post will make it more clear why my stance is the way it is.  I tend to do a poor job of explaining that, apparently, but hopefully this one will be more useful.



Back to the main discussion:

The discussion of battlegroups does, however, spark some ideas for how to potentially make some emergence-friendly changes.  If smaller ships were sometimes assigned as guards to  starships, that would make them keep near the starships.  If they were barred from ever stopping guarding that starship (while it was alive and on the same planet), and/or were kept to a much smaller radius around that starship, then that would make for a sort of ad-hoc battlegroup that could form on some player planets and then reconfigure as it changes between planets.

Having ships occasionally decide to guard starships is a good thing, but they would need to do so in a randomized fashion to avoid this becoming too predictable.  One thought I had was that if they are way outnumbered they should trend to do this more, but that actually could lead to them being dramatically less successful in a large set of cases because smaller batches of faster ships are better at sneaking through to take out hardened targets that players think they can't reach, or have not yet got proper defenses up for.  So that's out.

In that case, that would mean that they would just need to have a random component to sometimes self-organize around a starship for a while, but given the precision of random chance and frequency of decision cycles, there would have to be some sort of trigger for this, I think.  Maybe every time their best target is nonvital and way off across the map, they then have a 10% chance of clustering?  That might work.  But, to make this more effective, that chance would need to be affected when more ships were already attached to the starship.

Hmm.  The easiest solution would be to make this logic centralized on the starship itself, so that it calls other ships to itself based on a smaller random component.  That defeats the purpose of flocking, though, and will then lead to more regimented and predictable effects.  Better to find some sort of way for the ships to add the weighting of guard duty into their normal target-selection behaviors.  Going along with that, there should be some sort of non-currently-mapped trigger that can cause them to dynamically leave that flock and strike out on their own.  That could allow for interesting and unusual attack vectors from AI ships, as well as supporting the emergent style of those battlegroups.

So, what I'm left with missing at the moment, then, are triggers for why they join and why they leave.  Those triggers will need to be something nonobvious that is unrelated to actual strategic play, but instead is more of a pseduo-seed in the underlying game mechanics.  In other words, something that creates "ordered chaos" that will appear intentional to players but which will be wholly unpredictable.  During gameplay, you should never be able to predict whether the AI is about to organize itself around a starship, or how exactly it will do that organization.  I'll have to think on that some more.
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
I have another patch to the music code that addresses a bug preventing the current playing song from ending:

Thanks!  That will be included in the next version.

I am not sure if this has been mentioned anywhere, but formation move doesn't appear to work on force field generators.

Hmm, that is interesting, Keith will have to comment.  Given how much of a revamp the new code for formation movement is, though, hopefully it is already resolved.  But, if not, we'll see what it is doing!
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline deMangler

  • Full Member Mark II
  • ***
  • Posts: 189
  • om tare tuttare ture soha
<snip>....Thanks for listening, and I hope that perhaps this post will make it more clear why my stance is the way it is.  I tend to do a poor job of explaining that, apparently, but hopefully this one will be more useful....<snip>

:)
One of the best rants I have read in a long time....
Cheers!

dM

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
I am not sure if this has been mentioned anywhere, but formation move doesn't appear to work on force field generators.
Hmm, were you trying to move fewer than 7 ships at once? There was an, um, misunderstanding between me and the arrays I was checking at a certain point that led to < 7 ships not working with formation-move.  That's fixed for 3.025.

Also, as Chris said, there's been some pretty dramatic changes to the code for formation-move so a lot of issues may have gone away (or started!) as a result.  Please do put it through its paces when 3.025 comes out.
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
<snip>....Thanks for listening, and I hope that perhaps this post will make it more clear why my stance is the way it is.  I tend to do a poor job of explaining that, apparently, but hopefully this one will be more useful....<snip>

:)
One of the best rants I have read in a long time....
Cheers!

dM


Many thanks. :)  Someday I will succeed in explaining this concisely and completely, and I will make a killer wiki entry on this.


In other news, Keith has been hard at work on some cool stuff, which is now out in a new prerelease: http://arcengames.com/forums/index.php/topic,3661.0.html
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline Kalzarius

  • Sr. Member Mark II
  • ****
  • Posts: 422
Hmm, were you trying to move fewer than 7 ships at once? There was an, um, misunderstanding between me and the arrays I was checking at a certain point that led to < 7 ships not working with formation-move.  That's fixed for 3.025.

Also, as Chris said, there's been some pretty dramatic changes to the code for formation-move so a lot of issues may have gone away (or started!) as a result.  Please do put it through its paces when 3.025 comes out.
I was.  Glad to hear it's been fixed.

Offline I-KP

  • Hero Member
  • *****
  • Posts: 681
  • Caveat Pactor
Thanks for listening, and I hope that perhaps this post will make it more clear why my stance is the way it is.  I tend to do a poor job of explaining that, apparently, but hopefully this one will be more useful.
Chris,

Not a man short on words I see.  You won’t object to a similarly verbose reposte then.  :)  I thank you for taking the time to answer, most wouldn’t bother.  Anyway, onward.

On the matter of the AI making use of a small battlegroup routine, I do wonder if you’ve actually read what I’ve said on the subject in the recent past.  (This is no criticism, more accepting that you are a busy chap and can’t be expected to read everything exhaustively.)  I have, I hope, made it clear in other posts that any such battlegroup/taskforce routines should compliment the existing single-minded behaviour rather than supplant it.  I even suggested that if this technique were to be employed by the AI that it should be stochastic and perhaps likely to occur 50% of the time as a maximum.  (Excuse the garish use of emphasis but I believe this to be a crucial point.)  Fuzziness is king, as I think we do all agree.  Lovely.

Now, I don’t know much at all about programming AI (what I do know you could write on a cat’s arse with an air rifle) but I do know a thing or two about military doctrine, not the least of which being the combined arms principles.  Personal trumpet moment: I’m an accomplished Grognard[1] and have reached the finals in several national (w/international contingent) wargaming contests and remain the local ‘one to beat’.  (The Battle of Kirsk being played out on 32 tables was something to behold indeed, and it took over 60 hours of gaming to reach a suitable conclusion - which as it happens was not dissimilar to the real battle.  Anyway, that’s a war story for another campfire.)  Suffice to say I know a thing or two about asset management from the tactical level and on up into the tactics-played-out-over-time level (some people call this part ‘strategy’).  My point is, and I think we agree on this, that CA (Combined Arms) is far more than simply ensuring that complimentary units remain in support of one another; individual tactics must also be husbanded in a similar manner so that defined doctrines are also played out in supplementary concert.  Thus anything talked about here is proposed in addition to the existing single-minded routines.  There should be no tethering, no hobbling, no domineering and certainly no overturning.

Any CA events that occur in AI War are entirely coincidental, at least this is how I have observed it.  The only time that you will see one archetype neatly supporting another is when they just happen to be in exactly the same place at exactly the same time, and as time progresses these coincidental pairings are systematically discarded (and, to a far lesser degree, reformed) as a function of chaotic entropy.  (Alas, few battles play out long enough to be party to the chaotic ordering phenomenon.)  When AI forces go on the offensive (and I view advancing from a defensive position as going on the offensive in this case) every individual ‘agent’ acts with a single-minded selfishness and pays no heed to its neighbours; it chooses a target that it can best affect and it belts off after it, regardless of what lies in its path or what it leaves behind.  X-ray tunnel vision.  There has been a lot of talk in here recently about ‘emergent behaviours’ and what have you but the House of Strong Emergent Behaviour(tm) is built from the bricks of co-operation and learning, and as far as I understand, and as far as I have observed, AI War possesses no co-operative elements in its AI (every ship acts 100% selfishly) and it has no capacity to learn.  This would suggest that strong emergent behaviour within the game is only an illusion born of the observation of mere coincidence.  (Coincidence, chance, is an important part of any emergent behaviour, strong or weak, but without the capacity to learn [cf. Evolve] these important discoveries are instantly forgotten and are doomed to remain entirely accidental, rare and never exploited.)  Essentially, what I am suggesting here is a small modification to the way that the AI behaves to simulate, in a suitably fuzzy way, this vital co-operative survival characteristic (aka. CA in this context).  It might be too difficult to code, I wouldn’t know.  Maybe Rally calls issued from Starships and small clusters of core archetypes isn’t efficient, again, I wouldn’t know.  At least the theory distils down to one base element: the absence of an AI option to perform a Group Move.    

(Aside:-
I’m at pains to come up with a reason why the AI would ever seek to send a Starship into battle completely alone.  If nothing else it’s an epic waste of force multiplication.  And even if a reason did exist I doubt that sole reason would be enough to force Starships to act utterly alone in all other situations.  The logic escapes me completely on this one I’m afraid.  Raid Starships are the obvious first consideration but the gotcha there is that the AI is unable to deploy Raids as anything other than just more metal to lob into the grinder, they don’t appear to be the recipients of any kind of special treatment.  Raids find their special niche only in the hands of the meatsacks IMO.  If that is true then the AI probably regards all Starships, regardless of class or function, purely as frontal combat power and in that light sending them in alone is about the worst conceivable use of these assets, short of not using them at all.)

I contest your view that giving the AI a set of elementary tools that enable it to choose to form complimentary groupings of assets will somehow stifle emergent behaviour.  (Leaving aside the argument as to whether or not AI War actually gives rise to emergence.)   I put it to you that single-minded, perpetually accidental, non-learning constraints (and these are constraints) do more to harm the chances of emergent behaviour than anything I’m suggesting here; in fact I would go so far as to say that those same constraints make emergence impossible.  I’m not suggesting that you rebuild your AI model to incorporate learning (even though that would indeed rule!) but I am suggesting that it might be possible to give the AI the fundamental tools to be able to demonstrate seemingly complex co-operative behaviour which when coupled with the existing selfish behaviour actually increases the chances of seeing something rather ‘clever’.  I would posit that we’d still not see any evidence of emergence by doing this but it would allow for the appearance of it (importantly, at a far greater frequency than relying entirely on chaos); furthermore, if the primary reason not to gift the AI these simple tools is because it would harm emergence then I’d consider that particular hurdle leapt because arguably strong emergence wasn’t present to begin with.

As I have expounded in other threads on this subject, co-operative groups will be more effective on an asset-for-asset basis, i.e., they will accomplish more for their number.  This is a fact and more importantly it is demonstrable in the way that meatsacks choose to act.  Co-operation isn’t a meatsack-only aberration, neither is it ‘magic’, it just works.  The AI tries to overcome this inability to co-operate purely by increasing its numbers and mark; it doesn’t seem to do anything cleverer per se (with regard to the act of attack), it simply throws ever greater numbers of bodies at the machineguns.  Someone said in another thread that the AI in AI War adopts a Stalin-esque mentality: Charge!  Although colourful this analogy isn’t strictly representative because trained Russian forces of the era executed rather complex CA manoeuvres for the time; it was largely the penal and peasant conscript divisions that were thrown in first in an attempt to soften the enemy (both physically and psychologically – “My god, these Russians are insane!”) before the trained formations moved in to exploit the confusion.  That having been said, the analogy does still feed neatly into what I’m trying to explain here: AI War executes the first part of this Russian doctrine, the hugely wasteful ’human wave’ element, but then fails to exploit the resultant confusion with the possibility of a more organised follow-through.  As players we are attacked by vast swarms of selfish ships pretty much constantly, and we do love it; but imagine being subjected to this random horde, and all the confusion that surely results, to only then have to face off against a couple of far smaller co-operative formations that compliment their contingent rather than sending them all off to die alone.  If I were to see that I’d be far more inclined to think to myself, well blow me, that’s clever, and nasty!, rather than the staple, oh, it’s another vast wave of ships that are once again all streaking off and leaving their Starships and munitions boosters behind, and aren’t screening their Frigates with any Fighters.  (EDIT: I’m very much liking the Formation Move and the Arc Placement thingies that KL has implemented.  Superb stuff.)

I admit that my ‘name any RTS that was ruined by having CA as part of its AI’ challenge was somewhat loaded, but there was a slightly sneaky gotcha being laid there that you avoided by not actually answering the question.  (Mine Avoidance!)  I wasn’t trying to be divisive (well, okay, maybe a just a little) but my gotcha was that CA is actually bloody rare in RTSs, even today.  My favourite RTS of all time, Total Annihilation, doesn’t do it and neither does its spiritual successor, Supreme Commander.  Company of Heroes only gives the most subtle of nods do it, amazingly enough.  (The Total War series, believe it or not, did execute elementary CA doctrine but those games have so many other faults that I’m almost ashamed to have even mentioned them here which is why I’ve hidden this sentence in the relative ignominy of being between parentheses.)  The list is almost endless.  This has always amazed me because it’s such a simple concept - perhaps that’s why it’s so rare.  AI War has the chance to make something of this, if it wants to.  Trust me, the Grognards will both recognise it and appreciate it.

Once again I’m not suggesting that co-operation replaces anything, it should be, well, complimentary.  (<-- A neat synopsis of my entire point right there.)  Almost every rebuttal that you have said above seems to stem from the position of assuming that the selfish behaviour should be quashed entirely.  I hope it is now clear that this is patently not the intention.  The single-minded tactic is an important part of what AI War does.  I’m simply suggesting that a little bit of co-operation here and there acts as the ubiquitous force multiplier to what the AI can do.  It’s not a closing box lid, it’s an opening door.

AI War does have a rather interesting AI, and everyone who has played the game hopefully has noticed this; but I’m not simply going to take anyone else’s word for that, I’ll wait until I see it for myself.  This suggestion is based on those same observations.  The crux of my reason for talking about this isn’t to chip holes in anyone’s hard work, or for the express purpose of winding anyone up, it’s because I’ve noticed that the AI always attacks in exactly the same way and perhaps, just perhaps, it needn’t do.  Granted, I don’t know how this game functions under the hood -- it would all be well beyond me I have no doubt, I am no programmer -- but I do know what I have seen the game do, which is my empirical frame of reference.  I have read most of your articles, Chris, and I find them both an edifying and enjoyable read, but I naturally challenge anything that I see.  Perhaps this is a fault of mine, and sometimes I do go a tad overboard, but I’m no sycophant and I’m not afraid to confront any establishment if I think I’ve got a valid point.  If you feel offended by this discussion then I can only apologise as that was not behind my intent.  Similarly, it would be a great shame if the subject was dropped based on an emotional response rather than a logical one (not that I’m suggesting such a thing will happen here though).

Ultimately AI War is your baby and you will do with it what you will; no-one here has the right, nor hopefully the inclination, to question that.  It is indeed laudable that you encourage discussion, even when the topic is presented in a fairly adversarial manner.  (As a customer I can afford to be a bit brusque, CEOs cannot.)  However, I will defend a point robustly if I feel that it has been misrepresented or sidelined and I will question any logic or observations that I have not shared or hold a contrary position to.  

Anyway, I’ve said all I will say on this matter and I’ll stop hocking co-operative tactics in other threads – honest, guv’nor.

...And breathe.

PS.  I did very broadly cover the concept of Starships acting as the central point of logic for creating battlegroups in my AI Fleet Tactics thread, as well as something similar for task forces that then centre logic on one of the three core Fleet triangle ships.  Your final thoughts seem to be roughly in line with what I proposed in that regard so perhaps we’re actually, broadly speaking, firing out of the same side of the trench after all.

[1] Grognard: someone who likes wargames.  It also means ‘grumbler’ (French, Napoleonic) – the founding trait of any serious and self-respecting wargamer.
Atmospheric & Lithospheric Reticulator,
Post-accretion Protoplanet Aesthetic Seeding Team,
Celestial Body Design & Procurement Division,
Magrathea Pan-Galactic Planets Corp.,
Magrathea.

Offline deMangler

  • Full Member Mark II
  • ***
  • Posts: 189
  • om tare tuttare ture soha
...Your final thoughts seem to be roughly in line with what I proposed in that regard so perhaps we’re actually, broadly speaking, firing out of the same side of the trench after all....
While it sort of feels as if I am butting in to a private argument here, it is on a public thread and I really can't resist so here goes.

As someone who does have some understanding of strong and weak emergence, computer programming, and war games, it seems to me upon having read both I-KP's and X4000' posts in lots of threads on this forum that in many ways you understand the issues and are indeed firing from the same trench, but also in may ways you fundamentally disagree.
You also understand each others disagreements - this is clear from the way in which you respond to each others points so concisely. Yet you keep having the same disagreement. The same one.
I must admit that I do enjoy listening to a good old debate, especially one that is in a theme I feel I have some knowledge of, but guys.....
Oh heck, I was just about to go into a big rant about the pro's and con's of weak and strong emergence....
Seee? You nearly had me getting sucked in there.... that was close...
I know how you feel, I have difficulty leaving it alone myself.
Who am I to talk.....
<wanders off muttering>

<edit>How about a thread for dangerous topics like philosophy, programming, politics and so forth. It can have a warning for people 'beware ye who venture within' I can post all about why QBasic is superior to VB (which is actually evil, and so is access), and Python is the king of languages. Also, I can finally let loose on the illusory nature of everything especially the differences between strong and weak emergence and why division by zero is actually a very useful mathematical tool if used appropriately...oh and another thing.... <edit>
« Last Edit: February 02, 2010, 01:48:18 pm by deMangler »