Duke Nukem 1+2 Remastered

Duke Nukem 1 and 2 are getting an official remaster for the Evercade platform, and I was lead developer on the project. Here’s the official showcase video with an overview of all the new features:

And the announcement trailer:

If you’ve seen or used RigelEngine before, some of the new features will sound familiar – the project is in fact based on RigelEngine. But it very much goes above and beyond what the open-source version can offer, with additional features, a completely new menu system, new music and artwork, and of course the biggest one, a remaster of Duke Nukem 1 with the same enhancements and quality of life improvements as Duke 2.

Continue reading “Duke Nukem 1+2 Remastered”

RigelEngine v0.9.1 released

This release fixes a lot of bugs and inconsistencies with the original, adds demo playback, missing menu animations, and a new “Classic” mode based on my 100 % accurate source code reconstruction. The idea with this mode is to replicate all the bugs and quirks of the original perfectly, at the cost of not all enhancements being available (currently). See the full release notes on GitHub.

Continue reading “RigelEngine v0.9.1 released”

Full Duke Nukem II source code recreated

I’m still working on an in-depth post about this, so this is just a quick update: I’ve created a full recreation of Duke Nukem II’s entire source code. Unlike RigelEngine, this is targeting MS-DOS just like the original. Compiling it using the original toolchain produces a binary that’s 100% identical (matching hash) to the original one. Here’s an era-appropriate 486 66 MHz PC compiling the game:

There are more details in the GitHub repo’s README, and I also wrote a Twitter thread about the project.

I’ve also started work on integrating this code into RigelEngine, as an alternative “Classic” gameplay mode which is 100% accurate to the original. This finally makes it possible to accurately play back the game’s demo in RigelEngine:

This integration work is still in progress, but I expect to merge it to RigelEngine’s main branch pretty soon.

RigelEngine v0.8.4 released

The latest release improves the new smooth scrolling and motion mode by fixing a few issues and making moving level geometry smooth as well (falling rocks, crumbling platforms, doors etc.). This required a major overhaul of the map rendering code, which I’m planning to write a dedicated blog post on at some point. See it in action here:

As usual, there are other improvements and bug fixes as well. Most notable is a change to the HUD in widescreen mode. The HUD is shifted to the right in widescreen mode, which leaves a gap to the left of the HUD. Originally, this gap revealed more of the level. As of the latest release, it just shows a solid color instead.

Continue reading “RigelEngine v0.8.4 released”

RigelEngine recap: Smooth mode, modding, live streams

It’s been a while since my last post, so I thought it’s time for a quick update/recap of what has happened. Let’s start with the biggest news first: RigelEngine features an optional smooth scrolling and movement mode as of version 0.8.2. In other words, you can play Duke Nukem II in 60 FPS now! See it in action in this video:

Continue reading “RigelEngine recap: Smooth mode, modding, live streams”

RigelEngine live on stream & wall dance glitch

Bart aka Dosgamert did a live stream playing through the first 3 episodes of Duke Nukem II using RigelEngine:

I watched most of the stream live and had a good time chatting with Bart and the other viewers. A highlight of the stream (1h 20m in) was when he discovered a glitch allowing movement through walls, which we dubbed the “wall dance”.

The wall dance glitch in action
Continue reading “RigelEngine live on stream & wall dance glitch”

RigelEngine v0.8: Extended modding support, new sound options

Version 0.8 of RigelEngine adds two major new features: Extended modding support and new sound options. On top of that, there are many small improvements and bug fixes. See the full release notes.

Note: Make sure to download version 0.8.1, not 0.8.0 – there’s unfortunately a bug in the latter which I didn’t notice before releasing. The only difference in 0.8.1 is that the bug is fixed.

New modding features in action: Replaced Duke sprite, high-res background, high-res box sprite
Continue reading “RigelEngine v0.8: Extended modding support, new sound options”

Optimizing RigelEngine’s OpenGL rendering for the Raspberry Pi

While working on RigelEngine, performance was mostly a non-issue. Modern computers are so powerful that a 2D game from the early 90s is no match for them. My gaming PC easily runs the game at well over 3000 FPS when uncapping the frame rate, and a 6 year old MacBook Pro still runs at more than 400 FPS. But it’s a different story on the Raspberry Pi. When I first tried running RigelEngine on a Pi 3 model B, it only managed around 15 to 17 FPS when in-game. After a round of optimizations, it now runs at a stable 60 FPS (v-sync on) at 1080p resolution on both Pi 3 and Pi Zero. In this article, I’ll go through the optimization process and describe the changes that made a big difference in performance. And since the project is open-source, you’ll find links to all the relevant code changes.

RigelEngine running on a Pi Zero, with a Pi 3 and Pi 1 sitting next to it
Continue reading “Optimizing RigelEngine’s OpenGL rendering for the Raspberry Pi”

RigelEngine on CppCast

I had the honor of joining Rob and Jason for last week’s episode of CppCast to talk about RigelEngine! Listen to the show here or watch it on YouTube:

In this post, I’d like to expand on some of the topics we discussed.

First, some links for a few things I mentioned:

Continue reading “RigelEngine on CppCast”