Passenger Appeal: testing extra values

Creating and Editing Rollingstock
User avatar
RulerofRails
CEO
Posts: 2063
Joined: Sun Dec 08, 2013 1:26 am

Passenger Appeal: testing extra values Unread post

So this idea looks quite promising to incentivize separation of passenger and freight haulage. This idea needs a lot more testing for potential side effects and whether or not the RT3.lng can incorporate a change to make it look good in the train stats window.

This test was made with a run that was showing 59k for delivery on 1.4 loads. I loaded one car and looked at the initial displayed price on that. This is on the Canyonlands beta test map which has an in-effect +35% on passenger prices. This was for the Fredonia to St. George run.

I tested another route with a couple of the settings to do a quick check that this isn't an anomaly. In that case, the displayed value on the map was also bit higher (38k) than the "actual" (35k) that an Acceptable rating returns. It's pretty obvious that the game is using the 55k "Acceptable" value here as the other values are easily related to it.
Passenger Appeal extra values test.jpg
Edit: Just to warn anyone who reads this in the future that I made a mistake here and forgot about hex numbers. The "#" column is what I entered directly to the file. So, there are gaps in the possibilities (for example between "9" and "10"). Thanks to Gumboots for pointing this out to me(End of this post). He also tested some of the numbers I missed in his next post.
Last edited by RulerofRails on Thu Oct 20, 2016 12:14 pm, edited 1 time in total.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

Interesting range of results there. Obviously it's not just a straight scale like the fuel cost scale.

I also notice the figures for the standard ratings contradict the RT3 manual. If $55k is the price for an Acceptable rating and if Acceptable is the baseline rating, then Ugly should be $47k, Looks Sharp should be $63k, and Ultra Cool should be $71k or $72k (depending on whether the games rounds an exact 0.5 up or down).

So it's clear that the claimed 15% difference between levels is not accurate in this case. Ugly is giving 10.9% less return than Acceptable. Looks Sharp is giving 9.1% more than Acceptable, and Ultra Cool is giving and even 20% more than Acceptable rather than the claimed 30%.

It may be that the editor event to boost prices is somehow screwing with the difference between ratings. It'd be good to run more tests without editor events interfering and see how that plays out.

With the unusual integers, I figure it'd make sense to only use integers that affect text strings that are never normally used. That way the language file can be edited without causing an visual problems for players. So 4,5,6 & 7 would be unusable for passenger appeal since their text strings are in common use everywhere.

Out of the results you have in that shot #28 might be useful for really unappealing locos. 11, 12 & 13 are possibilities for really appealing ones. Numbers higher than that start getting over the top in terms of returns, IMO.
User avatar
RulerofRails
CEO
Posts: 2063
Joined: Sun Dec 08, 2013 1:26 am

Re: Passenger Appeal: testing extra values Unread post

Yes, I would have liked to test this without the Passenger Price modifier, but I forgot about it until I was almost finished this test. One must also be careful to avoid the first 4 year station bonus of 20%. I am not sure that time jumping does the trick for that.

I have to let this go again for awhile, so wont have more info right away. Imagine, if a setting of 50 was used. There would be a real incentive not to load passengers on a freight train.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

Oh, it actually is a straight scale in some regions. Just noticed that. From #10 to #18 it's in even increments, allowing for the display rounding off to the nearest $1k.

#10 - $66k -- 120% of baseline price (Same as Ultra Cool).
#11 - $71k -- 130% of baseline price.
#12 - $77k -- 140% of baseline price.
#13 - $82k -- 150% of baseline price.
#14 - $88k -- 160% of baseline price.
#15 - $93k -- 170% of baseline price.
#16 - $99k -- 180% of baseline price.
#17 - $104k - 190% of baseline price.
#18 - $110k - 200% of baseline price.

So, looking at that and at the results given by the standard four ratings, it looks like the game is actually using 10% as the difference (rounded off to the nearest $1k) between all levels instead of the 15% that manual claims. So by adding #11 to #18 to the available ratings and changing the language strings*, we would have an evenly stepped range. This could be useful if the base price of passengers is changed downwards.

So just for argument's sake, if we change the base price of passengers to 62.5% of its default value and make #14 the new Acceptable rating, that would give an effective new pax price of 100% of current price for Acceptable locos. This should play like it always has. Then we could have freight slugs on the existing Ugly rating giving pax returns of 56% of base price instead of the 90% they deliver now. The new top rating would give a 25% boost to prices over Acceptable, instead of the current 20% for Ultra Cool. The new #19 rating of "No, just no" would give pax returns of 10% of the top "Marry me" rating.

#18 - 125% of baseline price = Marry me.
#17 - 118% of baseline price = Ultra Cool.
#16 - 113% of baseline price = Looks Sharp.
#15 - 106% of baseline price = Quite Nice.
#14 - 100% of baseline price = Acceptable.
#13 -- 93% of baseline price = Tolerable.
#12 -- 88% of baseline price = Barely tolerable.
#11 -- 81% of baseline price = If I have to.
#3 --- 75% of baseline price = No way, Jose ---- (used to be Ultra Cool - same result as #10).
#2 --- 68% of baseline price = I'll buy a horse -- (used to be Looks Sharp).
#1 --- 63% of baseline price = I'll walk instead - (used to be Acceptable).
#0 --- 56% of baseline price = I'd rather die ---- (used to be Ugly).
#19 -- 13% of baseline price = No, just no ------ (same result as #20).

