Although weasel covered these, I do feel a need to cover them again in more detail for Ironmans sake as he clearly has a failing grasp of how not only the Q3TA engine works, but computers in general…
Q3TA does not require compiling? What do you think a game does when you tell it to load a map? Do you see those little icons loading? Does it load instantly? No. Far from it. When you load a map, the vertices, lighting, models etc are all recompiled and loaded into memory.
When it loads the map all it is doing is taking the compiled data from the file and placing it into memory for rapid recall. Some data (typically player/weapon models and other dynamic items) undergo a form of compilation (in the vaguest sense of the word) in that they are often sorted into ordered lists to expediate drawing/animation in game. The reason we wait for loading is because there is a LOT of data to load, it has sod all to do with compilation times. FYI the compilation of vertex data into those lists I mentioned happens in a few seconds, and is not a significant bottleneck of the loading process.
Pre-compiled? Do you have any idea how much memory and power a PC would need to have to keep numerous “pre-compiled” portions of maps hanging around ready for use??? Do you realize how long it would take the game to load when you start it??? I’m not interested in waiting 3-5 minutes for a game to load 8 gigabytes of files into memory. I’ll build a PC like that in about 3 or 5 years if the hardware is powerful enough by then.
I will assume by memory you are referring to permanent storage such as hard drives, the cost of which are incredibly cheap now. You can buy a 100 gig hard drive for around £60 these days, and that would be enough to store the prefabs for about 10 games with random map prefabs. Yes storage would be quite large for these games, but when companies feel they can release games like Enter the Matrix with it’s fixed, crappy levels and it still takes up 4gigs, I don’t think storage will be a problem in making random map generators.
As for loading times, theoretically they could be faster than current times because some prefab blocks might repeat in the level and so only need loading once. External lightmap data could be used so prefabs could share the data and save loading time there too.
And to finish off…
I think you are kinda lost here. Follow this carefully: If the server generates a map either by using a single guideline or by connecting pre-made map sections by using one or more guidelines, it must send the info on exactly how it did it to every client. Then, each client PC would generate the map exactly as the server did (unless you expect every client to download a new 40+MB map at every map change). When every client was finished COMPILING, the game could resume. This means that …uh oh, here we go… every player has to wait while the map is… here it comes, get ready!.. COMPILED BY THIER PC. Add this COMPILING to the calculations done to write the new map to memory and the HD as a temp file with all of it’s vertices, models, objects, textures, etc etc after it has been COMPILED (there’s that evil word again) and you can see that power is of the essence.
Here’s a c-r-r-r-r-r-razy idea: Why not just seed the random number generator on the clients? For someone who keeps harking on about how random number algorithms are not properly random and are simply generated by mathematical algorithms, it amazes me how easily the concept of sending the random number seed to the clients could escape you. So the sending of 64bits of data would be all the server would need to send to tell the clients everything they need to create the random map. Even a dial-up user could send that in less than a second - are we sure the internet can cope!? :moo:
As I mentioned before, there would be no compiling required. The Q3TA engine would use prefabbed versions. the Doom3 engine could (theoretically) simply peice the map together and be ready to run because it has no compilation needed even at the map design phase.
So perhaps you would like to go off and do a little research about the points you make then come back and pose some rational debate. Until then, stop spouting your ill-educated preconceptions about computers and computer games. KTHXBYE.
Weasel…
Random map generation is not feasible for the Q3 engine. There’s no way to move significant amounts of brushwork without having to re-vis and re-light the maps, and that takes much too long.
I was thinking about this… I think it could be done. If the prefabbed blocks were made so that a large or set size portal existed at the edges of the blocks then they could be joined up (and the portals would match) at map load time in the BSP tree. Might take a short while to calculate the joins and modify the BSP, but in theory I think it could work. I figure this is probably how Nosferatu does it - simply have blocks that have the same portal structure at their edges so they can be joined easily.
EDIT:
Had to add this after reading what ironman posted while I was writing this main post…
Ironman said:
You are talking about BSP files? PSSSST! Listen up. BSP files are maps for Quake I and Quake II engine games. Anything Q3 or later engine uses PK3 files. You are between 4 to 7 years behind. You think Wolf ET uses BSP map files and you are talking to me about how things work? ROFLMAO
Want some entertainment Ironman? Try this - open a pk3 file in winzip. Now browse through until you see the variety of .bsp files in there. PK3 is a compression format, not a map format. Excuse me while I step and cry with laughter.
To think, all this time I was arguing with a 7 year old/escaped mental patient/incarcerated mental patient/undiagnosed mental patient/redneck (delete as appropriate)
Actually that was a bit harsh on rednecks…