BSP Help Page

Welcome to BSP. This page is mostly up to date, but I probably need to spend some QT updating it at some point.
IMPORTANT STUFF:

Texture wads available at : http://ww.wf.net/~stephenc
If you have "green," "blue," or "purple" textures in 16bpp or 24bpp modes, you need to set up the bsp.ini for your video card. Choose File | Texture test from the main BSP menu, pick the best looking thumbnail, you may have to cycle through several to pick a winner. Hit the Save button. Restart BSP like it says. That should do it.

The keys have been changed since v. 0.38: To see the new Keyboard Commands (click here):
You should check out the excellent "Tutorial" for more information about getting started!

[In response to a common question re: When I shift-left click to "deselect" an entity I can't do anything else: Hit the Esc key to deselect the current entity or
any selected brushes, this makes the world the current entity. Shift clicking doesn't reset the current entity back to the world. If this doesn't make sense to you,
just use the Esc key...]

If you are reading this page, you have probably downloaded the beta version of BSP. Please read the whole thing, many questions are answered.

With this in mind, please note the following:

BSP Beta Ver. 0.67

I DISCLAIM ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE SOFTWARE "BSP" AND THESE ACCOMPANYING WRITTEN MATERIALS, IF ANY. I DO NOT WARRANT THAT THE OPERATION OF BSP WILL BE UNINTERRUPTED, ERROR FREE OR MEET YOUR SPECIFIC REQUIREMENTS. ADDITIONAL STATEMENTS SUCH AS PRESENTATIONS, WHETHER ORAL OR WRITTEN, DO NOT CONSTITUTE WARRANTIES BY ME AND SHOULD NOT BE RELIED UPON BY YOU.

If this software interrupts the operation of your computer or causes data loss on your computer, I disclaim all liabilitiy for any such occurence. You understand that this is an beta version of BSP and that the software is provided for your enjoyment "as is".

YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, YOU UNDERSTAND THIS AGREEMENT, AND UNDERSTAND THAT BY CONTINUING THE INSTALLATION OF BSP, BY LOADING OR RUNNING BSP, OR BY PLACING OR COPYING BSP ONTO YOUR COMPUTER HARD DRIVE, YOU AGREE TO BE BOUND BY THESE TERMS AND CONDITIONS. YOU FURTHER AGREE THAT, EXCEPT FOR WRITTEN SEPARATE AGREEMENTS BETWEEN ME AND YOU, THIS AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES. THIS AGREEMENT SUPERSEDES ALL PRIOR ORAL AGREEMENTS, PROPOSALS OR UNDERSTANDINGS, AND ANY OTHER COMMUNICATIONS BETWEEN ME AND YOU RELATING TO BSP.

This document contains:

- I. What is BSP?
- II. What do I need to run BSP?

- A. Hardware Requirements
- B. Software Requirements
- C. Setting up the .ini fil

- III. What are the windows for?
- IV. What features does BSP have?
- V. What do I do with .map files?
- VI. BSP crashed my system and I'm mad, how do I complain?

- A. Known Bugs / Robustness Issues
- B. How to Report Bugs

- VII. What features will be added to BSP?
- VIII. Who am I? (Me, not you).
- IX. How to reach me.

I. What is BSP?

BSP is an editor for creating ".map" files compatible with the computer game Quake by id Software, Inc. I highly recommend that you gather your pennies and order the full version of Quake so id can continue to produce great software.

II. What do I need to run BSP?

You will need a computer.

A. Hardware Requirements.