*Changing the language strings shouldn't break anything. It always has to be done for translations anyway. Using editable language files for i18n is standard coding practice for gui's.
Imagine, if a setting of 50 was used. There would be a real incentive not to load passengers on a freight train.
Yes, but it doesn't have an available language string to edit. If you want really low pax prices then #19 would be a better choice (just added it to the list above). It has a language string available, and it's one that's rarely if ever displayed during gameplay. It would also keep all the new ratings in one block of frozen time language strings, which would be good for consistency when documenting it.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

Had a few more thoughts. Although these ratings affect pax revenue they don't have any effect on revenue from troops and mail. Any freight loco on an auto consist would still be likely to steal troops and mail from the express locos, because the delivery prices for troops and mail will probably still be high enough to outprice some freight. The only way around that is to not use auto consists for such locos.

The other thing is that trains in RT3 can haul automatically (ie: "at a profit") as long as the delivery price is $2k/load or more. That means that as long as the "Acceptable" base price for pax is $15k/load or more, even the lowest level freighter will just be able to auto haul them on a mixed consist if nothing better is available. This could actually be handy sometimes, like when you have a freighter on a low-paying line that occasionally gets a load of passengers.

I still think this whole concept will be workable and is worth investigating. !*th_up*!

Edit: Removed a load of blithering.
Last edited by Gumboots on Wed Nov 04, 2015 4:54 pm, edited 1 time in total.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

Edit: Forget this. Better idea a few posts down. !*th_up*!
Last edited by Gumboots on Wed Nov 04, 2015 4:55 pm, edited 1 time in total.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

Ok, just ran this as a live test. I set the hex in the Schools class .lco to 18, and set the hex in the Berkshire .lco to 19. I left the N&W A class at its usual hex value of 1 (Acceptable).

I also edited the RT3.lng file to display custom text strings for the 18 and 19 hex values.

Code: Select all

	;@gumbootz: This string will display if a value of 18
	;			is set for pax appeal in the .lco file.
	;			Hex value 18 gives pax revenue of 200%.
	2709 "Pax price 200%"

	;@gumbootz: This string will display if a value of 19
	;			is set for pax appeal in the .lco file.
	;			The behaviour for pax revenue changes here.
	;			Hex value 19 gives pax revenue of 20%.
	2710 "Pax price 20%"
It works just fine. Game runs normally, custom text strings are displayed properly, and pax prices for edited Schools and Berkshire seem to match the results from RoR's earlier testing. Screenshots attached.

Note that the Schools are benefiting from a 20% dining car bonus and a 20% speed record bonus, so to get the actual (non-bonus) pax price the price shown has to be divided by 1.4. Dividing $92k by 1.4 gives a non-bonus pax price of $66k/load. This is about right for 200% of the basic map delivery price on that route.
Schools_pax_hex_18.jpg

The N&W A class was giving normal returns of $20-30k on its routes (I forgot to actually highlight the pax car with the cursor in the screenshot).
N&W_A_pax_hex_1.jpg

The Berkshire was giving rock bottom returns on pax, at what seemed to be 20% of the nominal price on its routes.
Berkshire_pax_hex_19.jpg

So, it all seems to work so far. Now we just have to decide if, and how, we want to screw around with the base price for pax and if, and how, we want to set a new default level for the Acceptable/100% rating. (0!!0)

^**lylgh I just realised something else. When I first went to change the hex values I looked at what RoR had posted and thought ok, so he used a value of 18 in the hex, so 18 converted to hexadecimal is 12, so I put 12 in the .lco file and saved it. It didn't show properly in the game.

Then I twigged to the fact that RoR probably just didn't think about decimal to hex conversion and had actually used 18 00 00 00 for the bytes. This turned out to be right. So, what I have just realised is that his forgetting how hexadecimal works is what is responsible for the apparent lack of effect from text strings 2711 to 2716 inclusive in his chart.

Hexadecimal notation does not go 19 > 20 > etc. It goes 19 > 1A > 1B > 1C > 1D > 1E > 1F > 20, with 19 in hex being 25 in decimal, and 20 in hex being 32 in decimal. So between the 19 and 20 in RoR's chart there are six missing hex values. There are also six text strings in that location in the RT3.lng file. What this means is that hex values of 1A > 1B > 1C > 1D > 1E > 1F will show the text strings 2711 to 2716 inclusive.

RoR forgot to test these since he didn't try their hex values, so that's a few more that need to be tested. !*th_up*!
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

Did a bit more testing just before I have to run off and do other things.

So yes, hex values 1A to 1F inclusive do display text strings 2711 to 2716 inclusive. I've figured out their effect on pax revenue too.

Code: Select all

	;@gumbootz: This string will display if a value of 1A
	;			is set for pax appeal in the .lco file.
	;			Hex value 1A gives pax revenue of zero (0%).
	2711 "Frozen at 4pm"

	;@gumbootz: This string will display if a value of 1B
	;			is set for pax appeal in the .lco file.
	;			Hex value 1B gives pax revenue of 50%.
	2712 "Frozen at 5pm"

	;@gumbootz: This string will display if a value of 1C
	;			is set for pax appeal in the .lco file.
	;			Hex value 1C gives pax revenue of 20%.
	2713 "Frozen at 6pm"

	;@gumbootz: This string will display if a value of 1D
	;			is set for pax appeal in the .lco file.
	;			Hex value 1D gives pax revenue of 20%.
	2714 "Frozen at 7pm"

	;@gumbootz: This string will display if a value of 1E
	;			is set for pax appeal in the .lco file.
	;			Hex value 1E gives pax revenue of zero (0%).
	2715 "Frozen at 8pm"

	;@gumbootz: This string will display if a value of 1F
	;			is set for pax appeal in the .lco file.
	;			Hex value 1F gives pax revenue of 50%.
	2716 "Frozen at 9pm"
