System Populator Memory

An area for discussing new ideas and additions to Oolite.

Moderators: winston, another_commander

User avatar
phkb
Impressively Grand Sub-Admiral
Impressively Grand Sub-Admiral
Posts: 4830
Joined: Tue Jan 21, 2014 10:37 pm
Location: Writing more OXPs, because the world needs more OXPs.

System Populator Memory

Post by phkb »

I've been toying with an idea about making the populator routine a bit more dynamic. Right now, if you were to go to a Feudal or Anarchy system, and blow away 50 pirates, then save and reload, you could do the same thing again, and again, and again. Kill 1000 pirates in that system, and there will be 1000 more for you to kill. There is no impact on the way the system is populated, despite your valiant efforts to make the system safer.

So, the concept is to give the populator some memory. If the player destroys 50 pirates, then the populator will decrease the number of pirates it will spawn - the system can enjoy a brief reprieve from the pirate menace. After a few days, the populator will return to it's original settings. In doing this a real-world scenario can be simulated. If pirates get word that a pilot is actively targeting them, they will be more likely to stay away. A Snoopers new item could be included to inform the player that their work is having an impact.

Also, if there is a decrease in the number of pirates spawned, there would be a subsequent increase to the number of traders coming to the system, as it would be known that there are fewer pirates there.

I envisaged this as a percentage thing. The more pirates you kill, a percentage value is increased, and that is then applied to the appropriate populator values, increasing or decreasing them as necessary.

If the concept is feasible, it might be possible to extend this to the commodity market as well: increased traders means lower prices, so a small decrease in all prices could be applied.

Balancing will be tricky: how many pirates would you have to destroy for a change to be noticeable?

Also, what other cause/effect combinations would be viable?
Pirates destroyed: decrease pirate spawning/increase traders spawning.
Traders destroyed: increase pirate spawning/decrease traders spawning.
Assassins destroyed: increase couriers spawning/decrease assassins spawning.
Couriers destroyed: decrease couriers spawning/increase assassins spawning.
Hermits destroyed: (depending on type of hermit) decrease pirates or smugglers spawning.

So what do you think? Is this worth the effort? Any suggestions on other cause/effect scenarios?
ocz
Deadly
Deadly
Posts: 175
Joined: Tue Nov 10, 2015 1:59 pm

Re: System Populator Memory

Post by ocz »

Traders destroyed: increase pirate spawning/decrease traders spawning.
Make that also: decrease pirate spawning. Increase it when galcop vipers are destroyed.


...hmm my two cents to it...


This sounds like a change, that cuts that deep, it should be made by (at least partly) altering the source code and not burdening it on an OXP as a whole. (And that happening is not likly as it would be a bigger overhaul of the system populator.)

As I see it, it's possible to do this with anOXP alone, but that would mean it would possibly conflict with everything, that depends on the vanilla behaviour. This normal spawning behaviour would have to be turned off/discarded/totally overwritten. Only by changing the sourcecode for everyone, this can be avoided. (The change in source could be something small, like a "less natural spawns" option and then your OXP could fill the rest with its spawning rules)


As for the idea. It`s a very good one and would make things more interesting and acually more difficult (no easy pirate farming anymore) As with any OXP: You can`t be sure about the incompatibilities and how many other OXPs are conficting with it, until you wrote and published it. Write a simple version at first and see how it fairs. That my opinion.
User avatar
phkb
Impressively Grand Sub-Admiral
Impressively Grand Sub-Admiral
Posts: 4830
Joined: Tue Jan 21, 2014 10:37 pm
Location: Writing more OXPs, because the world needs more OXPs.

Re: System Populator Memory

Post by phkb »

