Dave Gnukem Retro Game

[New Oct 2016] Join our livestream and watch development on this project being live-streamed on LiveEdu.tv and Twitch
🆕 [25 Apr 2020] News: Version 1.0.1 released
🆕 [3 Apr 2018] News: Version 1.0 released

About: Dave Gnukem is an open source retro-style 2D scrolling platform shooter, inspired by and similar to Duke Nukem 1 (a famous original 1991 game that launched the Duke Nukem series). It currently runs on Windows, macOS, Linux and various other platforms. It is written in C++ and uses LibSDL libraries. It features an integrated level editor. Note this is not really a 'clone' or a 're-make'; it is probably most akin to a parody.

See the ReadMe on the github page for more information, or if you are looking for the source code.

download Download latest release (Windows installer; Linux source)

dave gnukem screenshot

Mini Video Demo

 

Features

Note: This is not a 'clone' and it's not intended to be a clone of Duke Nukem 1. It's also not a 're-make'; it's more like a parody. I have no interest in importing the actual DN maps or graphics - the intellectual property thereof belongs to 3DRealms(? check).

The name is a pun on 'Duke Nukem' and 'Gnu' as a sort of 'hat-tip'/reference to the open source license/model.

* This wasn't a retro game when I started on it (~1994ish), but it's taken so long it's now 'de facto' retro genre. So like 'Duke Nukem Forever' it's taking forever to be released.

* "Evil SuperTux": No disrespect intended here toward SuperTux: In this game the SuperTux's have turned evil due to being infected by the SystemD virus.

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 master computer, which is hidden in Vault7."

Any resemblance to actual persons or entities is purely coincidental

TL;DR Shoot anything that moves

Screenshots

More (newer) screenshots here [New 2016] »

Dave Gnukem v1.0.1 on Raspberry Pi, June 2020:

dave gnukem screenshot on raspberry pi

Dave Gnukem v1.0.1 on Haiku OS, June 2020:

Small bit of 'trivia', the 'apocalyptic city skyline' in my background is actually Auckland ... no offense intended to NZers, Auckland is actually not apocalyptic - it's clean and modern! I just happened to have some photos of Auckland I took from a trip to NZ that I realized I could use.

Dave Gnukem Screenshot on Haiku-OS

Dave Gnukem version 0.81, "now with water":

Dave Gnukem Screenshot

Level Editor (v0.81)

Dave Gnukem Level Editor Screenshot

Version 0.55 game screenshot (old):

Dave Gnukem old screenshot 1

Version 0.52 level editor screenshot (old):

Dave Gnukem old level editor screenshot 1

News

25 Apr 2020 Version 1.0.1 released ("Now with extra-retro simulated EGA/CGA settings, you'll feel like you're in the 90s again or your money back", a ReactOS fix, and more ports)

3 Apr 2018 Version 1.0 released

1 Apr 2018 Release 0.97 Various improvements and bugfixes

31 Mar 2018 Release 0.96 Various improvements and bugfixes

11 Mar 2018 Release 0.91 Re-wrote shooting/bullets code; more shadow effects (Shift+F8/F9 to toggle); level editor improvements; Easter Egg; Ctrl+Shift+W large gameplace viewport mode; new Ctrl+F7 level overview level editor command; bugfixes

13 Aug 2017 Release 0.81 Added big jumping monsters, rockets, basic Dr Proetton and basics of end-game sequence, water, a new Level Editor command to create new blank levels, and several bugfixes and sprite improvements

5 Aug 2017 Release 0.72 New 'sort of looks like a cannon on wheels' monster type; New 'approximate equivalent of DN1 rabbits' monster type; New special objects 'antivirus floppy disk' and 'master computer' (see plot); New type of floor that auto-crumbles after hero walks or jumps twice on it; New high-voltage barrier; Fix the falling Acme blocks implementation; Level updates; Add draft storyline/plot; Bugfixes.
Also: OpenPandora port v0.72 available

30 Jun 2017 Release 0.71 (Windows): 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; Bugfixes »