Then I thought about the last two weather strings, and figured they would probably display for hex values of 2A and 2B. This turned out to be right.

Code: Select all

	;@gumbootz: This string will display if a hex value of 2A is set.
	;			Hex value 2A gives pax revenue of zero (0%).
	2727 "Frozen at strong rains"

	;@gumbootz: This string will display if a hex value of 2B is set.
	;			Hex value 2B gives pax revenue of zero (0%).
	2728 "Frozen at storms"
Then I remembered some earlier frozen time strings that didn't seem to be displayed in RoR's test. These are the following:

Code: Select all

	2695 "Frozen at midnight"
	2696 "Frozen at 1am"
	2697 "Frozen at 2am"
	2698 "Frozen at 3am"
	2699 "Frozen at 4am"
	2700 "Frozen at 5am"
I don't have time to test these right now, but will test them tonight. Given their location, my bet is that these will display for hex values of 0A to 0F inclusive.

Strings 2689 to 2693 inclusive (hex values 04, 05, 06, 07, 08, which we should not use) give pax revenues of 0%, 10%, 20%, 30% and 40%

String 2694 (hex value 09, which we probably shouldn't use) gives pax revenue 50% of the base price. Since string 2701 (hex value 10) gives pax revenue of 120% of the base price, I'm also betting that hex values of 0A > 0B > 0C > 0D > 0E > 0F will give pax revenues of 60% > 70% > 80% > 90% > 100% > 110%.

IOW, 0D and 0E and 0F would have the same effects as the default Ugly, Acceptable and Looks Sharp, which means there's not much point using them, while 0A, 0B and 0C could be very useful. !*th_up*!
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

I've scrapped the old post about the last customised pax appeal scale I tested. After sleeping on it and trying some things, I came up with a better plan. This new scheme doesn't require changing the cargo base price, so getting a good game balance is easier. It works, but still needs more testing to work out optimum ratings for a range of locomotives.

So far I have tested with 6 Berkshires and 3 Schools class, all trains running 7 cars auto consist plus a caboose, on my 1953 Royal Tour map. The 3 Schools class were all benefiting from a 20% speed record bonus (ie: stars) but no trains were using dining cars.

Each test ran for one year from the same starting point. Six tests were made for the default pax appeal settings: Berkshire rated Acceptable (hex code 01), and Schools rated Looks Sharp (hex code 02). The annual express revenues for the six years were then averaged. This average was used as the baseline figure for comparisons.

I then reset the language file and the locos so the Berkshire was rated Even Lower (hex code 0B) and the Schools was rated Very Cool (hex code 11). This gave annual express revenue 7% less than the baseline. Average freight revenue wasn't increased to compensate, due to the way the game engine handles pax appeal (see notes further down).

The Berkshires were then set down to Almost None (hex code 20) with the Schools class not being changed. This gave annual express revenue 15% less than the baseline. I then set the Berkshires down to None At All (hex code 21). This gave annual express revenue 27% less than the baseline. So far it's all feeling about right for a workable system. The proposed new ratings look like this:

Code: Select all

    ;@gumbootz: Customised passenger (pax) appeal ratings begin here.
    ;           A complete list of custom pax appeal ratings follows.
    ;           -----------------------------------------------------
    ;           #ID     Rating Name     Revenue     Hex value
    ;           -----------------------------------------------------
    ;           @2703 - Ultra Cool      140%        12 00 00 00
    ;           @2702 - Very Cool       130%        11 00 00 00
    ;           @2688 - Looks Sharp     120%        03 00 00 00
    ;           @2687 - Looks Nice      110%        02 00 00 00
    ;           @2686 - Acceptable      100%        01 00 00 00
    ;           @3173 - Tolerable        90%        00 00 00 00
    ;           @2697 - Quite Low        80%        0C 00 00 00
    ;           @2696 - Even Lower       70%        0B 00 00 00
    ;           @2695 - Very Low         60%        0A 00 00 00
    ;           @2716 - Ultra Low        50%        1F 00 00 00
    ;           @2717 - Almost None      20%        20 00 00 00
    ;           @2718 - None At All       0%        21 00 00 00
In this system the Ultra Cool level is boosted by 20%. This makes it the same as the old Ultra Cool with a speed record or dining car bonus. The scale could be extended to even higher levels (150% revenue, etc) if people think that is necessary.

Very Cool gives the same revenue as the old Looks Sharp with a speed record bonus, or dining car bonus. Looks Sharp is now at the same revenue as the old Ultra Cool. Looks Nice replaces the old Looks Sharp, at the same revenue. Acceptable is what it always was. Tolerable replaces the old Ugly, at the same revenue. Four new levels follow below Tolerable, at even 10% revenue reductions.

The Almost None level then takes a jump 30% down in revenue to 20%, because there are no available hex values that would allow revenues of 40% or 30% (these hex values are taken up by necessary building names).

There are no available hex values for 10% revenue, so the last level is down to 0%. Locos rated None At All would trash profit if run with auto consists on main lines. Main line usage would require a freight-only consist. OTOH, if you were hauling freight on a branch line but occasionally got a load of pax you wanted to feed down to your main line, using a None At All loco on auto consist could work.

When testing all of this I found something surprising. If the basic delivery price for pax on a route is $25k/load, a locomotive using an auto consist will load pax cars on the basis of that $25k/load price regardless of its passenger appeal rating.

If the station is full of pax at a nominal $25k/load and freight at $23k/load, a train rated Almost None, or a None At All, will only haul pax if it is using an auto consist, despite the fact that once the pax appeal is applied the consist will earn little or no revenue.

This applies to all passenger appeal ratings, as far as I can tell. Even on the higher ratings, which boost pax revenue by 20% or more, cars are added to the consist on the basis of their nominal delivery price without regard to the effect of the passenger appeal rating.

This is a bug, but we're stuck with it. It does partly explain the odd behaviour of passengers in RT3. A load you might expect to be hauled may not be hauled, because the effect the appeal rating has on delivery price is not considered when loading.

I've attached a zipped version of the custom RT3.lng file for 1.05. Note that I haven't looked at the 1.06 file yet, and it probably contains extra language strings. These won't affect the new pax ratings scale, but the extra strings would be required for 1.06 to run properly. If you want to try the new pax appeal scale in 1.06, applying the same edits to the 1.06 RT3.lng file should work.

For 1.05, just back up your existing file and throw this new one into Data/Language. You can then play with the pax appeal ratings in your .lco files and see how it all works in practice. !*th_up*!

There is one small catch to this. Extending the pax appeal scale requires hijacking a few of the text strings that are used for freezing time when creating a new sandbox. Most of them remain as they were, and IMO the interface is still usable. Screenshot attached.
Nifty_new_plan.jpg
Attachments
1.05_custom_language_file.zip
(73.51 KiB) Downloaded 245 times
Last edited by Gumboots on Fri Nov 06, 2015 4:26 pm, edited 3 times in total.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

More test results. I set up a more extensive network with 36 trains. All Berkshires for consistency, and ran them for a year to get the speed records out of the way. Trains that got a speed record were copied and then retired, so all 36 trains were only getting pax revenue according to their pax appeal rating. All trains ran 8 cars on auto consist, with no caboose or dining car.

I stabilised the economy by event so it was always Normal, as well as disabling crashes and breakdowns, to further reduce the number of random variables. I then ran the trains for five years on each pax appeal rating of the new scale, to get comparative figures.

Edit: Ran some more tests last night. Let the game run on maximum speed while I was watching a movie, and increased the test period to fifteen consecutive years. This gave returns for some ratings that more closely matched the nominal revenue multiplier. End Edit.

The None At All rating obviously generated zero pax revenue but did get quite a bit from mail (about 40% of the express total on Acceptable). I subtracted that amount from the express revenue for the higher ratings, to get their actual pax revenue. Some ratings were tested over more than one five year period. The results seem fine. Consecutive runs were within a few percent. Allowing for some scatter in the data points it all seems to fit, with a couple of exceptions.

One exception is the Almost None rating, which nominally gives 20% pax revenue. Since this results in very low amounts per car it is critically dependent on rounding off to get the final payouts. This makes it follow its nominal rating less closely than the others. I have seen it return anything between 19% and 35%. It still has very low returns though, which is the idea, so I think it's ok.

The default 02 00 00 00 hex value (Looks Sharp in the old scale, Looks Nice in my new scale) was also highly variable. This is a standard PopTop setting which I only edited the visible text for. IOW, the change has no effect on the game's coding. This setting is supposed to return 110% pax revenue, but in several runs through it consistently returned around 15% or so more than it should have. It was returning in the 125% to 130% range, which is more than the default PopTop Ultra Cool rating (hex value 03 00 00). This aint right.

Edit: By testing over fifteen consecutive years instead of five, I got the 02 hex value averaging close to what it should: 110% revenue. The 80% setting was still quite variable. It averaged 88% on the five year runs, but 73% on a fifteen year run. This is probably just down to the randomness of trains loading, stopping, and starting, depending on umpteen factors.

It could still be considered a bug in the default pax appeal scale. The ratings are so close together that the revenues generated by adjacent ratings can frequently overlap. It may be better to use a scale with a 20% difference between ratings instead of a 10% difference. This would also simplify the scale, which may not be a bad thing. For example we could do this:

Code: Select all

    ;@gumbootz: Customised passenger (pax) appeal ratings begin here.
    ;           This scale has 20% differences between most ratings.
    ;           Default cargo price of $85k/load may need reduction
    ;           to keep top level revenue inside reasonable limits.
    ;           Run tests between $75k & $85k to find optimum price.
    ;           A complete list of custom pax appeal ratings follows.
    ;           -----------------------------------------------------
    ;           #ID     Rating Name     Revenue     Hex value
    ;           -----------------------------------------------------
    ;           @2705 - Ultra Cool      160%        14 00 00 00
    ;           @2703 - Very Cool       140%        12 00 00 00
    ;           @2688 - Looks Sharp     120%        03 00 00 00
    ;           @2686 - Acceptable      100%        01 00 00 00
    ;           @2697 - Quite Low        80%        0C 00 00 00
    ;           @2695 - Very Low         60%        0A 00 00 00
    ;           @2717 - Minimal          20%        20 00 00 00
    ;           @2718 - Zero              0%        21 00 00 00
This cuts things down to 8 ratings, but raises the top level rating. I'm thinking we could drop the base pax price a bit, so that the Acceptable rating is effectively about 90% and its revenue would closely match the old Ugly rating. "Acceptable" implies a bit "meh" so could be used for a 90% rating applied to mixed traffic locomotives. Ultra Cool would become close to an effective 150%, Very Cool close to an effective 130%. Looks Sharp would effectively stay at the default 110%. I've attached a 1.05 language file for this scheme too.
Attachments
Custom_20_percent_scale_RT3_language.zip
(73.56 KiB) Downloaded 254 times
Last edited by Gumboots on Fri Nov 06, 2015 4:24 pm, edited 1 time in total.
User avatar
RulerofRails
CEO
Posts: 2063
Joined: Sun Dec 08, 2013 1:26 am

Re: Passenger Appeal: testing extra values Unread post

Gumboots, good to see that you are exploring this concept further and bringing your programming knowledge to it. !*th_up*!

Yep, I was messing up the hex for my tests. Ooops. Could be that more numbers are out from that test. !facepalm!

My thoughts were that new passenger appeal ratings would make it strategically important to use the "load any freight" and "load any express" switches. The game should still work while ignoring them all together for the novice player, but the savvy player can setup for a split roster. I would say that 0% is out for this reason.

I feel that passenger numbers and prices are too high by default. I would recommend that only the special Express engines get similar or greater than the current express revenues, with any freight or mixed receiving less. Having extra levels is great, the question then becomes, "what's the best way to use them?"

My current thought is that to use the strategy from these new options the best, we may have to make some loco settings what would be unrealistic in real life. I think we should try to avoid the engines that are good are average-at-everything. I am pretty sure that most players will just use those. Because skill will be required to get the maximum from using a split of dedicated freight and dedicated express, I suspect only the minority of players wil be able to use the dedicated engines to better effect than a potential average-at-everything engine.

I think we have done sufficient testing to show that a great difference in express revenues can be achieved. I would let this rest, until we come up with a solid weight difference setting between express and freight. The mixed stuff is going to be the tricky part. It could be as simple as a lower base price, freights in the 10-20% of current range, mixed in the 50-70% range, and then leaving 100%+ for the express. I supspect we may want to have 3 clustered 10%-seperated ranges for the 3 proposed "classes". Then again a good balance may require using passenger appeal to balance out some of the factors that we will have more trouble adjusting. :-)
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

