Sign in to follow this  
baohead

Game engine based on Quake 3 map

Recommended Posts

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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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. :)

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this