Fractal Softworks Forum

Please login or register.

Login with username, password and session length

Author Topic: Varying ideas for AI ship usability improvements  (Read 1681 times)

Dabor

  • Lieutenant
  • **
  • Posts: 92
    • View Profile
Varying ideas for AI ship usability improvements
« on: December 05, 2015, 01:46:57 PM »

I've owned Starsector for a long time (since Starfarer at least), recommended it to plenty of friends, and I'm sort of ashamed it's taken me this long to join the forum, despite reading it for ages. I guess I never consolidated all my thoughts until now, when the game is together enough that the little gaps get to be more noticeable.

1. General target priority selection. While doing this per-weapon would be extreme (although I would love something like "tell an autofiring missile group to not target fighters/frigates), telling individual ships something like "focus enemy fighters" or "focus on avoiding combat" would be great. I'd love a button that tells a Hyperion or Phase Ship "don't take any risks and just skirt the enemy, making them have to cover their back." Officer personalities do this somewhat, but there isn't a personality like "defend friendly ships from fighters/missiles" or "stay away from the front lines and hunt carriers/missile cruisers," while the way in which AI personality would combine with these general ship orders would add another layer of depth. Again, some of this can be done in other ways (load a ship with PDs, throw on a steady/cautious officer, and tell it to escort something), but for something that's such an intuitive role on the player side, it requires a lot of effort, compared to just checking a box that says "provide PD support to friendly ships that lack it." Ultimately, options like this are the only way to create fleets with complex teamwork in the long term.

2. Finite system use aggressiveness. To give a very simple example, let's say you take a Gryphon, and give it a Squall (large), 2 Pilum (medium) and 3 Annihilator (small). A checkbox saying "use the system liberally(when the ship first decides it needs to fire a missile it doesn't have a full volley of)" versus "use the system conservatively (wait until all missile batteries are below enough missiles to volley before you reload)" depending on whether you want to set it up for striking or barraging, while still giving it some missiles types to cover it in the other role.

3. Automatic retreat thresholds, either at a "deployment time remaining" amount or at a "CR remaining (nullified if deployed at or below this)" amount, or just straight up "out of ammo/missiles on non-regenerating weapons." While something like dagger wings do this naturally, I think it'd help to be able to design genuine one-shot strike frigates. As a player, I'm capable of using a 4-reaper Hyperion to teleport behind and one-shot many large ships, including Onslaughts. It's disappointing there isn't a way to tell the AI "get in, find a big target, torpedo the crap out of it, then skirt the battle until you're low on CR, then retreat" even though, for a player, that's a very simple strategy to understand.

You have to draw a line before you're just making people program their own AI in this game, but when there's this feeling of "if you want something done right, you've got to do it yourself" popping up with certain roles, it's worrying. The AI is perfectly trustworthy on a stand-off or pressure focused capital ship, a carrier, a missile barrage cruiser, a harassment frigate (in small engagements) and yet falls apart in some roles (a player in a Monitor can build it for flux and just rely on turning on fortress shields and retreating, but the AI will always turn them off for short moments and end up getting killed, a player can build a "bombing" phase ship, but the AI will never be as protective of it as a player is.)

4. Even if all of that would just add needless complexity, I think that, especially with the advent of officers, there's some simple idea that would do everybody well. Default orders, especially escorts. So you tell a ship "by default, escort this cruiser" or just be nonspecific about it - just say "by default, this capital ship gets a medium escort" and it would require use of CP to remove it in the actual game. You could also change your default orders for one battle before you enter, same as you can press "Transfer command," you'd be able to press "Change battle plan." If you want to have a fleet built around a simple strategy, you need to build up a CP pool and open every battle with a series of identical clicks - carrier rally somewhere near the spawn, PD destroyer follow this assault cruiser, etc. It would be trivial, useful and intuitive to make that strategy a default.

Beyond the player being able to use this, it would allow making AI fleets with clear flavors and preferences in their battle strategy - maybe one faction uses its fighters to capture points, while another uses its fighters to escort capital ships. One faction has all of its capital ships sticking together while the smaller ships skirmish freely, and another has its larger ships all spread out with their own escorts of smaller ships.

-----

