Commanding Starships

Starshatter: The Gathering Storm extends the classic space sim by combining fighter and starship combat in a single dynamic campaign game.
Post Reply
John DiCamillo
Posts: 360
Joined: Sat Feb 28, 2004 7:02 am
Contact:

Commanding Starships

Post by John DiCamillo »

While I was in the codebase fixing some other campaign-related issues, I found time to add one of the most consistently requested features related to starship command. In the final version, you will be able to choose any individual starship in a group when requesting a transfer. In other words, if you have the rank for a destroyer squadron, you can have yourself transfered to either of the destroyers or either of the frigates in the squadron, not just the lead ship. To do this, you just pick the specific ship you want in the force tree before clicking the Transfer button.

There are a few limitations:

1. Rank confers authority at the group level, not the ship level. You still need to be a Commodore to command any ship in a carrier group.

2. The squadron or battle group is always commanded by the lead ship, even if you are in control of a frigate. If you choose to conn a lesser ship, you lose the ability to issue commands to the other ships in the group.
User avatar
Pheonix Starflare
Posts: 254
Joined: Wed Mar 31, 2004 8:20 pm
Location: Boston, MA, USA

RE: Commanding Starships

Post by Pheonix Starflare »

The squadron or battle group is always commanded by the lead ship, even if you are in control of a frigate. If you choose to conn a lesser ship, you lose the ability to issue commands to the other ships in the group.

Does this mean that the other ships in the squadron will still go on missions with you? Will the lead ship issue you orders? I personally think it would be interesting to have to follow orders from the dessie you are escorting as a frigate.
"An optimist sees a glass half full, a pessimist sees a glass half empty and an engineer sees a glass thats twice as big as it has to be."

"What do you get when you cross a chicken and and elephant? Chicken elephant sine(theta)"
John DiCamillo
Posts: 360
Joined: Sat Feb 28, 2004 7:02 am
Contact:

RE: Commanding Starships

Post by John DiCamillo »

All the other ships will still be there, but they will just follow the flight plan / nav route. The AI isn't quite up to the task of issuing useful orders, except for the carrier sending radio commands to the fighter cover. I have tried to code the AI so that the other ships will take logical, doctrinaire actions automatically. I don't want the player to need the radio to beat the game.

That, and I can't think of an algorithmic solution to coordinating a fleet battle. Sometimes you want the ships to mass fire on a single target, other times you want to make sure you cover all of the threats. Distinguishing between those situations is hard for me to do when I play the game. I don't know how to tell the computer to do it automatically.
BladeDragon
Posts: 4
Joined: Thu Apr 08, 2004 2:55 am
Contact:

RE: Commanding Starships

Post by BladeDragon »

milo, have it be based on a threat level modifier, say 1 to 5.

ex. 1
Enemy force, 3 Destoyers, 6 frigates.

Player group, 5 Destroyers and 10 frigates.

Threat level, 2. SHips will assault each threat equally, covering the entire group.

ex. 2
Enemy force, 1 BB, 3 destroyers, 6 frigates.
player group, 1 heavy cruiser, 3 destroyers, 6 frigates.

threat level 4. The cruiser and destoyers focuse all firepower oin the BB, frigates provide screening function.

Level 1) Minimum threat, ships assume a wide based aggresive standing and attack all threast equaly.
Level 2) Moderate low threat, Fleet will target larger class ships first, though will fire on smaller escrts if in range.
Level 3) Medium threat level, fleet will focuse exlusively on larger targets, still targetting all larger class ships simultaneously. Then will reasssign a lower threat level and continue engagement.
Level 4) Moderate High threat, Fleet has identified a single high pwoer threat (such as a heavy CL or larger) and will focuse on it. Then reassign and continue. Will ignore escort and screening vessels to attack single target.
Level 5, high threat. All ships and escorts will engage at range, maintaining a escape route.
Modder formerly known as DarkestVorlon.
Kuokkanen
Posts: 3748
Joined: Fri Apr 02, 2004 1:16 pm

RE: Commanding Starships

Post by Kuokkanen »

Thank you milo thank you milo thank you milo! [&o]
You know what they say, don't you? About how us MechWarriors are the modern knights, how warfare has become civilized now that we have to abide by conventions and rules of war. Don't believe it.

MekWars
isferno
Posts: 16
Joined: Mon Apr 05, 2004 3:49 pm

RE: Commanding Starships

Post by isferno »

Milo, as for AI, have you tried to group threats and targets into one pool (central coordination)
Works with levels as bladedragon, but you have the addition:
- You can bypass levels, example: based on damage, squad combination, has been taken care of, etc.
- Threats/orders can be divided, or even changed/ignored/redirected

This way,
- you avoid that 16 fighters under the command of a destroyer all turboboost after 1 single leftover fighter, or
- that 4 assault fighters get destroyed while their two escorts are bussy chasing one of two enemy sweep fighters, or
- that 54 destroyers can't beat 16 empty orion carriers because they all sweep nr1 carrier first, which resides in the middle. (quite fun to look at with an observer destroyer standing a bit off, especialy the resulting chain reaction after every exploding vessel)

There is also TACTICS:
every tester will have used certain tactics to gain the upperhand in ex. loosing situations. You can incorporate their experience as part of the AI-tactics.


1 item though, could you insert proximity/distance ("specific ship" or "ship class") as event trigger and not just hardwired AI?
A new insight comes when you stop
swinging the bucket of water over your head.
John DiCamillo
Posts: 360
Joined: Sat Feb 28, 2004 7:02 am
Contact:

RE: Commanding Starships

Post by John DiCamillo »

The problem is that discriminating between different situations that require different tactics is exceptionally difficult. The examples you cited are all cases where the AI is applying a valid tactic to the wrong situation. The exact same set of ships in two slightly different patterns (e.g. grouped vs. spread-out) could require different tactics.

It is also very expensive for the computer to try to solve these kinds of spacial puzzles, even if you can figure out what the thresholds should be that distinguish situation one from another. It's easy for you or I to do so with the visual processing in our organic brains. But the computer can't see. Think about how you would do this if, instead of a picture of the battle, I gave you nothing more than a table of ships and their coordinates and velocities in three dimensional space. No fair using graph paper to plot the ship's positions either.
isferno
Posts: 16
Joined: Mon Apr 05, 2004 3:49 pm

RE: Commanding Starships

Post by isferno »

create space nodes, just nodes containing address vectors to a ship's structure.

those nodes could help:
- searching for closeby ships, which is now simply accessing the couple of nodes of the space volume in which a ship resides.
- calculate relative density of ships, which can be taken from any one node per volume
- assess (local) superiority
- assess direction of (urgent) threats

If I'm right, you probably already have those "nodes" to calculate "relative" space positions for a ship?
(Though in cubes instead of triangles)
A new insight comes when you stop
swinging the bucket of water over your head.
John DiCamillo
Posts: 360
Joined: Sat Feb 28, 2004 7:02 am
Contact:

RE: Commanding Starships

Post by John DiCamillo »

No, that doesn't work. There is too much space in Starshatter to divide it into an octree. You wouldn't get sufficient discrimination between nodes unless there were a lot of nodes in the tree.

A better solution would be to create a list of "clusters" that describe meaningful, possibly overlapping groupings of ships. Of course, then you have the problem of knowing when to merge or divide clusters as the ships move around, as well as knowing what impact they should have on your AI's plans. Unlike, say, Chess, there aren't centuries of scholarly analysis of the strategy and tactics of 3D space combat.

All very interesting, but in the end, none of this is going to happen for Starshatter.
User avatar
TheDeadlyShoe
Posts: 549
Joined: Tue Apr 06, 2004 3:06 pm

RE: Commanding Starships

Post by TheDeadlyShoe »

I'd settle for AI ships firing missiles beyond 50km. *g*

Anyways, great. That's a good feature.

Thoughts on AI:

When frigates are ordered to target incoming fighter squadrons, they always lock on the "squadron 1" fighter. This has huge disadvantages because frequently (read: usually) the 1 fighter is the furthest away, in addition to the fact the multiple frigates are targeting the same fighter, causing only that fighter to dodge and abort its attack run.

Hegemony Cruisers still rarely fire their missiles, which are the primary hull destruction weapons for cruisers... I'm not sure why.

Player bomber squadrons never seem to run into enemy fighters on the way to their target. Patrols are too light and interceptions always (always!) launch too late.

hmm....
@TheDeadlyShoe> Unless, say, you could make black holes at will.
@Razeam> I can do that but I don't want to.
Kuokkanen
Posts: 3748
Joined: Fri Apr 02, 2004 1:16 pm

RE: Commanding Starships

Post by Kuokkanen »

ORIGINAL: John DiCamillo

No, that doesn't work. There is too much space in Starshatter to divide it into an octree. You wouldn't get sufficient discrimination between nodes unless there were a lot of nodes in the tree.
Could that cube thing work that way it is centered around of each ship?
You know what they say, don't you? About how us MechWarriors are the modern knights, how warfare has become civilized now that we have to abide by conventions and rules of war. Don't believe it.

MekWars
isferno
Posts: 16
Joined: Mon Apr 05, 2004 3:49 pm

RE: Commanding Starships

Post by isferno »

You don't have to pre-create all possible nodes.

if you pre-create the following:

ship
{
node1= this(node1) address
node2 = address
etc
}

node1
{
vector to list of ship addresses, containing node addresses
space coordinates.
}

etc.

A ship will always fly to an adjacent volume of space, either with ships already containing pre-created nodes, or no ship, in which case you have to create nodes on demand.
just requesting the addresses from the first found ship in the node list will be enough to require these addresses.

Hooking up nodes is should not be that difficult.
If you have a ship in volume A and D, then the nodes adjacing B and C do not exist. You only have to search if "node1::space coordinates" == "node2::space coordinates" without any calculation and only if a ship leaves volume A.

I assume that this is easier and less time consuming then sorting through the table everytime and calculating distances between every ship.
A new insight comes when you stop
swinging the bucket of water over your head.
Post Reply

Return to “Starshatter: The Gathering Storm”