Cargo Contracts MOD for Oolite v1.77 and v1.79!

For test results, bug reports, announcements of new builds etc.

Moderators: winston, another_commander, Getafix

Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2411
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

cim wrote:
Switeck wrote:
I was totally unable to force the cargo reputation below -3, despite constantly failing 7 or more contracts with every jump.
Fixed in r5647. Thanks for spotting that.
I'll check the next nightly trunk build that includes this fix. Yes, I can get a -7 cargo reputation now...and what few cargo contracts I get at that level (when using my mod) aren't worth doing.

There may be other cargo reputation problems, such as very quick "decay" back to 0.

...Ok, I'm not seeing a super-quick "decay" back to 0, which is good. But I am seeing random changes to reputation still, roughly 1-2 points up and then back down within a jump or 2, that have no corresponding contract delivery or failure associated with them. I recorded that in my logs because I was trying to create a modified cargo contract generator anyway. This:
http://wiki.alioth.net/index.php/Oolite ... Reputation
...implies the behavior I'm seeing is normal. :oops:
cim wrote:
Switeck wrote:
The contracts list also seems slow when first viewing it...it can take >3 seconds before I can even move the highlighted contract up/down. This is after the text appears rather than taking >3 seconds for the text to appear. It's like there's a brutal background calculation loop that it has to crunch through many times before giving me GUI control again.
That's odd. I could understand a delay for the text to appear, but moving up and down should be as fast as any other mission screen.
Moving up and down is about as fast as other mission screens ONCE I gain control of the GUI. But there seems to be a long pause (about 1-5 seconds) after the text is displayed before that happens. This may be due to me testing with anywhere from 100 TC cargo on board to 6000 TC cargo on board with all kinds of crazy equipment installed. Multiple cargo contract testing almost requires me to have a ludicrous capacity ship, since I'm seeking to test many possible failure conditions. :P
Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2411
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

(mentioned also in 1st post of this thread)

Now, the NEWER Cargo Contracts MOD v1.2:
https://www.boxcn.net/s/bswyvbjlm9i3oaawkwcm

Profits should be roughly the same as v1.1, but the deposit is greatly increased when at low cargo contract Reputation.
More "smarts" added for choosing destination and commodity for the contract!

I also included logging which should show up in Latest.log for the base values used for the contract calculations...

discount is the % price reduction on buying prices and % price increase on selling price, inside min and max values for each.
ProfitMax is max selling price - min buying price times TC/kg/g number, showing my largest possible acceptable profit.
profit2 is the original's base profit amount, before being reduced by the share % (the amount you get to keep of it).

...OOPS! I forgot to add back the check to verify that the contract is technically profitable at all. ( profit >100 credits )
Just ignore very low profit and even negative profit contracts for now. I'll get that fixed in v1.3! :lol:
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by CmdrLUke »

Switeck wrote:
The contracts list also seems slow when first viewing it...it can take >3 seconds before I can even move the highlighted contract up/down. This is after the text appears rather than taking >3 seconds for the text to appear. It's like there's a brutal background calculation loop that it has to crunch through many times before giving me GUI control again.

In the next release of my contract mod, I am reducing absolute max amounts for Gold/Plat/Gem to better balance them. Currently, I'm using about 1/3 to 1/2 the original values...so roughly 4,500 kg of Gold or Platinum and roughly 12,000 g of Gem-Stones.
Bleh. The big attraction of the cargo contracts is getting to top rep for the big bucks which are haulable by smaller ships. It takes considerable time and effort to get to the top and stay there, especially in a smaller ship.

Have you changed how rep decay works? If not, the enforced longer distances at lower rep seem to doom the smaller traders to never actually accumulating a higher rating, hauling one contract at a time.

I think that reputation should only decay, randomly, if one has no current contracts for a certain amount of time. If a hauler has current contracts, he should be considered "in the system" and remain "on the radar" on those involved in the hauling industry, and so the reputation should not change except with success/failure. I think this is a much more "realistic" system: you haul, you keep your rep, you don't haul, you start to decay over time. Random decay to me makes it both less fun and less realistic.

edit: I think this should hold also for parcel and passenger contracts: no decay if you have current contracts.

And I agree with cim -- offering only long hauls at lower rep doesn't make sense. Long hauls should require higher rep and pay much better than shorter ones.

edit: p.s. there should still be some randomness in the distance. It's *fun* to encounter the occasional short (one hop even) haul.
Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2411
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