I have some experience with game design, a large part of which isn't about having good ideas, but having practical ideas - something quick to implement, easy to get feedback on, and user-friendly in both concept and interface. Hopefully at least some of this helps. I wouldn't want to go down the road of making this a "programming game" to the degree that new players are just told "go download this script for your AI frigates and let them do the work for you," but I think some of these changes would allow players to builds fleets in ways they otherwise couldn't, because there are certain roles they don't trust the AI in, while at the same time letting enemy AI get a bit smarter. How many dozens, hundreds or even thousands of battles open with some enemy Hound or Vigilance rushing forward and immediately getting torn apart by a Tachyon Lance, Hurricane MIRV or barrage of Hypervelocity Drivers? It's not that one under the player's command would do differently, it's just that the player would have it sticking close to one of their big ships. If it dies, it's at least taking resources that would've otherwise been spent on the ship it's guarding, rather than just being a "free" kill that the enemy can vent the flux from.

If the enemy had to use CP, then those 30-ship-fleets with 15 frigates would barely have enough just to get all of their frigates escorting something. With default orders, everyone wins. Except the Hegemony, because guns are stupid and lasers are cool and they should feel bad.
« Last Edit: December 05, 2015, 02:13:09 PM by Dabor »
Logged

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 24114
    • View Profile
Re: Varying ideas for AI ship usability improvements
« Reply #1 on: December 05, 2015, 02:31:27 PM »

Hi, and welcome to the forum :)

These have come up before and I've given it some thought over time. As you say, it's very much one of those where you have to draw the line somewhere. To me, it feels like officers are a good place to draw that line.

The examples for "you have to do it yourself to do it right" - I don't think it's realistic to expect that the AI would be doing a good job of those tasks if only a limited number of knobs were tuned just so.

Hunting carriers behind enemy lines? Doing that well is going to require a high-level strategy (questionable whether the AI can devise one that's even mostly successful), not something simpler like "avoid non-carriers, attack carriers". The latter may work now and again, or may result with the AI ship crawling into a corner of the map in its quest to avoid non-carriers. And if you add enough knobs like that, testing the AI well would be nigh-impossible.

Even something simpler like "autofiring missile group shouldn't target fighters or frigates" gets iffy. What if the ship is about to die anyway? What if it's taking damage from fighters/frigates? What if the enemy has nothing but fighters/frigates deployed (but may or may not have bigger ships in reserve). How does it behave when combined with a "skirt the battle" behavior, which (let's say) naturally keeps it out of the range of any enemy ships other than frigates or fighters? You're going to end up with combinations of behaviors that fail in unexpected and unclear ways, and the feedback-debug cycle for this stuff, from the player's point of view, is pretty long. Do they spend hours in the simulator trying various combinations, only to lose ships to configs failing in unanticipated circumstances?

