Question about configstrings (name length)


Maybe it’s a silly question, but to be honest, I don’t understand the configstrings in detail, so here is the question, well actually there are three questions:

Q1: Does the name length of shaders, sounds, maps count to the total size of a configstring?
I was never worried when I created some assets for idtech3 games. After I read an article on ET Legacy’s wiki, I am a bit confused about the lenght of configstring sizes. Here is the article: Configstrings or the configstring

Q2: Does name length of e.g.: sounds only be a problem for map (speaker) and ‘scripted’ sounds or is the length of the name also important for ‘hardcoded’ sounds, e.g.: the weapon firing sounds etc.
Probably only assets are meant that are related to ET’s Scripting system?

Q3: If the name lenght of assets matters. Is this only the case for ET Legacy or for all idtech3 games.
I wonder if this configstring issue is also true for Spearmint, does it make sense for standalone games to name all the assets as short as possible then? Sounds, shaders, textures, and even map names?

Any help would be appreciated. Thanks in advance!


I haven’t run into configstrings being too long, but I’m familiar with what filenames/shaders are networked in Q3.

  1. Only text sent from Game VM to client is part of the game state. Things that are stored in trap_SetConfigstring() are sent. Music filename (CS_MUSIC), Team Arena team icon shader remap (CS_SHADERSTATE), G_SoundIndex(), and G_ModelIndex().

  2. Weapon firing sounds are stored in CGame VM, not sent from Game VM, so they don’t count toward gamestate text. The jumppad sound, door sounds, button sound, lava fry, etc are hardcoded in the Game VM and are sent to client because they use G_SoundIndex. target_speaker filenames are also sent because they use G_SoundIndex.

  3. Q3, ET, and Spearmint have the same 16000 limit. Texture names are not networked. Shader names are only networked when remapped by the Game VM; which is only done for specific effects so short names only need to be considered in those cases. Only one mapname and music filename is sent, so it doesn’t seem like a concern. Filenames of sounds for target_speaker and models attached to movers could be considered for shorter names. Referenced pk3 names are sent, so could consider shorter names. Short player model and skin names could be considered. Short target_location names could be considered.

However, CGame has direct access the BSP entities. CGame could easily read the music from the world spawn instead of networking CS_MUSIC. It’s possible (with Game and CGame changes) to avoid networking filenames in target_speaker and models attached to movers. Though, it might only work well in Spearmint not as a Q3/ET mod because it’s possible to add a new entityState_t variable containing the BSP entity number. It would also be possible for CGame to read the target_location messages from local BSP instead of networking them.


As always, well explained, Zack!
Thank you very much!
I have to agree, I also never run into configstrings being too long, but I was a bit afraid of this whole issue.
Now it’s clear and I’ll keep this in mind during creating new assets!