TBH I think this concept we are slowly developing isn't aimed at novice players. We're trying to make the game more interesting for intermediate to advanced players. Novices can play the existing 1.05 or 1.06 on Easy setting to learn the ropes. Also, setting up a split roster may not be something first time players would do, but it's hardly rocket science either. Personally I wouldn't compromise this for the sake of novices. I reckon we can pretty much go for it with anything that seems like a good idea. !*th_up*!

Anyway yes, I had considered that one thing that might be implemented here is a sort of preset events kit, so you might have all scenario authors automatically throwing in pax production of 80% or whatever. I'm also experimenting with changes in the .cty base price for pax to see how that affects things.

At the moment I'm getting more data together. Doing one or two runs on a particular setting, even when the runs are fifteen consecutive years, doesn't really tell you where your results are on the bell curve. I'm upping it to a minimum of five complete runs of each setting, but will probably end up doing nine or ten just to make sure. This is easy enough since the game just runs flat out while I'm doing other things, and I just pick up the results when that run is finished. Once we have a more solid data set we'll have a better idea of how we can use it in conjunction with other stuff. (0!!0)

Re the zero pax revenue rating: I need it for now anyway so I can get a reliable no-pax-revenue figure for express revenue (ie: mail only) since RT3 doesn't give me any way of getting pax revenue by itself. I have to extract the pax revenue by taking the all-express revenue and subtracting the figure for the mail-only/zero-pax-revenue runs.

