Join us at the Oolite Anniversary Party -- London, 7th July 2024, 1pm
More details in this thread.

proposal: change to erosion of contract trading reputation

An area for discussing new ideas and additions to Oolite.

Moderators: winston, another_commander

Post Reply
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

proposal: change to erosion of contract trading reputation

Post by CmdrLUke »

Excerpt from an interview with Commander Luke in the top industry rag, "Contract Trading Today":
I had spent a long time building a perfect contract trading rep with a big ship, with the dream of advancing my contract trade business into the specialty gem/gold/platinum business that every contract trader desires. I had decided I wanted to focus exclusively on this higher end business. And so, once I had proven itself worthy, the desired contracts started appearing. Still actively involved in trading, I switched to a high end, small, strong, fast ship: the Dragon XE. This ship, together with my "Dangerous" combat rating gives my customers the assurance they need and shows that I'm no greenhorn: both I and my "12 little buddies" in the missile slots know how to deal with pirates, and to protect my clients' very special cargo. My small cargo hold says: "I'm not your every day contract trader. I won't become side-tracked by Food or Textile offers along my route, I know you're interested in discreet couriers, not huge sky-filling vessels that practically scream to the universe: "Attack me, Im' full of god stuff!". Moving to the Dragon XE was a key part in my strategy: my main advantage that sets me apart from the competition. But then something strange happened. Never more than a few days outside of any active contracts, all of a sudden the top contracts vanished. It was like some evil, cosmic Random Number Generator had rolled me a bad one, and overnight everybody suddenly decided that I didn't cut the mustard any more, and now, stuck in a small ship, I didn't have the means to gain back my reputation. Through the grapevine I learned that the WeHaveHugeBoringShips company had actually manipulated my reputation, because they can't stand the small, specialty couriers. The whole episode left me disappointed and frustrated, especially after the long hours and dedication I put into this business. This business needs an overhaul, and I intend to fight for small, specialty trader's reputation preservation rights. The Powers That Be should not be allowed to randomly take away my hard-earned contract reputation!
So there you have it. The above tells my story. I'm here today to make a proopsal for changing how contract trading reputation erosion is handled in oolite.

Currently, reputation erodes randomly. Every time a pilot jumps, there is about a 3% chance that his reputation erodes. So trying to be a great hauler and saving game time on delivery routes trying to deliver ahead of schedule actually can *hurt* your reputation by giving the game more chances to erode your rating!

Ironically, successfully completing long routes (especially if you work hard for early delivery via painstakingly-chosen trade routes that increase the number of hops to decrease delivery time) can be *worse* for your reputation! The more hops, the more chances are that you'll suffer an erosion. Cross-galaxy deliveries, which only the most dedicated and skilled traders can hope to complete, are almost guaranteed to erode your rating at least once if you optimize for delivery time. I'd think that taking on and successfully completing long routes would make your reputation more secure, not less, because they are so memorable to the trading community: "Yeah, , I still remember Commander Trader, he did a cross-galaxy delivery for me way ahead of schedule". The word of mouth should spread and the reputation "strength" should increase and work to avoid erosion.

I think erosion should be modified to reward committed, active traders. A time-based erosion based on activity is fairer, and just makes more sense. It also introduces more strategy and trade-offs into the game.

Some points:

0) Fundamentally: memory fades over time

1) If a trader has current contracts, his reputation should remain constant in the minds of all customers because his status is there to see for all on the Galactic Trader charts. "Wow, there's Commander Whizbang again on the board, he's *always* doing trades, and he has a perfect reputation, he's the guy I want for my business!". Out of sight, out of mind. If you don't have active contracts, people will start to forget you. If you have active contracts, then they will remember you. This has a balancing effect for failed traders: you can't simply erase your failures by jumping back and forth between two planets 0.1 light years apart 100 times! The only way to improve bad reputation while actively trading is to complete trades. If you stay away from trading for a long time, then the positive erosion should occur, and this makes sense, but you don't then get the benefits of trading.

2) # of hops shouldn't enter in to the equation. "Hey, as long as he gets my stuff there on time, and his perfect reputation shows he will, I don't care about the # of hops. In fact, I *like* my traders to take more hops because it usually results in my stuff getting there faster."

3) Erosion should be based on how long you've been away from contracts. Do a trade, and the erosion clock is reset, because you're back in customers minds right away. Immediatlely after completing a contract, the chance for erosion should be zero, say for a week or so. Then, the longer one stays away, the higher the percentage chance of an erosion occuring. This time-away-from-contracts-based escalating chance of erosion has a balancing effect: currently a trader with a perfect reputation could, because erosion is random, keep the perfect reputation for a very long time. The longer one is away from contracts, the higher the chance of erosion should be.

4) Longer routes are more memorable. Completing them should give big bonuses, and failing them should give larger penalties.

5) Frequently, active traders, even of short routes, should build up reputation protection as well, but at a slower rate than long haulers.

Proposal:

+ Keep all the existing code surrounding reputation. The only change here is when the erodeReputation method is called.

+ Never erode if the player has outstanding contracts

+ Introduce the notion of reputation strength (RS), which has the units of game time.

+ RS is increased when the user has a perfect reputation and completes trades. This pushes the date of possible erosion into the future. Longer trades should be weighted to increase reputation strength more than small trades, but frequent small trades also serve to impress customers with your efficiency and activity and so do deserve notice.

+ Upon every hop, when the player does not have current contracts, the code to determine whether or not to erode would look something like this:

Code: Select all

if ( reputationIsPerfect && (reputationStrength >= currentTime))
   // no erosion
else 
{
    if ( ! reputationIsPerfect )
        chanceOfErosion = 3%;   // current behavior
    else
    {
        reputationStrengthAge = fabs( reputationStrength - currentTime); 
        chanceOfErosion = <sliding scale, is age is old, more chance of erosion, if age is not old, smaller chance>
    }
}

. RS , and is set to a future date as a bonus for completing trades when the player has a perfect reputation. Based on the difference between the current date and the RS date
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Post by CmdrLUke »

Well, after reading through this and thinking some more, I think maybe it's too complex.

I strongly believe though that a perfect reputation should be protect-able and active traders should be rewarded for their dedication. A very simple way to do this is to raise the ceiling to be larger than 7, but keep 7 as perfect reputation. Active traders thus preserve their reputation, and inactive traders will erode over time.
User avatar
LittleBear
---- E L I T E ----
---- E L I T E ----
Posts: 2868
Joined: Tue Apr 04, 2006 7:02 pm
Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.

Post by LittleBear »

"I've got six little friends. And they all run faster than you."
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Post by CmdrLUke »

No comments on the change, so people agree? Right now once you make perfect reputation, you've got probably 1 or 2 long hauls before your reputation erodes. If you've switched to a small ship in the mean time, you're stuck with a less than perfect reputation and can't get the good contracts without switching back to a larger capacity ship.

I think that once you reach a "perfect" reputation that it should either stay permanently, or erode much more slowly than 3% change per jump of erosion. I'd much rather have to do 10 or 15 "regular" hauls to reach a non-erodable reputation than to do 7 hauls to reach a perfect reputation that could erode on your very next jump.

One very simple way to make the perfect reputation last longer but to keep the erosion is to just let the "reputation.good" add up to larger values than 7. I'm play testing a change to let it climb up to 15, and this seems reasonable and works well. Those who constantly "refresh" their perfect reputation will keep it, and those who don't will lose it eventually.
User avatar
JohnnyBoy
---- E L I T E ----
---- E L I T E ----
Posts: 490
Joined: Mon May 05, 2008 9:41 pm
Location: West Sussex, UK (rich agricultural)

Post by JohnnyBoy »

Well Commander Luke, I was going to put this question in a separate thread, but as it seems connected to your discussion, I'll add it here: Does reputation improve with punctuality?

In other words, is it better for my reputation if I deliver the goods 7 days ahead of deadline than if I deliver 1 day ahead of deadline? Or doesn't it make a scrap of difference? :?
"That's no vicious Treeoid. That's my wife."
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Post by CmdrLUke »

JohnnyBoy wrote:
Well Commander Luke, I was going to put this question in a separate thread, but as it seems connected to your discussion, I'll add it here: Does reputation improve with punctuality?

In other words, is it better for my reputation if I deliver the goods 7 days ahead of deadline than if I deliver 1 day ahead of deadline? Or doesn't it make a scrap of difference? :?
Not to your reputation. It might make a difference to the final amount you're paid, I'm not sure about that though.

Making a delivery on time improves your reputation in a fixed way, regardless of how early you are.
User avatar
JohnnyBoy
---- E L I T E ----
---- E L I T E ----
Posts: 490
Joined: Mon May 05, 2008 9:41 pm
Location: West Sussex, UK (rich agricultural)

Post by JohnnyBoy »

Thank you. I can now stop breaking my neck to get across the galaxy. ;)
"That's no vicious Treeoid. That's my wife."
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:

Post by Commander McLane »

The proposed changes seem to be sensible to me, so I would second it, if it's not to complicated to code.

Has anything happened since?
CmdrLUke
Deadly
Deadly
Posts: 170
Joined: Sun Aug 31, 2008 3:23 pm

Post by CmdrLUke »

Commander McLane wrote:
The proposed changes seem to be sensible to me, so I would second it, if it's not to complicated to code.

Has anything happened since?
Just been playing with the change, and it seems to work fine. I used 15 as a "reputation cap" and I observe that it does go above 7, and does go down but as long as it stays above 7 the reputation stays "perfect". I have not yet tested that failure washes away all good reputation, I'll do that eventually.

The code's not hard, it just lets "good" climb as high as 15, and wherever "good" is read, if good > 7 then good = 7.
Post Reply