CmdrLUke wrote:
The big attraction of the cargo contracts is getting to top rep for the big bucks which are haulable by smaller ships. It takes considerable time and effort to get to the top and stay there, especially in a smaller ship.
The big attraction will still be there and will still be highly profitable for smaller ships if they're careful once they get top reputation.

I changed Gold/Plat/Gems kg/g amounts per contract so it cannot be quite as large as v1.77's (or earlier) absolute max. The average amount isn't too different but outliers are rarer. You can still get contracts that pay >10k profit and possibly get them slightly more often than with the original v1.77 contracts. There are no monster contracts that pay >200k profit, since contracts that large did not seem to exist in v1.76 either!
CmdrLUke wrote:
And I agree with cim -- offering only long hauls at lower rep doesn't make sense. Long hauls should require higher rep and pay much better than shorter ones.

edit: p.s. there should still be some randomness in the distance. It's *fun* to encounter the occasional short (one hop even) haul.
Short range contracts can happen at ANY reputation, however the way cargo contracts originally chooses destinations makes it rare. With mine, at low reputation it's still rare. At highest reputation...it's semi-common. Don't count on it either way, but don't rule it out either.

In my mod, the max possible profit from a commodity is ultimately limited by the max possible price differences between 2 systems for that commodity. This is a very hard limitation to work within and really cripples the "effective" profit from ultra long haul contracts. So it makes sense to limit distances some at higher reputation.

Longer distances and higher reputations get closer to that max possible profit limit, however I also had to make the minimum amount at least a token profit amount. If anything, that is the hardest challenge of all...and one I still need to work on in the v1.3 update for this!
CmdrLUke wrote:
Have you changed how rep decay works? If not, the enforced longer distances at lower rep seem to doom the smaller traders to never actually accumulating a higher rating, hauling one contract at a time.
Reputation decays due to core game engine control that I cannot change. The game would have to be modified and recompiled from scratch to change that. I'm not happy how reputation randomly changes and decays either.

I somewhat worked around that problem by making shorter contracts slightly more likely, plus (hopefully at least) the regular TC contracts will typically pay better. You might luck up at a Rich Industrial and get a starting contract that needs only 1-4 jumps that pays ~2000 credits profit for ~100 TC of computers. Since regular TC contracts can be as small as 30 TC, even a Cobra 3 might be able to do a couple contracts...though you're unlikely to see them often enough to get your reputation to max.
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by CmdrLUke »

Reputation decays due to core game engine control that I cannot change. The game would have to be modified and recompiled from scratch to change that. I'm not happy how reputation randomly changes and decays either.
Well I may just do that then and offer it as an option for 1.78 or expose it to scripting or something. I'm no stranger to objective-C and this point really chaffs my hide.

Oh and BTW I have seen more than one >100K cr profit contracts when at top rep. Rare, but I've seen them. Don't know about >200k though. But 20-30k were fairly common and I even managed to get a couple of those, I'd really hate to see those gone or limited.

edit: I'm serious about making this change -- what would be required? I haven't seen the oolite source in ages, but I imagine the core code can at times just call out to scriptable functions. I can envision two main hooks: 1) for each kind of contract, call to script to check if a decay function should be called or not, and 2) for each kind of contract, a function that calculates a new value. This way there can be objects or game play OXPs that can override the default decay from occurring without needing to know or offer the logic of the decay function itself, and then of course the calculation itself can be overridden in the second type of function. Would anything else be required?
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

CmdrLUke wrote:
edit: I'm serious about making this change -- what would be required? I haven't seen the oolite source in ages, but I imagine the core code can at times just call out to scriptable functions. I can envision two main hooks: 1) for each kind of contract, call to script to check if a decay function should be called or not, and 2) for each kind of contract, a function that calculates a new value. This way there can be objects or game play OXPs that can override the default decay from occurring without needing to know or offer the logic of the decay function itself, and then of course the calculation itself can be overridden in the second type of function. Would anything else be required?
I think there are two separate questions here:
1) Given that the contract system is core code (as a combination of ObjC and JS), what should its default reputation decay algorithm be? (At the moment it's a 1/32 chance on witchspace exit, which is controversial)
2) Should the algorithm be modifiable by OXPs, and if so, how?

The first probably needs more general discussion once you have a plan. The nature of the default decay algorithm probably then informs what (if any) new worldscript events are needed. But yes, you can introduce new events or callbacks fairly easily.