Re the 10% separation between levels: what I'm finding with live testing is that due to the vagaries of a working rail system, a 10% separation doesn't ensure that a higher rated loco will actually generate more revenue than a loco one rating lower. It will if you run them both for a million years, but over a decade or so it's anyone's guess. You can easily have 10% variation, or sometimes more, in total revenue over a ten year period. So if you have a loco rated Ultra Cool on the existing scale, half the time it may be making less money than one rated Looks Sharp. Sometimes it may even be making less than a loco rated Acceptable, and I'm not talking abut picking out one or two random trips here. I'm talking about total revenue over a period of several years. So that, along with keeping things relatively non-brain-frazzling, is why I'm thinking we might end up with 20% between ratings, and fewer ratings.

Edit: After more testing, it looks like the spread is generally less than + or - 5%, so on that basis 10% gaps between rating should be ok. The far ends of the bell curve will still screw with revenue sometimes, but on the whole a loco rated 10% higher should give some increase in revenue over reasonable timeframes, although you can't guarantee it and you definitely can't guarantee it will be 10%.
Last edited by Gumboots on Fri Nov 06, 2015 4:15 pm, edited 4 times in total.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

Just figured something out. Changing the base price in the pax .cty file has absolutely no effect on pax revenue.* Even cutting it from $85k/load down to $20k/load leaves revenue unaffected. :roll:

