Skip to content

glKarin/com.n0n3m4.diii4a

Repository files navigation

idTech4A++ (Harmattan Edition) idTech4A++

Android Build Actions Status Windows/Linux Build Actions Status
Discord chat
Latest Release
Download Android testing Download Windows/Linux testing

Get it on F-Droid

idTech engine games For Android. An idTech games runtime libraries collection on Android

DOOM III/Quake 4/Prey(2006) OpenGLES on Android/Windows/Linux

DOOM 3 BFG/The Dark Mod/Quake 1 2 3/RTCW/GZDOOM/ETW/RealRTCW/FTEQW/STAR WARS™ Jedi Knight/Serious Sam Classic/Urban Terror/OpenMOHAA/Skin Deep/Quadrilateral Cowboy/Icarus Starship Command Simulator on Android
Original named DIII4A++, based on com.n0n3m4.diii4a's OpenGLES version.

Latest version: 1.1.0harmattan72(lindaiyu)
Latest update: 2026-03-08
Arch: arm64 armv7-a
Platform: Android 4.4+
License: GPLv3


idTech4's feature

  • Linux/Windows(MinGW/MSVC(without editor)) build
  • multi-threading renderer
  • pure soft shadow with shadow-mapping
  • soft shadow with stencil-shadow and translucent stencil shadow
  • global illumination rendering
  • lighting model: Phong/Blinn-phong/PBR/Ambient/No-lighting
  • Wide-character language translation and BFG new fonts support
  • debug render tools support with programming render pipeline
  • OpenGLES2.0/OpenGLES3.0
  • png/dds/bimage texture image, jpeg/png/bmp/dds format of screenshot
  • obj/dae/md5mesh format static model
  • psk&psa/iqm/gltf&glb/fbx format animation/static model
  • OpenAL(soft) and EFX Reverb
  • Float console
  • DOOM3(with full body awareness mod, view body mod, bot mod, view flashlight mod)
  • Quake4(with bot mod, full body awareness mod, view body mod) and Raven's idTech4 engine
  • Prey(2006)(with full body awareness mod) and HumanHead's idTech4 engine

Support games/mods

Game Engine Version OpenGL ES version Vulkan version Standalone folder
(* means always enabled)
Mods/Plugins
DOOM III n0n3m4's dante - 2.0/3.0 doom3 Resurrection of Evil
The Lost Mission
Classic DOOM3
Rivensin
HardCorps
Overthinked Doom^3
Sabot(a7x)
HeXen:Edge of Chaos
Fragging Free
LibreCoop
LibreCoop D3XP
Perfected Doom 3
Perfected Doom 3:RoE
Doom 3: Phobos(Dhewm3 compatibility patch)
Quake IV n0n3m4's dante - 2.0/3.0 quake4 Hardqore
Prey(2006) n0n3m4's dante - 2.0/3.0 prey
DOOM 3 BFG(Classic DOOM 1&2) RBDOOM-3-BFG 1.4.0
(The last OpenGL renderer version)
3.0 1.1 doom3bfg
The Dark Mod Dark Mod 2.13 3.2
(require geometry shader support)
darkmod *
Return to Castle Wolfenstein iortcw 1.51d 1.1 rtcw
Quake III Arena ioquake3 1.36 1.1 quake3 Quake III Team Arena
Quake II Yamagi Quake II 8.60 1.1/3.2 1.0 quake2 Capture The Flag
Ground Zero
The Reckoning
Team Evolves Zaero
3rd Zigock Bot II
Quake I Darkplaces - 2.0 quake1
UZDOOM(64bits) UZDOOM 4.14.2 2.0/3.2 1.0 uzdoom *
Wolfenstein: Enemy Territory ET: Legacy 2.83.2 1.1 etw Omni-Bot support
RealRTCW RealRTCW 5.3 1.1 realrtcw
STAR WARS™ Jedi Knight - Jedi Academy™ OpenJK 1.0.1.1 1.1 openja
STAR WARS™ Jedi Knight II - Jedi Outcast™ OpenJK 1.0.1.1 1.1 openjo
FTEQW FTEQW 1.05 3.2 1.1 fteqw *
Serious Sam Classic : The First Encounter SamTFE 1.10.7 1.1 serioussamtfe *
Serious Sam Classic : The Second Encounter SamTSE 1.10.7 1.1 serioussamtse *
Urban Terror Q3-UT4 4.3.4 1.1 urt
Medal of Honor: Allied Assault OpenMOHAA 0.82.1 1.1 openmohaa
Skin Deep SkinDeep 1.0.4 3.2 skindeep
Quadrilateral Cowboy SkinDeep 1.0.2602252 2.0/3.0 qc
Icarus Starship Command Simulator SkinDeep 1.0.9 2.0/3.0 icarus

