Dave Gnukem Side-scrolling Shooter


Dave Gnukem Side-scrolling Shooter

with david_joffe|24 years experience|C-C++

30859total views

Watch Full Video | +150 LEDU

Dave Gnukem Side-scrolling Shooter

  • English
  • Programming
  • C++C++
  • (0)
  • Project length: 246h 49m

welcome⬩欢迎⬩bienvenue⬩bienvenidos⬩welkom⬩selamat datang⬩ברוכים הבאים⬩أهلا وسهلا⬩ยินดีต้อนรับ Dave Gnukem is a cross-platform open source 2D scrolling platform shooter inspired by Duke Nukem 1. The game intentionally has a somewhat retro feel, and is intentionally meant to have 'similar look and feel' to the original famous 1991 Apogee classic, Duke Nukem 1. It is written in C++. I started working on it around 1994, and from 2004 to 2016 had abandoned it, but during a live-streaming session in Oct 2016 I decided to "un-abandon" the project and try bring it to some sort of "version 1" state of completion. The main outstanding todo's are more monster types, and get the main set of playable levels to some sort of relatively final state. **Github page (latest source code, project README, and issue list):** [https://github.com/davidjoffe/dave_gnukem](https://github.com/davidjoffe/dave_gnukem) **Most recent binary release direct download:** [https://sourceforge.net/projects/gnukem/files/latest/download?source=files](https://sourceforge.net/projects/gnukem/files/latest/download?source=files) **Mini Demo Video:** [https://youtu.be/Hi7WYnOA_fo](https://youtu.be/Hi7WYnOA_fo) **Level editor how-to video:** [https://youtu.be/xiznDqg2BHg](https://youtu.be/xiznDqg2BHg) ### Introduction to the Source Code and Implementation Overview The source code is C/C++. It does not use any 'engines'/'frameworks', it is relatively low-level coded and uses only LibSDL 1.2 (for graphics and keyboard/mouse input) and LibSDLMixer 1.2 (for sounds and background music). Each map/level is a 128x100 grid of pairs of 'blocks' (a foreground and background block), where each 'block' basically corresponds to a 16x16 game object/sprite. There is a generic (abstract) base class, `CThing`, that is used to implement the various "special" types of game objects/entities (e.g. monsters, pick-ups, teleporters, keys, doors etc.). Each special type of game object/entity is implemented by deriving from `CThing` and overriding various virtual functions, that are used to determine what happens when various events occur (e.g. when that thing gets shot, or when the hero collides with it, or the hero uses the action key on it, etc.). When the level is loaded, certain special block types get instantiated into instances of the various `CThing`-derived classes. The frame rate is basically limited to approximately 18Hz. There is a virtual function `CThing::Tick()` that is called each game update ('heartbeat') that is used to implement things like whether and how the monsters move, etc. Each `CThing` also has a virtual function Draw() that it uses to draw itself. Collision detection is implemented using basic bounding boxes. There is also a special 'visibility bounding box' of each game object to perform basic viewport visibility culling, so that game objects are only drawn if they're actually visible in the game viewport. (A third special bounding box is the thing's 'action bounds' - this is used for a.o. things like teleporters that perform special functions when the hero presses the action key while standing 'on' that object.) You can press 'd' in-game to activate on-screen debugging info that shows the various bounding boxes in action. ### Approximate Roadmap to Version 1 Since this is a 'spare-time' project, this roadmap is not fixed, it will depend on time availability, but I am aiming at roughly the following: * Jul/Aug 2017: v0.8: Implement many more monster types, and a few other special 'things' (e.g. rockets etc.) * Aug/Sep 2017: v0.9: Implement equivalent of Dr Proton and finalize plotline etc.; Finalize one basic set of playable levels. Finalize and round off spritesets to be 'not entirely terrible'. * Sep/Oct 2017: v1.0: Final rounding-off and final testing, 'call it version 1'. ### Screenshot ![Dave Gnukem Screenshot](http://scorpioncity.com/dave_gnukem/gallery/Dave%20Gnukem%20%280.71%202%20Jul%202017%29.png "Dave Gnukem Screenshot") Please donate to the project, or else I'll make more games like this: [https://paypal.me/davidjoffe](https://paypal.me/davidjoffe) To grab the latest source, install 'git bash' if on Windows (or git on Linux), and then you should be able to do something like: * mkdir gnukem * cd gnukem * git clone https://github.com/davidjoffe/dave_gnukem.git * cd dave_gnukem * git clone https://github.com/davidjoffe/gnukem_data.git data (The source code and game data are in two separate repos, we clone the data subfolder separately.)


Project Outline


Average rating

0(0 Reviews)