Announcement

Collapse
No announcement yet.

Manually create fullbright .bsp files

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Manually create fullbright .bsp files

    Descent1 .rdl files can be made manually, using the specs spelled out here *.RDL specs
    These files are read directly by the game engine, not compiled at all.

    I know how to manually create a .map file, and have a compiler convert that to a .bsp file. However I'm interested in creating a .bsp file directly, to get a good understanding of how it works. At first have it all fullbright, and learn lighting later. Anyone know of a site that spells out the details, similar to the site I found covering Descent1 .rdl files?

    I get the gist of bsp from this site
    Binary space partitioning - Wikipedia, the free encyclopedia
    I just need to know exactly how data is written in Quake1 .bsp files.

    This site gives a nice overview Quake Source Code Review
    But I need the nitty gritty like that given in *.RDL specs

    Basically manually create a bsp with no lighting info (like typing r_fullbright 1) and perhaps no vis info (like typing r_novis 1).

  • #2
    There are three steps to creating a fully finished .bsp from a .map file.

    qbsp
    vis
    light

    If you just run the qbsp executable(there are several advanced version available today) on the .map file you have what you are asking for, a fullbright level. No vis calculations or lighting.

    As for understanding how to get that .bsp, that's beyond me. Here is a LINK to the source code for tools and utilities: https://github.com/id-Software/Quake...ive/master.zip Under qutils you'll see the folder QBSP. The magics there if you are a programmer with advanced math skills.

    BTW, they are several engine/tool programmers who frequent this site, they might drop in and point you in right direction. You could also try browsing http://forums.inside3d.com/

    I'll look around a bit more and see if I can find other "plain" english help
    Last edited by damage_inc; 11-10-2014, 05:44 PM.
    Name's damage_inc, and killing is my business. Don't worry though, it's nothing personal! Oh wait... maybe it is

    Comment


    • #3
      Thanks for the links, I'll be sure to check them out.

      At this point I'm not trying to find out how qbsp creates a .bsp file from a .map file. That has to deal with picking splitting planes and using those to split other planes into multiple planes, it's probably quite sophisticated. However it's source code would have the bsp structures, I'll cross-reference those structures with the quake engine source code to find which ones are used in the final bsp file.

      I want to create a bsp tree from scratch, where the planes are already split. It would be insane for someone to create a complex map this way, which is why the .map format was created in the first place. I just want to do it to get a good understanding of Quake1's bsp structure.

      First define a plane(p0) as the main trunk of the tree.
      Then define a plane on p0 front side (p1), and a plane on p0 backside (p2)
      Then define a plane on p1 front side (p3), and a plane on p1 backside (p4)
      Then define a plane on p2 front side (p5), and a plane on p2 backside (p6)

      I'd have to define textures for end planes. If I want vis to not fail I'd have make sure a sealed structure results.

      Comment


      • #4
        Apparently the world map is a model_s judging from this line in client.h
        Code:
        struct model_s	*worldmodel;	// cl_entitites[0].model
        model_s is defined in gl_model.h

        I'm not sure how it's saved in the .bsp file but I'm sure I'll figure it out soon enough.

        Comment


        • #5
          Quake Developers Pages
          https://web.archive.org/web/19990428.../tutorial.html
          Binary Space Partition Trees in 3d worlds
          https://web.archive.org/web/19970121.../FAQs/BSP.html

          This stuff should help you get a better understanding on bsp. I am not sure what you mean by make one directly? That's not going to work. These maps have to be compiled. So there is no way from my understanding to do what you are trying to do without using a compiler. I suppose you could write your own compiler and this would give you a great understanding of the bsp structure. I suggest looking at the sources that damage_inc sent you (qbsp) so you can get a grasp on the subject.

          It's not surprising you could get this accomplished with Descent levels. Descent geometry is organized in interconnected cubes, no BSP or tree partitioning. In other words, much less complex. Good luck with your endeavors.

          Comment


          • #6
            Anything can be done without a compiler, it's just alot of time-consuming and painstaking work, which is why compilers were created in the first place. I'm just talking about something very simple, something like 20-40 planes for the entire level, maybe less. Then run vis and light on it afterward.

            Yea Descent is much simpler, which is why it doesn't have a need for a companion format (like Quake's .map that compiles to .bsp.)

            BTW thanks for the links, I'll be sure to check them out.

            Comment


            • #7
              This is some very good additional reading

              https://www.cs.utah.edu/~jsnider/Sen...1/default.html

              Comment

              Working...
              X