Dave Gnukem
Dave Gnukem is a retro-style 2D platform shooter inspired by Duke Nukem 1, featuring shootable bananas and an integrated level editor.
- Type: standalone game
- Runs on Windows
- By davidjoffe
- Latest release 1.0.3, 2022-11-28
- Source: https://github.com/davidjoffe/dave_gnukem
- Website: https://djoffe.com/gnukem/
README
Dave Gnukem
Dave Gnukem is a retro-style 2D scrolling platform shooter similar to, and inspired by, Duke Nukem 1 (~1991). The source code is cross-platform and open source. It runs on Windows, Linux, Mac OS X and more. (The original Duke Nukem 1 had 16-color EGA 320x200 graphics; the aim here is 'similar but different' gameplay and 'look and feel'. It is kind of a parody of the original. Please note it is not a 'clone', and not a 're-make'.)

Good news :) Dave Gnukem is available in the latest official Debian, Ubuntu, Kali, Raspbian, Devuan & more! You can finally just "sudo apt install davegnukem" to install, then "davegnukem" to run. Even on Windows WSL! (Or use your preferred package manager to install.)
29 Nov 2022: Version 1.0.3 released: First official stable SDL2-based version, with new 'formally maintained' Debian package files (both SDL2 support and Debian packages done by Matteo Bini), as well as Ubuntu, Raspbian etc.
News Apr 2018: Version 1.0 released. Apr 2019 OpenBSD port. (Apr 2020: Version 1.0.1 released.) (19 Nov 2022: 1.0.2 and 1.0.3 update to SDL2! Also adding OS/2 port)
Release Downloads: https://sourceforge.net/projects/gnukem/
Direct Download Link: https://sourceforge.net/projects/gnukem/files/latest/download?source=files
- To install on Windows you can also use:
winget install "Dave Gnukem" OR
winget install DavidJoffe.DaveGnukem
Source code repository: https://github.com/davidjoffe/dave_gnukem
- Repository for datasrc: https://github.com/davidjoffe/gnukem_datasrc (optional)
- Repository for 'data' subfolder: https://github.com/davidjoffe/gnukem_data
Official project page: https://djoffe.com/gnukem/
Mini Demo Video: https://youtu.be/Hi7WYnOA_fo
Donations or Sponsorship Needed: https://www.paypal.com/paypalme/davidjoffe
Who is to blame for this?
Created by: David Joffe ◆ @davidjoffe ◆ djsoftware ◆ LinkedIn ◆ X
The project was originally created and maintained by David Joffe (~1994 to 2004, and Oct 2016 to present). It was maintained by EMH (Evil Mr Henry http://www.emhsoft.com/) from 2004 to 2008. Additional contributions by: T.O.G, Vytautas Shaltenis, Kent Mein, Steve Merrifield, Felix Richter, Kevin Joffe. See also 'Additional Credits' below.
As of 8 Oct 2016, this project is under 'properly' active development again, and on 3 Apr 2018, 'version 1.0' has been released. (Note - this game wasn't 'retro genre' when I started it - it just took so long to complete that it's now 'de facto' "retro"! - David)
About Duke Nukem 1
Duke Nukem 1 was a famous original 16-color 320x200 'classic' game released by Apogee Software in 1991 that launched the Duke Nukem series: https://goo.gl/yP4PbS The original Duke Nukem 1 was created by Todd Replogle (co-creator of the Duke Nukem series), John Carmack (of id Software), Scott Miller (founder of 3D Realms), Allen H. Blum III, George Broussard, and Jim Norwood.
Help Wanted
- Translators wanted to help with localization (see https://github.com/davidjoffe/dave_gnukem/issues/178) - Work has begun on translating the game into other languages, such as French! :)
- [✅ done]
Help Wanted: Packages for major Linux distros, e.g. Debian, Ubuntu - Packages/ports for remaining not-yet-supported Linux distributions, and any other platforms, or consoles. See https://repology.org/project/dave-gnukem/versions as a guide to existing packages
Dave Gnukem added to the Arch Linux AUR (Arch User Repository) 🙂 (Added May 2020 by https://github.com/caltlgin)
- https://aur.archlinux.org/packages/dave-gnukem
- https://aur.archlinux.org/packages/dave-gnukem-git (build from git master)
Spotted: openSUSE Leap packages :) (seemingly by Martin Hauke)
- https://software.opensuse.org/package/dave_gnukem
- https://opensuse.pkgs.org/15.2/games-x86_64/dave_gnukem-1.0.1-lp152.1.1.x86_64.rpm.html (the description here is perfect to me - dj)
- https://opensuse.pkgs.org/15.2/games-x86_64/dave_gnukem-data-1.0.1-lp152.1.1.noarch.rpm.html
Notes
Note the aim of Dave Gnukem is not to be a 'clone', nor to try match DN1 gameplay precisely - the goal is to be 'similar but different', sort of a parody though not terribly funny. It's not the purpose or intention of this project to produce a 'clone', nor is it the intention to try load actual original level or sprite data into this 'engine'. The included levels have been created from scratch by users. The included sprites (apart from a few small exceptions mentioned at the bottom of this README) have been drawn by hand from scratch. The game is sort of a hat tip to the original. - David Joffe
Gameplay Instructions
Try find the exit, while dodging or shooting monsters.
Default Keys:
-
Left/Right: Move left/right
-
Ctrl: Jump
-
Alt: Shoot
-
Up Arrow: Action key (for e.g. opening doors, using teleporters or lifts, activating the exit, etc.)
-
Escape: In-game menu
-
7/6: Increase/decrease volume
-
Insert: Toggle sounds on/off
-
Shift+F6/F7: Dec/Inc speed (framerate)
-
Shift+F8/F9: Toggle map and sprite auto-shadows on/off, respectively
-
F10 Save screenshot
To open doors, find the correct color key, and press the action key on the 'lock' nearby the door(s).
Power boots allow you to jump higher. The special molecule pickup gives you full health.
Storyline/Plot:
The year is $CURRENTYEAR+8. An evil genius, Dr Proetton, has been hired by the CIA to infect the world's computers with a virus called SystemD, crippling them. Only you can stop him. You must find the floppy disk with the Devuan Antivirus on it, and install it on the main computer, which is hidden in Vault7.
Any resemblance to actual persons or entities is purely coincidental
TL;DR Shoot anything that moves
Features
- Now with less crashes
- Game taking forever to complete, like Duke Nukem Forever
- Shootable bananas
- Integrated level editor
- Subliminal messages
- Puns
- Now with extra-retro simulated EGA/CGA settings, you'll feel like you're in the 90s again or your money back
- Evil SuperTux*
- SystemD integration
- Big rockets
- Software doesn't spy on you
- Cutting edge lighting effects you'd expect from 1990
- Family friendly
- Teleporters
- Fans that blow you ;)
- Something that sort of resembles a cannon on wheels
- Nostalgic references to technology nobody uses anymore
- Red balloons
- Arcane command-line parameters nobody will use
- Overweight hero to represent rise in obesity rates since original 1991 release
- A surprisingly bearable 18 frames per second
- A good time killer when baking
- Detects and corrects wrongthink
- Bugs older than your children
- Procedurally generated bugs
- Safe for use during pregnancy
- Makefiles (from the 90s) to struggle with, like the 90s
- Gluten-free
- Supports resolutions nobody owns anymore
- Ask your parents what CGA/EGA/VGA means
- Floors
- Walls
- May cause "Is beauty subjective?" debates
- Doors
- Much much more!
* "Evil SuperTux": Kindly note that no disrespect is intended here toward SuperTux: In this game the SuperTux's have only turned evil due to being infected by the SystemD virus. Save the world by finding the Devuan Antivirus, and they'll be cured.
Ports
- Dave Gnukem on repology: https://repology.org/project/dave-gnukem/versions ("Versions for dave-gnukem")
- Flathub Flatpak release of Dave Gnukem https://flathub.org/apps/details/com.djoffe.gnukem (~2023 by Matthias Mailänder)
- OS/2 port by Andreas Peters (~2022/11 merge of ~2020 https://github.com/davidjoffe/dave_gnukem/pull/128)
- Debian official (~2022 - Matteo Bini; https://github.com/enigma9o7, https://github.com/bgermann; Craig Langman)
- Bodhi Linux Dec 2021 efforts: https://bodhilinux.boards.net/thread/892/packaged-dave-gnukem-silly-retro
- Open Pandora: https://repo.openpandora.org/?page=detail&app=davegnukem-magicsam - release thread: https://pyra-handheld.com/boards/threads/dave-gnukem.79533/ (by https://github.com/sviscapi and https://github.com/ptitseb)
- MorphOS (Mar 2018, by Bruno Peloille): https://www.morphos-storage.net/?page=Games%2FShoot+2D&file=Davegnukem_1.00.lha
- Instructions for ClockworkPi GameShell: https://forum.clockworkpi.com/t/lets-play-dave-gnukem/1917 by: https://forum.clockworkpi.com/u/Oet
- OpenBSD (Apr 2019, by Dr. Brian Robert Callahan) https://openports.pl/path/games/gnukem
- HaikuOS (see discussion thread and instructions here https://discuss.haiku-os.org/t/gaming-on-haiku/3928/74) [22 June 2020]
- HaikuOS Instructions: (to check - confirm these instructions are right for SDL2?)
~> pkgman install libsdl2_devel
~> pkgman install sdl_mixer_devel
Then follow the same instructions as for Linux, e.g. git clone the src, cd into src folder, git clone the gnukem_data into 'data' folder, and 'make'
- Also in HaikuPorts: https://github.com/haikuports/haikuports/tree/master/games-action/dave_gnukem
Awards and Reviews
- "a good time killer when I'm baking" - Alessia_Amelia (Jan 2019)
FAQ (Frequently Asked Questions)
-
Q: 'The scrolling is choppy' or 'framerate low'?
-
A: The code can handle smoother scrolling and faster frame rates by tweaking settings and gameplay code, but is deliberately soft-limited to 18 frames per second (and the scrolling behaviour intended to mimic the original) because the original DN1 behaved close to this, and the point is to offer a nostalgic similar retro 'look and feel' (and thus also frame rate and scrolling behaviour) of the original Duke Nukem 1, which was designed to run on the much slower computers of that era (I used to play DN1 on an 80286 with 16-color EGA graphics in the '90s, and if you've ever had to code for EGA you'd also understand - dj) - so that anyone who also played the original should experience some nostalgic familiarity.
-
Q: Why is the game resolution 320x200?
-
A: The original Duke Nukem 1 had 320x200 16-color EGA-mode graphics ("Enhanced Graphics Adapter", an early video standard that supported 16 colors; many games of the time used 320x200). Since this game is intended as a sort of 'retro parody' it deliberately uses the same original resolution (and frame rate) in order to offer some retro nostalgic recognition and familiarity in look and feel and gameplay, especially for those who played the original. (David Joffe note: The first computer I did 'serious' programming on was an 80286 with EGA display adapter in the 1990s, and I spent quite a lot of time playing the original Duke Nukem 1 - I loved the game - and around ~1994 I started working on a very early x86 assembly language DOS/EGA version of what went on to become Dave Gnukem when in ~1995 I started this C++ version. So this wasn't a retro game when I started it - it just took so long to complete it that by the time version 1 was completed, I noticed everyone was calling it a "retro game", so it's now de facto "retro". I felt during development that if one deviates from 320x200 it feels much less like a 'retro parody of Duke Nukem 1'.) The game source code can support higher resolutions - these are controlled by config options - so the 'engine' could be used to make higher-resolution games, and with higher frame rates and smoother scrolling (with some tweaking).
-
Q: What does the "Don't quit" menu option do?
-
A: It does just what it says, it doesn't quit the game
-
Q: Why does it say "Ordering info" in the menu?
-
A: A small parody and retro recognition item, because the original shareware Duke Nukem 1 had that in the menu - but since this is open source, we add a "not" right after that is also very 1990s
Roadmap
Development LiveStreaming Channels
Development live-stream channel(s):
- (liveedu/livecoding now defunct: liveedu.tv/david_joffe/)
- https://www.twitch.tv/david_joffe/
- https://www.youtube.com/user/davidjoffe2 (partial archive)
History / Changes
Recent:
- ~2023 Localization work in progress (e.g. to be able to translate Dave Gnukem to French and other languages)
2022/11/29 - Version 1.0.3 First official stable SDL2-based version, with new formally maintained Debian package files
- New improved Debian package files by Matteo Bini
- First official stable SDL2-based version with Matteo Bini's updates to SDL2
- New in-game fullscreen toggle
2022/11/19 - Version 1.0.3-dev
~2022 - Work on Debian support and Debian packaging - user contributions by Matteo Bini, https://github.com/enigma9o7, https://github.com/bgermann, Craig Langman
- [19 Nov 2022] Integrating Matteo Bini's implementation of updating the source from SDL1 to SDL2
- [19 Nov 2022] Integrating Andreas Peters OS/2 port!
Matteo Bini implemented SDL2 support (including also contributions for Debian support) https://github.com/davidjoffe/dave_gnukem/pull/135/commits/0f0022b9921982062eb7a93d2aef9a90459f3d33
2022/11/19 - Version 1.0.2 Final SDL1-based release, about to switch to SDL2
- [19 Nov 2022] Final offical SDL1-based release: https://github.com/davidjoffe/dave_gnukem/releases/tag/1.0.2 (https://github.com/davidjoffe/dave_gnukem/releases/tag/1.0.2 (final official SDL1-based source code - if an old downstream port needs to be on SDL1 for some reason we suggest using that 1.0.2 release)
2021 - User work for Bodhi Linux port: https://bodhilinux.boards.net/thread/892/packaged-dave-gnukem-silly-retro
2020/04/25 - Version 1.0.1
- [11 Jun 2019] New 'Retro Settings' menu option with 'extra retro' settings/effects for simulated EGA 16-color and CGA 4-color graphics options. You'll feel like you're back in the 90s or your money back. [NB: currently little-endian platforms only]
- [6 Jun 2019] Incorporate OpenBSD build fixes by Dr. Brian Robert Callahan https://github.com/jasperla/openbsd-wip/commit/e51e3a3b9386365cd0eb8317018463ff4682e0d3
- [10 Apr 2018] Tentative fix for XP and ReactOS support (relating to SetProcessDPIAware stuff)
- [4 Apr 2018] Got it running on TrueOS (use make -f Makefile.bsd)
2018/04/03 - Version 1.0
- [3 Apr 2018] Change it so that you must first turn cheat/debugging stuff (Ctrl+Shift+G) on before using F4 or F5 for sprite/level editor
- [1 Apr 2018] Add Shift+F10 to start/stop auto-save screenshot-per-frame sequence (warning, eats disk space very fast)
2018/03/31 - Version 0.96
- [30 Mar 2018] Change volume control keys from PgUp/PgDn to 7/6 (as PgUp/PgDn conflict on some keyboards, e.g. Pandora, and also some laptops don't have 'actual' PgUp/PgDn etc.)
- [30 Mar 2018] Add 'About' page to main menu
- [30 Mar 2018] Add new F10 save screenshot function (saves on Windows under \Users\USERNAME\AppData\Roaming\DaveGnukem\screenshots and on Linux under $HOME/.gnukem/screenshots)
- [26 Mar 2018] Bugfixes and level improvements (also fixed a level bug where one of the levels was impossible to complete)
- [22 Mar 2018] Boot sprite; Improve Dr Proetton (Dr Proton) sprite and behavior
- [20 Mar 2018] Fix overly-large window if Windows DPI scaling settings are enabled (unfortunately the fix breaks Windows XP support - but you can enable djWINXP_SUPPORT in config.h if you want to generate a build that supports Windows XP)
2018/03/11 - Version 0.91
- [11 Mar 2018] Create a Windows installer
- [22 Jan 2018] Add 'easter egg' [arin_j stream viewer suggestion]
- [22 Jan 2018] Level editor highlights instances of selected sprite (yellow), and sprite selection mouse-over sprite (cyan) (F3 toggles this ON/OFF if/when it gets annoying)
- [13 Jan 2018] New slightly experimental map auto-shadows and sprite auto-drop-shadows
- [13 Jan 2018] New shortcut keys Shift+F8/F9: Toggle map and sprite auto-shadows on/off, respectively
- Overhauled shooting/bullets code
- Level Editor: New "Ctrl+F7" command shows overview of all levels, and some basic stats on 'important' gameplay items
- Ctrl+Shift+W Large gameplay viewport mode (currently classified as a 'cheat')
- All cheat keys (and debug/testing keys like H to inflict self-damage) must now first be enabled by pressing Ctrl+Shift+G to enable in-game debugging stuff
- New cheat Backspace+PgUp increases firepower by one (added for testing)
- Numerous bugfixes and gameplay tweaks
2017/08/12 - Version 0.81 [Linux/Mac source release, Windows source and binary]:
- Add water
- Add very basic Dr Proetton ('final boss') and basic foundations of game ending sequence when you beat Dr Proetton
- Add jump-monster
- Add rockets
- Level Editor: New "Ctrl+Alt+N" command to generate a new blank level (NB: Still needs to be added manually to default.gam!)
- Fix a couple of bugs relating to jump height and powerboots
2017/08/05 - Version 0.72 [Linux/Mac source release, Windows source and binary]:
- Add new 'sort of looks like a cannon on wheels' monster type
- Implemented new inventory pickup item 'antivirus disk' and corresponding 'main computer' (when we insert "AV" (anti-virus) disk into main computer we save the world) (should only be one of each of these, and in last level of a 'mission')
- Add new high-voltage "barrier" that must be shot multiple times to destroy before hero can pass through (touching it results in immediate death)
- Add new monster that constitutes the approximate equivalent of DN1 rabbits (for now, or maybe permanently, this is just a sort of 'evil Tux' - not sure yet if placeholder sprite, or part of plot)
- Add new floor type that auto-crumbles after hero walks or jumps twice on it (2nd spriteset, position 5x4 - place only 1 block per segment)
- Re-do instructions screens to display storyline/plot
- Basic more proper/correct implementation of the CAcme falling blocks
- Fixed: Bullets go through doors
2017/06/22 - Version 0.71 [Linux/Mac source, binary Windows only]:
- Add new 'flying robot' monster type
- Implemented access card and access card 'door' and door activator
- Added special molecule pickup that gives you full health
- Level Editor: Add unsaved-changes indication
- Level Editor: Add level statistics page (Ctrl+F6)
- Improve character control: Make vertical jumping/falling movement a bit smoother (more similar to the original DN1)
- Improve viewport vertical auto-scrolling
- New keyboard shortcuts: Shift+F6/F7: Dec/Inc speed (framerate)
- Fix soda can not animating
2017/06/22 - Version 0.70 [Linux/Mac source, binary Windows only]
- Add new basic 'Instructions' option to in-game menu
- Fix: Potential game 'freeze' in teleporter if exiting level editor (or holding in action key)
- Added "-scale N" command line option (1 = 320x200, 2=640x400, etc.) (if passed, this overrides the default behavior of attempting to "intelligently" select the scale factor based on e.g. desktop resolution etc.)
- Fix: "Key polling behavior is subtly incorrect" (this should slightly improve the character control, especially if trying to move left/right one block only)
- Minor sprite and level improvements
- Add hero jump/landing sounds (credit for the sounds: Juhani Junkala), key pick-up sound, and more
- Increase gameplay viewport width from 12 to 13 blocks
2016/10/29 - Version 0.66 [Linux/Mac source, binary Windows only]
- Add shortcut key to toggle sounds on/off (Insert)
- Fix: On Windows, game window often starts slightly off bottom of screen
- Fix: Restore Game from main menu doesn't work
- Fix: Save/Restore game doesn't save "mission" (i.e. selected "game")
- New proper exit sound (is "PowerUp13.mp3" by Eric Matyas https://soundimage.org/)
- Fixed: A monster could kill you in the moments after you entered the exit
- Better hero sho