The point I'm trying to make is, if you have a bunch of things like this, there are going to be combinations that will be horribly broken, often depending on the relative fleet compositions. That's just a fact of life - no way to test them all out adequately (officer personalities are easier since they're package deals, and very selective in what they affect). Also, do you want the player tuning their AI config for every battle? Because they might be forced to do that to get optimal performance out of their fleet.

It just feels like overall, the approach sounds good when you think about all the ways it could succeed, and much less so when you think about all the ways it will fail.


(Btw, the enemy side *is* limited in command points.)


Ultimately, options like this are the only way to create fleets with complex teamwork in the long term.

I hear you, but it's just a "no plan survives contact with the enemy" sort of thing. Complex teamwork is hard enough to pull of when humans are involved. Multiple AIs using a limited set of rules to coordinate complex behaviors in the face of a fluid tactical situation? It's just not going to work out. Another point here is that looking smart ten times isn't worth looking dumb once, at least in terms of how I see AI work. The "dumb once" case is what's going to stick in a player's mind.


Re: Monitor fortress shield system use - I've actually god a TODO item to look at that specifically :)

P.S. Thank you for taking the time to share your thoughts! It's good to look at these things and think them over again.
Logged

Dabor

  • Lieutenant
  • **
  • Posts: 92
    • View Profile
Re: Varying ideas for AI ship usability improvements
« Reply #2 on: December 05, 2015, 03:31:34 PM »

1. Even something simpler like "autofiring missile group shouldn't target fighters or frigates" gets iffy. What if the ship is about to die anyway?

2. Also, do you want the player tuning their AI config for every battle? Because they might be forced to do that to get optimal performance out of their fleet.

3. Another point here is that looking smart ten times isn't worth looking dumb once, at least in terms of how I see AI work. The "dumb once" case is what's going to stick in a player's mind.

1. For the "missile group targeting" I meant setting it for the piloted ship. If the player wants to override it, they can just manually select the weapon. That's pretty much what I do anyway. I have it turned off when skirmishing, turned on when in a standoff, and use it manually when fighting off frigates. Another major example would be telling my flak to totally ignore anything other than missiles and fighters, which isn't really something that can be attained with any amount of micromanagement.

2. I did emphatically state a few times that it shouldn't become a programming game, which is why these were tentative suggestions at best. Starsector is one of my favourite games (second, to be exact) and a large part of that is because of a pretty intuitive AI that still manages to surprise me (just a couple of days ago, when pursuing me, the AI sent the bulk of its force up to the very top of the map while sending a few mid-sized ships to keep my attention.) And don't get me started on that vigilance with a reaper. I mean, come on, who puts a Typhoon Reaper on a vigilance? Grumble grumble.

3. There are certain ways in which the AI is almost always dumb. In particular, as I mentioned, sending Hounds, Vigilances and Wolves forward to die. If the first few ships get instantly murdered by 2 Hurricane MIRVs, maybe the others should hang back next to larger ships that can provide some cover. Yeah, they might still have a frigate get caught out and die, but every single battle opening with me slaughtering a few frigates before I meet the main force qualifies as being dumb ten times out of ten. I would never deploy those frigates into a large battle without a mandatory escort or hold order that'll keep them from rushing ahead, and neither should the enemy. And since this is so mandatory, I don't think it should take CP to do it. In fact, I think it should take CP to tell them NOT to do it.

I'd still like you to consider the "pre-battle escort orders," even if everything else is impractical. I think building a fleet in which certain ships are meant to stick together is a natural bit of late-game progression, and using CP for that is both incredibly counter-intuitive and a bit tedious. Surely, an organized fleet goes into battle with at least a basic plan, and by extension, they require effort to change up that plan. As a drill instructor said, military communication needs to be rare, clear and purposeful, and that's what I view CP as representing - the amount of information you can clearly communicate in a dangerous situation before the channels get bogged down and the really important stuff is drowned out. Going into battle with a plan that turns out as impractical means that it takes time and effort in the actual battle to undo that strategy as well as implement a new one, something that I think only improves the game. Certain details, such as which enemy ships to focus on, where to rally fighters, or which points to assault/capture, must always be left up to the specific battle map - I don't see why anyone would want it any other way. But if you started every single battle giving the exact same set of escort orders, I don't see what's lost in adding a button on the fleet or refit screen for "escort by default." In regard to "no plan survives contact with the enemy," I don't see that as a reason to not make plans, and CP seems like a fantastic way to represent the limited ability you have to tweak any plan on the fly when it, indeed, makes contact with the enemy.
Logged

Chaos Farseer

  • Lieutenant
  • **
  • Posts: 98
    • View Profile
Re: Varying ideas for AI ship usability improvements
« Reply #3 on: December 05, 2015, 07:02:52 PM »

A thought, perhaps: Maybe you should be able to assign as many orders as you'd like at the start of battle. After that, you're limited by your command points.

Doesn't solve the problem of having to assign escorts for every battle, though.
Logged

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 24114
    • View Profile
Re: Varying ideas for AI ship usability improvements
« Reply #4 on: December 05, 2015, 09:36:36 PM »

3. There are certain ways in which the AI is almost always dumb. In particular, as I mentioned, sending Hounds, Vigilances and Wolves forward to die. If the first few ships get instantly murdered by 2 Hurricane MIRVs, maybe the others should hang back next to larger ships that can provide some cover. Yeah, they might still have a frigate get caught out and die, but every single battle opening with me slaughtering a few frigates before I meet the main force qualifies as being dumb ten times out of ten. I would never deploy those frigates into a large battle without a mandatory escort or hold order that'll keep them from rushing ahead, and neither should the enemy. And since this is so mandatory, I don't think it should take CP to do it. In fact, I think it should take CP to tell them NOT to do it.

Just a quick note about this - at some point during development, it was a bit too cautious about this, with lighter ships always reined in and this wasn't great, especially in early game battles. Sounds like the pendulum swung too far in the other direction; made a note to take a look at it. Probably makes sense to base the decision to give escort orders or not based on the player fleet size/composition rather than having a more canned approach to it. Glad you brought it up!
Logged