I'm suggesting an option here to prevent the closure and opening of Industries during the game. It has gotten quite a lot of text, i hope yoou don't mind

1. What is this Suggestion all about?
I (and hopefully many more) would like to see a new option in the game, which, if triggered, will prevent industries from closing down during the game and new ones from opening.
Currently, primary industries (such as coal mines) have a chance to close down when the cargo they produce is not being transported, and their production level is very low. Secondary industries (such as steel mills or factories) in contrast have a chance to close down when no cargo is being delivered to them. Also, during the game, both new primary and secondary industries appear randomly on the map.
If this suggestion gets implemented, you will be able to control these behaviours of the industries. There would be two options:
1) The first one would control if industries are allowed to close down, you could choose whether
- you want to use the old behavior, which means that all industries may close down as usual,
- you want to prevent only primary industries from closing down,
- you want to prevent only secondary industries from closing down or
- you want to prevent all industries from closing down.
- you want to use the old behavior, which means that new industries will be generated as usual,
- you want to prevent only primary industries from being generated,
- you want to prevent only secondary industries from being generated or
- you want to prevent all kind of industries from being generated.
2. Why is this feature useful?
There are quite a few situations, where a feature such as this would prove to be very useful:
1) You start a new game on a quite big map. You start with setting up a moneymaker, for example by transporting coal or flying passengers from one end of the map to the other. Then you start building a big network for your trains, which takes you ten or twenty years in the game. By the time you are ready to connect industries via your network, a lot of industries have already closed down, and there are few left to connect. If you have hauled coal to generate income, you will have a lot of coal mines left, but few other industries. This situation is very common in OpenTTDCoop-Games, but other players might experience that problem as well. With this new feature, you could “freeze” the starting conditions while building your network.
2) You want to create a heightmap, let’s say of Germany. You create the map and start placing all the towns. To inject some realism, you try to place industries at places where there are also ones in real life. There would be a lot of coal mines and steel mills in the Ruhr-Area, and a lot of farms in the North-East. However, as soon as you start your game, industries will start closing down, and new ones will open – but not where you would like them to be, but randomly spread around the map, destroying you well-designed scenario, which you could prevent with this feature.
3) You want to create a competitive map.
- a) You create a scenario, which might be very challenging due to the terrain, or which includes some special task the players have to solve, like transporting 80% of all the cargo and passengers. When you hand it out to the players and they start to play, they all have the same conditions at the start. However, some might be lucky, and a lot of primary industries will close down, so that they have less to connect, while others might be bombarded with new industries. That makes it a lot harder to compare their results. Here the feature of disabling the closure and opening of industries would be useful to grant all players the same chances, and make the competition based less on luck.
- b) You create a map, which you divide in four pieces, which all have the same or at least a similar setup. Each player gets his quarter of the map and has to build up his company on it. While at the start the conditions are perfectly equal for all players, soon new industries will open randomly on the map. Now one player might get a lot of new industries on his quarter, while another one gets none. Again, this feature would be useful to provide the same conditions for all players throughout the whole game.
3. Is there no way that feature can be simulated at the moment?
Well, there are some possibilities to simulate that feature I suggest in some parts, however, they are all not very good:
1) To “prevent” the opening of new industries, you could always delete all industries that appear on the map with the magic bulldozer. However, doing this requires a lot of work, especially on big maps, and distracts you from the things you really want to do, like building your network.
2) To prevent the closure of industries, you “just” need to transport their cargo respectively deliver them with cargo. This option might be useful to prevent an industry you are planning to connect soon from closing down, but it requires a lot of work to do so, and especially on bigger maps like 1024x1024 it will take you ages to connect all the industries on the map just to prevent them from closing down.
4. How can that feature be included?
There would basically be two ways to include the feature into the game:
1) Via a newGRF, where you could possibly set parameters to choose between the options I described in part one of this article.
2) Via a code-wise implementation, which would mean writing a patch and then possibly merging it into trunk.
I am against an implementation via NewGRF, and I want to give you my reasons for that:
1) Comfort: Every player who wants to play your scenario or play online with you needs that specific NewGRF, and will have to search and download it before being able to play. If implemented code-wise, all you need to do is set to switches in the “Advanced Settings”-Menu, under the “Economy”-Tab
One could argue now, that this is the case with all the NewGRFs out there, and ask why this feature should get a special status. Well, in my opinion, this feature adds an elementary option to the game, which is just as important as being able to control how fast towns will grow or whether there can be multiple similar industries per town, so that I think there should be an easier option than to search and download the GRF, add the parameters and start your game – consider that you might want to change the behavior during the game, which could cause problems if using a NewGRF.
2) NewGRFs are rather for Graphics than for Settings. A quote from the OpenTTD-Wiki: “NewGRF is the way new graphics, vehicles, buildings, cargoes and industries can be introduced into OpenTTD.” I think this quote is quite true, I download NewGRFs to get cool new Graphics or Industry Sets, not to change game options. Of course, there are NewGRFs like the BaseCostMod out there, which – again, in my opinion – should also be included code-wise, since using it now is rather complicated and many players might not even know that this NewGRF exists, although they might use the feature if it would be implemented code-wise.
3) If implemented via a NewGRF, there probably would be compatibility problems if you want to play with NewIndustry-Sets such as PBI, which could probably be sorted out if implementing that feature code-wise.
5. Code-wise introduction of the feature
I admit that I have almost no knowledge about coding, so what I’m describing here might not be possible like I imagine it to be. However, I’ll tell you how I would imagine what this feature might work and look like if being included.
You could easily control the opening- and closing-behaviors of the industries via the “Advanced Settings”-Menu, under the “Economy”-Tab, like shown in the mockup I attached. Both of the switches have the four possible options “None”, “Only primary industries”, “Only secondary industries” and “All industries”.
I heard that industries are kind of “asked” each month: “What will you do next month?”, where their answer can be either: “I will increase production”, “I will decrease production”, “Nothing / Everything will stay as it was” or “I will close down”. For implementing the option to prevent industries from closing down, one would probably need to add that if an industry answers “I will close down” it will check for state of the “Industries that may close during the game”-switch. If this is either set to “None” or “Only my kind of industry”, the procedure which would close down the industry would be prevented / not be started.
Then, for the opening of new industries, there will probably be some random function, which at given times might decide to fund a new industry, and will randomly choose one type. Again, this function would need to check for the state of the “Industries that will open during the game”-switch, and if it’s either set to “None” or “Only my kind of industries”, it would either cancel or only choose between the given kind of industries (primary OR secondary).
Again, I want to make clear that I am not a coder, and unfortunately do not have the time to learn C++ to implement this feature myself, I just try to do some of the work by providing this concept. Implementing the feature could or will probably be a bit more complicated than I described, nevertheless I hope someone is up for the challenge and will write a patch, and that this is possible at all.
Please vote in the poll I created to show whether you like the feature or not, and post suggestions, constructive criticism etc. in the thread. The more resonance there is, the higher the chances are there will be some kind of progress.
Thank you for your attention!
Regards, Tim.