Trenchbroom Half-Life Setup Jun 20 2022

I’ve had an itch lately to make a map for Quake or Half-Life so after a bit of research discovered Trenchbroom which does both. It seems to be highly regarded amongst Quake mappers and has ‘experimental’ support for Half-Life. After an hour of research I couldn’t find an easy article to set it up for Half-Life so went down the rabbit hole enough to figure it out.

After more research people seemed convinced Trenchbroom was fine for Half-Life mapping but Trenchbroom does say Half-Life support is experimental so I was a bit suspicious.

The first port of call was checking out how you’d setup Hammer (the original Half-Life map editor) so this excellent site came up quickly for general GoldSrc (name of the Half-Life engine) modding and mapping goodness. All beginners guides say you should use Vluzacn’s ZHLT to build your maps. Looking up ZHLT started to ring some bells from the last time I tried to do Half-Life mapping (when I was a young person). You pass your designed map to a series of tools to “compile” it into an actual game map. These are…

  • HLCSG - makes solid geometry by taking your map and making polygons from the brushes
  • HLBSP - makes the BSP (binary space partition) node tree
  • HLVIS - Generates visibility flags for the polygons (what the player can see)
  • HLRAD - Generates lighting

Looking into Trenchbroom you’ll find similarish tools pre-filled in for Quake, so a bit of fiddling around and I made it work using this.

Here we export the map (in case we haven’t saved it), run the tools above with some parameters that point to the exported map and copy the files into Half-Life’s valve/maps folder (would do different folders for mods).

Next, we setup the Engine simply telling it how to find hl.exe

The game also needs to know what map we want to run (although you can run it via the console) so we use +map XXX and -dev (just enables dev mode).

The texture WADS can be added at the bottom right in the ‘Texture Collections’ area. You’ll find the WAD files in the Half-Life directory (you’ll want at least halflife.wad). A prompt will ask how you want to link the WAD, I went with Absolute but do whatever works for your setup.

Couple of issues

Models do not appear in the editor (e.g. you’d expect a scientist model instead of a green box ideally). Not a big deal.

The properties for entities are not correct and/or auto-populated. I had to manually had Brightness, Appearance and Quadratic. The pre-populated _light value was wrong, so I changed it to 255. You’ll need to dig out the properties you need and add them manually when dealing with entities.

Ultimately, I really like Trenchbroom and will spend some time learning it.


Garmin FIT Files Jun 8 2022

As I little bit of a side project I recently touched my toes into the world of sports activity data by reading some data from my Garmin watch.

Garmin uses a binary file format called FIT which is a type of GIS file containing geographical data alongside sport data points for whatever activity you're doing.

The FIT file itself wouldn't be hard to parse by hand but there is no point doing so as Garmin provide an SDK to read the data into memory. Once the file is parsed, you can easily export to CSV or do some data analysis with it.

I wrote a small C# app to read any single FIT file and output a bunch of diagrams. Below I've fed the GPS data into OpenStreetMap using the awesome Leaflet library to plot my recent walk. I've also done a couple of charts using Highcharts. Not bad for 2 hours work!

My main takeaway from this small project is suprise at the lack of quality alternatives to Strava. Obviously there is a lot more to Strava (comparisons, analysis, etc.) but with very little effort I've made a dumb activity page.


Six Months Being a Vegetarian May 31 2022

There isn’t a great deal to say.

I became vegetarian at the beginning of the year, with a vague plan to only eat meat at special occasions but ultimately didn’t. After a month away from meat, I just didn’t fancy it anymore. The whole thing has been very easy and uneventful.

There are only a few things I can think of really mentioning:

  • Guernsey has some restaurants with absolutely naff selections of meat free food. Most have been fine but I’ve been suprised at some well known places.
  • It is sometimes hard to figure out if something is vegetarian. I imagine this was a much bigger ordeal in the past as most things are labelled now. If it’s not though, it can be tough.
  • Some of the things you wouldn’t think contain meat do and it’s pretty disgusting when you look into it. Cheddars, Lilt and Cadbury’s Chocolate Trifle to name a few odd ones. Like, how do you get meat in these things? It’s a bit mad.
  • Chinese takeaways (other than China Red) seem to largely suck for vegetarians.
  • I find the obsession with making vegetable products look and taste like meat quite strange. Vegetables are pretty nice by default, I’m not sure why we need it to taste like sausage.

Disclaimer: I have not been checking alcohol.


26 Year Old Quake Lighting on Hue Mar 27 2022

Here’s a short video demonstrating a small project I recently worked on. The objective was to take the 26 year old light flickering code from the original Quake (also used in Half-Life, Half-Life 2, Portal 2 and Half-Life Alyx). Last year it made the news after some folk synced up videos of the lighting in each game and found the flickering matched exactly.

26 Year Old Quake Lighting on Hue

Converting the code started by pulling the original lighting patterns from the Quake Source Code and converting it into C# for my little WinForms app.

private readonly Dictionary<string, string> _lightDict = new Dictionary<string, string>
{
    { "normal", "m" },
    { "FLICKER (first variety)", "mmnmmommommnonmmonqnmmo" },
    { "SLOW STRONG PULSE", "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba" },
    { "CANDLE (first variety)", "mmmmmaaaaammmmmaaaaaabcdefgabcdefg" },
    { "FAST STROBE", "mamamamamama" },
    { "GENTLE PULSE 1", "jklmnopqrstuvwxyzyxwvutsrqponmlkj" },
    { "FLICKER (second variety)", "nmonqnmomnmomomno" },
    { "CANDLE (second variety)", "mmmaaaabcdefgmmmmaaaammmaamm" },
    { "CANDLE (third variety)", "mmmaaammmaaammmabcdefaaaammmmabcdefmmmaaaa" },
    { "SLOW STROBE (fourth variety)", "aaaaaaaazzzzzzzz" },
    { "FLUORESCENT FLICKER", "mmamammmmammamamaaamammma" },
    { "SLOW PULSE NOT FADE TO BLACK", "abcdefghijklmnopqrrqponmlkjihgfedcba" },
    { "testing", "a" }
};

From there I simply added a ComboBox with the options, a Setup button (to make a connection with my Hue Bridge) and a Start/Stop button to control the flickering.

The characters represent the flickering pattern, e.g. ‘mmmaaaabcdefgmmmmaaaammmaamm’ is ‘Candle (second variety)’ which ultimately gets converted into a number between 0 and 255 which is sent to my study Hue light as a brightness value allowing it to work with any colour.

It turns out that it’s hard to make a decent quality video when you want to show something on the screen and room lighting!


Playing Duke Nukem 3D in 2022 Mar 15 2022

Duke Nukem 3D was released in 1996 and sits amongst the top first person shooters of its time alongside games like Quake, Doom, etc. It is also known for the game engine under the hood called ‘Build’ which has been used as recently as 2019 for Ion Fury.

Playing it in 2022 turns out to be straight-forward. All you need is a…

  • Legal copy of the game (GOG, Steam, Disks, etc.) so you have access to the files DUKE3D.GRP and DUKE.RTS files
  • Download EDuke32, a source port of the original and extract it
  • Optionally the Duke Nukem 3D: High Resolution Pack also extracted (but bin their shareware versions of DUKE3D.GRP and DUKE.RTS)

And Voilà, that’s it!

Duke32 away.

Aged pretty well gameplay wise.


Previous Page: 1 of 11 Next