|
I'm very impressed by the many fun maps out there. I like taking my time exploring them alone locally. After a while, the number of these maps grew so big that I'm having a hard time managing them. I added this feature to help the game creation menu, but I still have problem organizing the files themselves better.
Currently, the maps downloaded from game servers are put in the .xonotic/data/dlcache folder, and then if I want to play these maps, I move them into the .xonotic/data folder.
Problems
- darkplace seems to unpack all .xonotic/data/*.pk3 files in into one virtual file system. Some pk3 has contents that overwrite other pk3's (alphabetically later files overwrite earlier ones??). For example, I noticed my 200+ health boost sound effect is overwritten, and when I play the factory maps, I still hear those custom sound effects.
- I suspect when I go to a game server, I'll have to download those files again since they are not in dlcache/ anymore. I could, of course, create symbolic links for all the files, but that's hard to maintain, too.
- Putting everything under ~/.xonotic/data where many other types of files (e.g. *.cfg) reside, is a bit overwhelming.
Ideas and Questions
I want to explore these possibilities and would like to hear some thoughts first.
- Is it possible to add a check box in the menu that says, "include maps in dlcache"? A quick code reading seems to suggest that such handling is only possible in the darkplace engine level, not the game code.
- Is it a bad practice to put those map files in sub-folders? Right now unpacking ~/.xonotic/data/*pk3 files yields to contents under the same folder ~/.xonotic/data/ , and that makes sense. However, since we already have an exception folder ~/.xonotic/data/dlcache , I wonder whether we can have another special folder ~/.xonotic/data/custom to store those *pk3 files that I don't want to leave in ~/.xonotic/data/dlcache to be overwritten when a server has a file with the same name.
|
|
(04-21-2015, 10:16 PM)BuddyFriendGuy Wrote: Currently, the maps downloaded from game servers are put in the .xonotic/data/dlcache folder, and then if I want to play these maps, I move them into the .xonotic/data folder.
packages* -- It's not just maps that are downloaded. models, sounds, patches, etc.
(04-21-2015, 10:16 PM)BuddyFriendGuy Wrote: darkplace seems to unpack all .xonotic/data/*.pk3 files in into one virtual file system. Some pk3 has contents that overwrite other pk3's (alphabetically later files overwrite earlier ones??). For example, I noticed my 200+ health boost sound effect is overwritten, and when I play the factory maps, I still hear those custom sound effects.
Server admins *should* be using zzz_ prefix on packages that modify sounds, etc. These are not pk3s you'd want to move out of dlcache for the reason you said.
(04-21-2015, 10:16 PM)BuddyFriendGuy Wrote: I suspect when I go to a game server, I'll have to download those files again since they are not in dlcache/ anymore. I could, of course, create symbolic links for all the files, but that's hard to maintain, too.
If they are in your ~/xonotic/data folder they will be loaded when you start the game, therefore not downloaded again. This could increase your initial load time of the game however.
(04-21-2015, 10:16 PM)BuddyFriendGuy Wrote: Is it possible to add a check box in the menu that says, "include maps in dlcache"? A quick code reading seems to suggest that such handling is only possible in the darkplace engine level, not the game code. dlcache exists for a reason and I would suspect it's dangerous to tell the game to load all these pk3s. You can cause some annoying maybe even breaking issues by doing this.
(04-21-2015, 10:16 PM)BuddyFriendGuy Wrote: Is it a bad practice to put those map files in sub-folders? Right now unpacking ~/.xonotic/data/*pk3 files yields to contents under the same folder ~/.xonotic/data/ , and that makes sense. However, since we already have an exception folder ~/.xonotic/data/dlcache , I wonder whether we can have another special folder ~/.xonotic/data/custom to store those *pk3 files that I don't want to leave in ~/.xonotic/data/dlcache to be overwritten when a server has a file with the same name.
Technically you can do this by creating directories as siblings of the "data" folder (in ~/.xonotic/) and stacking the -game flag to load these directories. I can't say this is a "best practice" but it works.
example:
Say I have two "game" directories with maps in them:
~/.xonotic/ctf
~/.xonotic/dm
./all run -game ctf -game dm
will load these maps in addition to anything loaded from the "data" game directory.
I know when you do this with a server it's automatically seen as a modified server, so I imagine this is also considered a modified client.
Hope this helps!
|
|
Thanks a lot for the answer, -z-.
(04-22-2015, 05:03 PM)-z- Wrote: Say I have two "game" directories with maps in them:
~/.xonotic/ctf
~/.xonotic/dm
./all run -game ctf -game dm
will load these maps in addition to anything loaded from the "data" game directory.
This is super helpful (as usual)! I think I will do this.
(04-22-2015, 05:03 PM)-z- Wrote: I know when you do this with a server it's automatically seen as a modified server, so I imagine this is also considered a modified client.
What's the implication? Do some servers reject modified clients, to keep away, say, a client with all walls in the factory maps transparent (so the player can cheat)?
(04-22-2015, 05:03 PM)-z- Wrote: (04-21-2015, 10:16 PM)BuddyFriendGuy Wrote: I suspect when I go to a game server, I'll have to download those files again since they are not in dlcache/ anymore. I could, of course, create symbolic links for all the files, but that's hard to maintain, too.
If they are in your ~/xonotic/data folder they will be loaded when you start the game, therefore not downloaded again. This could increase your initial load time of the game however.
So how do we prevent collision? There are two levels:
The pk3 filename itself: For example, server A has a file called test_map.pk3, server B also has a different file with the same name. What happens when I go to server A, then B? Does B's file overwrites A's file since they have the same name? Does the client do some check sum verification before downloading a new version of a file?
The other level is the contents within the pk3. Say: - server A has a map file called test_map_A.pk3 with sound/announcer/female/welldone.ogg in it
- server B has a map file called test_map_B.pk3, also with sound/announcer/female/welldone.ogg in it.
Am I right to assume that when I visit server B, my client won't touch test_map_A.pk3, thus no collision?
And what happens when server C has both test_map_A.pk3 and test_map_B.pk3? Am I right to assume only the map file that's currently being played is unpacked?
(04-22-2015, 05:03 PM)-z- Wrote: (04-21-2015, 10:16 PM)BuddyFriendGuy Wrote: Is it possible to add a check box in the menu that says, "include maps in dlcache"? A quick code reading seems to suggest that such handling is only possible in the darkplace engine level, not the game code. dlcache exists for a reason and I would suspect it's dangerous to tell the game to load all these pk3s. You can cause some annoying maybe even breaking issues by doing this.
Practicing custom maps locally is a function frequently called for, so I was trying to find a way to make it possible at the game UI level, rather than asking gamers to move files.
I agree with you -- unpacking all pk3s is a bad idea. I'm hoping to find a workaround.
|
|
The server culls players behind walls, so cheating this way is virtually impossible.
|
|