Mocha Doom is a Doom source port written in pure Java by Velktron (Maes). It is the first source port of Doom based on a managed language to reach functional status, unlike the STARK engine and DoomCott that came before it. It is also the first non-C/C++/Delphi port of Doom not to be based on virtualization or cross-compilation of the Doom source code, or on a recreation using a different engine, but is actually a manual, hand-optimized translation and adaptation of the original.
Aims and goals
Mocha Doom aims at providing a more modern codebase for Doom, of which still retains much of the original functionality yet is more developer friendly and better suited to modern development techniques and languages. Being it written in pure Java, it does away with Doom's traditional C/C++ memory model and Zone Memory system, has a clearer API and object oriented organization, and is more easily portable into non-C languages than the linuxdoom original, upon which it is largely based.
Current status and features
Mocha Doom reached fully playable status in June 2011 with version 1.4a, after nearly a year of development. It is compatible with all major IWADs and the majority of vanilla PWADs. Since it's otherwise based on a direct translation of the original linuxdoom source code to Java, it retains much of the original's functionality and behavior, including some of its bugs (e.g. the ghost monster bug). In its current version, it's mainly a vanilla compatible/limit removing port, with some unique features of its own. The codebase is for the most part converted from linuxdoom, with bug fixes, elements from Boom, Eternity Engine and others being progressively introduced.
- Unique cross-platform compatibility. Mocha Doom works and is playable on Windows, Mac OSX and several Linux distros, and potentially any platform with a Java Runtime Environment without recompilation or adaptations.
- High resolutions.
- Most map format and internal engine limits are removed.
- The first port of Doom ever to feature an optional multithreaded renderer for texture columns and visplanes.
- Ability to load/save games in vanilla Doom format, and reconstruct infighting targets even from old Doom savegames.
- The only port currently re-enabling (optionally) the disabled automap strobe effect.
Mocha Doom is currently in Alpha stage and under active development, even though playable. Future features will include:
- Sound subsystem.
- DEHACKED patch compatibility.
- Ability to use sprites/flats in PWADs without resource merging.
- Support for Boom map format and gameplay features.
- Console-like configuration system.
- Support for arbitrary screen resolutions and full-screen modes.