News | Forum | People | FAQ | Links | Search | Register | Log in
Latest News
Submit news | News archive | RSS
Series Of Articles On Internal Structure Of Quake Engines
Judging from discussions in Discord channel, it seems like some longtime Quake mappers still don't understand engine basics, like which BSP version is Quake, which is HL, what's the difference, etc.

Back in 2012 Xash3D coder Uncle Mike has wrote several articles explaining inner workings of Quake in more simple words. Couple years ago I translated the first one as an experiment of sorts, doing some restructuring, some additions and explanations, and improving my own understanding of Quake along the way.

I posted the article on but there was no feedback so I didn't continue. But maybe here the article will come in handy:

Culling Invisible Objects in Quake Engines
Two For ..::LvL
Two older releases have made it to ..::LvL - One is an original design, the other a re-make of a Quake classic. Both maps are worth checking out. Included in swelt's release is a DM4 re-make, which is a re-skin and tweaked version of an earlier release.

* Fool's choice by DruZli & xfoo
* Claustrophobopolis 2003 by swelt

LiveView support, videos and panoramas for both releases.

Need for reviews! If you have the time, a review or two would be very helpful.

..::LvL -
Tool That Makes Target/names Management Easier For Duplication
I've made a little web tool ( )

You can copy some entities in Trenchbroom, put it into the input field, press the button, and then you see the list of targets / targetnames. Based on all of the targets / targetnames / killtargets.

After changing it, press the create output button, and then the copy to clipboard button. Then you can paste back into Trenchbroom.

This makes it easier to duplicate larger setups, with path_corners for example.

You can even copy entire maps. So you could use this to combine multiple levels into each other.

Any feedback / feature suggestions is/are appreciated.

Thanks :)
Q1SP: The Black Fog (AD)
Hey! It's my first map, small, linear and to the point.

Requires an engine with increased limits (Quakespasm 0.94.2 and MarkV 1.99 tested and working) and Arcane Dimensions 1.8+

Download and screenshots:

Thank You for checking it out, and I appreciate the feedback
Q1DM: Fanatic
Hi, I made a smallish mp map for Quake/QW.

It features a central building with RA at the third floor and quad on the ground floor, with other rooms and sewers around it. It has all the items and a hidden area.

Some screens:
3 For November At ..::LvL
3 maps for November at ..::LvL - Gloves Off by Foo is a total gem of a map. If nothing else, be sure to grab this one.

* Gloves Off by Foo
* Portal Mayhem by Splat
* Toxic Revenge by HardcoreMazu

LiveView, videos and panoramas for all.

Huge thanks to Sprony who has submitted a number of reviews recently. This has been very helpful.

..::LvL -
New Level Compilers From Uncle Mike
P2ST is a set of level compilers written by Uncle Mike (Xash3D coder) in 2017-2019.

P2ST was written on top of the classic QBSP compiler from HLSDK to avoid generational layering of bugs of ZHLT compiler supplemented with low performance and hard to read macros formatting of VHLT and half-baked solutions of both.

The priorities of writing P2ST compilers were:
1. Being faster than VHLT
2. Creating effective BSP tree (recursion depth, overall speed)
3. Clean lightmaps without artifacts (noise, seams, etc.)
4. Storing additional info for Paranoia 2
5. Compiling Quake maps that VHLT's CSG can't handle due to some specific errors in those maps
6. Unlimited number of planes while staying compatible

By default P2ST produce maps in BSP30 format supported by many source ports of Quake. P2ST can correctly handle Quake-style light sources with limited light radius. The compiler can handle some pretty heavy load, it was tested on maps from Arcane Dimensions including The Forgotten Sepulcher. Uncle Mike claim it to be nearly 50% more effective at saving various mapping limits than TyrUtils.

Although not all features of the compiler can be utilized by Quake engines (custom face extents, custom lightmap scale, world space luxels supported by Xash3D) there are still cross-engine features:

- Reads maps in Quake 1 2 3 format

- Bezier Curves from Quake 3(Uncle Mike uses Quark which got a Bezier tool). At compile time Beziers turn into regular polygons. Example ".map"

- dirtmapping from TyrUtils

- misc_external_map from TyrUtils

- misc_model: same as above but recursive. A certain ".map" can be referenced on another map as misc_model prefab and at compile time the prefab itself, its child prefabs, their child prefabs etc. will compile and will be put into your map. You can edit one external prefab and then it will update on all your maps after you compile them. Prefab maps can contain func_detail, misc_model, env_static, Beziers. World brushes and other entities will be ignored.

- misc_model in ASE format. Specifying a model in HL format turns misc_model into env_static.
Supported env_static parameters:
spawnflags 4 (don't cast shadow)
spawnflags 8 (no vertex lighting)
zhlt_selfshadow 0/1 (for vertex lighting)
zhlt_nosmooth (for broken normals or artistic reason)
zhlt_backfrac (fix light leaks if needed)

- zhlt_nocsg 0/1 (global or for a particular func_group or other entity) disables CSG like in Quake 3. Brushes don't cut each other and void-facing polygons stay.
More func_group parameters:
_dirt to allow/deny dirtmapping on particular face
_shadow to be TyrUtils compatible

- zhlt_precisionclip 0/1 (global or per entity) enables Quake-style creation of collision mesh. Can be useful if you stuck in some complex geometry like caves. Exhaust clipnode limits 4 times faster.

- skybox does not illuminate if there's no other lights

- func_detail_wall, func_detail_fence, func_detail_illusionary, SKIP on solids turns into NULL - from TyrUtils

More entity parameters:

- zhlt_vertexlight 0/1 for any entity

- zhlt_lightflags 2 (brush entities cast shadows)

- zhlt_invisible, zhlt_noclip

- zhlt_detaillevel (func_detail priority level, at 0 it becomes func_group)

- zhlt_usestyle (directly assign lightstyle in some controversial cases)

Command line parameters:

-quake (adjust gamma, dscale, sky for Quake-styled lighting)

-gamma (0.3...1)

-merge 0/1/2 (how to merge adjacent faces of the same plane: default 1, advanced 2)

-balance to mimic VHLT-styled lighting instead of QBSP/ZHLT

Best results can be achieved when compilers are put in root directory of the game, i.e. "Quake" to see all the resources below.

(P2ST - Paranoia 2: Savior Tools)

P2ST ver. 0.98
patch for VIS
Q1SP: Concrete Meltdown (jpqm13)
Hi! Here's my new Quake 1 SP map - "Concrete Meltdown" (jpqm13.bsp). Map is utilizing latest progs_dump v3.0 mod devkit by dumptruck_ds. Requires a source port that supports bsp2 format (increased limits) - quakespasm works best.

- mid-sized base / lava theme map with some outdoor areas
- flavoured with progs_dump 3.0 (monster variants, breakables, ladders and more)
- full weapon set, 4 secrets, 188 enemies on Normal -
- playtime around 20 min, depending on difficulty level



Website copyright © 2002-2022 John Fitzgibbons. All posts are copyright their respective authors.