Development principles: Difference between revisions
Jump to navigation
Jump to search
Hendricks266 (talk | contribs) No edit summary |
Hendricks266 (talk | contribs) No edit summary |
||
Line 38: | Line 38: | ||
*Portability | *Portability | ||
**All modern operating systems and hardware architectures are supported. 32- or 64-bit, big- or little-endian, it doesn't matter, it just works. | **All modern operating systems and hardware architectures are supported. 32- or 64-bit, big- or little-endian, it doesn't matter, it just works. | ||
**The developers abhor compiler warnings and maintain a clean build at all times. | |||
**The source code is buildable using many state of the art compilers, including GCC, Clang, and Visual Studio. | **The source code is buildable using many state of the art compilers, including GCC, Clang, and Visual Studio. | ||
**This even extends to homebrew on game consoles, such as [[EDuke32 Wii]]. | **This even extends to homebrew on game consoles, such as [[EDuke32 Wii]]. |
Revision as of 00:59, 16 August 2025
What is important about the EDuke32 Project Family of source ports and what value do they provide to players?
- User Experience (#1 priority)
- Whether you're technically minded or not, the port should give the player a great experience right out of the box.
- Installations of supported games purchased digitally, such as from Steam, GOG, or ZOOM Platform, are detected without any manual setup.
- As far as we have been able to determine, we are the first source port for any game to implement this functionality! (March 2013)
- The default settings should be the best ones.
- Texture filtering on pixel art is turned off by default.
- A modern WSAD-based control scheme is the default. (The original MS-DOS keyboard layout is also available.)
- Options menus should be simple and clear to avoid confusing new users, while allowing advanced customization through console commands.
- Widescreen resolutions are supported natively with a horiz-plus field of view, extending what the player can see to the sides, rather than the lazy approach of vert-minus, cropping off the top and bottom of the screen, frequently seen even in commercially released games of the 2000s.
- Hundreds of bugs and crashes have been eliminated.
- Accuracy & Authenticity
- Gameplay accuracy: The game logic state machine and world physics should be able to replicate the behavior of the original EXE file, which is demonstrated when playback of attract mode demos synchronize (demo-accurate). With that ground truth documented, conscious fixes to bugs can be applied as the conservator of a painting would.
- Translation: You are playing the same game!
- Visual aesthetic accuracy:
- The shading and tint of the game world are preserved even when running with modern hardware-accelerated graphics, which is vital to present the game's atmosphere true to its creators' original intent.
- The classic software renderer is still supported.
- Sound & music accuracy:
- The ports use the games' original sound mixing library, providing full support for EMIDI functionality used by the music, and the so-called "reverb" effect used for in-game worldbuilding.
- The original games primarily used low-quality sound effects (8-11 KHz) lacking the higher frequencies necessary to be perceived as crisp and clear, paired with simple linear interpolation that technically introduced artifacts in these higher ranges, but had the positive side effect of giving them more apparent detail. Modern computers are now capable of performing sinc interpolation approaching mathematical perfection, avoiding these artifacts, but also exposing the formerly obscured low quality. Not accounting for this is why releases like the Xbox and PlayStation ports of Duke Nukem 3D: 20th Anniversary World Tour still have muffled sound to this day.
- The included Adlib/SoundBlaster FM synthesis emulation provided by Nuked-OPL3 is sample-accurate, meaning it produces output identical to the real hardware.
- Gameplay accuracy: The game logic state machine and world physics should be able to replicate the behavior of the original EXE file, which is demonstrated when playback of attract mode demos synchronize (demo-accurate). With that ground truth documented, conscious fixes to bugs can be applied as the conservator of a painting would.
- Feature Set
- Hardware-accelerated graphics are a prominent feature provided by the ports. Just take a look at some screenshots to see what our Polymost and Polymer renderers are capable of.
- Many options for presenting MIDI music are available to suit your own taste, or download a pack of custom renditions in OGG Vorbis or FLAC formats.
- The BUILD Engine's level editor, Mapster32, is WYSIWYG, linked directly with the actual rendering engine. Game engines before and since do not provide such a thing!
- Extensibility
- The CON scripting language has been significantly augmented, featuring actual variables that do not require hacking an inventory item, screen drawing, weapon and projectile customization, math calculations, and event interception. This allows gameplay mods and total conversions that rival even modern games.
- Mods can use true-color textures, 3D models, and modern audio formats, all packaged in standard .zip files.
- Performance
- Mouse input is considerably refined, allowing butter-smooth motion with minimal latency. See: mouse support improvements
- High refresh rate displays such as 144 Hz are fully supported.
- Code is written (and original code is re-written) to account for algorithmic complexity as well as the practical nature of computing hardware such as data locality in CPU cache lines.
- The limiting factor of modern computing performance tends to be the cost of moving data around. In a game, that can mean from disk into memory when loading assets, and from the CPU to the GPU in the course of drawing a frame, just to name two examples.
- We refactored our texture system to read all the pixel art in the game into a texture atlas and send it to the GPU once at the beginning of execution so that performance would not be interrupted by unnecessary synchronization points in the course of gameplay.
- We replaced our emulation of indexed shading lookup tables: while previously we generated a separate texture for each shade index, we now perform the lookup on the GPU with a shader program, drastically reducing our video memory footprint.
- The ports are compiled to machine code, and not run as an interpreted language such as Java.
- Portability
- All modern operating systems and hardware architectures are supported. 32- or 64-bit, big- or little-endian, it doesn't matter, it just works.
- The developers abhor compiler warnings and maintain a clean build at all times.
- The source code is buildable using many state of the art compilers, including GCC, Clang, and Visual Studio.
- This even extends to homebrew on game consoles, such as EDuke32 Wii.
- Maintainability & Sustainability
- The source code to the ports is publicly accessible by everyone.
- Distinction between port and mod: Changes like artistic revisionism and tweaking the game balance are not the job of a port. Instead, the port provides a platform for modifications to do these things, clearly communicated to the player.