Page 2 of 3

Re: Destroying a derelict should not count as a kill

Posted: Fri Dec 18, 2020 12:25 am
by montana05
Cholmondely wrote: Thu Dec 17, 2020 4:59 pm
dybal wrote: Thu Dec 17, 2020 3:06 pm
The issue at hand in this PR is minor, but the issues of keeping a healthy and contributing community aren't.
On the one hand, A_C has been keeping the development going with very little help compared to the Cim days and earlier.
On the other hand, Dybal (and Montana) have been doing wonders for reviving old .oxp's, writing new ones, and maintaining what we have got.

Cholmondeley
Thank you for stepping in and trying to moderate. I do understand the lack of resources Oolite is facing nowadays and I highly appreciate a_c's work. However, just trying to preserving Oolite seems not the right approach for the future,

Re: Destroying a derelict should not count as a kill

Posted: Thu Jul 15, 2021 2:44 am
by Milo
dybal wrote: Thu Dec 17, 2020 3:06 pm
another_commander wrote: Thu Dec 17, 2020 1:38 pm
2. Why is it proposed as a core change, when an expansion pack can already be created to achieve the same goals? What is earned by having it in the core instead of the Expansion Pack Manager?
The events that would allow an OXP to be aware that the core game made a NPC bail out due to player attacks and distinguish it from an abandonShip called by any other script, priorityAI included, aren't there.
I encounter plenty of derelicts. Probably the majority are created by OXPs I use. Towbar OXP includes an optional equipment that reduces laser damage for several seconds after a pilot ejects, which helps avoid destroying a derelict accidentally. Norby's Laser Cannons sometimes force the target to eject at low energy. Ship Version OXP hands out escape pods to many NPC ships. Etc. In general, I find it more realistic if opponents to try to escape if they think their ship is about to be destroyed; it's what I would do if I were in their position.

