This thread is mostly aimed at my fellow developers, just curious if and how it would be possible. --
Right now, in order to change the balance of a map (permanently) you need to edit the .map file itself to for example swap a health pickup with a weapon instead. This is easily a problem because in order for mappers to change the balance of their map, they have to recompile the whole thing just to make some small change. Another problem is that if we update the balance configuration and a map has a poorly balanced health distribution or weapon distribution because of it, we have to painstakingly edit that ourselves.. This can discourage us from editing things such as health balance and stops progress I think.
So my solution would be essentially this: Instead of placing the item entities directly on the map itself, we would create a database for each map which would contain an index of entities and etc. Then all we have to do is edit what the database spawns, and effectively allows you to completely replace the map balance without having to rebuild the map. This idea could be considered similar to waypoints, where you have a database of locations and waypoints which can be edited easily. If we went with the same approach as waypoints, we actually could even add an in-game editor for it. This would EASILY be fantastic for mappers who want to work on the balance together with other players. (inb4 stole idea from red eclipse)
One potential issue would be: Maps without the entity database may lack items (NOTE: It would still be possible to place items the "Regular" way, this wouldn't break backwards compatibility) -- A workaround would be to make netradiant place these marker entities and use this database system instead of placing real weapon entities directly on the map. Then when a map is compiled, it would automatically export the entity database file. (But again, still having the ability to place the entities the regular way) It also may be possible to use such a system to replace pre-existing entities, but i'm not entirely sure. If it is, that means we don't even NEED to recompile and replace entities on old maps - we can just edit them using the database. Though, doing that method would mean we couldn't change the origin of the entity. There's one huge advantage though -- Maps made for Xonotic are TOTALLY then not backwards compatible with Nexuiz So never will a Xonotic map end up back on Nexuiz unless someone recompiles the map and places item entities directly.
BTW, if .ent files can already be used for this, then we should expand upon that for this very purpose -- Create a front end to it and allow the .ent files to be loaded/unloaded dynamically. This allows you edit (within game) and to save them permanently with the map.
This is just an idea I came up with earlier when I was on my server with theShadow_ -- he wanted to change the map balance on his WIP "aqueous" and since we really didn't have any way to edit the entities directly and easily, we couldn't do anything.
I would probably be able to code it if this is actually possible/viable, but I won't even attempt it if people think it's a waste of time.
Thanks for your time, please let me know what you think.
Right now, in order to change the balance of a map (permanently) you need to edit the .map file itself to for example swap a health pickup with a weapon instead. This is easily a problem because in order for mappers to change the balance of their map, they have to recompile the whole thing just to make some small change. Another problem is that if we update the balance configuration and a map has a poorly balanced health distribution or weapon distribution because of it, we have to painstakingly edit that ourselves.. This can discourage us from editing things such as health balance and stops progress I think.
So my solution would be essentially this: Instead of placing the item entities directly on the map itself, we would create a database for each map which would contain an index of entities and etc. Then all we have to do is edit what the database spawns, and effectively allows you to completely replace the map balance without having to rebuild the map. This idea could be considered similar to waypoints, where you have a database of locations and waypoints which can be edited easily. If we went with the same approach as waypoints, we actually could even add an in-game editor for it. This would EASILY be fantastic for mappers who want to work on the balance together with other players. (inb4 stole idea from red eclipse)
One potential issue would be: Maps without the entity database may lack items (NOTE: It would still be possible to place items the "Regular" way, this wouldn't break backwards compatibility) -- A workaround would be to make netradiant place these marker entities and use this database system instead of placing real weapon entities directly on the map. Then when a map is compiled, it would automatically export the entity database file. (But again, still having the ability to place the entities the regular way) It also may be possible to use such a system to replace pre-existing entities, but i'm not entirely sure. If it is, that means we don't even NEED to recompile and replace entities on old maps - we can just edit them using the database. Though, doing that method would mean we couldn't change the origin of the entity. There's one huge advantage though -- Maps made for Xonotic are TOTALLY then not backwards compatible with Nexuiz So never will a Xonotic map end up back on Nexuiz unless someone recompiles the map and places item entities directly.
BTW, if .ent files can already be used for this, then we should expand upon that for this very purpose -- Create a front end to it and allow the .ent files to be loaded/unloaded dynamically. This allows you edit (within game) and to save them permanently with the map.
This is just an idea I came up with earlier when I was on my server with theShadow_ -- he wanted to change the map balance on his WIP "aqueous" and since we really didn't have any way to edit the entities directly and easily, we couldn't do anything.
I would probably be able to code it if this is actually possible/viable, but I won't even attempt it if people think it's a waste of time.
Thanks for your time, please let me know what you think.