vigilantbsp

command module
v0.0.0-...-a528975 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 12, 2023 License: GPL-2.0, GPL-2.0-or-later Imports: 22 Imported by: 0

README

VigilantBSP

Author

(c) 2022-2023 VigilantDoomer

Description

VigilantBSP is a multi-threaded polyobject-aware node / blockmap / reject builder (also called "nodebuilder" for brevity) for Doom / Doom 2 / Heretic / Hexen.

It is being developed for Windows and GNU/Linux operating system on both x86 (32-bit) and x86-64 (64-bit) platforms.

Project goals

VigilantBSP intends to fulfill several ambitious goals:

  1. Fast build times for maps without sacrificing support for special effects like self-referencing sectors. Use parallelism where possible to achieve faster builds on multi-core computers.
  2. Support for Heretic and Hexen games being as robust as support for Doom / Doom 2.
  3. Features that help get maps within vanilla limits are researched and implemented, without getting in the way of support for maps targeting advanced engines (Boom, etc.)
  4. Make self-referencing sector effects easy to use for mappers. Default settings should already support self-referencing sector effects very well. Monsters in self-referencing sectors shall be able to see, hear and attack the player.
  5. Special effects provided by other nodebuilders (horizon effect and "precious" linedefs from BSP v5.2, faster scrollers from ZokumBSP) are also implemented.

In future, support for GL nodes / UDMF format MAY be considered as well.

Partial support for RMB effects is already implemented since version 0.74a. Eventually, most RMB effects are going to be supported.

Since 0.75a, VigilantBSP can output non-GL nodes in Zdoom extended and compressed nodes format besides vanilla and DeeP format.

Debt of gratitude

VigilantBSP is indebted to other free/libre software nodebuilders for their ideas and implementations, and intends to give back its own ideas as well. This is achieved by using a free software license.

The list of nodebuilders and people whose work make it all possible includes, but is not limited to: DEU by Raphael Quinet, BSP v5.2 by Colin Reed, Lee Killough and other contributors to BSP (program), ZDBSP by Marisa Heit, Zennode by Marc Rousseau, Zokumbsp by Kim Roar Foldøy Hauge, et al AJ-BSP by Andrew Apted, et al

License

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP (see file COPYING.txt). If not, see https://www.gnu.org/licenses/.

Usage

Usage: vigilantbsp {-options} filename.wad {-o output.wad}

See the documentation file README.txt for more information.

Website / contact information

You can contact me (the developer) through a forum: https://thegreatresist.freeforums.net username: vigilantdoomer displayname: Vigilante

Discussion of nodebuilder happens currently in this thread: https://thegreatresist.freeforums.net/thread/7/vigilantbsp-v0-multi-threaded-nodebuilder

If not, see subforum "Doom (series), Heretic, Hexen" and look for thread that has "VigilantBSP" in its name.

And of course you can open an issue on github.

Documentation

Overview

bblocks aka build blockmap

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

convexity

diffgeometry.go

fixedwriter

Wad specifications for Doom-engine family of games (including Heretic, Hexen, etc.)

intgeometry

NOTE build annotation above MUST be followed by space line Copyright (C) 2022, VigilantDoomer

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

lumpwrite

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

Central log (stdout/stderr) of the program

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

reject

rejectDFS

Code generated from other source files. DO NOT EDIT. Copyright (C) 2022-2023, VigilantDoomer

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

rejectLOS

rejectRMB.go

Code generated from other source files. DO NOT EDIT. Copyright (C) 2022-2023, VigilantDoomer

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

rejectSymmDefs.go

rejectdefs.go

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

segalias

selfref.go

solidblocks

sorthelpers

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

trollgen

Game-agnostic interfaces and their game-dependent implementations

-- This file is where the program entry is. VigilantBSP uses algorithms and ideas from various other free software nodebuilder programs, in addition to original research on topics such as multithreading, autodetection of self-referencing sectors for visibility or to avoid deleting them when deleting "invisible" 2-sided lines, enhancements to visplane reduction heuristics, etc. TODO document better which part was borrowed from whom. Rough breakdown: 1. Blockmap: Marisa Heit's code in ZDBSP + insight from Zokumbsp; multi-threading is mine, subset compression is also reimplemented by me according to Doomwiki description of the technique, byte stealing is mine invention, longest list placed last position idea is from Doomwiki article on Block Rocking Bytes 2. Nodes: port of BSP v5.2, heavily modified, ideas borrowed from Zennode, Zokumbsp and AJ-BSP, possibly some ZDBSP as well; I also implemented some ideas from Lee Killough which he considered hard at the time 3. Reject: port of Zennode's reject code, bugfixes from Zokumbsp, further optimization and self-referencing sector support is mine etc.

Bus for organized writes to destination file

zdefs.go

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

Code generated from other source files. DO NOT EDIT. Copyright (C) 2022-2023, VigilantDoomer

This file is part of VigilantBSP program.

VigilantBSP is free software: you can redistribute it and/or modify it under the terms of GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

VigilantBSP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with VigilantBSP. If not, see <https://www.gnu.org/licenses/>.

zstream.go implements stream that is optionally compressed, to reduce boilerplate that needs to handle both compressed and uncompressed Zdoom node format cases. With the ZStream object, only initialization one-liner will differ, the rest (writing and obtaining final value) will be the same regardless of whether compression was used

Directories

Path Synopsis
The below directive doesn't seem to work (gen executable still being created) // +build ignore The below one does, but now both cause LiteIDE to print out error trying to build, which I need still to verify correctness...
The below directive doesn't seem to work (gen executable still being created) // +build ignore The below one does, but now both cause LiteIDE to print out error trying to build, which I need still to verify correctness...

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL