I propose to separate the default init values (init.txt, d_init.txt, maybe even announcements.txt) and default raws from user changesEither by hardcoding fallback values and accepting missing entries in init/d_init.txt and raws, or by having a separate file called user_init.txt and a folder user_raws or whatever.
If a user only wants to change the popcap to 50, he shouldn't deal with the entire init file, but instead create a new, empty text file and add the line [POPCAP:50].
If someone made a mode that only changes the color of puddingstone in the raws, he would only distribute an inorganic_stone_mineral.txt file containing nothing but the entry for puddingstone.
Just deleting the file would revert it back to default.
Depending on the above variants DF would check on startup for user_<d_>init.txt entries or missing values in <d_>init.txt, and fall back to known defaults.
Ideally, you would get a message on startup if something's wrong (
file 'mytileset.txt' in data/init/user_init.txt|[FULLFONT] not found: using default; missing ']' in data/init/user_init.txt|line 23: using default)
Same for raws.
In practice, this would have several advantages:
- It's easier to maintain for modders and graphic set creators
- It's easier to keep an overview for average users, and impossible to fuck up
- It's a lot easier for users and modders to migrate settings and small mods to new versions of DF (the introduction of new values won't generate any issues - as it happened recently with the strict popcap and something else I forgot)
As an seasoned vanilla user for example, you would just keep a tiny init.txt that just contains [INTRO:NO] and nothing else. You could just copy it over to a new DF version without any problems.
On the other hand, a graphic set creator might distribute a init.txt that just contains his tileset path, and [GRAPHIC:YES] without having to worry about newly added values. Changing tiles in the raws would make it less of a maintainance nightmare with raw changes.
It would also be easier to keep an overview over changes to d_init.txt (trunks, tracks, etc) without having to check filechanges every new version. Especially for additions Toady forgot to mention.
Of course the possible values/raws should still be documented somewhere, even if you deleted/changed the files. Not sure what the best way for that would be.