Computer Updated...

Tue, Aug 8, 2023 7-minute read

Wow, are we already in the middle of 2023!? Where does the time go? Well, I’ll tell you where mine has been going with some good news and bad news. So, the bad news, Q2DP’s planned release to fall on Q2’s 25th has failed. The good news is I don’t think anyone noticed. So, shhhhh, it’ll be our little secret.

The story so far…

NOTE: During the time of writing this post, the Quake 2: Rerelease has dropped and it’s amazing! COTM blew my hair back. I still have to play the mission packs and the 64 mission but looking forward to it for sure. There’s so much content. They nailed it!

So every now and then something about Q2 into Q1 comes up but I’ve been reluctant to actually release this mostly becuase the main goal of this project was to learn so it’s going to be buggy and weird and probably puzzling in more than a few parts (and I want to be clear I’m only talking about my code as there’s a bunch of stuff in there from other people). To that, a big thanks to Subject9x for basically getting things working when I got stuck and being my Yoda :)

It’s been really fun learning more about how Quake ticks and some of the more advanced features found in engines like DarkPlaces and FTE while adding Quake 2’s monsters and weapons to QC. I also found this to be a really great way to learn how Q2 differed from Q1 and how C was leveraged.

So, I guess if you’re curious what’s in there:

There’s a few custom enemy variants like the teleporting Icarus and some projectile shooting versions of the soldier and infantry. And unfortunately some really cool but currently unused skins for a gunner variant by Subject9x, so IOU some more variants! There are a bunch of cut animations like the Berserker slam attack animation (as seen in the rerelease now, although there’s no leap) and the Technician had an unused wakeup animation (afaik) which would allow you to hide it among barrels or something. It’s pretty neat.

There’s also skill configs for custom enemy health and damage via cvars as seen in Half-Life.

As for the weapons, they’re pretty much all there although I can’t remember why the grenade wasn’t included now, I think we were going to just add more grenade types to the launcher or something. Anyway, a big thanks to Subject9x for bailing me out on this one! The end result is basically a port of Q2’s weapon_generic state machine into Q1.

Quake 2 also has different player types and it was a good challenge. It’s hard coded for now, I think it would be cool to figure out scanning the folder but right now that’s a bit advanced for me, next time! Hopefully!

Speaking of players, Quake 2 also added an inventory system so that was fun to add along with basic crosslevel support for items like keys and powerups. Works pretty much the same as Quake 2. There are a few changes such as the silencer becoming a ‘doubler’ which just increases the rate of fire for a little bit and there’s an invisibility cloak in there as well since, well, Quake 1 and it’s a cool powerup imho.

Traveling between levels works, sort of. I’m still not sure how Quake 2 does it. Going back and forth will reset the maps but you can have different forward moving start positions. So as a partial feature you cold have a map with 2 or more end level points, like going in through the sewers or maybe barging in the front door and you wanted that to be where the next level loads.

Basic BOT support: via (Frikbot) since that came with the base code to which this mod was built. This needs a bit (a lot) of work but it mostly doesn’t crash so… There’s that.

Custom mission support: courtesy of battleMETAL. A .mission file that allows custom levels to show up in the menu with a preview image so sharing custom levels and such should be pretty easy. For now this only supports SP levels as the MP maps are listed by reading a different file so later on it would be cool to extend this to display maps for different gameplay types when hosting a server.

If you do find yourself browsing the code, you may find a lot of unplanned features, as mentioned this was a learning project and like anything there’s a bunch of stuff that would be fun to revisit down the road and I figured why not leave it in there if maybe it’s useful to anyone else.

One of the biggest things was figuring out custom menu stuff (which probably took me way longer than it should) and I’m happy to report that I’ve felt my way around metal-lib and then basically said screw it and reskinned the battleMETAL menu. And after adding, rewriting, deleting, breaking, restoring, fixing, and breaking again here’s the result:

Custom mission support

Custom mission support

Main menu

Main menu

Controls

Controls

New graphics menu

New graphics menu

One fun addition was adding anchor points to the menu:

“I may have gone too far in a few places.” - George Lucas

These act basically as you’d expect and so when the resolution changes these anchor points help to keep things consistent. It works(ish) for now with all the common resolutions (hopefully).

Overall this project taught me a lot and one of the biggest lessons learned is that levels are a big task, you just won’t believe how vastly, hugely, mind-bogglingly big a task they are ;) But seriously though I have a massive amount of respect to those intrepid designers who really get into this craft, the work coming out of the Quake community lately is quite frankly breathtaking and inspiring. It’s an amazing community!

So a lot of my time went into trying to tackle a little example mission but as you can imagine it doesn’t take long before things just sort of ballooned out of control and while I think I managed to reach ‘glorified example map’ status in terms of quality, it was time that would have been better spent on code, since that was the entire purpose of this endeavor but I do really enjoy the prospect of making levels and I can’t say it hasn’t helped in terms of trying to make any custom entities as mapper-friendly as possible.

Trench run: Quake 2 edition…

Trench run: Quake 2 edition…

Scrolling text selling Strogg crypto

Scrolling text selling Strogg crypto

Strogg test chamber, they’re waiting for you…

Strogg test chamber, they’re waiting for you…

Specimen silo housing Strogg Zombies

Specimen silo housing Strogg Zombies

An old mining operation.

An old mining operation.

The SMC Trafalgar has a good view of Stroggos

The SMC Trafalgar has a good view of Stroggos

I regret not putting more focus in learning CSQC which is still very rough and remains a big TODO item on my list. For now things “work” but it’s very rough and mostly built on either tutorial files or other existing frameworks (see credits).

And lastly there’s a bunch of test maps and documentation. Not that I’m expecting this to be used by anyone, I’ve just found it’s really good practice to document as much as possible as I’ve stepped away from projects before and returned and had to take probably more time than what should be necessary to relearn everything because I’m getting older and my memory is not improving with age.

Anyway if you want to give it a try you can poke around an old (alpha) version here.

And here’s the github to the main branch of the source.

So, plans for the future are to fix bugs. I’d also like to maybe write some more tutorials on all the stuff I’ve learned about the menu side of things and HUD code and such.

Happy modding everyone!