All Projects → lethal-guitar → Rigelengine

lethal-guitar / Rigelengine

Licence: gpl-2.0
A modern re-implementation of the classic DOS game Duke Nukem II

Programming Languages

cpp
1120 projects
cpp17
186 projects

Projects that are alternatives of or similar to Rigelengine

Engine
A basic cross-platform 3D game engine
Stars: ✭ 208 (-47.07%)
Mutual labels:  game, game-engine, opengl, sdl2, cross-platform
Imac Tower Defense
OpenGl 4.4 game made with Entity Component System
Stars: ✭ 28 (-92.88%)
Mutual labels:  game-2d, opengl, sdl2, entity-component-system
Simpleton Engine
What a stupid name for a library
Stars: ✭ 42 (-89.31%)
Mutual labels:  game-engine, game-2d, opengl, sdl2
Openage
Free (as in freedom) open source clone of the Age of Empires II engine 🚀
Stars: ✭ 10,712 (+2625.7%)
Mutual labels:  game, game-engine, opengl, entity-component-system
Gideros
Gideros Release version
Stars: ✭ 442 (+12.47%)
Mutual labels:  game, game-engine, game-2d, cross-platform
Engine
C++11 and SDL2 lightweight 2d game framework
Stars: ✭ 71 (-81.93%)
Mutual labels:  game, game-engine, sdl2, cross-platform
Ore Infinium
Ore Infinium, Open Source multiplayer Terraria-inspired Sci-fi game, focused on technology, devices and researching. Written in Kotlin (JVM), LibGDX. Cross platform
Stars: ✭ 139 (-64.63%)
Mutual labels:  game, game-2d, opengl, entity-component-system
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+848.6%)
Mutual labels:  game, game-engine, opengl
Flux
A real-time physically based rendering engine written in C++ and OpenGL
Stars: ✭ 171 (-56.49%)
Mutual labels:  game, game-engine, opengl
Civone
An open source implementation of Sid Meier's Civilization.
Stars: ✭ 176 (-55.22%)
Mutual labels:  game, game-2d, sdl2
Entitas Cpp
Entitas++ is a fast Entity Component System (ECS) C++11 port of Entitas C#
Stars: ✭ 229 (-41.73%)
Mutual labels:  game, game-engine, entity-component-system
Sulis
Turn based tactical RPG with several campaigns, written in Rust
Stars: ✭ 338 (-13.99%)
Mutual labels:  game, game-2d, opengl
Expo Voxel
🎮🌳 Voxel Terrain made in React Native. ∛
Stars: ✭ 169 (-57%)
Mutual labels:  game, game-engine, cross-platform
Protogame
This project has been sunset as of 1st Jan 2018 and is no longer supported or maintained
Stars: ✭ 166 (-57.76%)
Mutual labels:  game, game-engine, cross-platform
Rubeus
A cross platform 2D game engine written in C++ for beginners
Stars: ✭ 159 (-59.54%)
Mutual labels:  game, opengl, cross-platform
Frag
A cross-platform 2D|3D game framework for the Nim programming language
Stars: ✭ 210 (-46.56%)
Mutual labels:  game, game-engine, game-2d
Limonengine
3D FPS game engine with full dynamic lighting and shadows
Stars: ✭ 331 (-15.78%)
Mutual labels:  game-engine, opengl, cross-platform
Etlegacy
ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license.
Stars: ✭ 212 (-46.06%)
Mutual labels:  game, game-engine, opengl
Nazaraengine
Nazara Engine is a fast, complete, cross-platform, object-oriented API which can help you in your daily developper life.
Stars: ✭ 279 (-29.01%)
Mutual labels:  game-engine, opengl, cross-platform
Megaglest Source
MegaGlest real-time strategy game engine (cross-platform, 3-d)
Stars: ✭ 259 (-34.1%)
Mutual labels:  game, game-engine, cross-platform

Rigel Engine Windows build status CI Join the chat at https://gitter.im/RigelEngine/community GitHub All Releases

What is Rigel Engine?

This project is a re-implementation of the game Duke Nukem II, originally released by Apogee Software in 1993 for MS-DOS. RigelEngine works as a drop-in replacement for the original executable: It reads the game's data files and plays just like the original, but runs natively on modern operating systems and is written in modern C++ code with a completely new architecture under the hood. On top of that, it offers various modern enhancements like better game controller support, a wide-screen mode, quick saving etc.

