[GS] Goal Based City Growth
Posted: 10 Dec 2016 23:53
I discovered OpenTTD a month or two back and have been enjoying re-exploring the Transport Tycoon world. I've always thought the town growth aspect of the original too artificial though, so I started exploring town growth limiter scripts, and quite liked the Renewed City Growth script. I also prefer a focus rather than be pure sandbox, and explored the Busy Bees script to that end. But I wanted both, and I wanted to introduce other concepts like penalties for not meeting a goal, having town growth goals, a win/loss condition to prompt me to go to bed, and other such.
Before I go any further, my thanks to everyone who's worked on these, and other scripts, in the past - they've amped the game considerably!
Anyway, I took on the task of merging the Renewed City Growth and Busy Bee scripts, and then tailoring it to taste. The following is an extract from Readme which describes how the script works:
This script is a blend of Renewed City Growth and a re-worked version of the Busy Bee goals concept. It supports three Baseset industries (Temperate, Arctic, Tropical) and the 5 FIRS economies provided in v2.1.3.
You may define much of how you'd like the goals to work via the parameter settings, allowing you to construct the type of game you enjoy the most. Goals come in two forms - major and minor. Major goals do not expire and generate no penalties. Minor goals have an expiry date, and each expired goal will cost you 1% of your balance each month.
The goals page will keep a count of goals met and expired. It will declare the game "won" if:
- all major goals have been met (if you've chosen to have them), and
- the requisite number of minor goals (if you've chosen to have them) have been completed (10/20/30 at easy/medium/hard level), and
- more goals have been completed than have expired.
MAJOR TOWN GROWTH GOALS:
A number of major town growth goals will be created at the start of the game equal to the setting you choose. Each will randomly pick a town
and require you to build it to a population of 20k (at easy level), 30k (medium) or 40k (hard).
MAJOR RAW MATERIAL CARGO PICKUP GOALS:
A number of major raw material cargo goals will be created at the start of the game equal to the setting you choose. Each such goal will choose an industry type that generates a cargo at the start of the game that doesn't require input cargo (eg Coal Mines produce coal without requiring an input). It will sum up the total production of all industries in that industry type (eg all Coal Mines) and require you to deliver, over a 12 month period, an average of 50% of that total production. To anywhere you like. Also ...
If you choose to have vertically integrated goals (which is the next setting), the game will then attempt to generate a major goal for a "processing" industry type that accepts the initial goal's raw material (eg a Steel Mill requiring coal). It will choose one of its output cargoes
(eg metal) and generate a major goal requiring you to deliver a bunch of that cargo anywhere on the board (75% of the initial goal's figure).
If you choose to have 2 vertically integrated goals, it will then attempt to create a third major goal, finding a processing industry that accepts the cargo from the second goal, and generating a goal to deliver output from this new industry type. And if you choose 3 vertically integrated goals, it will attempt to create a fourth major goal, along the same lines.
In other words, it's leading you to (for example) get coal to the steel mill, the steel mill's metal to a metal workshop, the workshop's goods to a port, and the port's engineering supplies to ... vertical integration. It doesn't restrict you to that specific chain, but it'll make each
vertical integration goal easier to achieve if you configure your transport network along those lines.
If you choose to have more than one raw material cargo pickup goal, each such goal will generate its own chain, meaning there could be up to 3
extra goals generated on top of each raw material goal.
Each industry type can only have one cargo pickup goal associated with it (we wouldn't want to make it too easy), meaning the more goals you generate, the fewer vertical chains will be found.
Note that this process completely ignores the map and how close / far apart industries are from each other. The bigger the map, the longer and harder each cargo pickup goal will be. In this way, you choose your own difficulty level, in the same way that choice of terrain hilliness affects the difficulty of all goals.
MINOR GOALS:
If you've chosen to have minor goals, these are constructed using the original Busy Bee process. It takes map distance and existing production into account, and asks you to deliver this much cargo (set randomly within a range of 250-2500) to an accepting site by a given date (which is
semi-random, and will be a year earlier on hard mode and a year slower on easy mode). If some goals prove impossible ... c'est la vie.
Minor town growth goals will ask you to grow a random town by 10-20%. If they aren't of interest, you can adjust the weighting settings so as to generate cargo delivery goals only by setting the percentage chance of a goal being a town growth goal setting to 0. If you want all goals to be
town growth goals, set it to 100.
MODES:
Some of the modes of play available through the settings therefore are:
- Major town growth goals only
- Major vertical integration pickup cargo goals only
- Minor goals only
- A mix of any and all of the above, in any proportion you like.
Note that there's a limit of 32 goals at any one time, which is apparently a hard-wired limit in the game.
SIGNS
Once a game is underway, you can manipulate the creation of goals by creating signs (anywhere on the map). At year end, it'll look for these
as follows:
- If there's a sign with the exact text "stop minor goals", it won't create any minor goals at year end. This state will continue as long as the sign
exists. When you're ready for them to start up again at future year ends, destroy the sign.
- For each sign with the exact text "create major town goal", it will create one major town growth goal.
- For each sign with the exact text "create major cargo goal", it will create one major raw material cargo pickup goal, plus associated vertical integration goals per the original parameter setting.
Remember to destroy the signs after year end, otherwise they'll trigger again at the following year end ... unless that's what you want. I included these features because once the game was "won" I usually wanted to ditch the minor goals but get another major goal and take advantage of my network. But given the game is a sandbox, I think it's a nice feature to be able to modify the game after it's started to how you'd most like to enjoy it, without being over restrained by the original settings or by my hardcoding it how I like it.
The RCG town growth aspect is identical to the original, so I won't repeat what it does here.
Personal notes: I've developed this for personal satisfaction and play. I don't play multiplayer or with AIs so haven't tested it under those conditions. Nor have I strenuously tested it for all test-cases. But it's been working for me and for how I play, so hopefully it will do the same for you. Anyway, I freely donate it to all. If anyone wants to pick it up and develop it further, or officialise it / upload it to bananas / whatever, please feel encouraged to do so. If anyone has an idea for a feature I think I'll enjoy, and I have time, I'm open to spending more time on the script. But it's also now at a point I'm happy with.
As such, if you'd like to try/test, I've attached a zip file of the directory (and its content) that's to be placed in the c:program files\openTTD\game\ ... directory. You'll probably need to download/install RCG first because it installs the superlib thing that's required. Other than that, I have little idea about how all this stuff works, being a newbie, so hopefully more experienced guides can help.
Version 2: incorporates cargo pickup and associated vertical integration goals
Version 3: incorporates terraforming Mars scenario, and increased parameterisation
Version 4: updated to work with FIRS. Also:
- modified the parameters for city growth to start wanting new categories at 5000, 8000, 10000, and 12000 (to stop the free pass in the first category for cities that start at a decent size, and making it more size-appropriate for a goal of 20000).
- some modifications to what cargos go into which category, for better thematic matching.
Before I go any further, my thanks to everyone who's worked on these, and other scripts, in the past - they've amped the game considerably!
Anyway, I took on the task of merging the Renewed City Growth and Busy Bee scripts, and then tailoring it to taste. The following is an extract from Readme which describes how the script works:
This script is a blend of Renewed City Growth and a re-worked version of the Busy Bee goals concept. It supports three Baseset industries (Temperate, Arctic, Tropical) and the 5 FIRS economies provided in v2.1.3.
You may define much of how you'd like the goals to work via the parameter settings, allowing you to construct the type of game you enjoy the most. Goals come in two forms - major and minor. Major goals do not expire and generate no penalties. Minor goals have an expiry date, and each expired goal will cost you 1% of your balance each month.
The goals page will keep a count of goals met and expired. It will declare the game "won" if:
- all major goals have been met (if you've chosen to have them), and
- the requisite number of minor goals (if you've chosen to have them) have been completed (10/20/30 at easy/medium/hard level), and
- more goals have been completed than have expired.
MAJOR TOWN GROWTH GOALS:
A number of major town growth goals will be created at the start of the game equal to the setting you choose. Each will randomly pick a town
and require you to build it to a population of 20k (at easy level), 30k (medium) or 40k (hard).
MAJOR RAW MATERIAL CARGO PICKUP GOALS:
A number of major raw material cargo goals will be created at the start of the game equal to the setting you choose. Each such goal will choose an industry type that generates a cargo at the start of the game that doesn't require input cargo (eg Coal Mines produce coal without requiring an input). It will sum up the total production of all industries in that industry type (eg all Coal Mines) and require you to deliver, over a 12 month period, an average of 50% of that total production. To anywhere you like. Also ...
If you choose to have vertically integrated goals (which is the next setting), the game will then attempt to generate a major goal for a "processing" industry type that accepts the initial goal's raw material (eg a Steel Mill requiring coal). It will choose one of its output cargoes
(eg metal) and generate a major goal requiring you to deliver a bunch of that cargo anywhere on the board (75% of the initial goal's figure).
If you choose to have 2 vertically integrated goals, it will then attempt to create a third major goal, finding a processing industry that accepts the cargo from the second goal, and generating a goal to deliver output from this new industry type. And if you choose 3 vertically integrated goals, it will attempt to create a fourth major goal, along the same lines.
In other words, it's leading you to (for example) get coal to the steel mill, the steel mill's metal to a metal workshop, the workshop's goods to a port, and the port's engineering supplies to ... vertical integration. It doesn't restrict you to that specific chain, but it'll make each
vertical integration goal easier to achieve if you configure your transport network along those lines.
If you choose to have more than one raw material cargo pickup goal, each such goal will generate its own chain, meaning there could be up to 3
extra goals generated on top of each raw material goal.
Each industry type can only have one cargo pickup goal associated with it (we wouldn't want to make it too easy), meaning the more goals you generate, the fewer vertical chains will be found.
Note that this process completely ignores the map and how close / far apart industries are from each other. The bigger the map, the longer and harder each cargo pickup goal will be. In this way, you choose your own difficulty level, in the same way that choice of terrain hilliness affects the difficulty of all goals.
MINOR GOALS:
If you've chosen to have minor goals, these are constructed using the original Busy Bee process. It takes map distance and existing production into account, and asks you to deliver this much cargo (set randomly within a range of 250-2500) to an accepting site by a given date (which is
semi-random, and will be a year earlier on hard mode and a year slower on easy mode). If some goals prove impossible ... c'est la vie.
Minor town growth goals will ask you to grow a random town by 10-20%. If they aren't of interest, you can adjust the weighting settings so as to generate cargo delivery goals only by setting the percentage chance of a goal being a town growth goal setting to 0. If you want all goals to be
town growth goals, set it to 100.
MODES:
Some of the modes of play available through the settings therefore are:
- Major town growth goals only
- Major vertical integration pickup cargo goals only
- Minor goals only
- A mix of any and all of the above, in any proportion you like.
Note that there's a limit of 32 goals at any one time, which is apparently a hard-wired limit in the game.
SIGNS
Once a game is underway, you can manipulate the creation of goals by creating signs (anywhere on the map). At year end, it'll look for these
as follows:
- If there's a sign with the exact text "stop minor goals", it won't create any minor goals at year end. This state will continue as long as the sign
exists. When you're ready for them to start up again at future year ends, destroy the sign.
- For each sign with the exact text "create major town goal", it will create one major town growth goal.
- For each sign with the exact text "create major cargo goal", it will create one major raw material cargo pickup goal, plus associated vertical integration goals per the original parameter setting.
Remember to destroy the signs after year end, otherwise they'll trigger again at the following year end ... unless that's what you want. I included these features because once the game was "won" I usually wanted to ditch the minor goals but get another major goal and take advantage of my network. But given the game is a sandbox, I think it's a nice feature to be able to modify the game after it's started to how you'd most like to enjoy it, without being over restrained by the original settings or by my hardcoding it how I like it.
The RCG town growth aspect is identical to the original, so I won't repeat what it does here.
Personal notes: I've developed this for personal satisfaction and play. I don't play multiplayer or with AIs so haven't tested it under those conditions. Nor have I strenuously tested it for all test-cases. But it's been working for me and for how I play, so hopefully it will do the same for you. Anyway, I freely donate it to all. If anyone wants to pick it up and develop it further, or officialise it / upload it to bananas / whatever, please feel encouraged to do so. If anyone has an idea for a feature I think I'll enjoy, and I have time, I'm open to spending more time on the script. But it's also now at a point I'm happy with.
As such, if you'd like to try/test, I've attached a zip file of the directory (and its content) that's to be placed in the c:program files\openTTD\game\ ... directory. You'll probably need to download/install RCG first because it installs the superlib thing that's required. Other than that, I have little idea about how all this stuff works, being a newbie, so hopefully more experienced guides can help.
Version 2: incorporates cargo pickup and associated vertical integration goals
Version 3: incorporates terraforming Mars scenario, and increased parameterisation
Version 4: updated to work with FIRS. Also:
- modified the parameters for city growth to start wanting new categories at 5000, 8000, 10000, and 12000 (to stop the free pass in the first category for cities that start at a decent size, and making it more size-appropriate for a goal of 20000).
- some modifications to what cargos go into which category, for better thematic matching.