i think the last idea is the right direction to go
i'm going to be detailed here, bear with me

i will try looking a bit into the future as well, the examples are just examples.
i'm very slowly progressing on a theme i've been working on on and off for a long time (having ME (or something very similar) makes me extremely slow) and i'll use it as an example even though it might never be completed.
first of all i call it a theme because it is aiming to change the visual experience, nothing else. for me the word mod (short for modification) has more to do with changing all/any feature of the game (think for example half-life mods).
a "complete theme" or "fully themed" would to me be a collection of files that change absolutely everything graphical:
- the intro screen
- the fonts
- the model (not necessarily a bike as we've already seen in some themes)
- the trail texture
- the wall textures
- the sky textures
- the floor color and texture
- possibly even the game icon (both the shortcut icon and the titlebar icon)
- sounds (almost forgot)
and possibly in the future (included to show more than the tip of the iceberg):
- theme hud graphics (and maybe theme default on/off choices though this probably belongs outside the theme)
- theme font size settings (this needs to be seperate for each theme as they will be able to use different fontfaces)
- chat area limits (debatable but imo theme-dependent because the themes will be able to structure/place the hud differently)
<del>- chat area server message levels (this one should be in user settings, sorry)</del>
- menu background/transparency/border settings & possibly files
- root menu background choices & files (as opposed to ingame menues)
there will always be the possibility of more as the decades march on, some issues that arise from this is:
- expandability
- having certain settings set/kept within each theme so that the player does not have to change settings all the time if switching themes
- enabeling the player to customize settings (and possibly even placement of hud components etc.) in the theme
however a theme does not have to change all this, it can change only certain aspects of these visual parts and still be a nice theme (as many of the present ones do)
now to using my own example, my aim is a "complete theme" and then some. I had everything worked out until i started modelling so when that is finished i think i'll need to change all the other stuff again. anyway, the "and then some" part consists of the following:
- several models for the same theme
these will be the same model but at different "resolutions". i know how the model will be (at the point of adjusting my vertex sketches right now before i once again start trying to climb blenders learning curve lol

) and i will make three versions: one with 128 vertexes suitable for online gaming (a bit less than the present widespread original low resolution moviepack), one with about 200 vertexes suitable for lan or local (not started), one with about 500 vertexes or more for artwork rendering (not started). this last one might be released seperately but it still makes me think a bit about how this should be integrated into a theme.
- environment textures in different resolutions
the most usual texture resolution is 256x256 if i remember correctly, i aim to include a full set of textures for at least the resolutions 256x256 (min) and 1024x1024 (max), perhaps one at 512x512 as well.
- multiple model textures
firstly the different model resolutions will in themselves require differently scaled textures but in addition to that i've been thinking of having different textures available for the looks of the models
there are other things too but this suffices to show the problems:
- is it just one theme?
- can the structure allow such huge themes and/or should it?
- how to avoid a mess, either a mess of subfolders or a mess of files that want the same names?
- what about the freedom for (other) themes not to do any of all this stuff?
here's my proposed solution with arguments/explanation of my thoughts, first folders:
armagetron/themes <----- the parent folder
armagetron/themes/default/ <----- the always-included shipped theme
armaegtron/themes/edge/ <----- just another theme *oh it happens to be the name of the theme i'm working on*
to explain: an armagetron subfolder named themes in which each theme has it's own seperate subfolder. if for any reason the game cannot find a needed file in the chosen theme it will "borrow" said file from the the default -- hold your questions about "what if the default theme doesn't have a bike model in resolution xyz?" the problem is evaded later. all the default graphic files are collected within the default theme folder.
onto the files in each theme... first of all i propose a few changes to the already existing settings.cfg file used in the moviepack. it has been used to set the floor color which is nice but it is also well suited for storing the settings for more complex/elaborate themes: which model is to be used, which textures to be used etc. <-- not a complete list but simply the (default for theme) settings first time it is opened, and later reflecting any choices made by the player for that specific theme. themes could also provide a settings.bku "backup" of the default settings but this would be totally voluntary of course.
naming convention for themes:
completely free as long as it has multiplatform support for folder names. and yes the default theme does not need to be named default as long as the program equates the two names, it could simply be named armagetron.
naming convention for files:
here's the tricks i'm thinking of... i'll make an example out of models
models filetype: .mod or .ase or future supported model files
models naming: name, then filetype prefix, then filetype for example: "N347 'Guppie' Velocitator.128.bike.mod" (yes it's the name of the edge theme "bike" lol

). this might not really be necessary for the models as i think the game won't need any other models than the "bike" model but one never knows, anyway it will be very useful for other graphical files than the model. i put the .128. in there as part of the name, it could be used as a browsing criteria but i think such fidelity is a step too far for now.
with an ingame theme browser:
when a theme is chosen (always in off-line mode) the computer simply looks for all supported model files within the theme folder and the resulting finds is what the user can choose among in any ingame preview
without an ingame theme browser:
the user must change the setting manually in the theme settings.cfg or using a console command so that it points to the correct filename
if the file is not found:
the game reverts to the default model file in the default theme (not caring one bit about "resolutions"). if the default model file in the default theme is not found either it will give the same error message as it already does if you try starting the game without those files.
but what if i want the model from that other theme?
both an ingame theme browser and console commands should be able to handle it using full path names starting from the armagetron directory, it shouldn't require too much additional code and i think the freedom is a good thing. however if this isn't implemented one would still be able to make ones own theme folder with the bits and pieces from where one wants it (but this is far too reminiscent of todays moviepack situation and i don't like that to be honest). for the in-game theme browser one could have an "all" choice which looks for all supported filetypes for the choice in question in every armagetron/themes subfolder it finds.
this is especially important in relation to trail textures. i don't know about the rest of you but i have at least 30 different trail textures in my moviepack folder, as it is today i have to rename files to switch lol i want my "insertnamehere.trail.png" structure
yet another example, this time arena walls:
edge.high.a.rim.png
*YIKES!* well... from right to left: png is a supported filetype for arena walls, the game is looking for rim textures and specifically the one that goes in place a, and yes high because this theme has different textures for high and low rims (but the computer doesn't necessarily need to care)
to sum it up the game looks for the different files that are all in the theme folder in a backwards manner: formats, typenames, etc. moving from the back to the next punctuation mark snipping up the info as it goes (makes for a nice little loop of code). this is a backwards hierarchical naming convention i guess and what the game looks for doesn't need to be the same for every file but it does need to be the same for every file that is meant to fill an identical function.
will this make simply browsing the theme folder from an OS a nightmare? slightly but not really more than for let's say an old style winamp skin.
avoiding unnecessary cpu cycles:
- perhaps the game can compile a list of all themes and content on startup and push it to a file for fast access later? reading it into and out of a multi-array structure i guess... maybe it simply isn't needed
- not allowing theme changes during a game, at least not an online game - once again maybe not?
answering all the questions i raised:
ok you're probably as exhausted as me by now but i'll try to tie the loose ends...
expandability: i think having a main folder with all files following an information rich naming convention as well as allowing "almost" full path naming allows for total expandability and a lot of freedom. the file naming convention is for the computers benefit and is even overrideable by the full path naming (in my head

)
theme dependent settings: one should be careful about what is included or excluded here, one does not want this and user settings or general settings to either conflict or override each other. some stuff clearly belongs here imo
player freedom of choice: i hope the ideas given so far increases this and ease of use
is it just one theme?: perhaps not when thinking of what i'm working on but i think all the mentioned will apply none the less. i might split my work into several related themes but there will for example still be choices like model resolution available within each.
can the structure allow such huge themes and/or should it?: i think the structure can, or that to degree it does it should be allowed to, but yes when/if one gets to have enough choices that it could make seperate themes on their own i think one should do that - 15-themes-in-1 doesn't make practical sense. there is little to worry about in terms of duplicating data, many themes already share the same model for instance.
how to avoid a mess, either a mess of subfolders or a mess of files that want the same names?: no subfolders or subthemes in this suggestion, and imo the file naming convention suggested makes the group of files less messy.
what about the freedom for (other) themes not to do any of all this stuff?: some graphics will be needed by default, others not. i think the fallback solution to the default theme combined with the ability to either scrounge off other themes by fullpath naming in the theme settings.cfg or by building on other themes (and including the unchanged bits from that/those) makes for freedom to make very small tweaks. it depends somewhat on the license of the other themes of course but i for one will use a cc license and i don't think it will be a problem. in addition some things could simply be turned off (like the hud) in a theme.
ok that was my thoughts, hope i didn't turn anyone reading into a zombie craving brains. of course there are other good solutions possible