There was never any source code released for the original game, so this project is based on reverse engineering. Disassembly from the original executable served as basis for writing new code from scratch, while video captures from DosBox were used for frame-by-frame verification. See my blog post to learn more about the process.

Try the web version! (compiled to wasm via Emscripten)

Showcase video:

Current state

Gameplay-wise, RigelEngine is feature-complete: All four episodes of the game (shareware and registered version) are fully playable and on par with the original game.

The project overall is far from finished, though. There are still some pieces missing to reach full parity with the original game (a few visual effects, demo playback). On top of that, more modern enhancements and usability improvements are planned.

Supported platforms

RigelEngine runs on Windows, Linux, and Mac OS X.

The Linux version also runs well on small single-board computers (SBCs) like the Raspberry Pi and Odroid Go Advance. See Running on Raspberry Pi and Odroid Go Advance.

Android and iOS versions might happen someday, but there are no concrete plans at the moment.

System requirements

RigelEngine is not very demanding, but it does require OpenGL-capable graphics hardware. Either OpenGL 3.0 or OpenGL ES 2.0 can be used, depending on what's chosen at compile time. To build in GL ES mode, pass -DUSE_GL_ES=ON to CMake.

Any Nvidia or AMD graphics card from 2007 or later should run the game without problems. Intel integrated GPUs only added OpenGL 3 support in 2011, however. On Linux, using GL ES can still be an option for older Intel GPUs.

See Supported Graphics cards for more info.

Differences to the original Duke Nukem II

See list of differences.

What about Duke Nukem 1 and Cosmo's Cosmic Adventure?

RigelEngine focuses exlusively on Duke Nukem II. For Cosmo and Duke 1, there are already other projects: Cosmo-Engine and ReDuke. Aside from that, Duke Nukem 1 is using a completely different engine, so supporting it with this same project doesn't really make sense. This is a bit different for Cosmo, since its engine actually served as basis for Duke Nukem II's engine. Still, the two are different enough that supporting both games with one engine is not really feasible or useful.

Contributing

Contributions to RigelEngine are very welcome! Please have a look at the contribution guide before making a PR.

There is a growing body of documentation on the Wiki, to help with getting into the code base. A good place to start is Architecture Overview

If you are looking for some easy tasks to get started, take a look at issues labeled good first issue.

Running RigelEngine

In order to run RigelEngine, the game data from the original game is required. Both the shareware version and the registered version work. When launching RigelEngine for the first time, it will show a file browser UI and ask you to select the location of your Duke Nukem II installation. The chosen path will be stored in the game's user profile, so that you don't have to select it again next time.

It's also possible to pass the path to the game files as argument on the command line, which can be handy during development.

Acquiring the game data

The full version of the game (aka registered version) is not available currently, but you can still download the freely available shareware version, e.g. from archive.org.

If you already have a copy of the game, you can also point RigelEngine to that existing installation.

The only files actually required for RigelEngine are:

  • NUKEM2.CMP (the main data file)
  • NUKEM2.F1, .F2, .F3 etc. up to .F5 (intro movie files)

Currently, the game will abort if the intro movies are missing, but they aren't mandatory for gameplay, and I'm planning to make them optional in the future.

If there are existing saved games, high score lists, or settings found in the game files, RigelEngine imports them into its own user profile when running for the first time.

Command line options, debugging tools, more info

You can find more info that didn't quite fit in this README over on the Wiki. For example, you'll find info on how to activate the built-in debugging tools, a list of bugs in the original version that have been fixed in Rigel Engine, etc.

Getting binaries

Pre-built binaries for Windows 64-bit are provided with each Release. You can also grab a build of the latest master branch by going to AppVeyor, clicking on "Configuration: Release", and then clicking on "Artifacts".

Thanks to @mnhauke, there is now also a Linux package for OpenSUSE Tumbleweed.

I'm planning to provide binaries for OS X, Ubuntu/Debian, and Raspberry Pi in the future, but right now, you need to build the project yourself on these platforms.

Building from source

See BUILDING.md

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].