The importance of file naming schemes
The importance of file naming schemes
Just thought I'd pen a quick rant for anyone releasing beta levels - Please please please please pweeeeeeze take the time to name the non-final versions of your work with a DIFFERENT filename than the finished version.
I'm currently working on a version of files.quake4world.com that transcends this issue, but with the autodownload systems implemented in many new games (I.E. Not getting an addon directly from the server in all cases) you can't be sure that 2 files with the same name are going to be the same file.
We've seen a whole ton of file submissions to files.quake4world.com over the past week or two which were all different beta versions of the same levels, and all with the same filename. This isn't just a rant because files.quake4world.com can't cope, though. It's necessary to name non-final files uniquely to save confusion for everybody, and to enhance the uptake of your maps when they're released.
Noone likes having to trawl for the right version of a file just to play a game.
/rant
I'm currently working on a version of files.quake4world.com that transcends this issue, but with the autodownload systems implemented in many new games (I.E. Not getting an addon directly from the server in all cases) you can't be sure that 2 files with the same name are going to be the same file.
We've seen a whole ton of file submissions to files.quake4world.com over the past week or two which were all different beta versions of the same levels, and all with the same filename. This isn't just a rant because files.quake4world.com can't cope, though. It's necessary to name non-final files uniquely to save confusion for everybody, and to enhance the uptake of your maps when they're released.
Noone likes having to trawl for the right version of a file just to play a game.
/rant
"Maybe you have some bird ideas. Maybe that’s the best you can do."
― Terry A. Davis
― Terry A. Davis
In all honestly I don't care if it's called map_aeglow_£OITRJHWNWEGWNBGNWEG.pk3
as long as it's not the same name as the final. Or any other different file.
It's as soon as you get 2 files with different contents and exactly the same filename that everything gets really dumb.
as long as it's not the same name as the final. Or any other different file.
It's as soon as you get 2 files with different contents and exactly the same filename that everything gets really dumb.
"Maybe you have some bird ideas. Maybe that’s the best you can do."
― Terry A. Davis
― Terry A. Davis
Totally agree with this idea of naming betas as such. When you go beta1 or beta2, or final - the pk4 filename needs to be different for each release.
Guess what else. Don't use uppercase letters.
The q4 autodl passes everything to the ftp/http handler in lower case. SO if your pk4 has capital letters in its filename, and your autodl location is case sensitive (apache, vsftpd) then the autodl fails.
sigh.
further explanation by example: new pk4 release is filename 453_Final.pk4.
The q4 audodl will tell the client to go get 453_final.pk4 (no capital F) even though the q4server cfg file has the proper entry:
set net_serverDlTable "q4base/453_Final.pk4"
So if the http or ftp site is case sensitive (as the very common apache and vsftpd for linux are) the autodl fails because the filename with the small f does not exist.
All that being said, I changed an example filename from F to f and the checksum (the 0xb132cb233 number that tells the engine the pk4s match) is the same. So it looks like q4server admins can just rename the file to all lowercase at their autodl location and all will be ok.
Guess what else. Don't use uppercase letters.
The q4 autodl passes everything to the ftp/http handler in lower case. SO if your pk4 has capital letters in its filename, and your autodl location is case sensitive (apache, vsftpd) then the autodl fails.
sigh.
further explanation by example: new pk4 release is filename 453_Final.pk4.
The q4 audodl will tell the client to go get 453_final.pk4 (no capital F) even though the q4server cfg file has the proper entry:
set net_serverDlTable "q4base/453_Final.pk4"
So if the http or ftp site is case sensitive (as the very common apache and vsftpd for linux are) the autodl fails because the filename with the small f does not exist.
All that being said, I changed an example filename from F to f and the checksum (the 0xb132cb233 number that tells the engine the pk4s match) is the same. So it looks like q4server admins can just rename the file to all lowercase at their autodl location and all will be ok.
Explain to me why a 'user' would have to remember this information?MegaMan44 wrote:I totally disagree.
naming all versions of the maps saves users from having to remember mapfuckedupname + fuckedupversionnumber.
This is a benefit. Of course, it creates more mismatching problems than it solves becuase multiple users wanting to play together have to make sure they have the same version, and there's no obvious way of checking that.Also, it saves a LOT of headaches with different versions of shader files etc. because each new version just overwrites the old one.
Right, yeah. So your solution to make it easy for regular users to differentiate between the files is to use a technology they mostly haven't come across and find a tool that enables it.and i dont see where the problem with different files with the same name is - md5.
Not sure what you mean by this.edit: also, i dont care for games that cant even get things like this right.
"Maybe you have some bird ideas. Maybe that’s the best you can do."
― Terry A. Davis
― Terry A. Davis
Foo,
don't understand what MegaMan44 is actually driving at either.
For a long time I had thought that Q3A does not give a hoot about the names of pk4's and that the map's name *in* the pk3 was what counts.
But it seem the auto download feature of Q4 actually checks for pk4 file names (and probably their checksum)?
What I wonder is this: What happens if you actually do have differently names pk4 versions of the same map.
E.g. map_blah_v1.pk4 vs. map_blah_v2.pk4, containing a map called blah.map.
Naming-wise map_blah_v2.pk4 should supersede anything in map_blah_v1.pk4. That would usually be the "good thing" (tm) to do. But what happens if you actually join a server that is still running v1? The engine would want to access blah.map, and would AFAICT pick it from map_blah_v2.pk4?
Should I be right, that would still make multiple versions of a map in baseq4\ evil.
A solution would be to also rename the map file *in* the pk4s:
E.g. blah_v1.map and blah_v2.map
But as we know, that means renaming the loadscreen image, the aas, and, proc etc. (ugly), and some script references as well. All the renaming IMO is very bug prone, thus I never did that. I stuck with the "proper" "final" map name.
don't understand what MegaMan44 is actually driving at either.
For a long time I had thought that Q3A does not give a hoot about the names of pk4's and that the map's name *in* the pk3 was what counts.
But it seem the auto download feature of Q4 actually checks for pk4 file names (and probably their checksum)?
What I wonder is this: What happens if you actually do have differently names pk4 versions of the same map.
E.g. map_blah_v1.pk4 vs. map_blah_v2.pk4, containing a map called blah.map.
Naming-wise map_blah_v2.pk4 should supersede anything in map_blah_v1.pk4. That would usually be the "good thing" (tm) to do. But what happens if you actually join a server that is still running v1? The engine would want to access blah.map, and would AFAICT pick it from map_blah_v2.pk4?
Should I be right, that would still make multiple versions of a map in baseq4\ evil.
A solution would be to also rename the map file *in* the pk4s:
E.g. blah_v1.map and blah_v2.map
But as we know, that means renaming the loadscreen image, the aas, and, proc etc. (ugly), and some script references as well. All the renaming IMO is very bug prone, thus I never did that. I stuck with the "proper" "final" map name.
Running multiple versions of the same map/assets will be problematic no matter which of the 2 naming methods you use.
The benefit of naming each release seperately comes in identifying if the version of an addon you have is the version you need.
The idea that if all versions of a map are called the same thing, then you'll only ever have one copy installed and thus no conflicts makes some sense, but at the expense of never knowing which version you're running without either using an unneccesary extra tool (MD5 checker... and quite how you would know the MD5 of the version you *want* wasn't explained), and in fact it does cause conflicts with multiplayer, which can't so easily be identified without each version being distinctly named.
The benefit of naming each release seperately comes in identifying if the version of an addon you have is the version you need.
The idea that if all versions of a map are called the same thing, then you'll only ever have one copy installed and thus no conflicts makes some sense, but at the expense of never knowing which version you're running without either using an unneccesary extra tool (MD5 checker... and quite how you would know the MD5 of the version you *want* wasn't explained), and in fact it does cause conflicts with multiplayer, which can't so easily be identified without each version being distinctly named.
"Maybe you have some bird ideas. Maybe that’s the best you can do."
― Terry A. Davis
― Terry A. Davis
It doesn't, Q3 doesn't read pk4's. Sorry, felt like being an ass today.AEon wrote:For a long time I had thought that Q3A does not give a hoot about the names of pk4's

AFAIK, pk3/pk4's get read in alphabetical order. Later ones overwrite previous ones.
Generally, I do something like this:
map_blah_a1.pk4
map_blah_b1.pk4
map_blah_b2.pk4
map_blah.pk4
The last one being the final release. Though if read alphabetically, perhaps, the _v# suffix would make better sense?
[size=85][url=http://gtkradiant.com]GtkRadiant[/url] | [url=http://q3map2.robotrenegade.com]Q3Map2[/url] | [url=http://q3map2.robotrenegade.com/docs/shader_manual/]Shader Manual[/url][/size]
I absolutely agree with this, why is why it's good for mappers to take the time to distinguish non-final versions from the finished product. Laziness is releasing 2-20 different items under the exact same filename, and requiring people to go to elaborate lengths to find the version they need.MegaMan44 wrote:All i want to emphasize is: Don't make it harder for players to handle their game because your mapping self is lazy!
Okay, so lets stop right there.MegaMan44 wrote:because everyone just uses cv map <mapname>. Now if we concat that with [_/-]<version-inwhatever-form-author-decides>, that's a shitload of unnecessary information to remember. Also, nobody (ie. a minority) plays non-final maps.Foo wrote:Explain to me why a 'user' would have to remember this information?
You release 3 versions of a map before going final, lets say you name them:
megadm1-beta1
megadm1-beta2
megadm1-beta3
megadm1
The last one is, obviously, your final version.
So by what you yourself have said, only the minority will have to deal with the 'extra hassle' of the longer names, and the majority of players will still just be using the 'megadm1' file, and nothing more.
You've fallen on your own sword here, and your argument backs up my point.
"Maybe you have some bird ideas. Maybe that’s the best you can do."
― Terry A. Davis
― Terry A. Davis
What are you winning here? The stoopid award?MegaMan44 wrote:
do I win?
If you release multiple versions of your map with the same pk4 filename then somebody somewhere is going to see that and say "Oh, OK I already have that I don't need to download it again. When what they have is an OLD version of your pk4 and not the current one.
Foo wrote:You've fallen on your own sword here, and your argument backs up my point.
Even your opening sentence doesn't make sense following my post. I'm not sure how you expect us to follow the rest of it.MegaMan44 wrote:No, i am not.
Regarding what of it I could make sense: Now you've skipped back to talking instead about how the game treats the files rather than about how it inconveniences mappers or gamers.
I think you're not digesting my posts. Either way I can't make head nor tails of your arguments and it would seem that so far I'm not alone.
"Maybe you have some bird ideas. Maybe that’s the best you can do."
― Terry A. Davis
― Terry A. Davis
Seems he was not so Mega, after all... maybe hardly even a real Man!scourge34 wrote:Well, that was immature.

on a serious note...
I thought MegaMan44 might even have a point in that most people don't really cruise for maps and try out pre-final versions.
I'm not an avid quake'r/fps'r anymore, but if I was just a player and not a mapper (by hobby), I might only cruise LVL for maps. That being said, isn't it likely that I'll only ever grab final maps or autodownloads from servers that I do play on?
/just want to make sure that the objective is to help the gamers
//coming up with a convention here is only going to reach a small portion of the maps
...what the hell?
MegaMan44, I always thought you made some cool maps; seems kind of a shame to quit the board over a disagreement about filenames, of all things.
To contribute, I've personally always gone with the mapname_version method (with just mapname for the final) just because it seems like the sensible way to do things, but it's not like I'm going to lose sleep if someone doesn't agree and does something different.
Hell, you can name the different versions after different types of cheese if you want, it's your map. I'd play something called "Gorgonzola" if it was good.

MegaMan44, I always thought you made some cool maps; seems kind of a shame to quit the board over a disagreement about filenames, of all things.
To contribute, I've personally always gone with the mapname_version method (with just mapname for the final) just because it seems like the sensible way to do things, but it's not like I'm going to lose sleep if someone doesn't agree and does something different.
Hell, you can name the different versions after different types of cheese if you want, it's your map. I'd play something called "Gorgonzola" if it was good.
I beat the internet; the end guy is hard.