The concept of not being awarded for destroying derelicts that I had no significant role in creating (i.e., where I was not responsible for the majority of the damage, or wasn't involved at all) appeals to me. Note I am taking a somewhat nuanced position on when I want to be awarded score points. For example, I would prefer not to gain score for destroying a derelict that was whittled down by the police without my involvement aside from perhaps one or two shots at the end of the battle that happened to coincide with the pilot's ejection.

The concept of being able to gain score when a pilot ejects to escape from me is also appealing for the reason that dybal noted - not having to kill.

Of course, currently I can gain score points by destroying derelicts after the pilot ejects. The downside to destroying derelicts arises when using OXPs such as Towbar or Deep Space Dredger that provide ways to derive other value from derelicts. This presents a trade-off between gaining score points or gaining credits. Ideally, OXPs could solve this by awarding score points when derelicts are "processed" ... but to dybal's point, it is currently not possible for such OXPs to determine whether derelicts come from player action or happenstance, and awarding points for all derelicts would be excessive.

After reviewing dybal's (reopened) pull request, I have a question:

Does destroying an escape pod award a kill? I'm wondering if, with the changes proposed in the (reopened) pull request, you could get two points in another way: 1 when they eject, 1 when you destroy the escape pod. If this is the case, the core changes proposed would introduce a new way to obtain double score points for the same opponent, which is clearly not the intent.

Here is another possible way to approach the problem, as pointed out by dybal in the above quote:

Give OXPs more tools to determine the degree of responsibility the player had in the creation of a derelict, so OXPs that give other ways to dispose of derelicts can make informed decisions about whether the player deserves a score increase.

In looking at the worldscript event handlers, shipAttackedOther is only for laser damage done by the player, not other types of damage (missiles? scraping?); shipBeingAttacked only identifies the attacker, not the amount of damage; shipBeingAttackedByCloaked doesn't give any identification (can't tell if the player was involved); shipKilledOther doesn't fire if the ship wasn't actually destroyed, just left unpiloted; and there seems to be no event handler when an NPC pilot uses an escape pod (shipLaunchedEscapePod is only when the player bails out, and doesn't indicate why).

One idea is to add a JS read/write property to ships (that carries over to derelicts) that records all damage done to the ship that can be traced back to the player - for now, let's call it ship.damageFromPlayer. This would allow OXPs to make their own assessment about whether players did enough to be awarded score points when disposing of derelicts without destroying them by weapon fire.

OXPs that use the dealEnergyDamage method in a way that doesn't allow the game to determine that the player should be held responsible (i.e. OXP did not pass in the player's ship, a player-fired missile, or a subentity on the player's ship) would not have the damage amount automatically added to the property, but could manually add the damage to it if appropriate. This is one reason why I suggest the property being writable.

OXPs that cause derelicts to be created and think the player should get credit could set the property to a large value (for example, equal to the ship's max energy) as a hint to other OXPs that use it to decide whether or not to award the player with score points. This is another reason why I suggest the property being writable.

I'm not sure this is the "right" solution (it's certainly more complicated than what dybal proposed), but I do think we should continue the discussion.

Re: Destroying a derelict should not count as a kill

Posted: Fri Jul 16, 2021 8:20 pm
by Cholmondely
Milo wrote: Thu Jul 15, 2021 2:44 am
dybal wrote: Thu Dec 17, 2020 3:06 pm
another_commander wrote: Thu Dec 17, 2020 1:38 pm
2. Why is it proposed as a core change, when an expansion pack can already be created to achieve the same goals? What is earned by having it in the core instead of the Expansion Pack Manager?
The events that would allow an OXP to be aware that the core game made a NPC bail out due to player attacks and distinguish it from an abandonShip called by any other script, priorityAI included, aren't there.
I encounter plenty of derelicts. Probably the majority are created by OXPs I use. Towbar OXP includes an optional equipment that reduces laser damage for several seconds after a pilot ejects, which helps avoid destroying a derelict accidentally. Norby's Laser Cannons sometimes force the target to eject at low energy. Ship Version OXP hands out escape pods to many NPC ships. Etc. In general, I find it more realistic if opponents to try to escape if they think their ship is about to be destroyed; it's what I would do if I were in their position.

The concept of not being awarded for destroying derelicts that I had no significant role in creating (i.e., where I was not responsible for the majority of the damage, or wasn't involved at all) appeals to me. Note I am taking a somewhat nuanced position on when I want to be awarded score points. For example, I would prefer not to gain score for destroying a derelict that was whittled down by the police without my involvement aside from perhaps one or two shots at the end of the battle that happened to coincide with the pilot's ejection.

The concept of being able to gain score when a pilot ejects to escape from me is also appealing for the reason that dybal noted - not having to kill.

Of course, currently I can gain score points by destroying derelicts after the pilot ejects. The downside to destroying derelicts arises when using OXPs such as Towbar or Deep Space Dredger that provide ways to derive other value from derelicts. This presents a trade-off between gaining score points or gaining credits. Ideally, OXPs could solve this by awarding score points when derelicts are "processed" ... but to dybal's point, it is currently not possible for such OXPs to determine whether derelicts come from player action or happenstance, and awarding points for all derelicts would be excessive.

After reviewing dybal's (reopened) pull request, I have a question:

Does destroying an escape pod award a kill? I'm wondering if, with the changes proposed in the (reopened) pull request, you could get two points in another way: 1 when they eject, 1 when you destroy the escape pod. If this is the case, the core changes proposed would introduce a new way to obtain double score points for the same opponent, which is clearly not the intent.

Here is another possible way to approach the problem, as pointed out by dybal in the above quote:

Give OXPs more tools to determine the degree of responsibility the player had in the creation of a derelict, so OXPs that give other ways to dispose of derelicts can make informed decisions about whether the player deserves a score increase.

In looking at the worldscript event handlers, shipAttackedOther is only for laser damage done by the player, not other types of damage (missiles? scraping?); shipBeingAttacked only identifies the attacker, not the amount of damage; shipBeingAttackedByCloaked doesn't give any identification (can't tell if the player was involved); shipKilledOther doesn't fire if the ship wasn't actually destroyed, just left unpiloted; and there seems to be no event handler when an NPC pilot uses an escape pod (shipLaunchedEscapePod is only when the player bails out, and doesn't indicate why).

One idea is to add a JS read/write property to ships (that carries over to derelicts) that records all damage done to the ship that can be traced back to the player - for now, let's call it ship.damageFromPlayer. This would allow OXPs to make their own assessment about whether players did enough to be awarded score points when disposing of derelicts without destroying them by weapon fire.

OXPs that use the dealEnergyDamage method in a way that doesn't allow the game to determine that the player should be held responsible (i.e. OXP did not pass in the player's ship, a player-fired missile, or a subentity on the player's ship) would not have the damage amount automatically added to the property, but could manually add the damage to it if appropriate. This is one reason why I suggest the property being writable.

OXPs that cause derelicts to be created and think the player should get credit could set the property to a large value (for example, equal to the ship's max energy) as a hint to other OXPs that use it to decide whether or not to award the player with score points. This is another reason why I suggest the property being writable.

I'm not sure this is the "right" solution (it's certainly more complicated than what dybal proposed), but I do think we should continue the discussion.
There are two different things here: reality and how reality is judged.

The Elite Federation Committee decides how kills are judged - and their decision is upsetting for others (how can you award filthy murderous pirates Elite status...). It does not have to conform to reality, and, as adumbrated above, being a decision by a committee, won't.

But ditto with derelict status! How is it judged? Presumably - in reality - it is a setting on the identity computer of that derelict ship which then broadcasts to all and sundry that it is derelict. But maybe that is just the people inside tweaking the system to make it look derelict...

By the way - over 90% of the derelicts in my game (that I notice) are due to the pilots bailing out when I blast them from a distance.

Re: Destroying a derelict should not count as a kill

Posted: Fri Jul 16, 2021 8:36 pm
by Milo
Cholmondely wrote: Fri Jul 16, 2021 8:20 pm
There are two different things here: reality and how reality is judged.

The Elite Federation Committee decides how kills are judged - and their decision is upsetting for others (how can you award filthy murderous pirates Elite status...). It does not have to conform to reality, and, as adumbrated above, being a decision by a committee, won't.

But ditto with derelict status! How is it judged? Presumably - in reality - it is a setting on the identity computer of that derelict ship which then broadcasts to all and sundry that it is derelict. But maybe that is just the people inside tweaking the system to make it look derelict...

By the way - over 90% of the derelicts in my game (that I notice) are due to the pilots bailing out when I blast them from a distance.
Code-wise, "derelict" is a true/false condition that is applied to a ship. When a pilot ejects, that always makes the ship a derelict. Ships can also be spawned as derelicts (by OXP, I don't think this happens in the core game), even if they never had a pilot. An OXP also could implement "fake" derelicts as you suggest, although I'm not aware of any that do.

dybal's proposed change did two things:

1. Do not award elite score if the player destroys a derelict
2. Award elite score if the player is shooting a ship and the pilot bails out due to low energy (OXPs making the pilot bail out do not count for this)

I think #1 is a good change. I am not convinced that #2 is a good change.

#1 could be approximated by an OXP, I think. We have a shipKilledOther worldscript event that triggers whenever the player destroys a ship and we could check there if the ship is derelict, and if so, subtract a score point (reversing the core game's award of a point).

This doesn't help OXPs like Towbar or Deep Space Dredger decide whether the player should receive a score point for processing a derelict. I think that, for my own Ooniverse, I'm okay with missing out on some score points. I'd rather be under-awarded than over-awarded. So, for me, not gaining score for derelicts regardless of how they are disposed of, would be preferred.

Re: Destroying a derelict should not count as a kill

Posted: Tue Dec 28, 2021 7:13 pm
by Cholmondely
NChw wrote: Tue Dec 28, 2021 6:07 pm
[I have been playing oolite for years, with as many OXPs as I can load simultaneously, to give a huge variety to this excellent game. Thank you so much for all of the developers and OXP creators/maintainers.]

Having played various similar games, such as the original Elite (on a BBC-B), the egosoft X series and now Oolite, I find that there is usually some method of 'playing the system' to quickly amass kill points or cash, or both. On the original Elite, the 'flee while shooting the attacker from the rear gun as it self centred' is an example. In X2, there was a weapon (phased shockwave generator) that caused Khaak to abandon ship, leaving their expensive lasers behind...

One issue that I have discovered in my fully OXPed Oolite is that battling in hyperspace tends to generate a lot of derelict thargoid robot fighters, after the motherships have been dispatched - even if the work was done by the Navy while I lurked in the distance. All of those 'dead' robot fighters sit passively while I kill them off for very easy kill score points.
I suggest that you negate this easy point scoring, by only awarding points for kills made where the target is in 'attacking me' mode, or otherwise defined as derelict.
If I understand correctly that you are playing with Galactic Navy installed - and I understood what Cody told me about it, it is a feature of the oxp, and was a very popular "cheat" in its day.

Does it matter?
Answer from a Lore-based perspective: The Elite Federation came up with a set of rules for awarding Elite Status. Rules will always have loopholes. These rules are made by a committee and will not be perfect. If the committee is imperfect (all those lugubrious lobstoids) they will not fix their rules, certainly not with alacrity, ... etc., etc., etc.

See the posts above in this thread for more in this vein

Answer from an outside the game perspective: Galactic Navy does not yet have a copyright that allows us to tamper with it (hence Spara's shadered add-ons). So someone could in theory produce an override which would sort out the problem, but then that turns GN into a suite of at least 4 oxps (GN, Behemoth, Spara's override + new override). It is really only major issue with GN as far as I know: the arguments in the thread above seem to me to have been arguments about the principle, but dealing with a handful of cases - not as in your example here.

The ridiculous number of kills needed to become Elite combined with the principle of awarding genocidal kills for completing some of the vanilla game missions, seem to me to make all this reasonably futile, the numbers do not mean so much, and therefore the titles do not mean so much.

But that's just me. I'm not a combat type, most of my kills are gained by shooting out of the backside of an impregnable cobra at pirates chasing me while armed with superior lasers, and trying to avoid the first mission which whisks me out of the galaxy! Cody will probably have a different view... as will many of the others here.

Change of subject: How was your Christmas? Was it merry enough? Are you and your loved ones surviving the glorious Ommicronnic world in which we all now live?

Re: Destroying a derelict should not count as a kill

Posted: Wed Dec 29, 2021 12:13 pm
by NChw
Cholmondely wrote: Tue Dec 28, 2021 7:13 pm
...
The ridiculous number of kills needed to become Elite combined with the principle of awarding genocidal kills for completing some of the vanilla game missions, seem to me to make all this reasonably futile, the numbers do not mean so much, and therefore the titles do not mean so much.
I think is it part of my mentality to take pleasure in collecting titles :P

To make the whole thing more realistic in terms of titles reflecting difficulty, there would need to be more points awarded for harder targets, so that defeating a python would not equate to defeating a viper... maybe something for me to suggest on the OXP side.
Cholmondely wrote: Tue Dec 28, 2021 7:13 pm
Change of subject: How was your Christmas? Was it merry enough? Are you and your loved ones surviving the glorious Ommicronnic world in which we all now live?
Christmas was fun, if tiring, as I had a five hour round trip drive to collect my parents on Saturday and then another one on Sunday to return them to their home sector (!) Lots of negative Antigen testing and not much Space Fuel involved :cry: Better than last year, when it was a turkey delivery to their door, because the vaccines had not arrived...

Re: Destroying a derelict should not count as a kill

Posted: Wed Dec 29, 2021 4:43 pm
by hiran
NChw wrote: Wed Dec 29, 2021 12:13 pm
To make the whole thing more realistic in terms of titles reflecting difficulty, there would need to be more points awarded for harder targets, so that defeating a python would not equate to defeating a viper... maybe something for me to suggest on the OXP side.
Should this not also depend on the ship used by the player? Killing a Python with an Imperial Star Destroyer could also be counted differently than killing the same Python with a Cobra...

Re: Destroying a derelict should not count as a kill

Posted: Wed Dec 29, 2021 4:56 pm
by Slartibartfast
Hi


if somebody has played so long , that he can buy an
"Imperial Star Destroyer"
==>> Base price 100,000,000₢

--- number of kills ..... doesn 't matter


matthias

Re: Destroying a derelict should not count as a kill

Posted: Wed Dec 29, 2021 7:52 pm
by Redspear
Slartibartfast wrote: Wed Dec 29, 2021 4:56 pm
--- number of kills ..... doesn 't matter
:lol:

Re: Destroying a derelict should not count as a kill

Posted: Sat Nov 05, 2022 5:59 pm
by Cholmondely
Just realised that this post really belongs in this thread.
NChw wrote: Tue Dec 28, 2021 6:07 pm
[Advance apologies, in case this is the wrong place!]

[I have been playing oolite for years, with as many OXPs as I can load simultaneously, to give a huge variety to this excellent game. Thank you so much for all of the developers and OXP creators/maintainers.]

Having played various similar games, such as the original Elite (on a BBC-B), the egosoft X series and now Oolite, I find that there is usually some method of 'playing the system' to quickly amass kill points or cash, or both. On the original Elite, the 'flee while shooting the attacker from the rear gun as it self centred' is an example. In X2, there was a weapon (phased shockwave generator) that caused Khaak to abandon ship, leaving their expensive lasers behind...

One issue that I have discovered in my fully OXPed Oolite is that battling in hyperspace tends to generate a lot of derelict thargoid robot fighters, after the motherships have been dispatched - even if the work was done by the Navy while I lurked in the distance. All of those 'dead' robot fighters sit passively while I kill them off for very easy kill score points.
I suggest that you negate this easy point scoring, by only awarding points for kills made where the target is in 'attacking me' mode, or otherwise defined as derelict.
Personally, I'm happy with the current system. But information needs to be findable by those making decisions!

Re: Destroying a derelict should not count as a kill

Posted: Sat Nov 05, 2022 6:37 pm
by Milo
I wrote a simple OXP for myself to negate score credit for destroying derelicts. If you'd like to replicate it, you can create the following folders and files in your AddOns folder, or use this download link (valid only for the next 30 days): https://ufile.io/qvewntqt

Oolite\AddOns\oolite.oxp.milo.derelicts_dont_count.1.0.oxp\manifest.plist

Code: Select all

{
	"identifier" = "oolite.oxp.milo.derelicts_dont_count";
	"required_oolite_version" = "1.74";
	"title" = "Derelicts Don't Count";
	"version" = "1.0.0";
	"category" = "Mechanics";
	"description" = "In versions of Oolite up to 1.91 (current version at time of writing), destroying derelict ships increases the player's Elite score. Various other OXPs (such as Towbar, Ship Version, Laser Cannons, etc.) increase the likelihood that pilots will try to use escape pods, leaving more derelicts for the player to find. Currently it is not possible for OXPs to reliably differentiate between ships that become derelict due to the player's actions and ships that become derelict for other reasons. Therefore, this OXP subtracts one point of Elite score for each derelict destroyed by the player, negating the score awarded by the core game.";
	"download_url" = " ";
	"author" = "Milo";
	"information_url" = "https://bb.oolite.space/viewtopic.php?p=277887#p277887";
	"license" = "CC-BY-NC-SA 4.0";
}
Oolite\AddOns\oolite.oxp.milo.derelicts_dont_count.1.0.oxp\Config\script.js

Code: Select all

"use strict";
this.name        = "derelicts_dont_count"; 
this.author      = "Milo"; 
this.copyright   = "2021"; 
this.description = "Negates +1 Elite score awarded by the core game when player destroys a derelict ship."; 
this.version     = "1.0.0";

this.shipKilledOther = function(whom, damageType) {
	if (whom.isDerelict) player.score--;
}

Re: Destroying a derelict should not count as a kill

Posted: Sat Nov 05, 2022 7:08 pm
by Cholmondely
Milo wrote: Sat Nov 05, 2022 6:37 pm
I wrote a simple OXP for myself to negate score credit for destroying derelicts. If you'd like to replicate it, you can create the following folders and files in your AddOns folder, or use this download link (valid only for the next 30 days): https://ufile.io/qvewntqt
Milo, why not just upload your oxp to the wiki? You will need to .oxz it first, but then it will be part of the system...

Re: Destroying a derelict should not count as a kill

Posted: Sat Nov 05, 2022 11:56 pm
by Redspear
I've had the idea for a long time but coding around non-player ships can sometimes be a pain...

Rather than the extremes of:
  • destroying a derelict
  • salvaging an entire derelict

Couldn't the player (occasionally) salvage some equipment from the derelict?
Wouldn't that both:
  • make derelicts more interesting
  • present interesting mission/gameplay opportunities

On the first point, I'm not suggesting that the player can just get lucky and find shield boosters in full working order in a derelict adder; however they might find enough scraps to fix their damaged ECM or perhaps salvage a spare pulse laser or even a set of injectors.

If the player already had the equipment but it was damaged then it could be repaired. If the player didn't already have the equipment then it could be taken on board but not fitted without expert help at a shipyard - so player would gain equipment but it counts as damaged until 'installed' (i.e. repaired).

On the second point, there's already 'special cargo' which could function in similar fashion but this would create new incentive/likelhood to investigate 'cargo' (be it pods,equipment or even passengers) in unusual circumstances and perhaps even at risk.

You've unintentionally taken aboard...
  • a deadly virus
  • a trumble
  • a wanted criminal
  • compromising holo-vids of the Zaoncian vice president
  • etc.

Re: Destroying a derelict should not count as a kill

Posted: Sun Nov 06, 2022 12:36 am
by Cholmondely
Redspear wrote: Sat Nov 05, 2022 11:56 pm
I've had the idea for a long time but coding around non-player ships can sometimes be a pain...

Rather than the extremes of:
  • destroying a derelict
  • salvaging an entire derelict

Couldn't the player (occasionally) salvage some equipment from the derelict?
Wouldn't that both:
  • make derelicts more interesting
  • present interesting mission/gameplay opportunities

On the first point, I'm not suggesting that the player can just get lucky and find shield boosters in full working order in a derelict adder; however they might find enough scraps to fix their damaged ECM or perhaps salvage a spare pulse laser or even a set of injectors.

If the player already had the equipment but it was damaged then it could be repaired. If the player didn't already have the equipment then it could be taken on board but not fitted without expert help at a shipyard - so player would gain equipment but it counts as damaged until 'installed' (i.e. repaired).

On the second point, there's already 'special cargo' which could function in similar fashion but this would create new incentive/likelhood to investigate 'cargo' (be it pods,equipment or even passengers) in unusual circumstances and perhaps even at risk.

You've unintentionally taken aboard...
  • a deadly virus
  • a trumble
  • a wanted criminal
  • compromising holo-vids of the Zaoncian vice president
  • etc.
Umm, when I tried out Towbar, I was loosing bits of derelict ship all over the jolly place. Stuff kept on falling out...

If one buys the right self-help book from the station bookshop then one can easily slot in the new shield boosters - but we might prefer to use Disembodied's wumpus technique to do so

The special cargo idea sounds rather fruitful.

Re: Destroying a derelict should not count as a kill

Posted: Sun Nov 06, 2022 1:02 am
by Redspear
Cholmondely wrote: Sun Nov 06, 2022 12:36 am
Umm, when I tried out Towbar, I was loosing bits of derelict ship all over the jolly place. Stuff kept on falling out...
I did salvage the odd derelict (don't think it was with 'towbar'). It was a mini-mission (derelict to station) and frankly a bit drawn out for my tastes with typical system traffic.