Update 1.1.0harmattan72 (2026-03-08)

  • Add Quadrilateral Cowboy(ver 1.0.2602252) support, game standalone directory named qc, game data directory named base. More view in Quadrilateral Cowboy.
  • Add Icarus Starship Command Simulator(ver 1.0.9) support, game standalone directory named icarus, game data directory named base. More view in Icarus Starship Command Simulator.
  • Add new game chooser on launcher.

idTech4's new Cvar/Commands:

Cvar list
Command list


About DOOM 3

Switch current weapon and last weapon

bind "Your key" "_impulse51"


About Quake IV

For playing Quake 4(jmarshall 's Quake4Doom). Now can play all levels, but some levels has bugs.
  1. Putting PC Quake 4 game data file to q4base folder and START directly.
  2. Effect system: Quake4 new advanced BSE particle system is working now! Also see Quake4BSE, Quake4Decompiled, and OpenBSE with DOOM3 original FX/Particle system has been removed.

About Prey(2006)

For playing Prey(2006)(jmarshall 's PreyDoom). Now can play all levels, but some levels has bugs.
  1. Putting PC Prey game data file to base(preybase on Android) folder and START directly.
  2. Some problems solution: e.g. using cvar harm_ui_translateAlienFont to translate Alien text on GUI.
  3. Exists bugs: e.g. some incorrect collision(using noclip), some GUIs not work(Music CD in RoadHouse).
  4. If settings UI is not work, can edit preyconfig.cfg for binding extras key.
bind "Your key of spirit walk" "_impulse54"
bind "Your key of second mode attack of weapons" "_attackAlt"
bind "Your key of toggle lighter" "_impulse16"
bind "Your key of drop" "_impulse25"

Screenshot

Game

Classic bathroomQuake IV on DOOM3Prey(2006) on DOOM3

Mod

Resurrection of EvilThe lost missionClassic DOOM

Other

Quadrilateral CowboyDOOM 3 BFGIcarus Starship Command Simulator Quake III : ArenaQuake III : Team ArenaUrban Terror Quake IIThe Dark ModQuake I Return to Castle WolfensteinWolfenstein: Enemy TerritoryRealRTCW STAR WARS™ Jedi Knight - Jedi Academy™STAR WARS™ Jedi Knight II - Jedi Outcast™Medal of Honor: Allied Assault Wolfenstein 3D


Changes:

Change logs


Build:

  • idTech4A++ using std libc's malloc/free in Mem_Alloc/Mem_Free in idlib/Heap.cpp
  • idTech4A++ using pure OpenGL programming render pipeline

Engine macros

  1. _MULTITHREAD: Add multithread support for rendering.
  2. _USING_STB: Using stb jpeg instead of libjpeg for jpeg image file.
  3. _K_CLANG: If compiling by clang not GCC.
  4. _MODEL_OBJ: Add obj static model support.
  5. _MODEL_DAE: Add dae static model support.
  6. _SHADOW_MAPPING: Add Shadow mapping support.
  7. _OPENGLES3: Add OpenGLES3.0 support.
  8. _OPENAL _OPENAL_EFX _OPENAL_SOFT: Add OpenAL(soft) and EFX Reverb support.
  9. _NO_LIGHT: Add no lighting support.
  10. _STENCIL_SHADOW_IMPROVE: Add stencil shadow improve support(translucent shadow, force combine global shadow and self local shadow).
  11. _SOFT_STENCIL_SHADOW: soft shadow(OpenGLES3.1+), must defined _STENCIL_SHADOW_IMPROVE first.
  12. _MINIZ: Using miniz instead of zlib, using minizip instead of DOOM3's UnZip.
  13. _USING_STB_OGG: Using stb_vorbis instead of libogg and libvorbis.
  14. _D3BFG_CULLING: Add DOOM3-BFG occlusion culling support.
  15. _WCHAR_LANG _NEW_FONT_TOOLS: Add wide-character language font support.
  16. _D3BFG_FONT: Add DOOM3-BFG new font support.
  17. _GLOBAL_ILLUMINATION: Add global illumination support.
  18. _POSTPROCESS: Add retro postprocess rendering support.
  19. _GLSL_PROGRAM: Add GLSL program on new material stage support.
  20. _IMGUI: Add imGUI support.
  21. _SND_MP3: Add mp3 sound file support.
  22. _RAVEN_BSE: Build BSE as effect system on Quake 4.
  23. _RAVEN_FX: Build Fx as effect system on Quake 4.
  24. _MODEL_MD5V6: Add 2002 E3 demo md5mesh/md5anim v6 version animation model converter.
  25. _MODEL_PSK: Support Unreal engine psk/psa animation/static model.
  26. _MODEL_IQM: Support iqm animation/static model.
  27. _MODEL_SMD: Support Source engine smd animation/static model.
  28. _MODEL_GLTF: Support Khronos gltf/glb animation/static model.
  29. _MODEL_FBX: Support Autodesk fbx animation/static model.

* DOOM 3

  1. _DOOM3: Build DOOM 3 improve changes.
  2. MOD_BOTS: Build bot support in multiplayer-game.
  3. _MOD_FULL_BODY_AWARENESS: Build Full-body-awareness mod.
  4. _MOD_VIEW_BODY: Build view-body mod.
  5. _MOD_VIEW_LIGHT: Build player flashlight mod.

* Quake 4

All new sources files put on raven folder.
  1. _RAVEN: Enable Raven Quake 4 patches in engine and idlib source code.
  2. _QUAKE4: Enable Raven Quake 4 patches in game source code.
  3. _RAVEN_BSE: Build Raven Quake 4 BSE as particle system.
  4. _RAVEN_FX: Build DOOM 3 FX instead of BSE as particle system.
  5. MOD_BOTS: Build bot support in multiplayer-game.
  6. _MOD_FULL_BODY_AWARENESS: Build Full-body-awareness mod.
  7. _MOD_VIEW_BODY: Build view-body mod.

* Prey(2006)

All new sources files put on humanhead folder.
  1. _HUMANHEAD: Enable Humanhead Prey patches in engine and idlib source code.
  2. _PREY: Enable Humanhead Prey patches in game source code.
  3. _MOD_FULL_BODY_AWARENESS: Build Full-body-awareness mod.

Android

  1. _OPENSLES: Add OpenSLES support for sound.

Linux

  1. REQUIRE ALSA, zlib, X11, EGL, SDL2
  2. ./bin/cmake_linux_build_doom3_quak4_prey.sh

Windows(MSVC)

  1. REQUIRE SDL2, cURL, zlib: vcpkg install SDL2 curl
  2. Setup your vcpkg.cmake path
  3. /bin/cmake_msvc_build_doom3_quak4_prey.sh
  4. Copy OpenAL32.dll from vcpkg package path to binary path: vcpkg install OpenAL-Soft

Testing version(Non-release. Automatic CI building By Github actions when pushing commits)


Build DOOM3/Quake4/Prey(2006) mod for Android idTech4A++


Run idTech4A++ on other Android application with Android intent

  1. Setup game type with game key: also see Q3E/com.n0n3m4.q3e.Q3EGameConstants.java GAME_XXX constants. Valid value: doom3 quake4 prey2006 quake2 quake3 rtcw tdm quake1 doom3bfg gzdoom etw realrtcw fteqw openja openjo samtfe samtse urt openmohaa skindeep qc icarus source
  2. Setup game command arguments with command key. Starts with game.arm
e.g. Run DOOM 3 with custom mod game dll
startActivity(new Intent().setComponent(new ComponentName("com.karin.idTech4Amm", "com.n0n3m4.q3e.Q3EMain"))
		.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)
		// 1. Setup game type
		.putExtra("game", "doom3")
		// 2. Setup game command
		.putExtra("command", "game.arm +set fs_game moddir + harm_fs_gameLibPath /data/app/~~tBiIEpYUhA3P4wkarcd1AA==/com.author.package-p0-kOTTN2iU3ZewCcNXsrA==/lib/arm64/libgame.so")
		);
finish();

Bot support on DOOM3/Quake4

  1. Extract doom3/d3_sabot_a7.pk4(DOOM 3) or q4base/q4_sabot_a9.pk4(Quake 4) file in apk to game data folder, it includes some defs, scripts and MP game map AAS file(version < 66).
  2. Set cvar harm_g_autoGenAASFileInMPGame to 1 for generating a bad AAS file when loading map in Multiplayer-Game and not valid AAS file in current map, you can also put your MP map's AAS file to maps/mp folder(botaa48 on DOOM 3, botaa32 on Quake 4).
  3. Set harm_si_autoFillBots to -1 for automatic fill bots when start MP game.
  4. Set harm_g_botEnableBuiltinAssets to 1 for enable built-in bot assets if external assets missing(version >= 66), so only need MP game map aas files.
cvars:
  • harm_si_botLevel: Setup bot level.
  • harm_si_botWeapons: Setup bot default weapons.
  • harm_si_botAmmo: Setup bot weapons ammo clip.
  • harm_si_useCombatBboxInMPGame: Players force use combat bbox in multiplayer game(DOOM 3 only).
command:
  • addBot: adds a new bot
  • removeBot: removes bot specified by id (1,31)
  • addBots: add multiplayer bots batch
  • removeBots: disconnect multi bots by client ID
  • fillBots: fill bots to maximum of server
  • appendBots: append more bots(over maximum of server)
  • cleanBots: disconnect all bots
  • truncBots: disconnect last bots
  • botLevel: setup all bot level
  • botWeapons: setup all bot initial weapons
  • botAmmo: setup all bot initial weapons ammo clip

Full-body-awareness on DOOM3/Quake4/Prey(2006)

  1. Make full-body-awareness mode(view player model like first-person view) DOOM 3 example
    Quake 4 example
    Prey(2006) example

  2. Make third-person mode and use crosshair(different from pm_thirdPerson) DOOM 3 example
    Quake 4 example
    Prey(2006) example


Player view flashlight on DOOM3

Point flashlight example
Spot flashlight example


Player body view on DOOM3/Quake4

DOOM 3 example
Quake 4 example


on F-Droid

Feature Github F-Droid
Android min version(for ffmpeg) 4.4 7.0
Khronos Vulkan validation layer Yes No

Compare with other OpenGLES rendering version of DOOM3

Feature idTech4A++ Other
Multi-threading Support
(using multithread command to switch if enabled in gaming)
d3es-multithread support
(and support switch in gaming)
New stage shader
(heatHaze, heatHazeWithMask, heatHazeWithMaskAndVertex, colorProcess, enviroSuit(D3XP))
Yes -
No lighting Yes
(And support switch in gaming by set harm_r_lightingModel to 0)
Yes
TexGen Yes -
OpenGL ES version 2.0 and 3.0+
(point light shadow mapping shader use cubemap on OpenGLES2.0, use texture array on OpenGLES3.0+)
2.0(3.0+ compat)
Debug render tools Yes
(need to set harm_r_renderToolsMultithread to 1 if with multi-threading)
-

Branch:

master:
  • /idTech4Amm: launcher source
  • /Q3E: frontend source
  • /doom3: DOOM 3/Quake 4/Prey(2006) source
free:
  • For F-Droid pure free version.
package:
  • /screenshot: screenshot pictures
  • /source: Reference source
  • /pak: Game resource
n0n3m4_original_old_version:
  • Original old n0n3m4 version source.

Extras download:


About

DOOM III/Quake 4/Prey(2006) GLES on Android/Windows/Linux, DOOM 3 BFG/The Dark Mod/RTCW/Quake 1 2 3/GZDOOM/ETW/RealRTCW/OpenJK/SeriousSam/Skin Deep/Quadrilateral Cowboy/Icarus Starship Command Simulator on Android

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors