AHHH! BSP Files!

I have an inquiry concerning the quake 3 bsp format. I read in the entire file and I put it in the designated structs etc. However, I’m trying to parse the entities lump which stores information such as player spawn points and lights. Now when I dump the entities lump out to a file I get:

{
“classname” “worldspawn”
}
{
“targetname” “t2”
“origin” “488 1032 280”
“classname” “target_position”
}
{
“origin” “24 1032 280”
“classname” “target_position”
“targetname” “t1”
}
{
“radius” “256”
“light” “4000”
“origin” “-280 1336 432”
“classname” “light”
“target” “t1”
}
{
“light” “50”
“origin” “704 768 432”
“classname” “light”
}
{
“classname” “light”
“origin” “704 544 432”
“light” “50”
}
{
“light” “50”
“origin” “480 320 432”
“classname” “light”
}
{
“classname” “light”
“origin” “256 320 432”
“light” “50”
}
{
“light” “50”
“origin” “32 320 432”
“classname” “light”
}
{
“classname” “light”
“origin” “-192 768 432”
“light” “50”
}
{
“light” “50”
“origin” “-192 544 432”
“classname” “light”
}
{
“classname” “misc_model”
“origin” “592 1340 400”
“model” “models/mapobjects/gargoyle1.md3”
“angle” “270”
}
{
“classname” “misc_model”
“origin” “-80 1340 400”
“model” “models/mapobjects/gargoyle1.md3”
“angle” “270”
}
{
“origin” “-192 1024 152”
“classname” “info_player_start”
}
{
“angle” “90”
“classname” “info_player_deathmatch”
“origin” “256 -128 24”
}
{
“angle” “90”
“origin” “256 256 280”
“classname” “info_player_deathmatch”
}
{
“classname” “info_player_deathmatch”
“origin” “256 768 344”
“angle” “90”
}
{
“classname” “info_player_deathmatch”
“origin” “704 832 152”
“angle” “225”
}
{
“origin” “704 880 144”
“light” “50”
“classname” “light”
}
{
“classname” “light”
“light” “50”
“origin” “-192 880 144”
}
{
“angle” “225”
“origin” “-192 832 152”
“classname” “info_player_deathmatch”
}
{
“classname” “light”
“origin” “64 1520 316”
“light” “300”
“_color” “1.0 1.0 .75”
}
{
“_color” “1.0 0.0 0.0”
“light” “300”
“origin” “448 1520 316”
“classname” “light”
}
{
“origin” “-248 1288 188”
“light” “70”
“classname” “light”
}
{
“classname” “light”
“light” “70”
“origin” “-276 1312 188”
}
{
“origin” “-248 1336 188”
“light” “70”
“classname” “light”
}
{
“classname” “light”
“light” “70”
“origin” “-224 1312 188”
}
{
“origin” “-249 1311 128”
“model” “models/mapobjects/kmlamp1.md3”
“classname” “misc_model”
}
{
“classname” “misc_model”
“model” “models/mapobjects/kmlamp1.md3”
“origin” “-25 1495 128”
}
{
“origin” “0 1496 188”
“light” “70”
“classname” “light”
}
{
“classname” “light”
“light” “70”
“origin” “-24 1520 188”
}
{
“origin” “-52 1496 188”
“light” “70”
“classname” “light”
}
{
“classname” “light”
“light” “70”
“origin” “-24 1472 188”
}
{
“origin” “536 1472 188”
“light” “70”
“classname” “light”
}
{
“classname” “light”
“light” “70”
“origin” “508 1496 188”
}
{
“origin” “536 1520 188”
“light” “70”
“classname” “light”
}
{
“classname” “light”
“light” “70”
“origin” “560 1496 188”
}
{
“origin” “535 1495 128”
“model” “models/mapobjects/kmlamp1.md3”
“classname” “misc_model”
}
{
“classname” “misc_model”
“model” “models/mapobjects/kmlamp1.md3”
“origin” “759 1311 128”
}
{
“origin” “784 1312 188”
“light” “70”
“classname” “light”
}
{
“classname” “light”
“light” “70”
“origin” “760 1336 188”
}
{
“origin” “732 1312 188”
“light” “70”
“classname” “light”
}
{
“classname” “light”
“light” “70”
“origin” “760 1288 188”
}
{
“radius” “256”
“target” “t2”
“classname” “light”
“origin” “792 1336 432”
“light” “4000”
}
{
“light” “50”
“origin” “792 1336 432”
“classname” “light”
}
{
“classname” “light”
“origin” “-280 1336 432”
“light” “50”
}

Can anybody help explain the meaning of this to me? Any help or advice would be helpful. I’m especially interested in retrieving player spawn points. Thanks

what are spawn points?

Another OT post on these ruddy bsp file formats. Doesn’t anyone know how to use Google and find appropriate forums?

The entity info in the BSP is exactly like how it looks in the .map file. There are endless documents on the web that talk about that. Just search for things about the .map file format. There are also many many engines out there that can load the q3 bsp file.

-SirKnight

I’ll explain it to you gladly.The BSP entity data is in the form of classes.Every class represent one object or action.The first class in ALL of the bsp files must be called “worldspawn”.Now let’s took a entity class and expain it in details:

{
“radius” “256”
“light” “4000”
“origin” “-280 1336 432”
“classname” “light”
“target” “t1”
}

each class consists of variables and values for them.The variable “classname” will point you for what kind of an object we are speaking.In the example above thats light.The “radius” variable above gives the radius of the circle in which light is thrown.The “light” variable gives the type of the light.The “origin” gives the postion and so on.Now let’s see the spawning points which you need:

{
“classname” “info_player_deathmatch”
“origin” “704 832 152”
“angle” “225”
}

this is the entity class for spawning point(note the classname).The origin is the position of the spawn point and the angle is the initial rotation vector(“angle”,0,0) of the models that will appear over it.Well that’s all!

I wish there were self-moderation tools, like “three OT clicks and it’s out”…

Anyway, www.gamedev.net seems to have lots of discussion about these things.

Also, the art of reverse engineering is almost as useful as the art of debugging; neither of which seem to be taught in college these days :frowning:

To start, how about creating two very simple levels (as in, “a cube-shaped room”) where one has a single spawn point, and one has two spawn points. Look at the difference between the files. You should be able to figure it out yourself from there.

Now apologize for posting an OT subject and go use Google.

Ok sorry guys, if I have anymore questions I’ll go to another forum. It always just seemed like you guys knew what you were talking about

Thanks for your help Mihail121, you’ve cleared things up quite a bit.