Panando wrote:It actually wouldn't be hard to make a patch. It would just entail modifying the function 'GetTransportedGoodsIncome' in economy.cpp
Where it currently says:
Code: Select all
return BigMulS(dist * time_factor * num_pieces, cs->current_payment, 21);
Would be changed to something like:
Code: Select all
return BigMulS((5 + dist / 2) * time_factor * num_pieces, cs->current_payment, 21);
That change would generally halve the payment, but add a 'handling fee' equivalent to delivering a distance of 5 tiles (10 tiles at the halved rate).
So at a technical level, it's not hard to modify the formula - it also wouldn't be particularly difficult to add an option. The issue is thus not a technical one, but rather a problem of reaching agreement.
It will take less than a week until someone will claim "dist / 2" is not good, it has to be "dist / 3" (or "2 * dist / 3", etc etc).
Since the original formula was designed for 256x256 maps, your new formula will break game play at other (probably mostly smaller) map sizes. If you invent a new formula, it has to work everywhere, not just for your style and mapsize.
As for reaching agreement, it's impossible. OpenTTD is a game that everybody plays in a different way, with different focus. Different game play styles have different needs for this formula. In other words, while in your game play style, the formula may be considered broken, other styles require the formula as it is, or an entirely different one. Any change has to cover the needs of everyone. (Else it becomes a game of repeatedly replacing some random formula by some random other formula, a game that can be played forever, but tires very quickly.)
Panando wrote:Incidentally I disagree most strongly with implementing something like this as a game script. The reason is that at present (and I don't know if it's ever intended to change) only one GS can be used at a time.
I find this a very weak argument. I fully agree the current situation is not optimal. Iirc, the reason to limit the GS to a single script was that at the time, it was completely unclear whether it would have any use beyond the game tutorial, there is only one world to control so how many game scripts would you need?, and there is the issue of conflicting game scripts (one game script wants X, another wants Y, where X != Y), how do you solve that other than by integrating both scripts into one?.
On the other hand, I think payments is a world-wide problem, where you need to have an overview of the overall goal and situation. A game script is exactly aimed at that area.
As a counter question, how would you ever make a game script that does control payment then? (Think eg a ContractGS, where the player gets paid only for contracts he makes.)
Panando wrote:If someone already has a 'must have' GS to shore up some weak point in the game mechanics, such as a city growth GS then they can't use a payment model GS.
I think you're underestimating flexibility of scripts. If you make access to this payment formula available to a game script, scripts will change, and adopt the new possibilities. It's quite likely that city growth scripts will extend to payments if they can do that.
How are you going to ever manage a script with combined city growth and payments in your do-not-make-payment-tweakable-in-game-script solution?
As a note, I very much doubt "dist" is the only thing one would want to change. There are probably many more hooks in the financial sub-system that are of interest for game scripts in general (ie all players, not just city growth players). The trick is going to be to make a scripting interface with enough hooks and tweaking options that everybody can make his economic model.
Panando wrote:It seems to me that the point of a Game Script is not really for fixing gameplay mechanics.
I don't see the current gameplay mechanics as broken. Play a traditional (no newgrf, and other fancy settings) game at 256x256, and you'll find the mechanics work quite nicely.
Build a big network, with focus on 'build', and the finances work out nicely too, since the only criterium is to have enough money to build anything that is desired. The current payment model works fine for that.
In your style of playing, the payment is sub-optimal, perhaps a lot. That does
not make it broken in the general sense, it just shows there should be additional tweaking options to improve the game-experience for your style of playing.
Being a retired OpenTTD developer does not mean I know what I am doing.