Beats me how anyone is supposed to test the effect if it has none. :-P

*Well, it doesn't when re-running a scenario from a save point.

Edit: Just ran some quick tests on various ideas.
  • I tried quitting the game, editing the base price in the .cty file, rebooting the game, then starting a new game of an existing scenario. Result: no change in pax delivery price.
  • I tried quitting the game, editing the base price in the .cty file, rebooting the game, then creating a new scenario from scratch. Result: no change in pax delivery price.
Conclusion: The base price of pax is fixed, and it is not fixed in the Passengers.cty file. It is probably fixed inside the .exe itself. The result is that the pax base price can only be changed by editor event. It cannot be changed by editing the .cty file.
Last edited by Gumboots on Fri Nov 06, 2015 7:09 pm, edited 4 times in total.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

RulerofRails wrote:I suspect we may want to have 3 clustered 10%-separated ranges for the 3 proposed "classes". Then again a good balance may require using passenger appeal to balance out some of the factors that we will have more trouble adjusting. :-)
Had another thought about this.

We could take the 10% scale I posted earlier and delete three ratings. That would cut the number of ratings down from 12 to 9, which is probably a bit better due to greater simplicity, but still allows far more scope for adjustments than the default scale. It would also allow us to get more definite separation between the three categories of locomotives.

So on the basis that pax revenues are, if anything, already a bit too high we could remove the proposed 140% rating and have a top level of 130%. We could also remove the 100% and 60%. That would leave us with this:

Code: Select all

    ;@gumbootz: Customised passenger (pax) appeal ratings begin here.
    ;           A complete list of custom pax appeal ratings follows.
    ;           -----------------------------------------------------------------
    ;           #ID     Rating Name     Revenue     Hex value       Category
    ;           -----------------------------------------------------------------
    ;           @2702 - Ultra Cool      130%        11 00 00 00     Express
    ;           @2688 - Very Cool       120%        03 00 00 00     Express
    ;           @2687 - Looks Sharp     110%        02 00 00 00     Express
    ;           -----------------------------------------------------------------
    ;           @3173 - Acceptable       90%        00 00 00 00     Mixed Traffic
    ;           @2697 - Tolerable        80%        0C 00 00 00     Mixed Traffic
    ;           @2696 - Quite Low        70%        0B 00 00 00     Mixed Traffic
    ;           -----------------------------------------------------------------
    ;           @2716 - Very Low         50%        1F 00 00 00     Freight
    ;           @2717 - Ultra Low        20%        20 00 00 00     Freight 
    ;           @2718 - Zero              0%        21 00 00 00     Freight
I'm still thinking the Zero rating would be good for the USRA Heavy Switcher and similar locomotives. These are ones which were just never used for express. Perfectly good locomotives for their intended purpose, and even liked by a lot of people*, but recognised to be complete rubbish for express duties.

*This is why I'm inclined to get rid of the default Ugly and use rating names that just indicate suitability for express.
User avatar
RulerofRails
CEO
Posts: 2063
Joined: Sun Dec 08, 2013 1:26 am

Re: Passenger Appeal: testing extra values Unread post

I like the advanced stuff, obviously. I said that because RT3 as a train game relies on the automated parts like auto consist, and industries that produce without player effort. Perhaps this is what average players know and love about it. To keep that idea simple: make the new changes so that the game is still tolerably playable by a player who is nearer the start of the learning progression. Perhaps this is a concept to keep in mind, but with the 0% which would probably only be applied to a handful of locos, and the fact that passenger appeal is a visible change (easily visible when buying a train compared to the weight settings for example), caution got the best of me. Unless we get a better idea later, that progression is looking great so far! !*th_up*!


I have always assumed that this revenue modifier does only that. The random nature of the passenger market in RT3 will always give variable results on a passenger test. Yes, price is dynamic and adjusts based on supply and demand, but I think that this is all calculated by the game BEFORE the revenue modifier is applied. I think the 0% setting and the fact that cars (at 0k profit) will still load on a train based on the "raw" base price is evidence to back this up. The question is: "is the randomness you are seeing sufficiently explained by the general randomness of the passenger market?"

I assumed that you would have to start a new scenario from scratch when making base price changes. I am mystified as to the method of identifying a base passenger price while in-game. I never saw evidence that proves there's a definite base price in every scenario. I am not denying it, and surely there is a fairly solid way to test it. No doubt this is one of the most difficult things to test. I am interested in how the base is found, and as time permits I may give it the attempt myself.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

RulerofRails wrote:The question is: "is the randomness you are seeing sufficiently explained by the general randomness of the passenger market?"
Yes. Definitely. Although there are the far ends of the bell curve cropping up every so often, as you'd expect, generally the spread of revenue is within + or - 5%. Here are actual pax revenue figures for a series of 15 year runs with the default Acceptable rating:

Run 1: $20,028K
Run 2: $19,622K
Run 3: $18,467K
Run 4: $19,002K
Run 5: $19,955K
Run 6: $20,787K
Run 7: $20,103K
Run 8: $19,722K
Run 9: $18,907K
--------------------
Average: $19,621K (call it 100%)
Highest: 105.9% of the average
Lowest: 94.1% of the average
Range: -5.9% to +5.9%