The second ... OXPs already have an "increase reputation" and "decrease reputation" function. But at the moment they only have read access to the "locally perceived reputation", not to the underlying good/bad/unknown table, so you get the problem Switeck mentions of the reputation appearing to jump about randomly, and it being difficult to change the behaviour. So the first step would probably be to allow read-only access to the reputation table.
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: Cargo Contracts are buggy in Oolite v1.77!

Post by Diziet Sma »

Switeck wrote:
Since regular TC contracts can be as small as 30 TC, even a Cobra 3 might be able to do a couple contracts...though you're unlikely to see them often enough to get your reputation to max.
Well that would suck, because currently (and for the last few releases preceding 1.77) it's entirely possible to get to max rep in a Cobby.. not as easily as in a larger ship, but not that difficult, either..
CmdrLUke wrote:
Oh and BTW I have seen more than one >100K cr profit contracts when at top rep. Rare, but I've seen them. Don't know about >200k though. But 20-30k were fairly common and I even managed to get a couple of those, I'd really hate to see those gone or limited.
Absolutely! I've seen >100K contracts several times in 1.76.1. Get rid of those, and I would not be happy.
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
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by CmdrLUke »

cim wrote:
CmdrLUke wrote:
edit: I'm serious about making this change -- what would be required? I haven't seen the oolite source in ages, but I imagine the core code can at times just call out to scriptable functions. I can envision two main hooks: 1) for each kind of contract, call to script to check if a decay function should be called or not, and 2) for each kind of contract, a function that calculates a new value. This way there can be objects or game play OXPs that can override the default decay from occurring without needing to know or offer the logic of the decay function itself, and then of course the calculation itself can be overridden in the second type of function. Would anything else be required?
I think there are two separate questions here:
1) Given that the contract system is core code (as a combination of ObjC and JS), what should its default reputation decay algorithm be? (At the moment it's a 1/32 chance on witchspace exit, which is controversial)
2) Should the algorithm be modifiable by OXPs, and if so, how?

The first probably needs more general discussion once you have a plan. The nature of the default decay algorithm probably then informs what (if any) new worldscript events are needed. But yes, you can introduce new events or callbacks fairly easily.

The second ... OXPs already have an "increase reputation" and "decrease reputation" function. But at the moment they only have read access to the "locally perceived reputation", not to the underlying good/bad/unknown table, so you get the problem Switeck mentions of the reputation appearing to jump about randomly, and it being difficult to change the behaviour. So the first step would probably be to allow read-only access to the reputation table.
Well my fervor has been somewhat quenched due to the requirement that trunk Oolite on Mac OS X requires XCode 4.5 which in turn requires Lion (or Mountain Lion), and I'm happily running a nice and stable Snow Leopard. I have a mac mini 3.1 which is the oldest possible mac mini that can run Mtn. Lion so I'm a bit nervous about making that upgrade.

Yes I understand there is a discussion to be had here in terms of modifying the game itself, I just wanted to try it out myself and see how it played.

Although, I don't see a reason here to limit an OXP's ability to modify the game play, that's sort of their point, isn't it? I don't think performance would be an issue since these hooks would be called only at jump time, I presume.

It just seems totally wrong that it should be possible to lose reputation of any type (passenger, parcel, cargo) while a contract of that type is current. I think the random decay works/makes sense when you have no current contracts, and that still maintains the urgency to keep trading constantly to maintain top reputation. Are any opposed to that idea, and if so, why?

Another idea is that maybe the reputation / earnings cliff shouldn't be so binary. It can be steep, but perhaps not all or nothing. It would be nice to get a taste of the gems/metals contracts at lower rep levels, just at perhaps way lower profit levels (?).
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

CmdrLUke wrote:
Although, I don't see a reason here to limit an OXP's ability to modify the game play, that's sort of their point, isn't it? I don't think performance would be an issue since these hooks would be called only at jump time, I presume.
Well, my point is that you might not need new hooks - if the raw reputation table was readable, you could check for changes to that in the existing witchspace exit handlers, and call the existing increase/decrease reputation functions as appropriate from the OXP.

EDIT: Thinking about it, perhaps the (long-term) right answer is to move the entirety of the contract processing into the Javascript, including reputation handling, arrival reports on completion, display on F5 F5, etc. That would make OXP modification a simple matter of supplying a replacement script. There are certain core changes which would need to be made first for this, but they're more interesting changes with benefits beyond just the contracts.
CmdrLUke wrote:
It just seems totally wrong that it should be possible to lose reputation of any type (passenger, parcel, cargo) while a contract of that type is current. I think the random decay works/makes sense when you have no current contracts, and that still maintains the urgency to keep trading constantly to maintain top reputation. Are any opposed to that idea, and if so, why?
I hit top rep for cargo contracts somewhere in Galaxy 5, and managed to keep it there (temporary dips in the middle of a delivery run aside) right into Galaxy 7 and all the way through completing Assassins OXP. I made about 3 million credits on the precious metal contracts along the way, and then I let it lapse.

What I'd usually do is grab four or five precious metal contracts going roughly the same way, deliver the first two or three to boost my rating back up to +7 if it had fallen below, then start picking up contracts going to the next part of the galaxy I wanted to be in while delivering the last couple. If it had not been possible to lose reputation except when I didn't have a contract on the go, I'd never have slipped below +7.

If I was flying a proper freighter, as opposed to a Cobra III - and the cargo contracts are designed for freighter pilots, not multirole or fighter pilots - I could have picked up some bulk contracts too and kept the rating much more easily than I did. That would have been very useful the time one of my TCs full of Gold got shot in the middle of a fight, and I had to slowly go around buying up replacements and in the meantime using the next Gold contract's supply to deliver on the previous contract.

The precious metal contracts are - by a vast margin - the easiest way to make money fast in the game. They're faster than many of the things in OXPs which are often criticised as "easy money" like exploiting the different prices (and no illegal exports) of OXP stations. Now ... there's a sort-of balance here in that getting your first precious metal contract requires enough setup that you're probably at the point where money doesn't matter to you anyway unless you're trying to raise funds for an expensive OXP ship, while the OXP "easy money" you can often get started on immediately ... but nevertheless I don't personally feel there's any need to make it any easier to keep that +7 reputation once it's achieved.

(And obviously a lot of people do want to make it easier and they're welcome to their OXPs which do it: provided you settle for only pinning a +7 rep while a contract is ongoing you can do that with current scripting functionality because a +7 rep always reads as +7 perceived rep, and a +7 perceived rep can only result from a +7 real rep)
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by CmdrLUke »

cim wrote:
What I'd usually do is grab four or five precious metal contracts going roughly the same way, deliver the first two or three to boost my rating back up to +7 if it had fallen below, then start picking up contracts going to the next part of the galaxy I wanted to be in while delivering the last couple.
Yes that tactic is the only way given the current system to keep top rep, but you need to be pretty rich already to do that. I ran a python to get to top rep, then switched back to a cobra to swap between the gems/metals contracts and other fighting-focused activities, but didn't have enough cash to buy enough simultaneous contracts and the random decay very quickly demolished the rep even while actively hauling :(.
If it had not been possible to lose reputation except when I didn't have a contract on the go, I'd never have slipped below +7.
Yes, and...? Why should your rep drop while you are successfully fulfilling your contracts and actively engaged in at least one at some point?
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

CmdrLUke wrote:
Yes that tactic is the only way given the current system to keep top rep, but you need to be pretty rich already to do that. I ran a python to get to top rep, then switched back to a cobra to swap between the gems/metals contracts and other fighting-focused activities, but didn't have enough cash to buy enough simultaneous contracts and the random decay very quickly demolished the rep even while actively hauling :(.
You could have kept the Python a bit longer until you were rich enough to do that, though, keeping your reputation topped up with the bulk contracts. I wouldn't want to make it completely impossible to do with just a Cobra (and I did keep a close eye out for suitable 30-35TC contracts when I was in the business), but I don't think cargo contracts should be designed to be easy in that ship.
CmdrLUke wrote:
Yes, and...? Why should your rep drop while you are successfully fulfilling your contracts and actively engaged in at least one at some point?
There's no guarantee you'll actually pass any of the contracts you have underway, though. Why should your rep stay high just because you're carrying around something you might not ever deliver?

But, ignoring in-universe justifications because this forum is full of creative people who can handwave anything, what counter-balancing would there be to the fact that you could essentially permanently keep a +7 rep once you'd got it, given just how good a +7 rep is?
Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2411
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

Diziet Sma wrote:
Switeck wrote:
Since regular TC contracts can be as small as 30 TC, even a Cobra 3 might be able to do a couple contracts...though you're unlikely to see them often enough to get your reputation to max.
Well that would suck, because currently (and for the last few releases preceding 1.77) it's entirely possible to get to max rep in a Cobby.. not as easily as in a larger ship, but not that difficult, either..
If you can pull that off with regular Oolite v1.76, then it should be about as easy if not a tiny bit easier to do the same with my mod. Once you get to max reputation, it should be slightly easier to maintain...though it's more fun to let you discover why on your own.
Diziet Sma wrote:
CmdrLUke wrote:
Oh and BTW I have seen more than one >100K cr profit contracts when at top rep. Rare, but I've seen them. Don't know about >200k though. But 20-30k were fairly common and I even managed to get a couple of those, I'd really hate to see those gone or limited.
Absolutely! I've seen >100K contracts several times in 1.76.1. Get rid of those, and I would not be happy.
100k credits is almost exactly the max theoretical profit possible with Platinum with my mod currently. It's a limitation of carrying between 5000-6000 kg Platinum times max profit. Failing such a contract is a disaster even if you can in theory sell them off for slightly more than you paid for them (if you go to Rich Industrial systems that is) because you'll need >50 of system+station visits to sell it all. Your reputation will be ruined by then. Bad, but nowhere near as bad as originally in v1.77...where selling them off is always at a huge loss. Reload from savegame event in either case.

Keep in mind that such contracts will probably be for only about 1/2 the distance traveled as you previous had to do...so you could 2 at once and return to your starting location in the same time as you could do a >100k contract in v1.76.1.
20-30k credit profit Platinum and Gemstones contracts are not rare, and even Gold exceeds 10k credit profit often enough. I've seen many Plat/Gem contracts in my mod for 30-50k, a few for over that -- these are balanced against the originals for being a shorter trip on average...even a Cobra 3 could carry >6 at once, though finding enough lined up in a chain to do that would be tricky but possible.
CmdrLUke wrote:
Another idea is that maybe the reputation / earnings cliff shouldn't be so binary. It can be steep, but perhaps not all or nothing. It would be nice to get a taste of the gems/metals contracts at lower rep levels, just at perhaps way lower profit levels (?).
This is why I made regular TC contracts more profitable as you get higher reputation, with a 100 TC load of computers or furs along the best routes possibly paying 4000 (computers) to 5000 (furs) credits profit. Narcotics and Firearms can also pay well, but the moment you leave the station with them you are super-fugitive-kill-on-sight to pretty much everyone.
cim wrote:
1) Given that the contract system is core code (as a combination of ObjC and JS), what should its default reputation decay algorithm be? (At the moment it's a 1/32 chance on witchspace exit, which is controversial)
You can get "hit" with 2 really unlucky jumps in a row and see your apparent reputation drop from 6 to 3, because the "locally perceived reputation" can decrease as well. Considering early contracts (both with and without my mod) often force you to travel >5 jumps (using fewest jumps), the odds of a reputation decrease along the way is painfully high.
cim wrote:
OXPs already have an "increase reputation" and "decrease reputation" function. But at the moment they only have read access to the "locally perceived reputation", not to the underlying good/bad/unknown table, so you get the problem Switeck mentions of the reputation appearing to jump about randomly, and it being difficult to change the behaviour. So the first step would probably be to allow read-only access to the reputation table.
Your starting reputation can vary between 0 and 3, with 3 seeming to be about as often as 0! While this "seems good", I think it's too large a range considering the whole reputation scale only goes from -7 to +7.
If instead it was -1 to +2, with both -1 and +2 being really rare and typically only lasting for 1 system visit...then to me it would seem more predictable and balanced.

If above 0 reputation, the random decay clock should start counting when you leave a station or arrive at a new system with less than the full contracted load of goods. This will directly penalize selling and re-buying of contracts as well as represent the slow decay when you quit doing contracts. The decay chance should be LOW...maybe even lower or none if you recently suffered a random decay reputation loss. If you're at negative reputation, it's perfectly fine to have each system jump have a low chance to decay the reputation by 1 back to 0.
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by CmdrLUke »

CmdrLUke wrote:
Yes, and...? Why should your rep drop while you are successfully fulfilling your contracts and actively engaged in at least one at some point?
There's no guarantee you'll actually pass any of the contracts you have underway, though. Why should your rep stay high just because you're carrying around something you might not ever deliver?

But, ignoring in-universe justifications because this forum is full of creative people who can handwave anything, what counter-balancing would there be to the fact that you could essentially permanently keep a +7 rep once you'd got it, given just how good a +7 rep is?
For the handwavy argument: the results of contracts are known throughout the Ooniverse, so there is obviously an ooniversal courier status database. It's not hard to imagine those who offer contracts have access to this DB. What the clients care about is the results: does the guy deliver, and what is his history? If a hauler with high rep is constantly on "the board" (visible in the DB), then his name will remain in people's minds. If he fails, then his rep will drop immediately, which makes sense.

More handwavy: the cap of +7 doesn't make sense: who is more valued, a hauler who has successfully delivered 7 contracts, or one who has delivered 700? If a trader consistently delivers on contracts, he should be able to count on his rep being increased comensurately, and be remembered longer.

In game counter-balancing: the decay does not go away, it is just delayed until active trading stops. For a large cargo haul ship, dropping below 7 is a mere inconvenience. For a Cobra MkIII it can be death to the jewel trader and starting all over again because of a few unlucky random decay jumps.

Or a potential change that would help counter-balance a bit is that perhaps once a trader accumulates some number of active contracts, the apparent reputation can drop because the hauler is considered "too busy to give my important contract it's full attention."

And as for the oxp changes: it just doesn't make sense that newbies have to start with long contracts, and that veterans are "rewarded" with short contracts. It should be the other way around: newbie traders should only be offered short contracts with astronomical down-payments, and veterans should be offered both short and long distance contracts, with much smaller down payments, and much larger rewards for long distances.

The reputation scale could probably use an overhaul: short hauls should not be worth the same as long hauls: rep could in fact be directly related to the minimum # of jumps required to satisfy the contract. Long contracts are just death to the reputation as they are now, which makes no sense at all -- there should be some motivation for accepting the long hauls: more Cr, and more rep makes sense.


For the short term, I think most of the issues could be addressed by increasing the max reputation to something like +10, while keeping everything else the same (the best contracts at +7 or above), that gives a bit of a buffer zone for those who remain very active from getting a few unlucky back to back random decays.
"What happens in the Anarchy, stays in the Anarchy..." -- CmdrLUke
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

CmdrLUke wrote:
For the handwavy argument: the results of contracts are known throughout the Ooniverse, so there is obviously an ooniversal courier status database.
Though the implementation is basic, the randomisation around the "unknown" proportion of your rep is supposed to simulate imperfect information - some people will have heard of you, others will not - at least until you get really good. It doesn't have a lot of space to work in, though.
CmdrLUke wrote:
More handwavy: the cap of +7 doesn't make sense: who is more valued, a hauler who has successfully delivered 7 contracts, or one who has delivered 700? If a trader consistently delivers on contracts, he should be able to count on his rep being increased comensurately, and be remembered longer.
Well, the rep decay should mean you need to deliver a fair bit more than 7 to get to +7 rep, but I agree that it's a rather short scale, though. Possibly (like Elite rating) it should run on a more logarithmic scale, so you have to deliver an absolutely huge amount to get the best reputation (but then have the benefits of a high rep be more worthwhile than they currently are, and have at least for cargo perhaps only have the cheapest goods available to start with - Food, Textiles, Minerals - until you've proven you can be trusted with the more expensive stuff)

