The Oolite NPC ecosystem (and other questions)

General discussion for players of Oolite.

Moderators: winston, another_commander

User avatar
Smivs
Retired Assassin
Retired Assassin
Posts: 8408
Joined: Tue Feb 09, 2010 11:31 am
Location: Lost in space
Contact:

Re: The Oolite NPC ecosystem (and other questions)

Post by Smivs »

Cody wrote:
cim wrote:
... thugs (who actively seek out bounty hunters and destroy them)...
Oi! Who are you calling a thug? Moi?
<Chuckles>
Commander Smivs, the friendliest Gourd this side of Riedquat.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: The Oolite NPC ecosystem (and other questions)

Post by cim »

Disembodied wrote:
New equipment (or at least a refinement of existing equipment)
Effectively the current pirates already have this: they won't pre-emptively attack a ship with no cargo carried, and I don't worry too much about how they know... The JS support in 1.79 would allow someone to OXP similar equipment for the player.
Disembodied wrote:
They can then take a few parcel deliveries more-or-less safely to get enough cash to start trading again.
With the cost of fuel - and assuming no fuel scoop - I'm not sure parcel deliveries are really usable for that at the moment. If you're so short on money you can't afford a refuel and a few TCs of agricultural goods, you need your source of money to be in the current system or perhaps the adjacent one.
Disembodied wrote:
Give hostile ships the option to give up a pursuit.
Where they outpace the target, this should no longer be necessary - they should actually be able to catch up and destroy it. Where the target is faster, then the usual consequence of this is that the group gets strung out - and then they're likely to break off pursuit once the slower ships are out of scanner range, as the odds calculation won't be as favourable. It'll need testing, but I'm hoping this will be enough: for efficiency I'm trying to track as little as possible information about what has previously happened, and make the AIs calculate mostly on the basis of what is currently happening.
Norby wrote:
I suggest to avoid making independent pirates with pulse laser
Perhaps. The independent pirates still appear in groups, though - they just don't have a large cargo vessel to collect loot, or the weight of numbers to fill one. In the safest systems (Corporate/Democratic systems with no nearby dangerous systems), they're the only type of pirate which appears. They probably shouldn't be tougher than the organised gangs. (The lowest grade of organised gang will look very similar to a small group of independent pirates at first glance)
Norby wrote:
please make separated definition to the escort variants and leave the original ships with beam laser also in the game.
I'm trying to avoid adding too many extra definitions to shipdata.plist since it makes it harder for shipset maintainers and more necessary for everyone to update their shipsets very quickly once 1.79 is out. So far I already have three extra (pirate versions of the Boa, Boa II and Anaconda) which is three more than is ideal, but can safely be managed by being very careful about what I like_ship.

I'd rather have one entry and some note (probably in script_info) that says that "when the populator adds this ship it should change the front weapon to the appropriate size for its role"
Cody wrote:
cim wrote:
... determining whether the player should be treated as a trader or a bounty hunter at a particular moment.
If the player instigates an attack (lands the first hit?) on a pirate, then the player should be treated as a bounty-hunter.
Effectively this is the case: pirates will only let you surrender by dumping cargo if they've actually demanded cargo. If you open fire on them preemptively, they jump straight into combat mode without going through the cargo demand stage, so they'll assume you're a bounty hunter and attack until you're dead (or until they realise they underestimated you). There are some interesting consequences from this when the player joins in a fight against pirates which is already going on: the player won't be told whether or not there's a cargo demand active, but if there is, they can make use of it to surrender.

If you don't open fire, though, they need to decide whether to make a cargo demand or to hide until you go away. I need to think some more about how that assessment gets made.
metatheurgist
Competent
Competent
Posts: 63
Joined: Fri Dec 14, 2012 9:42 am

Re: The Oolite NPC ecosystem (and other questions)

Post by metatheurgist »

Cody wrote:
cim wrote:
... determining whether the player should be treated as a trader or a bounty hunter at a particular moment.
If the player instigates an attack (lands the first hit?) on a pirate, then the player should be treated as a bounty-hunter.
So I can't pirate other pirates? Pirates have loot too. No honor among thieves and all.
User avatar
Disembodied
Jedi Spam Assassin
Jedi Spam Assassin
Posts: 6885
Joined: Thu Jul 12, 2007 10:54 pm
Location: Carter's Snort