I assumed that you would have to start a new scenario from scratch when making base price changes. I am mystified as to the method of identifying a base passenger price while in-game.
Yeah nothing I can think of works. The price stays resolutely fixed, based on some hidden voodoo. Given that I've already tried every trick I can think of, I've pretty much reached the point where I think any adjustment a scenario author wants to implement would be better done by editor events and/or passenger appeal ratings. We know both of these work, and work in a clear and consistent manner. I say we just use them and forget the obscure voodoo. !*th_up*!

Edit: Of course even a locomotive rated Zero for passenger appeal would still get full price for hauling troops and/or mail, so has some scope for doing reasonably well on mixed traffic. It just wouldn't make any money out of pax.

I ran some figures on this. On my test map with the pile of Berkshires, troops weren't enabled. Express was just pax and mail. Mail was about 40% of the total. If I take the proposed new pax appeal scale and assume all locos in all categories are set to a pure express consist, with pax being 60% of traffic and mail being 40%, then revenues would look like this:

Code: Select all

Rating...........Pax revenue........Mail revenue........Total
---------------------------------------------------------------
Ultra Cool............78................40................118
Very Cool.............72................40................112
Looks Sharp...........66................40................106
Acceptable............54................40.................94
Tolerable.............48................40.................88
Quite Low.............42................40.................82
Very Low..............30................40.................70
Ultra Low.............12................40.................52
Zero...................0................40.................40
So if all are running pure express consists, a Zero would return 1/3 the revenue of an Ultra Cool, and a Tolerable would return 3/4 the revenue of an Ultra Cool (assuming equal turnaround time, so some extra bonus to the Ultra Cool for speed).

Then there's freight. I'm finding that's averaging around 60% of all mixed consist revenue (all Berkshires on the test map are mixed consist). That closes the gap between top and bottom ratings even more. Zero rating on mixed consist should return (40 x 0.4) + 60 = 76. Ultra Cool on mixed consist should return (118 x 0.4) + 60 = 107. On that basis the Zero loco would give mixed consist returns at around 70% of an Ultra Cool, assuming dining car and speed record bonuses aren't applicable. Average mixed consist figures for all categories should be much like this:

Code: Select all

Rating.........Total
---------------------------------------------------------------
Ultra Cool.......107
Very Cool........105
Looks Sharp......102
Acceptable........98
Tolerable.........95
Quite Low.........93
Very Low..........88
Ultra Low.........81
Zero..............76
Even if we assume an Ultra Cool loco will be decked out with a speed record bonus and a dining car, and is capable of hauling 8 car consists at a good speed, that will mean a relative revenue of 149. So a Zero locomotive hauling average mixed consist could still make about half the revenue of your most exotic express loco, although the Zero's lower speed would nobble that a bit. AFAICT these ratings should still keep beginners with mixed consists out of too much trouble, particularly on the lower difficulty settings, while allowing advanced players to get a benefit. !*th_up*!
User avatar
RulerofRails
CEO
Posts: 2063
Joined: Sun Dec 08, 2013 1:26 am

Re: Passenger Appeal: testing extra values Unread post

Tried a 0k setting for passenger revenue and there is NO change. Must be another unused value.

I would be cautious of placing too much importance upon one map's ratio of express vs. freight revenue because passenger supply varies with the era and because passenger and especially mail (tends to be a decrease for mail) production events are one of the more common ones used in current scenarios. Also, the RT3 passenger market needs priming as well as special routing planning and Hotels/Rest. to get it to 100%. In an average game I am not likely to make good utilization of express potential. If I would guess a figure, I would say 60% on the ones where I put some effort into passengers.

Nevertheless, I agree with your conclusion that there will be enough revenue to keep mixed trains running at a profit (with better equalized fuel costs) no matter the situation.

I know you did some extensive research into maintenance costs before. I will have to re-read some of the stuff you wrote, but if I re-call correctly it's better to have maintenance at a lower value if engines need to last a decent lifespan. Maintenance cost is rarely a decision maker for me except to try to get a replacement schedule sorted. Do you think we should have an average lifespan that we want the typical engine to last and then test to make calculations to get the costs of the majority of trains within +5 years or -5 years of this target with the ones that are poor or really good being further out?
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

I didn't really do extensive research on maintenance. I just ran a few quick and basic calculations. If you want a rule of thumb, you can get the optimum replacement point for most locos by dividing the purchase price by the maintenance cost. So if it costs $200k to buy and maintenance cost for the first year is listed as $20k, it'll be cheapest to replace them about every ten years.

This is assuming there is enough time left for the costs to even out. If it's only a couple of years until the end of the game, it's probably cheaper to stick with the old locos. I have meant to get around to whipping up some more comprehensive guidelines, taking into account the time left in the game as well as basic costs, but haven't got around to that yet.

So as a basic rule, if you want locos to have a useful economic life of 20 years they should have a maintenance cost of about 5% of purchase price. That's why I initially set the Schools class beta to $8k maintenance cost for a $160k purchase cost, but that put it pretty far out of line with most existing locomotives. And yes, this does means it's cheapest to throw American 4-4-0's away every 6 years (which is why I do).

People seem to want to keep locomotives as long as possible, and also want to feel they are being clever and saving money by keeping locos as long as possible. I'm not sure how far we should take it. I'm a bit inclined to think that maybe we should aim somewhere around fifteen years. That would mean most locos could be cheap enough to run for a standard 25 year scenario, given they wouldn't all be purchased in the first few years.
User avatar
Gumboots
CEO
Posts: 4825
Joined: Mon Aug 13, 2012 4:32 am
Location: Australia