ocz wrote:
but that would mean it would possibly conflict with everything
When I look at the version of this in my mind (which is, of course, complete accurate and works perfectly :wink: ) there would be no "conflicts" as such with any OXP. All that would happen is some numbers used to calculate how many ships are created are adjusted. So, yes, in a way it would impact all OXP's, but it wouldn't necessarily be incompatible with them.
ocz wrote:
This normal spawning behaviour would have to be turned off/discarded/totally overwritten.
Not in the version I see in my mind. I would add a single line to the "systemWillPopulate" routine, probably around line 633, that would jump to a custom routine that would apply any changes to the populator frequencies. After that, the normal populator routines would continue as they do now. So, in my mind it works. In practice would be another thing!
User avatar
spara
---- E L I T E ----
---- E L I T E ----
Posts: 2691
Joined: Wed Aug 15, 2012 4:19 am
Location: Finland

Re: System Populator Memory

Post by spara »

Interesting idea.

However, the way I see it, is that the player should feel insignificant so that no player action alone should change systems. Maybe with the exception of destroying stations. It should require some massive event to change the internal balance of a system. For example as a mission a cleaning of an anarchy system is commenced by authorities and you get to play part of it. Or a massive raid to by pirates to a nearby multigov system. Those could be massive events that would change the balance for awhile.

In reality Oolite systems are small and the number of ships flying around is limited and all, but the illusion should be something else.
ocz
Deadly
Deadly
Posts: 175
Joined: Tue Nov 10, 2015 1:59 pm

Re: System Populator Memory

Post by ocz »

ocz wrote:
[...]like a "less natural spawns" option and then your OXP could fill the rest with its spawning rules[...]
phkb wrote:
[...] All that would happen is some numbers used to calculate how many ships are created are adjusted. [...] I would add a single line to the "systemWillPopulate" routine, probably around line 633, that would jump to a custom routine that would apply any changes to the populator frequencies. [...)
So basiclly that. (Apart from changing the source code.) I agree, that this might work out.

I see sparas point, but the player is a kiling machine, if he/she wants to. My illusion is, that all the traffic in the system is all the traffic and if you start killing pirates in large numbers and the statistics gets a dent that should work (Oh there is that merciless hunter in that sysem that even killed those aces.) If I'm not mistaken, the populator run in background for the wholesystem and ships are killing eachother as long as the player is in the system, even when docked. You have to calculate how the system fairs without the player or, like you wrote, just take a look at the clockand return it to normal. But I think the change shouldn't be to big. (Maybe by lowering the numbers and add pirate chatter "Make sure that rumored bigbad wolf does spot us."), because:

I'm with spara on that the players action shouldn't totally change the systems behaviour. Major events should make that possible.

Its up to your personal head canon, how you deal with it :wink:
User avatar
Day
---- E L I T E ----
---- E L I T E ----
Posts: 545
Joined: Tue Mar 03, 2015 11:35 am
Location: Paris

Re: System Populator Memory

Post by Day »

If the algo looks for balance changes introduced by the player, then the player is able to influence a whole system, which we may not want.

That acknowledged, if the algo looks for balance changes introduced by other actors, then the whole system evolves by itself, which is GOOD.

Now, I hope that in this case the algo doesn't converge: we may not want to have systems which are all the same once enough time has passed.
ocz
Deadly
Deadly
Posts: 175
Joined: Tue Nov 10, 2015 1:59 pm

Re: System Populator Memory

Post by ocz »

Day wrote:
[...]Now, I hope that in this case the algo doesn't converge: we may not want to have systems which are all the same once enough time has passed.
Balancing out an algorithm, that simulates the dangerlevels of all systems, in such a way, that if enough time passes everything ends up like it is the current way (anarchie dangerous->cooperate safe) sound like a tough cookie.
Last edited by ocz on Wed Jan 27, 2016 4:16 pm, edited 1 time in total.
User avatar
spara
---- E L I T E ----
---- E L I T E ----
Posts: 2691
Joined: Wed Aug 15, 2012 4:19 am
Location: Finland

Re: System Populator Memory

Post by spara »

