Frosch's NewGRF Configuration in Utopia

Contents

Earth

Configuring NewGRFs

When a player wants to pick a set of NewGRF for his game, (s)he encounters several problems which you can currently only solve with experience.

Changing NewGRFs in game

When changing GRFs in game there are some additional issues:

Utopia

Configuring NewGRFs

Now, let's forget how the configuration works today; instead ask how it would work in Utopia?

Changing NewGRFs in game

How would Utopians deal with changing NewGRFs in game?

Borrowing stuff from Utopia

Current limitations

Currently OpenTTD can only load and activate a single NewGRF configuration (which is btw. also the reason, NewGRFs do not work in the intro game). This is due to a lot of stuff being stored in global variables resp. NewGRF loading accessing global variables:

If this would be proper C++, every spec loaded from a GRF would be a member of a NewGRF configuration class. A gamestate would then reference an instance of this class, and retrieve all specs from it. The class would also provide a strict interface between the specs and the game state, such as "current year". However, this does not include interaction with items on the map. This shall only be about the stuff required to load some NewGRFs, not to run the game.

So, what would need review / moving to some more strict interface?

What would be achievable

These changes would allow to test-activate the new NewGRF configuration in the main menu before starting a game resp. in-game before applying it to the current game.

What would not be achievable

Checking for stuff being added or removed is considerable easy. A lot harder are changes to already existing stuff.

Summary

This is very hard, and a hell lot of work. But, it can be done in small steps. There should be no big step / transition somewhere in the process.