Re: Passenger Appeal: testing extra values Unread post

Just thinking some more about this, since passengers have been mentioned in another thread and that got me thinking. :-D

Since these changes only involve language file edits (apart from the obvious .lco edits to use the new language strings) we can really use as many ratings as we like. OTOH there's a limit to how many will be useful. Taking the "average all express consists" and "average any cargo consists" that I tested, it now seems to me that the gaps between ratings on the last scale I suggested aren't going to be enough to be meaningful.

The scale was this one:

Code: Select all

    ;@gumbootz: Customised passenger (pax) appeal ratings begin here.
    ;           A complete list of custom pax appeal ratings follows.
    ;           -----------------------------------------------------------------
    ;           #ID     Name            Revenue     Hex value       Category
    ;           -----------------------------------------------------------------
    ;           @2702 - Ultra Cool      130%        11 00 00 00     Express
    ;           @2688 - Very Cool       120%        03 00 00 00     Express
    ;           @2687 - Looks Sharp     110%        02 00 00 00     Express
    ;           -----------------------------------------------------------------
    ;           @3173 - Acceptable       90%        00 00 00 00     Mixed Traffic
    ;           @2697 - Tolerable        80%        0C 00 00 00     Mixed Traffic
    ;           @2696 - Quite Low        70%        0B 00 00 00     Mixed Traffic
    ;           -----------------------------------------------------------------
    ;           @2716 - Very Low         50%        1F 00 00 00     Freight
    ;           @2717 - Ultra Low        20%        20 00 00 00     Freight 
    ;           @2718 - Zero              0%        21 00 00 00     Freight
And the results it gave were these:
Gumboots wrote:

Code: Select all

Rating...........Pax revenue........Mail revenue........Total
---------------------------------------------------------------
Ultra Cool............78................40................118
Very Cool.............72................40................112
Looks Sharp...........66................40................106
Acceptable............54................40.................94
Tolerable.............48................40.................88
Quite Low.............42................40.................82
Very Low..............30................40.................70
Ultra Low.............12................40.................52
Zero...................0................40.................40
So if all are running pure express consists, a Zero would return 1/3 the revenue of an Ultra Cool, and a Tolerable would return 3/4 the revenue of an Ultra Cool (assuming equal turnaround time, so some extra bonus to the Ultra Cool for speed).

Then there's freight. I'm finding that's averaging around 60% of all mixed consist revenue (all Berkshires on the test map are mixed consist). That closes the gap between top and bottom ratings even more. Zero rating on mixed consist should return (40 x 0.4) + 60 = 76. Ultra Cool on mixed consist should return (118 x 0.4) + 60 = 107. On that basis the Zero loco would give mixed consist returns at around 70% of an Ultra Cool, assuming dining car and speed record bonuses aren't applicable. Average mixed consist figures for all categories should be much like this:

Code: Select all

Rating.........Total
---------------------------------------------------------------
Ultra Cool.......107
Very Cool........105
Looks Sharp......102
Acceptable........98
Tolerable.........95
Quite Low.........93
Very Low..........88
Ultra Low.........81
Zero..............76
So 6% differences in total revenue for all express, and 2-3% for mixed consists, doesn't seem like enough of a difference to bother with. It looks like it could do with fewer levels. Also, in reality the 0% rating will probably never be used by anyone, and the game usually avoids multiplying by zero, so it's possible doing that would have an odd effect at times.

The other thing is the naming. Why give it a name that people then have to mentally translate to a multiplying factor? It'd probably make more sense to change the "passenger appeal" to "passenger revenue" or "passenger fare", and just have the rating display as 90% or 110% or whatever, which is what you really want to know.

So the scale could be simplified to this:

Code: Select all

    ;@gumbootz: Customised passenger (pax) appeal ratings begin here.
    ;           A complete list of custom pax appeal ratings follows.
    ;           -----------------------------------------------------------------
    ;           #ID     Name     Hex value       Category
    ;           -----------------------------------------------------------------
    ;           @2702 - 130%     11 00 00 00     Express
    ;           @2687 - 110%     02 00 00 00     Express
    ;           -----------------------------------------------------------------
    ;           @3173 - 90%      00 00 00 00     Mixed Traffic
    ;           @2696 - 70%      0B 00 00 00     Mixed Traffic
    ;           -----------------------------------------------------------------
    ;           @2716 - 50%      1F 00 00 00     Freight
    ;           @2717 - 20%      20 00 00 00     Freight
That should give approximate relative returns of this for "all express" consists (which we'll probably use, due to the lack of "haul anything but"):

Code: Select all

Rating.....Pax revenue.....Mail revenue......Total
---------------------------------------------------------------
130%.......78..............40................118
110%.......66..............40................106
-------------------------------------------------------------
90%........54..............40.................94
70%........42..............40.................82
-------------------------------------------------------------
50%........30..............40.................70
20%........12..............40.................52
And this for "any cargo" consists:

Code: Select all

Rating....Total revenue
---------------------------------
130%......107
110%......102
---------------------------------
90%........98
70%........93
---------------------------------
50%........88
20%........81
Which all looks about right. (0!!0)
Post Reply