More specifically, you will probably want to run BSP on a computer similar to what is required to run Quake. I have developed BSP on a P90 with 16 Megs of RAM. If you have such a system, I think the program will work. If you don't at least have such a system, please don't flame me (see bug reporting below) if BSP doesn't work. I am not a commercial developer. I am just a hobbyist like you (or at least some of you). A 256 color display is necessary. I have now added support for both 16bpp (High Color) and 24 bpp (True Color or 16.7 M colors).BSP should run on these systems, however, rendering will be somewhat slower (more data to transfer), and you may have to make the vido setting changes to the .ini (see below). I recommend running at the highest resolution your computer can muster in windows. My system runs at 1280 x 1024 and that is what I have used in developing BSP. Below 1024x768 becomes cluttered and 800x600 is doable. 640x480 is practically impossible to use. If you are stranded in 640x480, you probably can't run Quake anyway :(

VIDEO SETTINGS:

- ATI Mach 64: 16bpp rgborder=rgb rgb16order=555, 24bpp rgborder=bgr
- Diamond Stealth 64 - 3000 Series, -S3 Vision chip, 16bpp rgborder=rgb, rgb16order=565
- Miro Crystal 20 SV with S3: 16bpp rgborder=rgb rgb16order=565
- Hercules Dynamite with Tsent ET4000/W32 PCI, 24bpp, rgborder=bgr
- More as they come ...

B. Software Requirements

I have developed BSP using Borland C++ v. 4.5. My computer currently runs Windows 95. However, for now, BSP is a 16-bit application and does not rely on any of the Win32 API. Therefore, I believe that BSP will run on a Windows 3.1 system.

Some folks say BSP has run for them under Windows 3.1, others say it dies. I've noticed that the menu is messed up (cut in half [May be fixed in v. 0.40]) on my work machine. Other people have also noticed this. I have no idea why this is happening. Don't know if I'll be able to fix Win 3.1 up, as I don't have it installed on the PC I develop on... :( Have to wait and see...

I also run BSP on a computer with 16 Mb (now 32Mb) of RAM. If you have less, I don't know if it will work. BSP can use quite a bit of RAM when loading large .map files. If you have less than 16 Mb and BSP works or barfs with any kind of memory message, let me know (see bug reporting below, first).

BSP requires several Borland Run-Time Libraries to run. In particular, BSP requires the following libraries to be present (so far as I can tell):

- BC450RTL.DLL
- BIDS45.DLL
- OWL250.DLL

These files should reside in the same directory as the BSP executable

Files that come with the BSP.ZIP archive:

- BSP.EXE This is the executable, create an icon for this in Windows.
- BSP.INI The configuration file (see below) for BSP. Leave in the same directory as bsp.e.
- ENTS.QC The current list of all entities, extracted from the .qc files released by id and only including the essential information. This file needs to be in the directory listed for "entity_qc_directory" (see below).
- BADTEX.BMP This is a bitmap used when the texture wad key/value pair for a .map file either doesn't exist, or is invalid.
- HELP.HTM This file

C. Setting up the BSP.INI file

BSP uses an ".ini" file which I have creatively named "BSP.INI".

BEFORE YOU RUN BSP THE FIRST TIME, you will want/need to edit this file (using whatever ASCII text editor you want).

The comments are now in the bsp.ini file and describe each of the options.

III. What are the windows for?

Editing in BSP takes place in five windows:

- A. Edit Window
- B. XY View Windows
- C. Entity Browser
- D. Texture Browser
- E. Selected Brush Window
- F. Groups Window

A. The Edit Window shows a current 3D wire frame view (or flat shaded or fully texture mapped view) of the map from the current camera position. If you perform an activity and this view does not update, hit the "F9" key to force a redraw of this window. The caption displays the current map being worked on. The circle in the upper right shows the current orientation of the camera view direction, in degrees.

Clicking in the Edit Window has two functions. You can set the view direction by clicking in the orientation circle in the upper right. You will find this much faster than using the keyboard, especially for large levels with many brushes/entities.

You can now select and deslect brushes/entities in the edit window. Aim for one of the lines. Even better, aim right at one of the corners. REMEMBER: to deselect an entity and go back to the world, use the "Esc" key!!!!! Clicking just selects/deslects brushes, does not reset entity to world (btw, the "world" has almost all of the brushes of the level, that's why it's important to get back to the world.)

This window can be slow to redraw on large maps (esp. for flat shaded and texture mapped previews). Bringing in the far clipping plane to about -512 or so will reduce the number of polygons which are drawn.

As the flat shaded or texture mapped preview is drawing, the number of brushes rendered will be shown in the upper left corner of the Edit Window.

B. The XY Views, by default, show the current map from the top down. There are lists on the XY View to change the gridsize and there is a button to turn the grid on or off. In addition, the XY View contains the current scale for displaying the map.

You can toggle the XY View to a YZ or XZ view by hitting "Ctrl-Return", or choosing "Switch Map View" from the "Window" menu or by hitting the Delta "XY" button on the second row of the button bar.

There are now multiple XY Views. Each can be toggled (current (or last used) XY View is toggled) by hitting Ctrl-Return. If you don't want to see all three, just minimize the others...

The left and right mouse buttons are used with this view for performing a variety of operations depending upon which keys (or none) is/are also being held down:

- Left Mouse

- (no control key held down) Manipulate Brush/Clip Point.

- 1: If no brushes selected, creates a brush .
- 2: If brush selected and the click is inside the brush, moves brush in XY plane in the drag direction. If there are multiple brushes selected, it will move them all. (Note: For some reason, the update for moving multiple brushes can be very slow. I think it is because I recompute each whole brush constantly while dragging and this is slow. I may change this in the future).
- 3: If brush selected, and the click is outside of the brush, moves the closest face in the drag direction.
- 4: If you click on a clip point that's not currently selected, the click select's it. Dragging will move the clip point in XY plane.
- 5: If you click on a vertex of the selected brush, the vertex will be dragged. See bsp.ini for various settings affecting vertex manipulation

- Shift - Select/Deselect Entity/Brush. Hold mouse button to cycle through selections
- Ctrl - Connect Entities (one should be selected, connects that one to the entity you click on)

- 1: If you click on a vertex (esp. of current face), rotates the brush
- 2: If you click away from everything, drags the current face

- Ctrl + Shift - If brush selected, shears closest face or corner.

- Right Mouse

- (no control key held down) Position camera at click point.

- 1: If you right click on a clip point and drag, the whole clip plane will be dragged.

- Shift - Place Clip Point.
- Ctrl - Set whole brush texture to current texture (single face texture setting is done in Selected Brush Window).
- Ctrl + Shift - Orient view direction based on drag angle.

Brush manipulation in XY View now provides feedback. (When dragging multiple brushes, only one of them is actually shown during movement).

When the mouse flies over any of the XY Views, the current coordinates are displayed in the upper left corner (world coordinates)

C. The Entity Browser is used for modifying entity key/value pairs and also for creating new entities. The top portion of the window shows "classname" and its description. To create an entity, you would select an appropriate class. Create the brush to make the entity out of and then hit the "Make" button on the browser (or from the menu or control bar). The various check boxes are for setting appropriate flags for the currently selected entity. The key/value window lists all of the key/value pairs for the currently selected entity. The angle buttons add or modify and angle key/value pair for the current entity. The key and value windows can be used to add, edit, or delete key/value pairs from the current entity.

v. 0.40: I shortened it a bit for users with smaller screens and the Tab key now works to switch fields

To add a key and value, type the key into the "Key" filed and the value in the "Value" field and hit the "Add" button. To remove a key value pair, select the pair from the list box and hit the "Del" button. To modify a pair, select the pair, type in the new value in the "Value" field and hit the "Add" button.

Clicking on the flag check boxes will insert the appropriate "spawnflags" for the selected entity. The top portion of the entity browser should contain a description of the various flags for each entity. The text is taken from id's .qc files. If you don't like it, modify the text in the ents.qc file. I'm not a .qc expert, so please refrain from asking me really detailed questions about flags and stuff.

D. The Texture Browser is pretty straightforward. Either select a texture from the list box, or click on it with the left mouse button. The yellow highlight will display around the current texture. There are also buttons to adjust the following:

- s - This is the "x" offset in texture space
- t - This is the "y" offset in texture space
- r - This rotates the texture in 5 degree increments
- sx - This scales the texture along the "x" (s) axis (can be negative)
- sy - This scales the texture along the "y" (t) axis (can be negative)
- ! - This button resets the s, t, r, sx, and sy values to the defaults. Otherwise, the values continue to apply to all chosen textures.

Right clicking on a texture will zoom in (1x to 12x) on the selected texture. Drag the mouse to change the zoom.

Texture rotation increment/decrement changes to 5 degrees (to permit 45 degree rotations).

E. The Selected Brush Window is useful for several things. First, the window is really only relevant when one brush is selected. For now, the view is fixed and looks from +x to -x (or from right to left in the XY View). If the brush is too big or small for the Selected Brush Window, use the "+" and "- " arrows to adjust the size. The "?" button displays the textures for all of the faces of the brush. The "current" face is the yellow face and it's texture is written in yellow. The list box may be used to change the "current" face.

To change the texture of the whole brush, pick a texture in the Texture Palette and hit the "b" button. (Note: If more than one brush is selected, then all of the brushes will be painted with the selected texture. You have been warned.) To change only the current face (drawn in yellow), hit the "f" button.

Finally, the Selected Brush Window may be used to move the brush up or down, or to grow the top or bottom face of the brush. For now, the mouse drag interface is a bit clunky.

To move the whole brush up or down, simply click with the left mouse button inside the brush and drag up or down. For now, you don't have a lot of precision when doing this, big moves occur. For fine up/down motions of the whole brush, use the "-" and "=" ("+") keys on the keyboard. Sorry.

To stretch the top or bottom face of a brush, click just above the top of the brush (and the click should really be pretty close to the top) and drag in the appropriate direction to grow or shrink the top face of the brush. Same goes for the bottom. Alternatively, the top of the brush can be raised or lowered with the +Top and -Top buttons, respectively. Same goes for the bottom. The increment is set by the current gridsize.

The "w," "f," and "t" radio buttons are for wire, flat and texture modes in the Selected Brush Window. They don't do much right now. "n" and "p" buttons added to speed up switching the current face (don't have to use the pull down list if you don't want to). Numpad 7 and 9 also cycle the current brush face.

F. Group Window: The group window lists the groups valid for the current map. Groups are saved when the map is saved. No need to export the .map file, it's still compatible with qbsp, etc. However, if you edit the file with another editor, THE GROUP INFORMATION WILL BE LOST. If you edit the .map file by hand, be careful not to mess up the group information.

The group window consists of a list of the defined groups (on left side) and specific information about the currently highlighed group, as well as various buttons that accomplish the following functions.

"Use Groups". This button displays whether "group mode" is active or not. If not, all brushes/entities are shown in the editing windows. If it is checked, only the visible groups are shown.

"Visible" This button determines whether the group named in the edit field just below it is visible or not.

The list of groups also displays whether the listed groups are "[V]" visible or "[I]" invisible. Single clicking on any of the groups makes it the current group. Double clicking toggles the visibility of the group from on to off and back again.

The edit field below the "Visible" button displays the name of the current group, or, when creating a group, the user types the new name in that field and hits the "Create" button.

The Set Color button is used the change the display color of the current group. The current color is shown just to the right of the Set Color button.

The "Update Views" button determines whether changes made in the "group window" are immediately shown in the other editing windows. Turning this off will allow faster manipulation of groups, but at the expense of feedback until a redraw is forced in the editing windows.

"Create". As its name implies, this button is used to create a group. All brushes that are currently selected will be moved to the group that is created. Group names must be unique. To create a group, selected one or more brushes (or none, group will be empty) and then type the name of the new group into the edit field (below the "visible" button). Hit "Create". Pick a color.

"Delete":. Deletes the current group definition and moves all brushes to the "UnGrouped" group.

"Rename" (not done yet, but will allow changing a group's name)

"Hide" Minimizes the Group Window

"Move Sel To" Moves all brushes currently selected to the current group.

"Make All Visible" Makes all groups visible.

"Make UnGrouped Visible" Makes all groups invisible, except the "group" of "ungrouped" brushes are left showing (so they can be put into groups, etc.)

"Select All" Selects all of the brushes in the current group.

Group Rules: Really only 1: a brush can only be in 1 group at a time. If this is TOTALLY UNACCEPTABLE to anyone, I'll consider changing this. It seems to me that it could get really confusing to do it any other way.

Also, be careful with brushes that are "selected" but are currently in groups that are not "visible". Group operations could seem odd, but it's no big deal.

Creating a group deselects the brushes used to create the group.

IV. What features does BSP have?

BSP has so many other features, I don't know where to begin. Just kidding. BSP has enough features to allow you to create fairly complicated .map files. In fact, some of the features may tempt you to go overboard. If you go wild, you will pay when you try to build the .map with qbsp and you wait, and wait, and wait. Spiral staircases are one of these features.

Portions of BSP are based directly upon id's QuakeEd. For the record, John Carmack gave me express permission to use any of the source I wanted. BSP is modeled, in many ways, after QuakeEd. I figured their feature list was a minimum and, thus, have implemented pretty much all of that functionality. The "ZChecker" is not in BSP, though, so editing is different.

Also, if you have selected brushes in one map, and then open a blank .map or open another .map file, the selected brushes will be copied over to the new map. This can be useful.

Other features include (from the button bar): Putting the mouse over any button provides a description in the statuus bar.

- Working with .map files:

- New Create a .map file from scratch
- Open Save an existing .map file for editing.
- Save Save current .map file.
- Save as Save current .map file under a new name.
- (NEW) Save Selected: Saves selected brushes to a .bru file
- (NEW) Load Brushes: Loads brushes from a .bru file into current map
- Quit

- Miscellaneous settings:

- (NEW) Save Window Arrangement (writes the current window positions and sizes to the bsp.ini. These will be used the next time BSP is loaded)
- Reload Reload ents.qc (probably not useful)
- Hits Toggles whether to display other brushes that could have been selected by last click on the XY View
- Names Toggles whether to show the names of entities on the XY View
- Coordinates Toggles whether, if grid is on, to show coordinates along left and bottom axes
- Grid Determines whether the grid shown in the XY View (for now, everything snaps to the gridsize, even if the grid is not shown)

- View Mode

- Wire ("W") - Change to Wire Frame preview mode (default)
- Flat ("F") - Change to flat shaded preview mode
- Texture ("T") - Change to texture mapped preview mode

- Moving selection around:

- (in menu only) X, Y, Z Move selected brushes along selected axis: X, Y, or Z.

- Moving camera around:

- Up / Down Level Move camera up or down a level (depending upon where you are in the map.)

- Working with Groups

- Group "G" button (w/o box): Toggle use of Groups
- Group "G" button (w/ box): Restore Group Window and set focus to it if not already showing

- Working with selected brush(es):

- Snap - snaps axial planes of brush to closest grid line. (Tries to expand, so brush doesn't become invalid).
- Mirror selected brushes along X, Y, or Z axis.
- Rotate selected brushes 90 degrees on X, Y, or Z axis.
- Complete Select brushes completely within the current selected brush. Deletes the "selection brush"
- Partial Select brushes that are partially or totally within the current selected brush. Deletes the "selection brush"
- Tall Removes the current selected brush and replaces it with a very tall brush.
- Short Removes the current selected brush and replaces it with a very short brush.
- Size Brush - Makes current brush into brush of specified height. Bottom stays fixed.
- Rotate Rotates selected brush an arbitrary amount on X, Y, and/or Z axis.
- Make Entity Converts current selected brush into the entity currently listed in the Entity Browser window.
- Make Lights converts the selected brush (removes it) into the specified row, columns and depths of lights, with the light value selected from the dialog box.
- Stairs Removes the current selected brush and replaces it with stairs. Options are set via a dialog box. Stairs can be "floating", spiral, or block for now. Deletes the original selected brush. The new stairs are selected upon completion and can be placed as a unit.
- Room Takes the current selected brush and replaces it which six brushes that border where the original brush was. Removes the original brush.
- Arch Takes the current selected brush and replaces it with an arch. Options are set via a dialog box.
- Cylinder - Make current brush into a cylinder
- N-Sided - Make current brush into an N-sided brush
- Pyramid - Make current brush into a pyramid
- Extrude Room - Turn current brush into a room, wall thickness is equal to current grid size
- Scale Brush - Scales current brush along any of the axes
- Subtract Takes the current selected brush and carves it's interior out of every brush it touches. The original brush is left in place. To leave a "hole", just delete the original selected brush.
- Delete Deletes the currently selected brushes

- Working with the Clip Plane:

- Flip Flips the normal (side) of the clip plane which is used to cut portions off of selected brushes.
- Carve Once the clip plane is in place, the carve command causes the actual clipping of the brushes. Cannot be reversed.
- (NEW) v. 0.50b Split: Like carve, but doesn't throw out the carved off sections...
- Up Moves the current clip point (up to three of which define the clip plane) up.
- Down Moves the current clip point (up to three of which define the clip plane) down.

- Working with the BSP windows:

- Switch Map Window - This button (Delta XY) changes the Map view for XY to XZ or YZ.
- Arrange Arrange the windows (works best, for now, at 1280 x 1024 windows screen resolution)
- Tile Tile windows.
- Cascade Cascade windows.

- Miscellaneous:

- About About BSP.
- Exit BSP (currently does not prompt for saving current .map file)

Features on the Menu (almost all of the button bar features are in the menu):

- Edit | Select All Selects all brushes/entities
- Edit | Deselect All Deselects any selected brushes/entities
- (NEW)Edit | Clone Copies the current selection and selects the copy. The copy is offset in XY by the current gridsize
- Edit | Copy copies selection to clipboard
- Edit | Paste pastes selection
- Delete copies deleted brushes to clipboard
- Grid and scale settings are now on the menu.
- Display | Render | Quality - Chooses internal rendering quality. SPEEDS UP PREVIEW ENOURMOUSLY.
- Group - Omit ... (These buttons omit from drawing the selected items, e.g. lights)

Keyboard Commands (click here):

How does this "hits" thing work. If you try to select a floor and keep getting the ceiling instead, you need to use the 0-9 keys to select the proper brush. Any time a bare left click is made, BSP keeps track of all of the brushes the click could have selected. The "closest" is actually selected or deselected. But, up to 9 other brushes are stored in the 0-9 keys. Hitting these keys (usually you will only care about keys 0 to about 3) will toggle a particular brush on or off. If Show Hits is enabled, then the Edit Window will show the potential selected brushes in blue, along with index (key) numbers at the vertices. Use these numbers to select the brush you want. You'll have to play with this to get the idea.

V. What do I do with .map files?

Save them and then run qbsp, vis and light on them. Details for doing this can be found elsewhere.

VI. BSP crashed my system and I'm mad, how do I complain?

SAVE YOUR WORK OFTEN!!! I can't emphasize this point enough!

A. Known Bugs / Robustness Issues

Bugs fixed to date:

FIXED: 8/13/96 v. 0.11 Made bsp.ini error checking more robust to now present a file open dialog box when BSP can't find a file. Should solve most setup problems. If you are prompted to select a .qc, badtex.bmp or .wad file, your bsp.ini is not set up correctly. You should fix it, read the instructions carefully on this.

FIXED: 8/14/96 v. 0.12 If making lights, stairs or arches crashed the system b/c it didn't bring up adialog: try v.0.12, I think I figured out the problem.

FIXED 8/18/96 v. 0.15. Upon loading, the wad and world class names are displayed correctly. Cleaned up some view refresh problems. Added mirror/rotate 90 buttons. Added dialog to rotate on X, Y, and/or Z axis by arbitrary degrees. Made Selected Brush Window default to a larger view. Fixed problems with F12/brush subtraction on complex brushes (should work right now). Fixed (1/2 way :)) texture palette problem in 256 color mode (true color/high color still looks like garbage). Fixed Texture browser button "creep". Some other stuff I can't remember.

FIXED 8/26/96 v. 0.20. Revised Ents.qc submitted by Denis Moeller (Thanks!), added dialog to allow either copy or move by x, y, and z offsets, added mouse delta feedback to both xy view and selected brush view, added support for WAD2 files where palette is (1) missing or (2) not the first entry in the WAD, entity browser should reflect correct entity at startup now, trying to kill all memory leaks (if something that used to work now crashes, let me know the details and I'll fix any bugs I accidently introduced :( ), fixed bug where canceling file open dialog would cause a failure on File Save, other stuff.

FIXED 8/28/96 v. 0.21. Fixed brush subtraction bug introduced in v. 0.20 (still dies on certain complex subtractions though). Made all texture names upper case, should allow for animating textures to work correctly (so I hear), fixed division by zero in stairs dialog, added feedback of current brush height/minz and maxz in selected brush view.

FIXED 8/29/96 v. 0.22. I spent some quality time debugging last night and fixed, I hope, the rest of the brush subtraction bugs and some other nasty memory bugs (shouldn't die any more with clip plane or during brush subtraction, let me know if it does). Close box on main window now works; added feature to save selected brushes to a ".bru" file (thanks to someone's suggestion) which can be added to a map via a text editor, etc. (will do import of .bru soon); ADDED BRUSH SELECTION/DESELECTION IN EDIT WINDOW (3D VIEW) -- Use the left mouse button and NOTE: IT IS BEST TO AIM RIGHT AT A CORNER OF THE BRUSH YOU WANT, BEHAVIOR IS A BIT QUIRKY, OTHERWISE, TRIES TO PICK THE CLOSEST LINE

FIXED 9/3/96: 64 sided brushes; texture mapped and flat shaded previews added; fixed most of the palette problem in the texture picker.

FIXED 9/6/96: Added 24bpp true color support (not 16 bpp yet)/gamma correcion (a hack), saving of window position to bsp.ini file, loading in .bru saved brush files, right click and drag for closeup of textures in texture browser, user definable foreground and background colors.

FIXED 9/7/96 v. 0.30: Added 16bpp high color support, finally fixed the palette problem in 256 color modes (!!!)(unsigned v. signed char bug, if you wanted to know), ADDED toggle to switch Map View to XZ or YZ (by popular demand), changed texture rotation angle increment to 5 degrees to allow 45 degree texture rotations, etc., split up rendering code for 256 color, high color and true color modes, should give a big performance gain to rendering flat shaded preview and texture mapped preview, updated ents.qc courtesy of Denis Moeller! Fiddled with Buttons on Button Bar, not quite so loud now.

FIXED: 9/12/96 v. 0.35: Added options for tweaking rgb order in 16bpp and 24 bpp modes. Added options for bit ordering for 16bpp modes (565, 555), etc. ADDED Brush Grouping (saving and loading soon (or maybe in there if I get motivated!), alphabetized texture browser. Fixed sticking of entity broswer on super_damage item (duplicate in ents.qc removed), minor bug fixes to bug subtraction (complex subtractions can cause an "out of Memory" problem! Bzzzt, nope, fixed in v. 0.38), added feedback during subtraction, activated "Make Sphere" (you need a "fixed" qbsp, once available, or else you'll get many "point off plane" errors

FIXED: 9/14/96 v. 0.35: Added N-Sided brush command, added cylinder command, added command to create a brush of a specified height, snapping to grid command (for current brush), added feedback for editing actions, added group saving and loading, added Render Quality options and bsp.ini for SPEEDING UP PREVIEW in flat and texture mapped modes, clip points snap to grid upon movement, User Interface give more feedback, Putting mouse over control bar buttons shows what they do on status bar (like ToolTips in Win95), Render W/H defaults put in bsp.ini also, Fixed more texture wad bugs (let me know if any texture wad still kills bsp), selected brush window display # of selected brushes

ADDED 9/14/96 v. 0.36: Pyramids, extruded brushes, and scaling of brushes.

FIXED 9/16/96 v. 0.37: Group loading bug fixed, brush with arrow dragging fixed, Pg_Up resets roll + pitch angles, Left, Right, Up, Down arrows now navigate correctly.

FIXED 9/18/96 v. 0.38: Brush subtraction bug finally squashed. Complex multiple brush subtractions can now be subtracted, grid fixed and rgb setttings for grid colors added to bsp.ini, fixed UI bug where letting go of drag mouse on XY window frame would cause mouse/brush to get "stuck" together, added groupmode setting to bsp.ini to set the initial group mode setting

FIXED/ADDED 9/25/96 v. 0.40: Tons, and tons of changes:

- Multiple maps open at once (up to 10 right now) (if you use different texture wads, BSP will have to reload each one on the fly, so don't do this if you want speed!)
- Prompt for saving changed maps
- Copy / Paste Entities/Brushes (both) between maps (or into same map)
- Up to three 2D views now, each can be cycled between XY, YZ, and XZ views
- Hot keys to restore/minimize the entity, group, texture and single brush windows.
- Better support for saving window arrangements (soon will have perfect support and multiple arrangements avail. via hotkey)
- Next/Previous face button for single brush view (highlight and selection of "current face" in all views coming soon)
- F4 selects all "Hit brushes"
- Tilde Key selects everything in map
- showeye setting added to bsp.ini to determine whether little red square showing camera position shows in 2D views
- Alt-C moves camera to "C" enter of map
- Adding extra brushes to an entity other than the world now shos the extra brushes in the entity's color (rather than, oops, black)
- Cursor position in world units shown during mouse movement in 2D views
- Brush subraction applies only to visible brushes
- Menu choices for omitting water, clip, entities, lights, world brushes from view.
- ALMOST ALL OF THE KEYS HAVE BEEN REMAPPED (slightly for the most part) AS ACCELERATOR KEYS. SEE KEY HELP FOR NEW LEGEND (sorry about this one, had to happen!)
- Tab key works in entity browser to navigate between fields, esp. key/value. (Therefore, Tab key doesn't switch maps any more, use Ctrl-Enter)
- Maximizing window shows the restore, minimize and close box in the control bar/menu.
- Grid and Scale settings moved to Main Menu (can be adjusted with Ctrl- key combos (see menu))
- May have fixed the Win 3.1 "sliced menu" bug (thanks to someone re: looking at the resource file!)
- "f" key won't let you set brush textures for non-textured entities.
- A bunch of other stuff I can't remember...

FIXED/ADDED 9/26/96 v. 0.41: Minor revisions

- Grid/Scale buttons added to XY Views (again). Must let go of mouse to get a popup menu.
- Texture Window scroll bar and creeping fixed
- Rendering tweaked (no blanking between frames, some optimizations)
- Minimized XY Windows shouldn't "slow down" refresh
- PgUp key resets roll, pitch and yaw angles for current map (again)
- Scale Brush and Rotate Brush now operate on groups of brushes (very cool), fixed sized entities are moved, but not "rotated"
- Windows should refresh after reopening from minimized state

FIXED/ADDED 9/27/96 v. 0.42: Minor revisions and bug fixes

- Ctrl-V Paste now deselects old selection and offsets new copy in x, y planes by the gridsize
- Alt-C Center command centers on whole map if 0 brushes selected or on selected brush(es) if some are selected
- - and + keys are no longer "hot" and can be used in key / values without raising and lower selection instead (oops)
- Ctrl-< and Ctrl-> now raise and lower the selection (replacement for - and + keys)
- 2D view window captions also say Top, Right or Front to help orient the viewer.
- Quake.pal file is presumed to reside in the "entity_qc_directory" from the bsp.ini. If you move it where ents.qc is, you shouldn't get prompted each time you load a wad that has no texture.
- FYI: You don't have to have or use wizard.wad as the default texture wad and wads are available at several places, including: http://www.wf.net/~stephenc

FIXED/ADDED 9/29/96 v. 0.43: More bug fixes

- Pasting now pastes into current group, or if not valid, into "None" group.
- Deletion of selected brushes from "select all" in group window deletes the correct brushes (no idea what was going on...)
- Deleting a Group Name now works correctly, no "blank" groups that are "[I]" invisible... doh!
- Holding down the mouse button will cycle the texture offset, rotation and scale settings... (1/4 delay, then they just go...) Thanks to Graham Colwell for suggesting one way to do this.
- New, cool splash screen, courtesy of Imaginary: J.H. Blythe

FIXED/ADDED 10/5/96 v. 0.44: More bug fixes/couple of new things

- For those having trouble setting the rgborder and rgb16order settings for their video cards: I added an option to, in the Texture preview, display 24 thumbnails with the settings displayed under them. Use the F11 key to cycle through the textures and write down the settings that look right. Might take a few different textures to see. This won't do much in 256 color mode (they'll all look the same). Once you find the right settings, edit the bsp.ini with the "rgb" setting and the "555" setting as described elsewhere on this page.
- I have implemented a better way of saving the window positions. There are now up to 4 settings (if more would be needed, let me know) that can be chosen from the Window menu. Setting 1 is the default upon opening. Move the windows / minimize, etc. to your liking and then hit the save arrangement button. Now, before setting upt "Setting 2" you must first switch to it to make it current. Switch to it and move the windows for setting 2 around. Then hit the "save arrangement" button again. Repeat for settings 3 and 4. Okay, now you have all four settings saved, you can use Ctrl-Numpad 1 through Ctrl-Numpad 4 to pick them. Or use Ctrl-Numpad Minus and Plus to cycle through them. The settings are stored in the file "bsp.pos" which should reside in the same directory as the ents.qc file. The positioning settings in the bsp.ini are now ignored, and you can delete them.
- I changed the way arches, spheres and scaling and rotating work (and all other primitives) so that no plane definition points are always rounded off to the nearest integer. This will solve the roundoff problem with qbsp and the editors. However, spheres etc. may still be "leaky" for now. You should be able to, upon magificantion, see the leaks and adjust faces as needed. I'll work on a more automatic fix of this. I'm thinking, once I put the "current face" options in for each brush that I may put in a way to "match" faces on adjoining brushes. This will nullify any "leaks" between the faces. Let me have your thoughts on such a feature.
- I have forced all buttons and text type controls to use a smaller font. Thus, I was able to reduce the size of the group, texture, entity browser, and selected brush windows. However, I may put the font name and size settings into the bsp.ini. If anybody finds these new buttons, etc. just too small, let me know. The changes should make bsp more friendly to 800x600 and 640x480 users.
- I have been extremely busy with real work and that is why I have not had a chance to do much to BSP in the past week. I apologize. I'll try to get back into the next major task (multiple Undo) as soon as my schedule clears out a bit.
- The windows captions are a bit more descriptive.
- I fixed the bug with the rotate buttons in the texture browser.

FIXED/ADDED 10/120/96 v. 0.50b: More stuff:

- Vertex manipulation added, see the bsp.ini (which now is commented for clarity) for details on the various vertex manipulation options. Left click on the vertex you want to move (in the 2D view) and drag with the mouse.
- Save/Load .mrg files. These are like the .bru files, but can be combinations of entities/brushes. The format is similar to the .map file format. You can also save the Clipboard to a .mrg file.
- Fixed a problem with deselecting brushes in "invisible" groups.
- Search/Replace by texture name
- Select all brushes with a selected texture
- Revert entity brushes to the "world". (So you can then make them into a new entity.) Should facilitate "changing" entity types.
- Fixed a bug in subtracting an entity (which would remove all of the other entities in the .map!)
- Keypad 7 and 9 now cycle through the "current face" of the selected brush. This face is shown in yellow in the various views.
- Added buttons to the 2D views to switch the view axis. Thus, if you want to select the floor, you could switch the view from Top to Bottom and then click and the bottom brush will get selected.
- The whole clip plane can be dragged using the right mouse button. Just right click on any of the clip plane points and drag.
- The number of steps in a full turn is now a setting in the bsp.ini.
- The buttons on the "File | Export" menu now work. The directory for the .bat files is specified in the bsp.ini. You may need to modify the batch files to suit your needs.
- The purple line showing target/targetname pair can be turned off from the menu. The default is set in the bsp.ini (show_connections=1).
- There is a tool that "splits" (as opposed to carving) brushes using the clip plane.
- Added an option to bsp.ini to permit dragging of faces that are not quite vertical in the 2D views.
- Smaller splash screen (to reduce the size of the .exe)
- There is a semi-functional "File | Leaks" option that will read in a .pts file and show the points in the 3D view. This is not quite working, so don't mail me about how it doesn't work right. But soon you will be able to read in the .pts file that qbsp creates on leaky levels...
- Also, I read that I was going to put in a leak checker in this version. :) This is not done yet, but certainly will make it in at some point...
- Finally, I made BSP into a "beta" version.

FIXED/ADDED 10/27/96 v. 0.52b: Fixes:

- Fixed a problem for Win 3.1 users re: crashing. (Had to do with ctrl3d.dll I think).
- Drawing in 2D views was optimized a bit, should be somewhat quicker.
- I put this out to see if any of the new crashes are cured by this. Vertex dragging problems excluded (which can create invalid brushes).
- Fixed the can't move entity problem.
- I think that if you are using a bunch of texture wads, BSP will die. Still working on the fix. Also, certain texture wads will kill BSP. Again, still working on it.
- I put more options in the bsp.ini to set the texture thumbnail size and also whether to "stretch" the texture.
- Slight redesign of Entity Browser, added a validator to the key and value inputs to prevent entering double quotes, which would barf upon reloading the .map
- Fixed the problem where windows would repaint twice as much as needed.
- This is an interim release to fix some of the problems with v. 0.50. There are still some problems.

FIXED/ADDED 11/3/96 v. 0.55b: Improvements:

- The Make Stairs and Make Arch dialogs have been completely redone. Now you will see a 3D preview of the final product. The view can be rotated and viewed from any angle using the mouse. Similar preview stuff is planned for the other dialog boxes.
- The texture browser now includes edit fields for entry of the shift, rotate and scale values.
- The texture browser now permits you to text search for textures. Click in the edit field, type in the first letter or two of the texture you want and hit the Tab key. This will bring you to the closest matching texture.
- The interface has been further refined so that only the pertinent buttons/commands are enabled at startup and the windows are hidden until the user selects a .map or creates a new .map.
- Double clicking on a group name in the group list to change its visibility state no longer puts a selection box around the _previous_ listed group.
- You should not get any "degenerate edge" errors when dragging vertices or carving or subtracting, etc. Instead, the offending brush should delete itself.
- Added a setting to the bsp.ini to determine whether textures should be "stretched" initially in the texture browser.
- Some tweaks to the rendering code to increase speed.
- Default brush heights used or creating new brushes should default to more sensible values, even if you switch the XY views. The defaults will be "snapped" to the current grid and thus, new brushes should always be "on" the grid.
- The selected brush view should "zoom" to about the correct size by default. No more pressing of - and + buttons to get it in focus.
- Other stuff, I can't remember.

FIXED/ADDED version 0.61b, 12/19/96

- Multiple texture wads (without having to wait when switching maps). I don't know how stable this is if you open a ton of different texture .wad files... but it seems to work okay for me.
- Export current group or export visible groups button added to Groups Window. If you export a group that does not have an info_player_start entity, one is added to the .map file that is written. If you export only entities (and no world brushes), light will crash trying to compile your level and quake will die, too. But why would you want to do this anyway?
- Added an option to bsp.ini to turn off the querying of wall thickness for making/extruding rooms. If set to 0, then gridsize is used by default (the _old_ way, go figure).
- Ctrl Dragging, in the XY Views, away (i.e., not on a vertex (which is rotation) and not peforming a connect entities operation) from the selected brush will drag the "current" (yellow) plane of the brush. Use Numpad 7/9 to cycle through faces of current brush.
- Leak file processing (the .pts files that qbsp.exe creates) can now be loaded under File | Leaks | Load .pts. The leak trail is shown in yellow on the 2D XY views and on the 3D view. Leak data

FIXED/ADDED version 0.62b, 12/24/96

- Wireframe outline in 3D flat and textured preview. Set the colors in the bsp.ini. I added a button to the button bar and a menu option to toggle the outline on and off.
- Selection of brushes in 3D flat and textured preview. Finally, the _exact_ brush you click on will be selected. This is cool.
- Perspective for 3D view is more in line with that of the wire frame 3D view.
- Leak search option under Edit menu. SAVE YOUR MAP FIRST. This compares adjacent brushes looking for faces that almost adjoin and prompts to "equalize" them. See the bsp.ini settings added for a fuller explanation. There are some tolerances that can be adjusted for this (if your brave enough). It's pretty cool, but does not catch all leaks, of course. If you choose to automatically seal the leaks, you won't be prompted. Otherwise, you will be prompted and the 2D views will be centered on the two potentially "leaky" brushes. Let me know if you have suggestions on how to improve this functionality.
- Texture moving in the 3D view:

- Ctrl Drag on current face (yellow wireframe outline): Adjust texture shift values (S,T). Current values displayed in upper left corner during drag.
- Shift Drag on current face: Adjust scale values (SX, SY). Current values displayed in upper left.
- Ctrl Shift Drag on current face: Adjust rotation angle (R). Current angle displayed in upper left.

- Leak file .pts processing reduced to 2000 points for now.

Version 0.65b, 1/1/97

- Happy New Year
- Fixed bug where loading any .map with a new texture wad (beside the default) would crash. Sorry about that...
- Added a favorites and frequently used texture palette to the texture window. Set whether to use either, the size of the textures, and the number of thumbnails in the bsp.ini. There are also buttons to dynamically show and hide the sections. The texture browser now provides a flyover description of the texture under the mouse, including its size information. To change the favorites list (which defaults to the first 10 textures in the .map's wad), left mouse drag the current texture from either the frequent use palette or the main texture palette to the frequent texture you want to replace. You can duplicate entries, though I don't know why this would be desirable. The frequent area shows the most frequently used textures in the current .map file. Hit the "Calc." button to calculate/recalculate this at any time. The textures are shown in most to least order from left to right.
- Let me know if it would be desirable to save the "favorites" list for either a particular .wad file, or for a .map file and why one is better than the other...
- I rearranged some of the edit menu stuff to make it more logical and not so long.
- I totally redid the Texture Settings stuff. It is now a dialog that you can invoke right after starting BSP. Use the mouse to choose the best looking thumbnail (this only matters, by the way, for 16bpp and 24bpp users). Hit the "Save" button once you find the right settings. This will set the entries in bsp.ini for you. You will need to restart BSP to see the changes in effect. I hope this helps, as the overwhelming number of users having problems with BSP send me messages about the textures being green/blue/purple. At some point I will put the rest of the settings into a Preferences dialog box (one of my New Year's resolutions)...
- Dragging of very small brushes using a very small grid should be operative now.

Added ability to use an arbitrary scale. Mininum is 1% and Max is 1600%. If you put in garbage, the display will go to 1%.

Version 0.66b, 1/7/97

- Settings for bsp_font and bsp_font_size are now enabled in bsp.ini. For those win 3.1 users who have been having problems (esp. with edit boxes), please let me know if the new settings solve the problem. For now the controls don't resize, so if you pick a lame font/size combo, things may look aweful. I would stick to sizes below 12.
- True multiple wad support:

- set multiple startup wads in the bsp.ini by setting default_wad key, e.g., default_wad=wizard.wad;base.wad
- set multiple .wads in BSP by setting a key to a semicolon separated list of .wad files. Do not put spaces between wad names and semicolon (beginning or trailing), for now at least.

- I think I finally solved the texture browser button creep problem. Let me know if the buttons move off the window anymore.
- Hitting "Make Entity" when no brush is selected will place the type of entity listed in the entity browser so long as the type is a fixed-size entity (ie a monster, etc. rather than a plat). The new entity has its origin at the current 3D camera position.
- I added a status gauge to the texture loading just for Plucky.
- All of the buttons/fields in the windows should not flicker any more (nor should they disappear during mouse dragging).
- The .map file now stores the favorite textures so you don't have to reset them every time you edit a .map.

First frame of texture/flat preview should be quick again (binary search, so searching will not be the cause of slowdown...)

Version 0.67b, approx. 1/23/97

- This is the first release using a new compiler. There may be problems so treat this as more of an alpha. Here's what's new:
- Flyover hints enabled.
- Multiple camera positions, saved to .map file. Use Ctrl-Left and Right Arrow to move between cameras. Left mouse select and drag to move them. XY Views have a button to switch cameras.
- Current group name is listed next to Camera Button in XY Views.
- Killed all known memory leaks.
- Multiple texture .wad files should load correctly.
- Most BSP color settings moved to new heading in new bsp.ini
- 3D Control look for dialogs enabled.
- Let me know if:

- You still have the texture browser button creep occurring
- The 3D view crashes upon entry into flat or textured preview
- Anything else happens that is strange

The following are "bugs" that I know of and intend to fix as soon as possible. Please don't send reports about these problems, unless you have a programming suggestion on how to fix the bug!:

- Sometimes opening multiple texture .wad files crashes BSP (I'll track this down at some point...)
- Flat and texture redraw is slow (only partially unoptimized) and may crash.
- Program loads slow (esp. for large texture wads): Too bad, I have to recalculate the palette or convert to rgb for each byte of the texture wad. That's alot of processing for huge wad files!
- Big maps redraw kind of slow. (Use brush grouping for now)
- Opening multiple instances of BSP crashes (at least one of the instances). SOLUTION: Try to restrain yourself.
- Texture name fill in can "overshoot" by one or two textures, esp. the first texture.
- Some texture wads hang BSP, especially if you work on multiple maps, etc.
- Some of the text in buttons is "cut off" (still checking).

B. How to Report Bugs

- CHECK THIS PAGE TO SEE IF THE BUG IS ALREADY LISTED.
- Wait until the next revision, I will update the bug list frequently (unless I'm too busy in the real world). Please, don't send me a report if I already listed the bug (unless you can tell me the solution, of course).
- Send me an e-mail telling me exactly what is happening, what system you're using, etc. (Please try to give me enough info to reproduce the problem. If I can't reproduce it, I can't fix it. If a particular .map file causes the crash, send the file to me as an attachment)

Please remember that this editor is a one man job, for a guy who has a very busy other life. Don't flame me about how BSP sucks. If you don't like it, there are/will be plenty of other options. This project started as a study of Binary Space Partitioning Trees and ended up far from their as an exercise to learn about Windows programming. The topic was new to me. Some of the bugs are from me being naive about Windows programming. Some are from me being an idiot :).

This editor is FreeWare. You get what you pay for.

VII. What features will be added to BSP?

- Currently, I intend to implement:

- Other canned items (?? what else is needed)

- Slant Brush
- Render Flat/Textured view in Selected Brush and XY View windows
- Shearing in Selected Brush Window
- Option to change an entity type
- Change the way grouping works (?)
- Undo
- A huge list of other suggestions / fixes.

And, I'm always open to suggestions about essential features!

VIII. Who am I?

I am currently a Patent Attorney in Atlanta, Georgia. I am 28.
I went to law school at the University of Florida, my home state. I have a chemistry degree from Harvard. I spent much of my time there, and since I was about 12 years old, programming computers. I was a computer consultant for Harvard and various organizations around Harvard for the four years I was there and for several years thereafter.
I like to play computer games, but am more interested in seeing how they are programmed.
I read alot. I could say more, but that would be a bit pompous.

My resume is at http://www.needlepatent.com

IX. How to reach me.

Web: http://ourworld.compuserve.com/homepages/bernier

E-mail: bernier@atlanta.com

IRC: nickname Yahn in #quakeed

Snail mail address and phone number available upon request.

If you make a cool .map with BSP, please send it to me, I'd love to check it out...