That gives more scope for the longer-distance contracts to have reputation increases greater than just 1, to counteract the decay you get, for failures to deliver to have a more significant effect too, or for early delivery to give an additional rep boost (so do you take several contracts and barely pass them, or do you concentrate on doing one or two very well?). Or deliberately add in contracts with a time-to-complete lower than the "shortest route" time but higher than the "quickest route" time, with a higher reputation bonus?

(Potential catch: there are definitely OXPs out there which expect a -7 to +7 scale for reputations, so changing the scale is a compatibility break and would need some consideration: possibly mapping the logarithmic scale back to that linear scale so "reputation rank" could still be reported, separately to the raw reputation score?)

Also worth considering: reputation decay being tied to witchspace exit is because in earlier versions of Oolite that was by far the most practical 'timer' to use. Since we now track days explicitly for the dayChanged event, maybe that should be used instead as the trigger for the test. That would also mean that taking the quickest route ends up better for your rep than the simplest route.
"I did the Xeesle run in only 12 parsecs"
"Yeah, big deal. I did it in 15 and it took half the time of your route."
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by CmdrLUke »

All good considerations. Increasing the scope of decisions, adding more tradeoffs, is what adds to the fun. Plus a little bit of common sense (longer hauls = more Cr., more rep)

Time is definitely a better decay criterion than # of jumps. Why would a reputation decrease from +7 to zero because some loopy trader makes a few dozen hops between two systems less than an hour apart? Avoiding time reputation decay is another choice to make for a trader.

And "once a month" for a decay makes much more sense than 1/32 chance per jump (or whatever it is). You can predictably know you'll get a single rep hit for a job with 15 2-day (7 ly) jumps. But with today's system, you could conceivably lose *all* rep on such a haul.
"What happens in the Anarchy, stays in the Anarchy..." -- CmdrLUke
Post Reply