Re: The Oolite NPC ecosystem (and other questions)

Post by Disembodied »

cim wrote:
With the cost of fuel - and assuming no fuel scoop - I'm not sure parcel deliveries are really usable for that at the moment. If you're so short on money you can't afford a refuel and a few TCs of agricultural goods, you need your source of money to be in the current system or perhaps the adjacent one.
Hmm ... it's not a common problem, and would only be visible at the very start of the game, but it's possible that a very new player could have tied up all their cash in cargo, jumped to a new system, and then found themselves having to hand it over to pirates. Basically, is there anything indigent pilots can do to get themselves back out into the black? They could, I suppose, trade in the ship for something smaller ... it's a bit desperate, but needs must!
cim wrote:
Where they outpace the target, this should no longer be necessary - they should actually be able to catch up and destroy it. Where the target is faster, then the usual consequence of this is that the group gets strung out - and then they're likely to break off pursuit once the slower ships are out of scanner range, as the odds calculation won't be as favourable. It'll need testing, but I'm hoping this will be enough: for efficiency I'm trying to track as little as possible information about what has previously happened, and make the AIs calculate mostly on the basis of what is currently happening.
Sounds promising, although where ships are closely matched in speed you could still get very long pursuits. I'm thinking about my own recent experience starting a new Jameson, where I twice got chased all the way to the station by another Cobra III. Apart from it being a waste of the pirates' time, they also came right into the aegis and shot at me while I executed a full-speed, single-manoeuvre docking: it seemed a little obsessive, I thought. :) Maybe it would be worth making pirates a bit more shy of the zone around the station?
User avatar
Commander McLane
---- E L I T E ----
---- E L I T E ----
Posts: 9520
Joined: Thu Dec 14, 2006 9:08 am
Location: a Hacker Outpost in a moderately remote area
Contact:

Re: The Oolite NPC ecosystem (and other questions)

Post by Commander McLane »

Disembodied wrote:
Maybe it would be worth making pirates a bit more shy of the zone around the station?
Yes, I think they should usually break up their attack when they reach the aegis.
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: The Oolite NPC ecosystem (and other questions)

Post by Diziet Sma »

All in all, I'm really starting to look forward to the release of 1.79! 8)
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Post by cim »

cim wrote:
set it up so that a few essential behaviours have comms messages attached (initiation of piracy, response to distress calls, police fines, etc.) but it's easy for OXPs to extend both the variety of messages and the set of behaviours with them attached.
I just realised - I never actually explained how I decided this would work. What do you think?

The AI library (or OXP AI code) sets up broadcast requests, which take three parameters: a message key, a parameter object (which can either be a dictionary, or a ship which is converted to a standard dictionary), and a priority from 1 to 4
Priority 1: always sent
Priority 2: sent unless this ship has sent a message (of any priority) in the last 10 seconds
Priority 3: sent unless this ship has sent or received a message in the last 10 seconds
Priority 4: sent unless this ship has sent or received a message in the last 60 seconds
This lets you set up messages to liven things up without flooding the comms channel in a big situation.

The key is then looked up in a global communication dictionary, according to the ship's "communications role" and "personality". The role is usually set in AI initialisation, though it can be changed later. The personality can be set at the same time (or later), but if you don't it will pick one at random from the list of personalities assigned to that role (biased towards the group leader personality, if there is one). This happens as:
1) role+personality
2) if not found, and role allows fallback, generic+personality
3) if not found, and personality allows fallback, role+generic
4) if not found, and both allow fallback, generic+generic
Whether fallbacks are allowed for a particular role or personality is up to the person setting them up. As I have it at the moment, most roles allow fallbacks, but the "thargoid" role doesn't. For testing I've just put a lot of messages on generic+generic, but for actual use you'd rarely want to put anything there.

So you could for example have: (key: role: personality)
Commence Attack: Escort: Generic -> "I've got the {target}"
Commence Attack: Escort: Military -> "Acknowledged. Intercepting {target} now."
Commence Attack: Generic: Pirate -> "Yaarrr! To Davy Jones Locker with ye, {target}"

If a non-empty string value is found for the key, it gets passed to expandDescription along with the parameters, and if that gets a non-empty string back from descriptions.plist, it gets sent as a comms broadcast.
User avatar
Cody
Sharp Shooter Spam Assassin
Sharp Shooter Spam Assassin
Posts: 16081
Joined: Sat Jul 04, 2009 9:31 pm
Location: The Lizard's Claw
Contact:

Re: The Oolite NPC ecosystem (and other questions)

Post by Cody »

Sounds good to me, cim - but then I'm only a dumb pilot.
Diziet Sma wrote:
All in all, I'm really starting to look forward to the release of 1.79!
<nods>
I would advise stilts for the quagmires, and camels for the snowy hills
And any survivors, their debts I will certainly pay. There's always a way!
User avatar
Smivs
Retired Assassin
Retired Assassin
Posts: 8408
Joined: Tue Feb 09, 2010 11:31 am
Location: Lost in space
Contact:

Re: The Oolite NPC ecosystem (and other questions)

Post by Smivs »

Cody wrote:
Diziet Sma wrote:
All in all, I'm really starting to look forward to the release of 1.79!
<nods>
Agreed.
These developments sound really exciting, and I'm glad that rather than the 'wish-fest' that we had a while ago with 'Oolite2' this is taking the current game and without major changes to the feel and gameplay, is adding flesh to the bones. These improvements sound like they are filling in the gaps and adding the fine details which are currently absent.
Excellent stuff :)
Commander Smivs, the friendliest Gourd this side of Riedquat.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: The Oolite NPC ecosystem (and other questions)

Post by cim »

Disembodied wrote:
Maybe it would be worth making pirates a bit more shy of the zone around the station?
That certainly makes sense. Though, it's not just the main station they should stay clear of - there are several OXP stations you'd expect pirates to avoid (e.g. Seedy Space Bars). So I think we need a way for stations to signal their likely reactions to ships.

What do you think of this classification for stations?

Hunting: pirates and offenders will actively avoid this station. Default for any clean station with turrets, and any CLASS_POLICE or CLASS_MILITARY station. OXP examples: Sentinel Stations, Space Bars, Behemoths, Astromines.
Galcop: pirates will actively avoid, offenders will mostly try to dock elsewhere. The main station is the only one which gets this by default.
Neutral: pirates won't dock at this station, but won't actively avoid it. Other offenders might dock here. Default for unarmed clean stations with CLASS_STATION or CLASS_ROCK. OXP examples: Constores, Salvage Gangs, RRS stations, Superhubs, etc.
Pirate: pirates will dock and launch from here, other offenders may dock here, clean traders will actively avoid. Default for any (non-Thargoid) station with a bounty. OXP examples: Pirate Coves, Renegade Stations
Thargoid: pirates and traders actively avoid, only Thargoids try to dock. Default for any CLASS_THARGOID station. OXP examples: Thargoid Carrier

All of the default guesses could be overruled by shipdata, of course - but I think this gets most of the OXP ones to have similar behaviour to now. (A few will get put into "hunting" by default that should probably just be "neutral" or "galcop" - Kiotas, for instance - but that's better than the other way round, I think)

I'd rather not encourage OXPs to define their own station classes, because then other OXPs (or core ships!) won't know how to respond to them, but I can add more built-in types if there are cases I've missed
User avatar
Mauiby de Fug
---- E L I T E ----
---- E L I T E ----
Posts: 847
Joined: Tue Sep 07, 2010 2:23 pm

Re: The Oolite NPC ecosystem (and other questions)

Post by Mauiby de Fug »

Smivs wrote:
Cody wrote:
Diziet Sma wrote:
All in all, I'm really starting to look forward to the release of 1.79!
<nods>
Agreed.
These developments sound really exciting, and I'm glad that rather than the 'wish-fest' that we had a while ago with 'Oolite2' this is taking the current game and without major changes to the feel and gameplay, is adding flesh to the bones. These improvements sound like they are filling in the gaps and adding the fine details which are currently absent.
Excellent stuff :)
*Joins the chorus of nodding dogs...*
User avatar
Tricky
---- E L I T E ----
---- E L I T E ----
Posts: 821
Joined: Sun May 13, 2012 11:12 pm
Location: Bradford, UK. (Anarchic)

Re: The Oolite NPC ecosystem (and other questions)

Post by Tricky »

cim wrote:
Disembodied wrote:
Maybe it would be worth making pirates a bit more shy of the zone around the station?
That certainly makes sense. Though, it's not just the main station they should stay clear of - there are several OXP stations you'd expect pirates to avoid (e.g. Seedy Space Bars). So I think we need a way for stations to signal their likely reactions to ships.

What do you think of this classification for stations?

Hunting: pirates and offenders will actively avoid this station. Default for any clean station with turrets, and any CLASS_POLICE or CLASS_MILITARY station. OXP examples: Sentinel Stations, Space Bars, Behemoths, Astromines.
Galcop: pirates will actively avoid, offenders will mostly try to dock elsewhere. The main station is the only one which gets this by default.
Neutral: pirates won't dock at this station, but won't actively avoid it. Other offenders might dock here. Default for unarmed clean stations with CLASS_STATION or CLASS_ROCK. OXP examples: Constores, Salvage Gangs, RRS stations, Superhubs, etc.
Pirate: pirates will dock and launch from here, other offenders may dock here, clean traders will actively avoid. Default for any (non-Thargoid) station with a bounty. OXP examples: Pirate Coves, Renegade Stations
Thargoid: pirates and traders actively avoid, only Thargoids try to dock. Default for any CLASS_THARGOID station. OXP examples: Thargoid Carrier

All of the default guesses could be overruled by shipdata, of course - but I think this gets most of the OXP ones to have similar behaviour to now. (A few will get put into "hunting" by default that should probably just be "neutral" or "galcop" - Kiotas, for instance - but that's better than the other way round, I think)

I'd rather not encourage OXPs to define their own station classes, because then other OXPs (or core ships!) won't know how to respond to them, but I can add more built-in types if there are cases I've missed
Chaotic: Any one can dock and launch but fighting is not tolerated.
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: The Oolite NPC ecosystem (and other questions)

Post by Diziet Sma »

Smivs wrote:
I'm glad that rather than the 'wish-fest' that we had a while ago with 'Oolite2' this is taking the current game and without major changes to the feel and gameplay, is adding flesh to the bones. These improvements sound like they are filling in the gaps and adding the fine details which are currently absent.
Looking back at Jens' OP in the original thread formally announcing Oolite2, it's interesting to see how many of Jens' original ideas have been or are in the process of being implemented, in some form, into Oolite..
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
User avatar
Disembodied
Jedi Spam Assassin
Jedi Spam Assassin
Posts: 6885
Joined: Thu Jul 12, 2007 10:54 pm
Location: Carter's Snort

Re: The Oolite NPC ecosystem (and other questions)

Post by Disembodied »

cim wrote:
What do you think of this classification for stations?

Hunting: pirates and offenders will actively avoid this station. Default for any clean station with turrets, and any CLASS_POLICE or CLASS_MILITARY station. OXP examples: Sentinel Stations, Space Bars, Behemoths, Astromines.
Galcop: pirates will actively avoid, offenders will mostly try to dock elsewhere. The main station is the only one which gets this by default.
Neutral: pirates won't dock at this station, but won't actively avoid it. Other offenders might dock here. Default for unarmed clean stations with CLASS_STATION or CLASS_ROCK. OXP examples: Constores, Salvage Gangs, RRS stations, Superhubs, etc.
Pirate: pirates will dock and launch from here, other offenders may dock here, clean traders will actively avoid. Default for any (non-Thargoid) station with a bounty. OXP examples: Pirate Coves, Renegade Stations
Thargoid: pirates and traders actively avoid, only Thargoids try to dock. Default for any CLASS_THARGOID station. OXP examples: Thargoid Carrier
How about something like Restricted-<type>, where only ships of a certain defined class go to? That might let OXP makers create e.g. an isolated research station, that's closed to non-affiliated shipping.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: The Oolite NPC ecosystem (and other questions)

Post by cim »

Tricky wrote:
Chaotic: Any one can dock and launch but fighting is not tolerated.
Definitely on the "anyone can dock and launch" one.

Fighting not being tolerated is difficult to implement in this stage of the assessment, but anyone being attacked by a station or its defense ship group will get a ridiculously unfavourable odds assessment - especially if the station is armed - so "fighting is not tolerated" can be simulated by making the station AI have a sensible response.
Disembodied wrote:
How about something like Restricted-<type>, where only ships of a certain defined class go to?
Yes. It might be sufficient to have simply "Restricted", which by default all ships actively avoid, and "Private" which they won't avoid but won't dock with either. Then the ship AI (and probably station AI) can make exceptions to that by not using the default "friendlyStation" and "hostileStation" tests.
Post Reply