[OTTD] 2cc TrainsInNML - Current version: 3.0

Find and discuss all the latest NewGRF releases for TTDPatch and OpenTTD here.

Moderator: Graphics Moderators

Post Reply
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

Thanks supermop, that confirmed what i thought so far. At least you saved me from having to do trial and error.
Transportman
Tycoon
Tycoon
Posts: 2781
Joined: 22 Feb 2011 18:34

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Transportman »

Cadde wrote:IIRC, 2cc trainset (the non NML version) had variable running costs based on current consist speed. If the vehicle was stopped, running costs were low whereas if the consist went faster than one of it's wagons design speeds (required wagon speed limits to be off), running costs would exponentially increase with overspeeding.
Is there any chance of this happening in the NML version?
While the most recent versions do have the code restructured to make adding such a feature more trivial, I have no intention to add such a feature at this moment. Personally I do not see the big added value.
Or, can someone better versed in NML explain to me how to set up that particular callback because i looked around and the documentation is unclear at best on that particular subject. I.E, where does the declaration for "running_cost_factor" go when one wants to use a callback? I assume in the "graphics" block.
And how do i access the current vehicle speed from within the callback?
But if you really want, supermop has given a nice explanation on what it should look like, although I prepared the code in this set to have those pieces of code hidden behind some #defines from C/make, to allow a single point of definition.
Coder of the Dutch Trackset | Development support for the Dutch Trainset | Coder of the 2cc TrainsInNML
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

Transportman wrote:While the most recent versions do have the code restructured to make adding such a feature more trivial, I have no intention to add such a feature at this moment. Personally I do not see the big added value.
I am not forcing anyone's hand here. But allow me to explain why it's useful or at least how it can add to gameplay. Of course, everyone has their own tastes and desires so we should all keep that in mind.

When your profit margins largely rely on whether you deliver some cargo in a timely manner. Say you only have 100 days of transport before you are being paid nickles rather than gold bars for your delivery. Then you are bound to have some trains just waiting around for the opportune moment to deliver that cargo.
While these trains are waiting (not loading, because then the cargo time ticker will tick) they are still costing just as much as they do transporting the cargo. So one could just send them more frequently instead and ignore the fact they don't carry that much cargo at the time.
This ofc also applies to transfers of cargo, where one train is waiting for another to arrive before departing.

So my idea (and even assumption after i switched to the NML version) was that idle trains would cost less while waiting around. And that therefore, trains that aren't fully loaded but still running around like headless chickens, would be less profitable than a carefully orchestrated schedule that minimizes actual travel times and thus maximizes the profits.
Again, i play a VERY different game to most others. Where every thousand credits can make or break an operation. Where not just picking the most powerful/fastest unit makes you more money. You can see my ideology for that in my other thread.