22 Jun 2017 Release 0.70 (Windows): Fix keypolling bug that slightly improves the character control, especially if trying to move left/right one block only; New instructions option on in-game menu; New "-scale N" command line option; Minor sprite and level improvements; New/better sounds; Increase gameplay viewport from 12 to 13 blocks; Bugfixes »

29 Oct 2016 Release 0.66 (Windows): Add shortcut key to toggle sounds on/off (Insert); Fix: On Windows, game window often starts slightly off bottom of screen; Some save/restore game fixes; improvements to some of the sounds and game menu appearance »

22 Oct 2016 Release 0.65: Add volume controls (PgUp/PgDn), some basic background music, and new level editor 'hold in ctrl+alt and click to start level here' function »

16 Oct 2016 Release 0.62. A Mac OS X release is now available »

10 Oct 2016 Release 0.61. Several bugfixes, and added semi-experimental 'big viewport mode' (Backspace + B in game to toggle) to assist with level creation/testing.

9 Oct 2016 Release 0.60. Some Linux compile fixes, a few other improvements (e.g. window size starts larger by default, improvement to default keys, etc.), and create new project source code repo at github.com/davidjoffe/dave_gnukem

8 Oct 2016 Decided to 'un-abandon' the project and try create some sort of 'realistic' +/- 12-month 'roadmap to version 1'. Embarking from the last 2008 release by EMH.

Sample Live-streaming Game Development Videos

As of Oct 2016, you can watch development on this project being live-streamed here (you can also watch live on Twitch and YouTube)

Volume Warning! Some of these videos have loud music.

LiveStream: Sexy Dancy Music and Live-coding on game (Volume Warning):

LiveCoding: Implementing Crumbling Floors:

Trancy dancy music and live game programming (Volume Warning) Rockets Jumping Monsters:

Trancy dancy music and live game programming:

Sprite work:

Trancy dancy music and live #gamedev bugfixing:

Level Editor How-to Video [New Jul 2017]

Old News

14 August 2004 Release 0.55. Replacement of the hero sprite, some new levels, a move to SourceForge, and some code modifications.

25 September 2002 Release 0.54e. A few small code cleanups, a few new tileset additions from Evil Mr Henry, and some new cheat keys in game to assist development.

24 September 2002 Release 0.54d. Fixed level editor crashing when at bottom of map. Added a few new tiles from Evil Mr Henry and a few other new tiles.

22 September 2002 Release 0.54c. Started integrating new integrated level editor from Vytautas Shaltenis (rtfb). Fixed a TGA loading bug; fixed a bug in the Linux version (CR/LF text file loading problem); added a few new sprites from Evil Mr Henry. A few other small bugfixes from rtfb.

9 September 2002 I will, for now, probably be continuing with Dave Gnukem. I have added some levels contributed by T.O.G of SpookWare. To get to them, select "missions" from the game main menu, and select them.

31 January 2002 I will, for now, no longer working on Dave Gnukem. This may or may not be permanent, I don't know yet. If you are interested in taking over this project, please let me know.

23 September 2001 Release 0.54. Sound support is back (thanks to Kent Mein) (although the sounds themselves still suck), implemented a high score list, redefinable keys, rudimentary load/save game support, monsters can now shoot, and, as usual, miscellaneous bugfixes and improvements. The SDL_mixer library is now required.

2 August 2001 A BeOS port of 0.53 is now available at http://www.bebits.com/app/2428 [presently defunct link ~2017]. Thanks to David Marshman [was at: http://www.silvan.demon.co.uk/beos/ - new link unknown] for that! Now if someone would just offer to do a Mac port ...

24 July 2001 Release 0.53. Ported to SDL, finally! Not only is the SDL implementation of the graphics/input are about half the number of lines of code as the DirectX version (DirectX is a pretty clunky API) but the SDL code works on Linux too, eliminating the need for extra Linux code (previously I used GGI).

15 July 2001 Release 0.52. Minor improvements and cleanups (graphics, new features e.g. fans, dynamite, level background image) and rewrites of some sections of code (monsters, lifts, conveyors, bullets)

4 July 2001 Release 0.51c. More minor updates (balloon, ACME falling block, disk, a few graphics improvements) and some reasonable code cleanups.

