Author Topic: Discussion: How to make "blobbing" a less viable tactic?  (Read 14362 times)

Offline Professor Paul1290

  • Sr. Member Mark II
  • ****
  • Posts: 395
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #45 on: September 01, 2012, 10:02:15 pm »
The biggest difference to milsims is that your units in AI War are usually disposable. Even a total wipe on the offense just means you need to wait a bit until your full force is rebuilt.

It is true that units are more disposable in this game, but unless you expend resources building up a lot of production facilities everywhere (which may very well be true), your capabilities are generally limited by what you have in the area right then and there, at least in the short term. (again, some play-styles won't be as affected by this)

That's why I think that the game would benefit from AI responses that take advantage of openings at a smaller scale and faster moving tactical level. More significant, faster, and harder hitting retaliation from the AI for certain attacks would help a lot with this.

I guess to propose something more specific that would address this more directly, there does exist the notion that if you destroy a LOT of your opponent's "stuff", then he probably doesn't have much "stuff" left, at least not that he can bring in right away.
I don't think it would be too much of a stretch for the AI to notice that it just killed a lot of your ships and infer that the amount of forces you have nearby has been significantly reduced in the short term.
Perhaps there should be a threshold where if the AI kills enough of your ships in a short period of time to make it reasonable to assume most of your fleet just got wiped, then it quickly gather units and send immediate attack of significant size, something big enough to cause some pain and maybe knock over a planet or two.

It might be a predictable behavior if this happened every single time, but this wouldn't necessarily be a bad thing. If it happened every time, it could become a predictable consequence of major fleet loss and create an incentive to not lose too many ships in a short amount of time, which and make a lot of other balancing techniques work.

Offline KDR_11k

  • Hero Member Mark II
  • *****
  • Posts: 904
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #46 on: September 02, 2012, 02:05:59 am »
The AI will already gather free threat and attack planets that aren't defended enough but it's not allowed to send ships that haven't been freed so its hands are tied.

If it shot a thing into a blob, it would just carve a bloody hole through the group, unless they were spread about or deliberately moved.

Maybe it's a terrible idea, but it seemed like an interesting union of the two ideas.

How do you spread a blob out? Select chunks of it and issue individual move orders? That's nothing but tedium.

Offline Mánagarmr

  • Core Member Mark V
  • *****
  • Posts: 4,272
  • if (isInRange(target)) { kill(target); }
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #47 on: September 02, 2012, 06:53:31 am »
There seems to be a lot of community interest in these "Super Guardians", perhaps I should make a Mantis Report on their behalf :P
This would probably not be a bad idea :P
Click here to get started with Mantis for Suggestions and Bug Reports.

Thank you for contributing to making the game better!

Offline Trandrin

  • Full Member
  • ***
  • Posts: 123
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #48 on: September 02, 2012, 11:24:01 am »
Perhaps with multiple super guardians on a planet, but have them scattered. Make them maul Raid Star ships, and cause them to increase in strength by quite a bit if near another Super Guardian. Player can blob to overwhelm each guardian in turn or all of them. But as they kill individual guardians the others are given a "revenge" type bonus that makes them get stronger and stronger.

So the player has to send his fleet in pieces to each of the Super Guardians fight them in their weakened states doing enough damage to bring them to a critical state. Then they start to die, but their buff is not felt as keenly as they are already near death. The buff effect when they are massed means a player won't try to gather them all together and kill them as a blob. The buffs are what makes them scary. Not the ship type itself, which could generally be mostly weak.

Should they choose to just hunt them all down 1 by 1 at end they could end up fighting a really nasty piece of work that will bring ruin onto their fleets. But they could have the firepower to just brute force it down. They could hasten their fight by maybe sniping one or two of the Super Guardians then splitting, useful for stronger fleets. While the weaker ones will split and fight each in turn onto death. So a variety of ways to actually fight the things. Dunno if that sorta gameplay feature is feasible or desirable, but just my thought on a Super Guardian.

Offline Wingflier

  • Core Member Mark II
  • *****
  • Posts: 2,753
  • To add me on Steam, click the little Steam icon ^
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #49 on: September 02, 2012, 11:57:05 am »
There seems to be a lot of community interest in these "Super Guardians", perhaps I should make a Mantis Report on their behalf :P
This would probably not be a bad idea :P
http://www.arcengames.com/mantisbt/view.php?id=9450

Here ya go!  I'd love to hear some more ideas as well :P
"Inner peace is the void of expectation. It is the absence of our shared desperation to feel a certain way."

Offline KDR_11k

  • Hero Member Mark II
  • *****
  • Posts: 904
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #50 on: September 04, 2012, 11:54:31 am »
You know, all this talk is about punishing the player. How about the opposite, how about adding ways for the player to improve the performance of his fleet past the current baseline by doing something more involved than blobbing? How about e.g. making the AI ships move into some sort of formation when engaging human forces on a planet so a cloaked force could move into their flank? Or mechanisms like limited angular velocity for aiming so a ship may need a few moments to reorient itself when engaged from an unexpected direction? Steadying aim if the ship is standing still? Maybe directional armor so a pincer attack could negate some enemy defenses? Enemy raiders attempting to rush straight at your artillery units to silence them and allow their own snipers to break your blob to bits if you don't do the same to them? Attacks being allowed to retarget if their target dies and another one is within a certain arc of the original weapon aim (and possibly a delay before the projectiles are removed from play so another target could appear within a second or two)?

And hell, how does making fleet ships die like flies fix the issue with combat being boring?

The problem I see is that combat physics are so damn simple that engagements simply can't be all that complex. A ship that's in range will shoot and hit so a blob is beneficial by allowing as many friendlies as possible to be in range simultaneously while the AI does not take advantage of that and battles on a planet are usually a highly concentrated human force vs a highly dispersed AI one where ships come into range one by one and get slaughtered.

At very least the AI should be more capable of commanding all free ships on a planet as a single force (or multiple forces if the strategy calls for a breakup) rather than a homogeneous blob.

Offline TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,570
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #51 on: September 04, 2012, 12:55:22 pm »
You know, all this talk is about punishing the player. How about the opposite, how about adding ways for the player to improve the performance of his fleet past the current baseline by doing something more involved than blobbing?

Agreed, I think that part of the issue is that even though you can "micro" or use nifty fleet tactics, and you do get some increase in performance with it, it is often not enough to justify its "attention cost". Giving more ways to reward good fleet tactics I think is a great goal, and should be a part of the encouragement to "de-blob". The problem is, how do we go about implementing such ways?

Quote
Or mechanisms like limited angular velocity for aiming so a ship may need a few moments to reorient itself when engaged from an unexpected direction? Steadying aim if the ship is standing still? Maybe directional armor so a pincer attack could negate some enemy defenses? Enemy raiders attempting to rush straight at your artillery units to silence them and allow their own snipers to break your blob to bits if you don't do the same to them? Attacks being allowed to retarget if their target dies and another one is within a certain arc of the original weapon aim (and possibly a delay before the projectiles are removed from play so another target could appear within a second or two)?

And hell, how does making fleet ships die like flies fix the issue with combat being boring?

The problem I see is that combat physics are so damn simple that engagements simply can't be all that complex. A ship that's in range will shoot and hit so a blob is beneficial by allowing as many friendlies as possible to be in range simultaneously while the AI does not take advantage of that and battles on a planet are usually a highly concentrated human force vs a highly dispersed AI one where ships come into range one by one and get slaughtered.

Sadly, this is where we are starting to get into limitations of the Unity engine (memory, CPU, etc)
Even with the hyper simplistic combat model we have, the engine still bogs down with large battles. Not due to an inefficient game-logic engine (Chris and Keith have done an amazing job optimizing the game logic engine), but because there are so many ships and each ship has a pretty good ship AI (especially target selection).
Because performance things like this are so much of an issue, I wonder if a scale reduction may be useful in the long run. Like make the current normal caps into high caps, the current low cap into normal caps, the current very low caps into low caps. The current high caps will be gone because Unity has proven it can't handle it.

Also, I hate to say it, but if you want your engine to scale with any new logic (like a more complicated combat model) you're going to have to find a way to parallelize your performance critical loops. Of course, that is a problem so hairy (especially because of the implications for the network model), it may not be worth trying to make the combat model more "rich". And even if you do parallelize the bottleneck code, Unity's freakish memory limits may make the gains from that negligible anyways.

Quote
How about e.g. making the AI ships move into some sort of formation when engaging human forces on a planet so a cloaked force could move into their flank?
...
At very least the AI should be more capable of commanding all free ships on a planet as a single force (or multiple forces if the strategy calls for a breakup) rather than a homogeneous blob.

Agreed, in fact:

Also, I wonder if making the AI smarter with tactical fleet management would encourage humans to be smarter with it as well. They do a decent job with tractoring and cloaking units, but I wonder if clever positioning tricks (kiting, moving ships away from their counters, retreating damaged ships to engineers, etc) with ships in general would be good behaviors for the AI to have. (Of course, this would need to be implemented in such a way that the AI doesn't try to kill your CPU in each battle when trying to compute how to micro)

I mentioned elsewhere that figuring out good tactical unit groups from units from disparate sources with (at the time of the determination) disparate goals is actually a pretty tricky problem in AI. Once in a group, you can do fun stuff, but finding a good grouping in the first place is tough.
There are some cases (mostly, where units are NOT from disparate sources, or when there is a bunch of units with the same goal at around the same place) where it is easy to define what the group should be. Things like cross planet waves, everything at one guard post freed at once, ships that are all waiting around the same wormhole, etc.


EDIT: Keep in mind this is a overall strategy game, NOT a fleet or unit tactics game. That's not to say the skilled fleet or unit tactical management shouldn't be rewarded (it should be), but it is to say that it shouldn't be such a huge reward that it overshadow or nearly overshadows the overall strategy portion.
Also, I don't know about you, but I like the simplicity of the combat mechanics we currently have.
« Last Edit: September 04, 2012, 01:19:05 pm by TechSY730 »

Offline KDR_11k

  • Hero Member Mark II
  • *****
  • Posts: 904
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #52 on: September 04, 2012, 01:59:42 pm »
I find they're a tad too simple and unengaging. Currently combat on the planet level almost doesn't feel relevant, it could almost be abstracted away entirely to a Galcon-style node based system. I'll order a cursed golem to kite stuff and such but with a blob it's more important to maintain coherence than kite.

I'm not privvy to Unity's limits and have only dealt with the Spring Engine so far (which may be designed to be scalable but the complex combat simulation limits it to roughly 1000 units in play at once albeit that's with terrain pathfinding and 3D model rendering and full physics and whatnot) but realistically only a handful of planets will have actual combat going on, most of them are completely dormant and things like patrols wouldn't need combat AI or physics. I'd say all available ships on a planet should be treated as one tactical unit and commanded as such (perhaps with the tactical AI offline below a certain human presence to save resources). If ships enter or leave the planet then they join or leave the tactical unit.

One possible simplification (for the combat system) would be assigning multiple ships of one type to a squad (e.g. every 8 fleet ships, depending on the caps of course) with all squad units sharing one unit AI so they move and shoot as one. They could even be treated as one target with the actual fleet ships only considered if someone wants to attack the squad. Unlike something like DoW these squads would of course be able to split and would have no effect on the actual cap but they could be formed whenever the player gives a multi-unit command. Since fleets usually consist of dozens if not hundreds of ships of the same type there's no eed for a completely independent treatment for each ship.

Offline TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,570
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #53 on: September 04, 2012, 02:11:34 pm »
I find they're a tad too simple and unengaging. Currently combat on the planet level almost doesn't feel relevant, it could almost be abstracted away entirely to a Galcon-style node based system. I'll order a cursed golem to kite stuff and such but with a blob it's more important to maintain coherence than kite.

I'm not privvy to Unity's limits and have only dealt with the Spring Engine so far (which may be designed to be scalable but the complex combat simulation limits it to roughly 1000 units in play at once albeit that's with terrain pathfinding and 3D model rendering and full physics and whatnot) but realistically only a handful of planets will have actual combat going on, most of them are completely dormant and things like patrols wouldn't need combat AI or physics. I'd say all available ships on a planet should be treated as one tactical unit and commanded as such (perhaps with the tactical AI offline below a certain human presence to save resources). If ships enter or leave the planet then they join or leave the tactical unit.

Part of the issue with Unity is that when you start hitting its memory limits, instead of just spinning up the GC more, there is a good chance it will just crash (not even throw an OutOfMemoryException which could be caught and dealt with gracefully, but hard crash), even if running the GC a cycle or two could of freed up enough memory for the operation to go through.

And IIRC, the Spring Engine is decently parralellized. The AI War engine is not; it must process all battles on all planets for all units on one thread, and thus one CPU core.
Sadly, due to the network model (the simulation on every computer must get the exact same results by the time the next "frame" is sent across the network, and there is currently no attempt at desync resolution), paralellizing the engine would be tricky to do, thanks to certain levels of in-determinism that parralization typically incurs. (If you want more technical details and ideas, I can provide some)


Quote
One possible simplification (for the combat system) would be assigning multiple ships of one type to a squad (e.g. every 8 fleet ships, depending on the caps of course) with all squad units sharing one unit AI so they move and shoot as one. They could even be treated as one target with the actual fleet ships only considered if someone wants to attack the squad. Unlike something like DoW these squads would of course be able to split and would have no effect on the actual cap but they could be formed whenever the player gives a multi-unit command. Since fleets usually consist of dozens if not hundreds of ships of the same type there's no eed for a completely independent treatment for each ship.

There is already something like this done as an optimization. When a ship is about to do a complicated computation (like target selection, and I think a part of collision avoidance too) ships will check to see if a similar ship type nearby has done the same recently. If so, it will just copy the results of that. Lots of multi-unit commands have similar optimization tricks applied to them as well.

Could this sort of "grouping effect" be made stronger and applied to more places to optimize even further? Maybe.


EDIT: Oops, forgot to comment on one point you mentioned.
Having the default "grouping assignment" strategy of the AI be just "what is freed on this planet" seems a bit too coarse, but if the AI can split groups, merge smaller groups together, and won't try to reprocess groups using the default logic that are doing pretty well (like one from a cross planet attack wave or an exo-wave), it could work pretty well.

Another consideration is once the AI has assigned units into certain "tactical groups", what group management tactics will it use?
Thankfully, how to tackle this problem in AI is pretty decently developed.
« Last Edit: September 04, 2012, 02:19:46 pm by TechSY730 »

Offline KDR_11k

  • Hero Member Mark II
  • *****
  • Posts: 904
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #54 on: September 04, 2012, 02:17:50 pm »
And IIRC, the Spring Engine is decently parralellized.

I'm not sure about that, while multithreading was added I'm not sure that's being used on the synced simulation (Spring runs on complete synchronization too as does every RTS except apparently Planetary Annihilation where they claim that client/server gives them better performance o_O). I think like most games it's just running the sound and rendering in separate threads.

Offline TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,570
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #55 on: September 04, 2012, 02:24:41 pm »
And IIRC, the Spring Engine is decently parralellized.

I'm not sure about that, while multithreading was added I'm not sure that's being used on the synced simulation (Spring runs on complete synchronization too as does every RTS except apparently Planetary Annihilation where they claim that client/server gives them better performance o_O). I think like most games it's just running the sound and rendering in separate threads.

Do other games try to simulate what could be 1000+ vs 1000+ unit battles, and each unit having a pretty smart unit AI?
That is sort of where the limitations are coming from, the sheer amount of stuff that even mid sized battles can have.
"Pacing" of certain expensive calculations and "copying" results across "groups" of units has helped out tremendously, but that can only take you so far.

This is why I suggested moving everything down one scale (normal -> high, low -> normal, etc, with the current high caps being removed (or hidden) because the engine can't handle it), to reduce these issues. (Thanks to the inherently O(n^2) problems that unavoidably need to be solved when running these sorts of simulations, just cutting the total number of ships by 2 will give some pretty large improvements)

Offline KDR_11k

  • Hero Member Mark II
  • *****
  • Posts: 904
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #56 on: September 04, 2012, 02:30:05 pm »
I know Spring operates on that scale but that's about it. Spring units don't coordinate targeting but they do have extensive priority calculations and even have to deal with things like turning to aim with limited fire arcs or ballistic weapons that fly in an arc and having to avoid friendly units (because of the friendly fire risk).

Offline TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,570
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #57 on: September 04, 2012, 03:15:21 pm »
I know Spring operates on that scale but that's about it. Spring units don't coordinate targeting but they do have extensive priority calculations and even have to deal with things like turning to aim with limited fire arcs or ballistic weapons that fly in an arc and having to avoid friendly units (because of the friendly fire risk).

Hmm, I wonder if there are optimizations that the Spring engine is doing that AI War's engine doesn't have but could really benefit from.
However, I will stop speculating there because, one, this is getting off topic, and two, this is really a question only the devs can answer.

Offline Mánagarmr

  • Core Member Mark V
  • *****
  • Posts: 4,272
  • if (isInRange(target)) { kill(target); }
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #58 on: September 05, 2012, 07:04:14 am »
Spring doesn't have individual unit AI, I think for one.
Click here to get started with Mantis for Suggestions and Bug Reports.

Thank you for contributing to making the game better!

Offline KDR_11k

  • Hero Member Mark II
  • *****
  • Posts: 904
Re: Discussion: How to make "blobbing" a less viable tactic?
« Reply #59 on: September 05, 2012, 12:48:05 pm »
That depends on how you define AI. The units have a command AI that handles following orders and such (especially on units like airplanes that follow actual flight models and thus need to be somewhat smart about how they move if they want to pass through certain points in space for attacks or movement). The only behaviors from AI War that Spring units don't possess by default are the overkill avoidance (picking a new target if the current one has enough damage incoming already) and auto-kiting. I've done a rudimentary version of the former in a mod once (it used the totally inadequate BOS unit scripting system that was copied from Total Annihilation), with the current engine capabilities that would be MUCH easier. The latter has been implemented as a user-side script (widget) with the added complication of turn rates and terrain that are involved in Spring.

Anyway, that's all really beside the point. I deliberately picked things that should be rather easy in terms of calculations in my suggestion post there (notably no actual collision physics).