Game engine based on Quake 3 map

Started by
5 comments, last by Kwizatz 15 years, 9 months ago
Hi, a month ago. me and 2 of my friends started to work on a openGL game engine with usuage of the Quake 3 map format. Right now, we are able to render to Quake 3 map environment with culling. We also were able to implement Bullet Physics(open source API) with the map. But then we realized that Quake 3 map format only stores "brushes" for collision. We were unable to make 3D models(*.ASE) that were imported to GTKRadiant to have collision. And, Quake 3 map format doesnt stores any "interactive objects" at all. Should we ditch the whole thing and start over? Any input would be greatly appreciated.
Advertisement
You can put invisible brushes over your map models to give them collision volumes. There's a particular texture you can apply to brushes to do this, however I can't remember which one, check the utilities texture pack.

Anything interactive is simply stored in the giant entity string, using "{" and "}" between different objects. Parse that string and you should see how the entities are broken up. You can also look at the original map source file (.map file) in a text editor and it will have each of the game entities listed and how they're laid out for parsing. The compiler just takes all of those entities and stores them in one big string.

-----------------------Or, as I put it, MMORPG's are currently about attaining two primary things: strength and a shovel. The rest is you just shoveling sh** endlessly trying to get stronger to shovel more sh** so you can look for the next new shovel to shovel more sh** with. Once you are done, you can stand on top of a large pile of sh**, raise your golden sh** shoveler up high into the air and boast how proud you are to be the best sh** shoveler of them all. -Griffin_Kemp
Quote:Original post by baohead
But then we realized that Quake 3 map format only stores "brushes" for collision. We were unable to make 3D models(*.ASE) that were imported to GTKRadiant to have collision.

Why can't you use the models themselves for collision purposes? They're a bunch of polygons after all. Of course, that may not be the most optimal solution, so perhaps using their bounding boxes will suffice, or otherwise, a low-poly version.

Quote:And, Quake 3 map format doesnt stores any "interactive objects" at all.

It does. Of course, you'll need to write code that handles that data somehow, but that's not an issue with the map files. :)
Create-ivity - a game development blog Mouseover for more information.
Thanks for the responses.

Actually, I thought about adding invisible brushes(adding 'cliping texture' around my model before. But then isnt that the same as remodeling the 3D model in GTKRadiant. Let's say if I have created a low Poly terrain in 3dMax/Blender and I imported it into GTKRadiant as ASE file. If I have to recreate collision brushes, doesnt that defeat the purpose of importing models?

And it seems that model that imported are considered as an "entity" where quake 3 only take "brushes" for collision. I should look more into entity and see what I can do.
Quake 3 maps are not meant for terrains, you'll have to take a different approach for that.

That said, in regards to entities, no, you wouldn't have to remodel the mesh again, if for example you have a very detailed Venus de Milo model and you want to place it in your scene, you would add it as an entity (model entities are usually referenced rather than copied over), and create a bounding volume brush (usually an OBB) in the map on top of the model so your characters won't walk through the detailed model.

Quote:Original post by Kwizatz
Quake 3 maps are not meant for terrains, you'll have to take a different approach for that.

That said, in regards to entities, no, you wouldn't have to remodel the mesh again, if for example you have a very detailed Venus de Milo model and you want to place it in your scene, you would add it as an entity (model entities are usually referenced rather than copied over), and create a bounding volume brush (usually an OBB) in the map on top of the model so your characters won't walk through the detailed model.


Actually, what I did is that I created a 3D floor with all the rooms from a floorplan by using blender/3D Max since I dont want to use GTKRadiant for map editing.
So I exported the model as ASE format and imported it to GTKRadiant and found the problems stated above. Is this the correct approach?
Well, no.

The way a map file works, it requires all brushes to be convex shapes, and brushes are defined as a collection of bounding planes, textures are not handled with U,V coordinates directly, instead the texture is projected along each brush plane.

So, you should had used GTKRadiant, Hammer, QuArK, 3D World Studio or Torque Constructor to create your map.

Not all hope is lost though, if you edit your level so it contains only convex shapes (IE to make a room use 6 boxes for each wall, floor and ceiling instead of a single mesh), I think Blender could export it to map, you could also write a small application to convert your geometry to a base map file you can detail later on one of the level editors I mentioned above.

I don't really know of a level editor that imports as brushes, but there may be one.

Edit: I just checked, Blender is able to export geometry as map brushes, however I would guess you have to stick to the guideline I gave you above (convex shapes), I'd suggest importing (if its not already there) your level into Blender, remove all "detail" meshes/models and leave just the structural geometry, then change the remaining geometry so it is all build with convex shapes, export to map, import into the level editor and place the detail meshes back as entities, you may also have to adjust your textures.

This topic is closed to new replies.

Advertisement