1
//------------------------------------------------------------------------
2
// BOOKTEXT : Unix/FLTK Manual Text
3
//------------------------------------------------------------------------
5
// GL-Friendly Node Builder (C) 2000-2005 Andrew Apted
7
// Based on 'BSP 2.3' by Colin Reed, Lee Killough and others.
9
// This program is free software; you can redistribute it and/or
10
// modify it under the terms of the GNU General Public License
11
// as published by the Free Software Foundation; either version 2
12
// of the License, or (at your option) any later version.
14
// This program is distributed in the hope that it will be useful,
15
// but WITHOUT ANY WARRANTY; without even the implied warranty of
16
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
// GNU General Public License for more details.
19
//------------------------------------------------------------------------
23
#define GRN "@C61" // selection looks bad, oh well
26
static const char *contents_text[] =
29
"@c@l@b glBSPX Manual",
33
"@r by Andrew Apted ",
34
"@r Updated: 13th September 2005 ",
36
"@c@m Table of Contents",
38
"#L01@c" GRN " 1. Introduction",
39
"#L02@c" GRN " 2. Using glBSPX",
40
"#L03@c" GRN " 3. Interaction with other tools",
41
"#L04@c" GRN " 4. How glBSP Works",
42
"#L05@c" GRN " 5. Differences to BSP 2.3",
43
"#L06@c" GRN " 6. Contact and Links",
44
"#L07@c" GRN " 7. Acknowledgements",
49
//------------------------------------------------------------------------
51
static const char *intro_text[] =
54
"@c@l 1. Introduction",
59
"glBSP is a nodes builder specially designed to be used with OpenGL-based",
60
"DOOM game engines. It adheres to the \"GL-Friendly Nodes\"",
61
"specification, which means it adds some new special nodes to a WAD",
62
"file that makes it very easy for an OpenGL DOOM engine to",
63
"compute the polygons needed for drawing the levels.",
66
"There are many DOOM ports that understand the GL Nodes which glBSP",
67
"creates, including: EDGE, the Doomsday engine (JDOOM), Doom3D, PrBoom,",
68
"ZDoomGL, Vavoom and Doom3D.#- See the Contact and Links page.",
71
"glBSPX is the GUI (graphical user interface) version, which runs",
72
"in a window. There is also a command-line version called simply",
73
"'glbsp', which is designed to be run from a DOS box (Windows)",
74
"or a text terminal (Linux etc). ",
75
"glBSPX lets you perform all the usual node-building jobs,",
76
"though the command-line version supports some more (rarely-useful)",
82
"The current version is 2.20. It has been tested and",
83
"known to work on numerous large wads, including DOOM I, DOOM II,",
84
"TeamTNT's Eternal III, Fanatic's QDOOM, and many others.",
89
"glBSP and glBSPX are Copyright (C) 2000-2005 Andrew Apted. It",
90
"was originally based on 'BSP 2.3' (C) Colin Reed and Lee Killough,",
91
"which was created from the basic theory stated in DEU5 (OBJECTS.C)",
95
"This GUI version (glBSPX) is based in part on the work of the FLTK ",
96
"project. See http://www.fltk.org.",
99
"glBSP and glBSPX are free software, under the GNU General Public License",
100
"(GPL). Click on the the Help > License menu to see the full ",
101
"text. In particular, there is ABSOLUTELY NO WARRANTY. USE AT",
104
" All trademarks are the propriety of their owners.",
110
//------------------------------------------------------------------------
112
static const char *using_text[] =
115
"@c@l 2. Using glBSPX",
120
"The way glBSP operates is pretty simple: it will load the input",
121
"wad file, build the nodes for the levels that it finds, and then",
122
"save to the output file. All this is triggered when you press",
123
"on the big 'BUILD' button in the main window. ",
124
"The 'Files' box let you specify the Input and Output filenames,",
125
"and the other boxes let you control various aspects about the way",
129
"On the bottom of the main window is the text output box, which",
130
"shows various messages during node building (stuff that the",
131
"command-line version normally prints in the terminal or DOS box). ",
132
"Watch out for warning messages, which appear in a red font, they",
133
"can indicate serious problems that were found in your levels.",
139
"There are five different build modes in glBSPX, which can be",
140
"selected in the upper left box in the main window.",
141
"Here is a description of them:",
145
"Use this mode for general use, e.g you've downloaded a normal",
146
"DOOM wad and wish to play it with an OpenGL DOOM engine",
147
"(one which is GLBSP-aware, of course). ",
148
"This mode will put all the GL Nodes into a separate file with",
149
"the \".gwa\" extension. The engine should notice the GWA file",
150
"and load it automatically.",
153
"The rest of the modes below create a new self-contained WAD file,",
154
"which will contain any GL Nodes that are built.",
156
"@t GL, Normal if missing",
158
"This mode builds the GL nodes, and will detect if the Normal nodes",
159
"are missing and build them too when absent. Hence it will keep any",
160
"pre-existing Normal nodes, so less work to do, plus the normal",
161
"nodes may be better optimised for non-GLBSP-aware DOOM ports.",
163
"@t GL and Normal nodes",
165
"This mode builds both the GL nodes and the Normal nodes.",
169
"This mode builds only the GL nodes, completely ignoring any",
170
"pre-existing Normal nodes (even if absent). This mode is",
171
"probably not very useful.",
177
"The upper right box in the main window contain a set of",
178
"miscellaneous options. Some of them only appear when certain",
179
"build modes are enabled, because in other modes they would",
180
"be ignored. The full set of misc options are:",
184
"Shows extra warning messages, which detail various",
185
"non-serious problems that glBSP discovers while building the",
186
"nodes. Often these warnings show a real",
187
"problem in the level (e.g a non-closed sector or",
188
"invalid sidedef), so they are worth checking now and then.",
190
"@t Don't clobber REJECT",
192
"Normally glBSP will create an simple REJECT map for",
193
"each level. This options prevents any existing",
194
"REJECT map from being clobbered, such as one built by a",
195
"dedicated reject building tool (RMB, etc).",
199
"Pack sidedefs, by detecting which sidedefs are",
200
"identical and removing the duplicates, producing a",
204
"NOTE: this may make your level a lot",
205
"harder to edit! Therefore this option is most useful",
206
"when producing a final WAD for public release.",
208
"@t Fresh Partition Lines",
210
"Allows glBSP to cheat a bit and",
211
"re-use the original node information to create the GL",
212
"nodes, doing it much faster. When this happens, the",
213
"message \"Using original nodes to speed things up\" is",
217
"This option forces glBSP to create \"fresh\" GL nodes.",
218
"The downside to reusing the original nodes is that they",
219
"may not be as good as the ones glBSP creates, e.g. the",
220
"special checks to minimise slime-trails don't kick in,",
221
"and the -factor value doesn't have any effect.",
227
"The factor value is located just below the Misc options. ",
228
"It specifies the cost assigned to seg splits. ",
229
"Larger values make seg splits more costly (and thus glBSP tries",
230
"harder to avoid them), but smaller values produce better BSP",
231
"trees. See the section 'How glBSP Works' for more info. ",
232
"The default factor is known to be a good compromise.",
239
//------------------------------------------------------------------------
241
static const char *note_tc_text[] =
244
"@c@l 3. Interaction with other tools",
250
"none of the various WAD tools that exist (such as DSHRINK, CLEANWAD,",
251
"DEUTEX, etc..) are 'glBSP aware', they will rearrange or even remove",
252
"some of the special GL entries, and everything goes pear shaped.",
255
"When using a reject building tool (such as RMB), you need to give",
256
"the -noreject to glBSP to prevent the good REJECT data from being",
259
"@b *** DO NOT: ***",
262
"+ Run dshrink on your map WADs at any time!",
265
"+ Run cleanwad on your map WADs *after* you have compiled your GL",
266
" friendly nodes! (The GL nodes will be removed).",
269
"+ Use Wintex/DEUSF to merge map WADs with GL friendly nodes in them!",
270
" (The GL node entries will be rearranged, causing problems).",
276
//------------------------------------------------------------------------
278
static const char *howwork_text[] =
281
"@c@l 4. How glBSP Works",
286
"A node builder works like this: say you are looking at your level in",
287
"the automap or in the level editor. The node builder needs to pick a",
288
"line (stretching to infinity) that divides the whole map in two halves",
289
"(can be rough). Now cover up one half with your hand, and repeat the",
290
"process on the remaining half. The node builder keeps doing this",
291
"until the areas that remain are convex (i.e. none of the walls can",
292
"block the view of any other walls when you are inside that area).",
295
"Those infinite lines are called 'partition lines', and when they cross",
296
"a linedef, the linedef has to be split. Each split piece is called a",
297
"'seg', and every split causes more segs to be created. Having fewer",
298
"segs is good: less to draw & smaller files, so partition lines are",
299
"chosen so that they minimise splits. The 'Factor' value controls how",
300
"costly these splits are. Higher values cause the node builder to try",
301
"harder to avoid splits.",
304
"So, each 'partition' line splits an area (or 'space') of the level",
305
"into *two* smaller spaces. This is where the term 'Binary Space",
306
"Partition' (BSP) comes from.",
309
"Another thing: having a good BSP tree is also important, and helps for",
310
"faster rendering & smaller files. Thus the node builder also tries to",
311
"make the BSP tree good (by making it balanced, and keeping it small). ",
312
"If the Factor value is too high, it will care too much about the",
313
"splits, and probably make a bad BSP tree. How good the BSP tree is",
314
"can be gauged by the output line that reads:",
316
"@c@t Heights of left and right subtrees = (12,24)",
319
"Lower values are better (the BSP tree is smaller), and values that are",
320
"closer together are also better (the BSP is more balanced).",
326
//------------------------------------------------------------------------
328
static const char *diff_text[] =
331
"@c@l 5. Differences to BSP 2.3",
336
"As mentioned in the readme file, glBSP was originally based on BSP 2.3. Most of",
337
"the code has been rewritten, however, and some features of BSP were",
338
"changed or abandoned. Features that are different:",
341
"+ This GUI version, glBSPX, is completely new !",
344
"+ When the output file is not specified (i.e. no -o option), then",
345
" the default output file will be a GWA file with the same name. ",
346
" Under BSP 2.3, the default output file would be \"tmp.wad\". ",
347
" (This only applies to the command-line version).",
350
"+ All code for doing visplane checks has been removed. It was very",
351
" complex stuff, and for OpenGL DOOM ports this checking is not",
352
" needed. Thus glBSP does not accept the following options that",
353
" BSP 2.3 supports: -thold, -vp, -vpmark, -vpwarn.",
356
"+ glBSP works on big-endian platforms (like the Mac).",
359
"+ The 'just for a grin' special feature where a linedef with tag",
360
" 999 would cause an angle adjustment was removed.",
363
"+ glBSP has Hexen support.",
366
"+ glBSP packs the blockmap, and can merge identical sidedefs.",
369
"+ glBSP has a much more modular architecture, and can even serve",
370
" as a plug-in for other programs.",
376
//------------------------------------------------------------------------
378
static const char *contact_text[] =
381
"@c@l 6. Contact and Links",
385
" The homepage for glBSP can be found here:",
387
"@t http://glbsp.sourceforge.net/",
389
" Questions, bug reports, suggestions, etc... can be made on the",
392
"@t https://sourceforge.net/forum/forum.php?forum_id=33133",
395
"@m Compatible Engines",
397
"@t EDGE http://edge.sourceforge.net/",
398
"@t JDOOM http://www.doomsdayhq.com/",
399
"@t PrBOOM http://prboom.sourceforge.net/",
400
"@t ZDoomGL http://zdoomgl.mancubus.net/",
401
"@t Vavoom http://www.vavoom-engine.com/",
402
"@t Doom3D http://doomworld.com/doom3d/",
408
//------------------------------------------------------------------------
410
static const char *acknow_text[] =
413
"@c@l 7. Acknowledgements",
418
"Andy Baker, for making binaries, writing code and other help.",
421
"Marc A. Pullen, for testing and helping with the documentation.",
424
"Lee Killough and Andr� Majorel, for giving their permission to put",
425
"glBSP under the GNU GPL.",
428
"Janis Legzdinsh for fixing many problems with Hexen wads.",
431
"Jaakko Ker�nen, who gave some useful feedback on the GL-Friendly",
432
"Nodes specification.",
435
"The authors of FLTK (Fast Light Tool Kit), for a nice LGPL C++ GUI",
436
"toolkit that even I can get working on both Linux and Win32.",
439
"Marc Rousseau (author of ZenNode 1.0), Robert Fenske Jr (author of",
440
"Warm 1.6), L.M. Witek (author of Reject 1.1), and others, for",
441
"releasing the source code to their WAD utilities, and giving me lots",
442
"of ideas to \"borrow\" :), like blockmap packing.",
445
"Colin Reed and Lee Killough (and others), who wrote the original BSP",
446
"2.3 which glBSP was based on.",
449
"Matt Fell, for the Doom Specs v1.666.",
452
"Raphael Quinet, for DEU and the original idea.",
455
"id Software, for not only creating such an irresistable game, but",
456
"releasing the source code for so much of their stuff.",
459
". . . and everyone else who deserves it ! ",
465
//------------------------------------------------------------------------
467
const book_page_t book_pages[] =
469
{ contents_text }, // #00
470
{ intro_text }, // #01
471
{ using_text }, // #02
472
{ note_tc_text }, // #03
473
{ howwork_text }, // #04
474
{ diff_text }, // #05
475
{ contact_text }, // #06
476
{ acknow_text }, // #07