21 June 2001 Release 0.51b. Minor updates (new pickup types, spikes, GNUKEM letter bonus, a few graphics improvements).

17 June 2001 Release 0.51. Added an object factory. Rewrote the door/key code. Can now pick up letters. Added shootable solid blocks. Can now shoot security cameras. Added green crawly things. Added purple flags. Added shootable banana. Added high score list (almost).

16 June 2001 Got rid of djGameLib, made a number of other cleanups, added a spiky bouncing ball. No sign of the Linux version yet :)

13 June 2001 Uploaded a new version, Windows changes only. Minor cleanups and graphics changes. I don't think the Linux version compiles anymore. This is a temporary situation, I would like to fix it sometime. I have general plans to try port this game to SDL, and phase out all my own library stuff. Added some doxygen documentation for the source code. Fixed some problems that prevented the Windows version from compiling and running at all.

License

The source code is dual-licensed: MIT license, or GPL (GNU General Public License) version 2 or 3. The data file licenses are all open source but are a bit more 'mixed' due to being from multiple sources, which have been documented. Please see the section at the bottom of the included README.md for finer details, as music, and a few sprites, have slightly varying origins/terms.

Supported platforms

  • Windows
  • Linux (You will need the SDL (Simple DirectMedia Layer) 1.2 runtime and SDL_mixer 1.2 library installed (http://www.libsdl.org/)
  • Mac OS X
  • OpenPandora
  • BeOS
  • OpenBSD
  • More ... see the Readme on the github repo for a more up to date list.

A version for BeOS, compiled by David Marshman, can be downloaded at http://www.bebits.com/app/2428 [presently defunct link ~2017].

Documentation

End-user documentation

New readme (2016) »

Source code documentation (generated by doxygen)
davedox.zip

Other miscellaneous odds and ends: some messy commentary about sprite collision detection.

Linking to Dave Gnukem

If you want to link to Dave Gnukem, or if you are adding Dave Gnukem to an online software database, please use this information:

New source code home (as of Oct 2016):

github (source code 'official master')

Home page (binary releases):

sourceforge (binary releases)

File download:

sourceforge.net direct download link

Email contact information: david at djoffe dot com

NB: It is important to use the above links! Some software sites are linking to specific versions of the download file (e.g. ending in 0.53.zip), and this results in broken or outdated links when I upload a new version. The above URLs map to the latest version.

88x31 Banner

If you want, you can also use this 88x31 banner for your link: (Right-click/save-as in most browsers)
Dave Gnukem

(Yes, 88x31 banners are "so 1990s" - but so is this game!)

Help out

Help is wanted on the following:
  • What would be great would be if somone could produce packages for Debian, Ubuntu etc. (I'd suggest perhaps doing two separate packages, one for the application, one for the data, but not sure what's best.)
  • Levels: Need level editors to produce levels.
  • Input: Joystick support.
  • Porting to more platforms
  • Genericize 'engine' more to allow more games to be created with it
  • Coding: More monster types, loading/saving of games, recording/playback of games.
  • Graphics: Good-quality graphics wanted for the game and interface (Mostly 'OK' now)

See the github issue list for more possible ideas. Let me know if you want to help.


History

I started writing this back in 1995 in my first year at university (actually it goes back longer than that, before that there was a pascal/assembly version), partly as a C++ programming learning exercise, and work on it intermittently whenever I get time and inspiration. It was originally a DOS-based 16 color EGA game; I then converted it to Linux/GGI, then I did a DirectX-based Windows port, and then I converted it to SDL. The code is a bit messy due to it's colourful history, I was slowly trying to clean it up but more or less gave up.

At some stage I abandoned the project, partly as I was unhappy with it. Then in Oct 2016, during a livecoding stream, I was playing around with it and decided to unabandon it and try bring it to something that could be called a 'version 1', and set myself a deadline.

PAD (Portable Application Description) file

PAD (Portable Application Description) file

Other

The original Duke Nukem 1 (shareware version) can be downloaded here: 1duke.zip (Approx 300 KB). (The official web page is at 3drealms.com/duke1/index.html