Jump to content
  • Advertisement
Sign in to follow this  
maya18222

Questions regarding the Source Engine BSP File Format

This topic is 2900 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Im following this guide

http://developer.valvesoftware.com/wiki/The_Source_Engine_BSP_File_Format

But I have a few questions,

1) Are you supposed to create Normals and Tangents at runtime? There doesnt seem to be any mention of how LUMP_VERTNORMALS or LUMP_VERTNORMALINDICES are used.

2) The map is made up of a number of Face Instances, but these faces seem to contain an arbitary number of edges. ie some faces have 4,5,6 or more edges, that form rectangular shapes. Are we supposed to triangulate these ourselves?

Share this post


Link to post
Share on other sites
Advertisement
Your questions indicate you may not understand the purpose for the page you reference. It's not a guide, in the sense that it will tell you how to render a map. It's a description of the contents of a Source Engine BSP file, most likely gleaned from hours spent going through the Source SDK, trying to decipher what data sets are used for what. How you use the information is up to you.

Some of the lumps aren't described or their descriptions are sketchy. That may be because the author(s) of the page hasn't determined exactly how those lumps are used by the Source engine.

I realize this doesn't answer your questions because you seem to be asking about a specific way of rendering the data. That's not the intention of the page.

Share this post


Link to post
Share on other sites
Yes, sorry, guide was the wrong word. Im not asking for a specific way to render the data, I'm asking how the data is usually used to get it in its most basic renderable form. That is a triangluated mesh. I thought a few of you on here might have got it working and was wondering how you went about it.

Share this post


Link to post
Share on other sites
I recommend you check out botman's BSP tools. They're for the original Half-Life BSP format, but I gaurantee that the core map data is still basically the same. There should be source code you can download to help you out :)

Share this post


Link to post
Share on other sites
This one helped me out a bit when i started messing with this stuff: http://graphics.cs.brown.edu/games/quake/quake3.html

You have:
Vertex array
Surf array
Surfedge array
Face array

then you do like this:

for each face:
for i=0; i<face.numedges; i++
int surfIndex = surfedges[face.firstedge + i]
int v = 0
if(surfIndex < 0)
v = 1
surfIndex = -surfIndex
Vector vert = verts[surfs[surfIndex].v[v]]

You can take the normal from the face.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!