IF i were to implement this (i agree, it's a lot of work) i would also change another aspect that bothers me. The wagon running costs overriding any point in picking a loco that has a good running cost to power or speed ratio.
Because there's really no penalty (aside from initial investment cost) to having more locos on a 60 tile long train as far as running costs go. At least not when breakdowns are set to none which i unfortunately had to resort to because of how monotone setting up timetables is.
Either way, i would make it so the engine (again) stands for the brunt of the running cost of the whole train. Rather than picking an engine that costs 100,000/yr and 4 wagons that brings the total to twice that of the engine running cost.

On a side note, i have already reduced the reliability_decay from 20 to 2 on ALL vehicles in 2cc. As i am playing with "minutes" rather than days, it's kinda odd that a train can't make a 4 hour trip without already being at 50% reliability and having at least one breakdown.
But that had the unfortunate side effect that timetables are not that great when it comes to repeating routes. There's no copy/paste in timetables so i can't set it up so a train goes 22 hours on it's regular service and then spends 2 hours finding one of my very few (and expensive) depots.
Transportman wrote:But if you really want, supermop has given a nice explanation on what it should look like, although I prepared the code in this set to have those pieces of code hidden behind some #defines from C/make, to allow a single point of definition.
Yes, i see what you did. If i were to do that change then ofc i would make use of the defines rather than hardcoding it in each graphics. I just didn't know where to put the declaration for the callback and how to access variables other than "extra_callback_info" but now i see how that works.

Thanks!
User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by NekoMaster »

Honestly I'd prefer having variable running costs, but more like how NARS does it. Trains cost very little when they're stopped at a station, because all they're doing is idling. Trains will cost the most to run when accelerating as their engines are revving up and gunning it to pull a train and thus are burning more fuel, or in the case of Electric trains, they'd be drawing more power and this not only puts a strain on the system but the high current it would be pushing into its system might also wear them down a little.

I think NARS basically had somethig like this for the running costs

Stopped/Idling = 50% of the running cost
Accelerating = 150% of the cost
Running at the trains max speed (so no acceleration or slowing down) = 100% of the running cost.

Also, would it be possible to have trains only cost more when accelerating and not slowing down? The way I see in that code posted a few posts ago, trains running at certain speeds will end up costing the most if its not running at full speed if I set that up.
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

NekoMaster wrote:... Trains will cost the most to run when accelerating as their engines are revving up and gunning it to pull a train and thus are burning more fuel ...
Yes, that's entirely possible to achieve. There's no "acceleration" variable to get at but one can store the previous callback speed in permanent storage and use that to derive the current acceleration of the train.
NekoMaster wrote:I think NARS basically had somethig like this for the running costs

Stopped/Idling = 50% of the running cost
Accelerating = 150% of the cost
Running at the trains max speed (so no acceleration or slowing down) = 100% of the running cost.
I would have it as...
  • 25% when stopped and not loading/unloading. (I.E, no cargo is being moved)
  • 50% when loading/unloading.
  • 150% when accelerating. (but not when slowing down)
  • 100% for everything else.
NekoMaster wrote:Also, would it be possible to have trains only cost more when accelerating and not slowing down? The way I see in that code posted a few posts ago, trains running at certain speeds will end up costing the most if its not running at full speed if I set that up.
Yes, it's of course possible to determine if the train is accelerating vs decelerating. It's also possible to determine how fast it's currently accelerating so a very heavy train could cost even more to accelerate, to the point where having two engines at 150% running cost each vs one running at 300% for longer could be beneficial. And of course make it so wagons aren't taking up the majority of the whole trains running costs. Say, instead of the engine having running_cost_factor 25 and it's wagons having a factor of 12 it could have 100 for the engine and 1-2 for each wagon. Or that's how skewed i find it currently.

The only thing that cannot be detected (AFAIK) is when the train is going up a hill at full throttle. Unless one could abuse the particle effect system somehow? I doubt it.

On a side note, each part of the consist has it's own running cost calculations. It's possible to make wagons cost the same unless loading/unloading for example.
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

Does the Italian FS ETR300 'Settebello' EMU have a typo by any chance? It's supposed to have a max speed of 200 km/h, not 300 km/h?

I would put it on the tracker but i don't feel like making yet another online account for it.
Transportman
Tycoon
Tycoon
Posts: 2781
Joined: 22 Feb 2011 18:34

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Transportman »

Regarding the discussion about running costs: I will consider lowering the wagon and coach running costs, and a system with variable running costs depending on acceleration does sound interesting (at least more interesting than just some penalty for driving above a certain speed). Is there a set that implements such a behavior at the moment? Then I can look at that for the code instead of reinventing the wheel.
Cadde wrote:Does the Italian FS ETR300 'Settebello' EMU have a typo by any chance? It's supposed to have a max speed of 200 km/h, not 300 km/h?

I would put it on the tracker but i don't feel like making yet another online account for it.
Yes it does. I will put it on the tracker for you.
Coder of the Dutch Trackset | Development support for the Dutch Trainset | Coder of the 2cc TrainsInNML
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

I do not know of any NML version of that code off hand. Unless NARS which was mentioned is NML, i doubt it.
But i can give it a try on a particular vehicle and see what i come up with. The reason i haven't done it yet is because i too understand how much work goes into it.

However, i did replace all wagon running costs (all but the powered ones) with "running_cost_factor: 1" using regex. Making an inline conditional using a parameter in it's place would be trivial.
And i then made a small application to replace powered wagons running costs with half of what they were before.
Finally, i added 1/32, 1/64, 1/128, 1/256 and 1x32, 1x64, 1x128 and 1x256 running cost factors in the parameters. I don't know why because after the wagon changes, i am still only running 16 times running costs but i anticipated i would need more for some reason.

But that begs the question, do you keep a database of all vehicles parameters or do you manually edit each and every file? Because i've contemplated reading the files with an application and putting it all into a DB and then auto generating the NML with that application instead. Then, adding running cost callbacks to every file that matters would be trivial. Well, it's kinda trivial already as i can just use DEFINE as you said and just adding the related switches in the respective *_graphics files programmatically but if i were working on such a large set of vehicles from the start, then i would make a GUI for it where changing the vehicle parameters would be easier and i could use the same application to do some other monotone tasks automatically.

However it's not my set, i am just trying to play without OCD'in about certain things. :P
User avatar
Voyager One
Tycoon
Tycoon
Posts: 11204
Joined: 28 Dec 2009 09:47
Location: Rijeka, Croatia

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Voyager One »

Transportman wrote:. Is there a set that implements such a behavior at the moment? Then I can look at that for the code instead of reinventing the wheel.
IIRC, NARS and UKRS use this system, maybe even Michael's DB set as well. Hasn't this been done to the Dutch set too, I can't recall...
Leon

Image Image Image Image
"... all I ask is a tall ship and a star to steer her by..." - John Masefield
Transportman
Tycoon
Tycoon
Posts: 2781
Joined: 22 Feb 2011 18:34

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Transportman »

Cadde wrote:I do not know of any NML version of that code off hand. Unless NARS which was mentioned is NML, i doubt it.
But i can give it a try on a particular vehicle and see what i come up with. The reason i haven't done it yet is because i too understand how much work goes into it.

However, i did replace all wagon running costs (all but the powered ones) with "running_cost_factor: 1" using regex. Making an inline conditional using a parameter in it's place would be trivial.
And i then made a small application to replace powered wagons running costs with half of what they were before.
Finally, i added 1/32, 1/64, 1/128, 1/256 and 1x32, 1x64, 1x128 and 1x256 running cost factors in the parameters. I don't know why because after the wagon changes, i am still only running 16 times running costs but i anticipated i would need more for some reason.

But that begs the question, do you keep a database of all vehicles parameters or do you manually edit each and every file? Because i've contemplated reading the files with an application and putting it all into a DB and then auto generating the NML with that application instead. Then, adding running cost callbacks to every file that matters would be trivial. Well, it's kinda trivial already as i can just use DEFINE as you said and just adding the related switches in the respective *_graphics files programmatically but if i were working on such a large set of vehicles from the start, then i would make a GUI for it where changing the vehicle parameters would be easier and i could use the same application to do some other monotone tasks automatically.

However it's not my set, i am just trying to play without OCD'in about certain things. :P
There is an out-of-date Google docs sheet with vehicle properties, but that is not complete and I didn't update it. However, in recent versions of this set (nightly only, I should make a proper alpha release one of these days) things like running costs are already in a DEFINE, although the DEFINE is empty for the callbacks and only sets the cost properties based on the other vehicle properties.
Voyager One wrote:
Transportman wrote:. Is there a set that implements such a behavior at the moment? Then I can look at that for the code instead of reinventing the wheel.
IIRC, NARS and UKRS use this system, maybe even Michael's DB set as well. Hasn't this been done to the Dutch set too, I can't recall...
The Dutch set does not have this, but I'll have to check NARS and UKRS for this at a later moment.
Coder of the Dutch Trackset | Development support for the Dutch Trainset | Coder of the 2cc TrainsInNML
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

Yeah but i meant more like for automation. Not manually updating.

Either way, i am currently ankle (soon to be knee) deep in code to mass implement all the changes I want to see in 2ccts. However, i am going to have to disappoint you (for now at least) as i am NOT planning to do it the "#define" way at the moment.
It is of course possible to do so! But for a start, i am just looking to implement the changes i want in the fastest possible manner so i can keep playing...

Main goal here is to implement variable running costs based on current speed alone. (at least for a start)

Basically, if a loco has a running_cost_factor of 100, a max speed of 200 and it's current speed is 20 km/h. Then the following will happen in a switch...

Code: Select all

return current_speed * 100 / max_speed * running_cost_factor / 100;
or in numbers...
return 6 * 100 / 56 * 100 / 100; // = 10.7142857143
Now you may ask, why the multiplication by 100 on "current_speed"? Because otherwise it would for example divide 6 by 56 and return 0 rather than 10 or 11 because of integers. Also, it could very well be 5 and 55 for current and max speed respectively. I don't know and i don't care to look at sources.
And in case you are wondering, current and max speed variables are in meters/s, not km/h. Mathematically, the result should be exactly 10. But i am purrty sure that current and max speed variables are ints, not floats. So i am working from that assumption. And either way, the result of this operation surely is cast to an int either way so there's bound to be some rounding/flooring.

Of course, it's "trivial" to store current speed in PSTO and compare with the last stored value and do acceleration based running costs instead. I just find it more natural to have a linear curve. Of course, an exponential curve is also possible but i am fed up with math as it is.

btw, the "running_cost_factor" in the above formula has to be hardcoded as there's no "original_running_cost_factor" to use here. Nor is there even a variable for the current factor applied. Sure, a define can do that but like i said, i just don't wanna go that far yet because i am already coding automated replacements and i don't want to involve another step in that procedure.

BTW BTW... I hate makefiles. Compiling without using make takes around 6 seconds. Using make it takes 15-20 or more seconds! I hate waiting for pointless garbage to finish.
Yes, i am re-implementing my own compile process because of that.

Anyways, back to coding!

EDIT: I am actually quite proud of myself. :P

Attaching screenshot to brag about how silly i can get.
No, i am not done doing replacements. I am merely testing something in the compiled GRF.
Attachments
2cc trainset powered wagon running cost.vshost_2017-06-18_04-04-54.png
(59.74 KiB) Not downloaded yet
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

I've run into a little problem. Not major in any way but it seems current_speed is not set/valid when doing the running_cost_factor callbacks on wagons. Only on engines.
So apparently, i cannot make wagons have dynamic running costs. And no, i didn't know at the time but permanent storage is only valid for towns, industries, airports and objects.

I am sure the old 2cc solved this with hardcoded speeds in the action2 chain somehow. I.e, the locomotive made use of count_veh_id and if > 0 then one of said wagons was on the consist and the lowest of those hardcoded speeds would be used.

Also, the formula in my previous post was incorrect. Don't use that. ;)

EDIT: Or, technically i could have dynamic running costs on wagons if i count the number of wagons on the train by ID like i said above. But that is taking things waaaay to far down the rabbit hole for me.
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

I honestly truly don't know if this is correct. I need to test it thoroughly to be sure.
And i don't even know if the diff file is correct.

And there are some dangling language entries (because no dynamic wagon running costs possible as i said) and the switches all have dynamic running cost code in them despite not all of them being able to work with it.
Yes, i can make it prettier but to be frank i don't give a hoot. My code simply takes a clean source and slaps on running cost stuff.

But anyways, here's what my little mass replace program produced in the end...

EDIT: Oh yeah, keep in mind that the vehicle info window is not dirtied by this callback. You have to make it redraw to see the values update. Simply clicking the titlebar or the info button will refresh it.
Attachments
2cc nml caddelito.diff
A massive diff
(1.28 MiB) Downloaded 128 times
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

First of all... I am STUPID. STUUPEEEHD!

current_speed and max_speed and even current_max_speed is available... If only i use PARENT rather than SELF on the switches.

And secondly, the diff i provided has a little bug. In that it doesn't provide a proper running_cost_factor in the purchase list. I've added that now though!

Either way, dynamic running costs for locos, coaches, wagons and powered/unpowered wagons incoming!

Here: https://github.com/TheCadde/OTTD-2cc-in ... /0.1-alpha

(diff file exists in that location as well)

Code: Select all

2.0 ala CADDE - alpha 1 (19/06/2017)
-----------------------
- Add: New (optional) dynamic (speed based) running cost behavior for locomotives, coaches and regular, powered and unpowered wagons.
- Add: Modifiable running costs for locomotives, coaches and regular, powered and unpowered wagons as a percentage of the default values.
- Add: Modifiable reliability decay.
- Add: Parameters for the above mentioned additions. (NOTE: This requires a complete reload of the GRF, no NOT use this GRF on an existing save!)
- Changed: Modified loading speed of coaches. They used to be "Intercity" with a default value of 16 but now have a default value of 12. Coaches are slower to load now.
- Fix: Italy FS ETR300 Settebello max speed was incorrectly set at 300 km/h, it's now 200 km/h.
And here's the C# app that i crudely made to make these changes: https://github.com/TheCadde/OTTD-2cc-in ... /0.1-alpha

Cry me a river if it's not to your tastes. I meant to make these changes for myself. :D
That includes the application that makes the changes! You would have to compile it yourself if you want to use it for other changes. Or ask me.
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

I wanted to try something more complex than just linear running costs. So i made some math happen...

Sorry about the huge image!
Image

Before me move on, let me just drop this code here...

Code: Select all

var t0 = param_TYPE_running_cost == 0 ? 0 : VEHICLE_ID_running_cost_factor * 10000 / (10000 / param_TYPE_running_cost) / 100;
var t1 = param_running_cost_dynamic_idle_percentage == 0 ? 0 : t0 * 10000 / (10000 / param_running_cost_dynamic_idle_percentage) / 100;
t0 and t1 are temporary storages that i intend to use.

Basically, i am adding options instead of booleans for dynamic running costs. As you can tell from the image, the running_cost_factor would depend on what mode one has chosen.
Where "None" is the same as not running with dynamic running costs. It simply returns the value of t0.
Linear is the same as before, going from zero (or parameter bound) to original running cost.

Code: Select all

res = Min(255, Max(0, Max(t1, current_speed * 100 / max_speed * t0 / 100)));
Then i've added four curves. Here be math code for now...

Code: Select all

linearity = 200;
res = Max(0,
            Min(255,
                Max(t1,
                    Min(t0,
                        (t0 + 1) *
                        ((1000000 - linearity * 1000000 / (current_speed + linearity)) /
                        (1000 - linearity * 1000 / (max_speed + linearity))) / 1000
                    ))));
Linearity values are 200, 50, 10 and 2 respectively for the different curves.

Finally, an acceleration based mode. If you are going faster than 1 km/h and slower than your current max speed then running costs are multiplied by 1.5. That simple.

Code: Select all

res = Max(0,
            Min(255,
                current_speed < 1 ? t1 : current_speed < current_max_speed ? t0 * 150 / 100 : t1
            ));
Here's another huge image (sorreeeh!)
Image

As you can tell, depending on the parameters set and the train's properties, things change a bit.
Notably, how the running cost percentage parameters affect the final results.

If you are #hyped about this then let me know. I get the feeling i am wasting my time sharing these bits and bobs.
Transportman
Tycoon
Tycoon
Posts: 2781
Joined: 22 Feb 2011 18:34

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Transportman »

Cadde wrote:I wanted to try something more complex than just linear running costs. So i made some math happen...
If you are #hyped about this then let me know. I get the feeling i am wasting my time sharing these bits and bobs.
I personally think it is a lot of work with little gain. Once you got your game running past the starting phase, running costs aren't that big of a factor anymore, as you get way more income. And if income is 100, and running costs vary between 1 and 20, it doesn't really matter (numbers purely for illustrative purposes).
Coder of the Dutch Trackset | Development support for the Dutch Trainset | Coder of the 2cc TrainsInNML
Cadde
Transport Coordinator
Transport Coordinator
Posts: 290
Joined: 07 Oct 2004 12:51

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Cadde »

Transportman wrote:
Cadde wrote:I wanted to try something more complex than just linear running costs. So i made some math happen...
If you are #hyped about this then let me know. I get the feeling i am wasting my time sharing these bits and bobs.
I personally think it is a lot of work with little gain. Once you got your game running past the starting phase, running costs aren't that big of a factor anymore, as you get way more income. And if income is 100, and running costs vary between 1 and 20, it doesn't really matter (numbers purely for illustrative purposes).
You are of course entitled to your opinion but i can assure you that in my game, with my custom profits for all cargoes which depend on several factors, running costs do matter. Picking the right locomotive for the job can make or break a route and then you've wasted a lot of effort for nothing.
Sure, at some point when you have enough profitable routes set up you still end up with a large cash flow. But to get there it's not just a matter of (in my game at least) setting up a few coal->power plant routes and calling it a day. I am not currently playing with inflation on because i need to find good base values for all my stuff first but when i turn on inflation, NOT making economically sound routes can even lead you to ruin.

For me, the game is so much more than just dragging a train route from industry A to industry B and slapping on the fastest and most powerful train and waiting for it to make 50 million a year.
In my game, my most profitable vehicle is a passenger train that is hauling passengers some 500 tiles, it only makes 1 mil (after running costs) a year with a running cost of 2.4 mil a year. Yes, that's right... It's not a diagonal end to end route across the whole map because cargoes have diminishing returns over distance.
Either way, if i had all powered wagons on the train then the train would cost 3.7 mil a year to run. And the way i have it set up currently, that particular train waits at a terminus station (no loading) for the right time to embark down the line. If it cost money during that waiting time it would become unprofitable. I already checked. I haven't really picked the right train for the job either at the moment. It's too long, running at 50% capacity most of the time.

It's actually great fun having to consider which train to operate for a particular route in terms of power, running costs and speed. Min Maxing every little aspect to squeeze out that last mil per year. And that also includes minimizing the amount of time spent traveling between stations. Not necessarily for increasing profits on the delivered cargo, but to minimize the amount of time spent accelerating down the line.
Which is why i wanted exponential curves rather than linear ones. Because in linear mode, it doesn't really matter if the train is going 80 km/h or 120 km/h. Now it really does matter though as you can see from the graphs. Running a train at 80 means it's going to take longer to arrive and still cost about as much as it would going at 120. Running an underpowered train makes no sense because again, it's going to waste a lot of time in the running cost phase. While running an overpowered train will have additional running costs because of it's base running cost factor.

...

"A lot of work for little gain." Well, i did the work. And i find the gains to be well worth it for me. I am currently playtesting everything, then i'll make another release with the new parameters added.
The only waste of time i've had so far is posting about it here. I don't really mind, but if no-one is going to be using it i might as well save me the trouble of posting and keep it to myself.
Alberth
OpenTTD Developer
OpenTTD Developer
Posts: 4763
Joined: 09 Sep 2007 05:03
Location: home

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Alberth »

Cadde wrote:For me, the game is so much more than just dragging a train route from industry A to industry B and slapping on the fastest and most powerful train and waiting for it to make 50 million a year. ...
I don't think anyone regularly playing does that. Yes I build such railways between industries, but I don't care about money.
For me the challenge is to connect entire industry chains, and at every industry make a smooth running operation even when you process thousands of units / month there.

Cadde wrote:... "A lot of work for little gain." Well, i did the work. And i find the gains to be well worth it for me. I am currently playtesting everything, then i'll make another release with the new parameters added.
The only waste of time i've had so far is posting about it here. I don't really mind, but if no-one is going to be using it i might as well save me the trouble of posting and keep it to myself.
There are a lot of different ways to play the game, and one way is not better or worse than another way, it's just a difference in focus.

I am sure there is an audience for your graphs and calculations. At the same time, it's a small fractions of the community, due to the zillion different ways that the game can be played.
Being a retired OpenTTD developer does not mean I know what I am doing.
Wahazar
Tycoon
Tycoon
Posts: 1451
Joined: 18 Jan 2014 18:10

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Wahazar »

This set have a huge flaw: many locomotives have engine life 2x longer than model life (for example 40 years of engine life vs. 20 years of model availability, in contrary to original openttd vehicles which have longer availability and shorter vehicle life).
It is very harsh to use this set while vehicle breakdowns are enabled, because engine have below 50% of reliability during most of their life. Additionally, option "replace when old" is completely useless.
May I ask to fix this issue?
The best option is to add 20 years to each model lifespan and additional "retire_early 20" line. Effectively locomotives would be available as it was previously, but reliability protection will be expanded, so at least locomotives purchased at the beginning of the offer should have chance to work properly until old.
Formerly known as: McZapkie
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, wired, ECS industry extension, V4 CEE train set, HotHut.
Another favorite games: freeciv longturn, OHOL/2HOL.
Transportman
Tycoon
Tycoon
Posts: 2781
Joined: 22 Feb 2011 18:34

Re: [OTTD] 2cc TrainsInNML - Current version: 2.0-alpha1

Post by Transportman »

McZapkie wrote:This set have a huge flaw: many locomotives have engine life 2x longer than model life (for example 40 years of engine life vs. 20 years of model availability, in contrary to original openttd vehicles which have longer availability and shorter vehicle life).
It is very harsh to use this set while vehicle breakdowns are enabled, because engine have below 50% of reliability during most of their life. Additionally, option "replace when old" is completely useless.
May I ask to fix this issue?
The best option is to add 20 years to each model lifespan and additional "retire_early 20" line. Effectively locomotives would be available as it was previously, but reliability protection will be expanded, so at least locomotives purchased at the beginning of the offer should have chance to work properly until old.
Thanks for the report, I already had the idea that the lifetimes were a bit weird, but that is not the intention. I hope to get some time to fix that (along with several other issues).
Coder of the Dutch Trackset | Development support for the Dutch Trainset | Coder of the 2cc TrainsInNML
Post Reply

Return to “Graphics Releases”

Who is online

Users browsing this forum: No registered users and 17 guests