This made me wonder that if the player is able to shoot down everyone in system, there's something wrong somewhere. The player is just too powerful when compared to the NPCs. I would consider installing "Skilled NPCs" OXP at this point and tweaking it high enough.

And this again made me think of an "Adapting Skilled NPCs" OXP that would slowly increase or decrease the skill level of the opponents based on player performance. It could be measuring something like kills over time ratio or something. For example, if the player kills for example 20 opponents in 5 minutes, the skill level of the NPC AI would be raised. And again, if the player does not score kills over time, the skill level would come down. Or something like that, haven't really thought it through. :D
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: System Populator Memory

Post by Cody »

spara wrote:
... the player should feel insignificant so that no player action alone should change systems.
<nods sagely>
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
Disembodied
Jedi Spam Assassin
Jedi Spam Assassin
Posts: 6885
Joined: Thu Jul 12, 2007 10:54 pm
Location: Carter's Snort

Re: System Populator Memory

Post by Disembodied »

spara wrote:
This made me wonder that if the player is able to shoot down everyone in system, there's something wrong somewhere. The player is just too powerful when compared to the NPCs.
At some point the local villains would probably put a price on the player's head, high enough to attract (packs of) ace assassins ...
User avatar
ffutures
---- E L I T E ----
---- E L I T E ----
Posts: 2172
Joined: Wed Dec 04, 2013 12:34 pm
Location: London, UK
Contact:

Re: System Populator Memory

Post by ffutures »

This really only works if you stay in a very small area.

When I take on contracts I deliberately look for routes that go from one side of a galaxy to the other, because they're the ones with the big rewards. That typically means 50+ days out and return, often more depending on the route, down time for maintenance and repairs, etc. In that time frame there's a lot of time for bandits to flood in from neighboring systems, restoring the status quo. If this is done at all I think it needs to be on a short time scale. And bear in mind that if they're coming in from another system the replacements may come from a higher technological level, which for a low-tech system means better weapons, fuel injectors, better ECM and hard-head missiles, etc. You could wipe out all of the local bandits and end up with something much nastier taking their place.
ocz
Deadly
Deadly
Posts: 175
Joined: Tue Nov 10, 2015 1:59 pm

Re: System Populator Memory

Post by ocz »

spara wrote:
... the player should feel insignificant so that no player action alone should change systems.
<shakes his head in disagreement> :twisted:

The player isn't god, but should certainly have some impact. If she/he can't change the overall spawning rate, she/he should definitly change at least something. A bounty on the players head is a good example for this. (Also bounties on hunters heads wouldn't just make plain sense, it would also be another part of an "underworld" career that is possible if enough crime OXPs are developed.)


Using a rubberband ai to match the player overall skill sounds awesome and fair(totally in favour for it!), but can go wrong. Does anyone know mariokart7(wii)? When that rubberband leashes out, it hurts! (Mirror Rainbowroad is unbeatable!)

EDIT:
ffutures wrote:
[...] And bear in mind that if they're coming in from another system the replacements may come from a higher technological level, which for a low-tech system means better weapons, fuel injectors, better ECM and hard-head missiles, etc. You could wipe out all of the local bandits and end up with something much nastier taking their place.
Uhh...This is gold.
User avatar
Stormrider
Deadly
Deadly
Posts: 241
Joined: Sat Jan 25, 2014 2:35 am
Location: At work

Re: System Populator Memory

Post by Stormrider »

I like this idea.
While playing as a pirate I thought that NPC traders were pretty easy to exploit. What about the idea that every action has an equal opposite reaction? I mean if a few ships go missing in a system its not really significant, but if dozens do, why wouldn't that affect shipping? I would think shipping companies would find alternate routes or hire escorts more often.
Disembodied wrote:
At some point the local villains would probably put a price on the player's head, high enough to attract (packs of) ace assassins ...
Yes, but it seems as significant as pirates or traders avoiding the system if so many NPCs are destroyed in a certain amount of time. I would suggest a combination, eg lower the spawn rate but increase AI and or average shipgroup size.
Day wrote:
That acknowledged, if the algo looks for balance changes introduced by other actors, then the whole system evolves by itself, which is GOOD.
I agree, if its based on destruction rate of specific role-categories, the player might only have to help a group of pirates or bounty hunters to achieve an affect.
Realistically, with over 2000 systems, player actions affecting just one at a time seems reasonably insignificant to me.
Image
User avatar
Disembodied
Jedi Spam Assassin
Jedi Spam Assassin
Posts: 6885
Joined: Thu Jul 12, 2007 10:54 pm
Location: Carter's Snort

Re: System Populator Memory

Post by Disembodied »

There's already a system in place for player reputation ... in fact, I think that - if a player lingers too long in one area - this reputation can already affect the behaviour of NPCs. For example, if you gain a reputation as a merchant, then you might find that pirates demand more cargo from you. (It's possible, of course, that I'm just imagining this.)

Player reputation in other areas might already trigger effects: make a big enough name for yourself as a hunter, and pirates might be more afraid of you and more likely to run away. That's the quickest and most cost-effective solution: flee, and find someone less dangerous to pick on.

There could be further levels of reputation which would trigger more significant events, though. Really well-known merchants might find themselves the target for pirate ambushes; and really famous hunters might find assassins on their tails.

This would probably only be a local effect, though: the player would have to spend a lot of time in the same few systems to develop a significant reputation. There might be a question of how long it takes for fame to spread, and how long it persists. Elite ranking would be a multiplying factor, I think: there are not many Dangerous pilots, even fewer Deadly ones, and hardly any Elite: it's even possible that high-ranking individuals might have their own fans and followers.
ocz
Deadly
Deadly
Posts: 175
Joined: Tue Nov 10, 2015 1:59 pm

Re: System Populator Memory

Post by ocz »

I never have been a fan of reputation decay, but it is reasonable for contracts. If you just don't transport cargo anymore, you are getting unreliable...Heeeeey. Wait a minute. Now that I'm thinking about it, you're getting unreliable in which way? To begin with, there are no steady contracts. The costumers don't know if you are dropping by or not. Your transportation skills don't go bad either...at least not in a matter of days...but that's beside the point.

The point is, if somebody has a reputation as killingmachine, I'm going to avoid that person. Maybe after a few weeks noob pirates might challenge her/him, but such a reputation doesn't go bad. The killing score reputation(harmless->elite) is similar in this point, but shouldn't be used to measure the players strength. Even a harmless player (a.k.a. skillless gamer) has to kill enemies. Imagine the harmless AIs start to avoid that player and kill'o'bots begin the flock around herm. Not good. The game should be about fun. (I don't want to see players go to the Thargoids begging for protection.)
The above mentioned "kills per hour" statistic, that also should take the strength of the killed enemies into concideration is good. The vileness of the AI can be turned down after some time, but the "avoid that monster" reputation should stay. 4ever.

"Eh, eh, Trunk. You still know those horrorstories about the Butcher of Lave?"
"Yea. What 'bout it?"
"Those stories are totally 3 days old and that guy is here. We should get him!"
"3 days? Woah, that dude is totally 'armless. YEA. Let's do this!"

....Yeah, I don't think a conversation would go this way.

The arguments about being famous in a local region are also logical and should be incooperated into the spawning generator changes.

EDIT:
I wanted to put this into an earlier post. If pirates are fleeing before the are blown into bit, thats fine, but why the heck are they coming back? Because their shields and energy banks have regenerated? Fine, if their buddies are still around. But why are they coming back eventhough I'm scooping the remains of their armada? If they had to flee one time and than have to flee for a second time, they should understand, that they are outmatched. Also, at some point (after 70% of the ships of a group are down,) only aceclass AI-pilots should stay. Weak AI should just flee and maybe drop some cargo.....but that rant gives out pointers for another OXP and not the "System Populator Memory" topic.
Post Reply