Skip to content
PORTSNATIVE.
HomeCatalog
Web GamesEmulatorsToolsNews
PORTSNATIVE.

A catalog for discovering ports and related projects. We link to official sources and do not host original game files.

ExploreCatalogMy list
InformationAbout usSuggest a portSupportDonationsLegal notice
© 2026 PortsNative
Back to catalog
IdTech4A++ (Harmattan Edition)
PORTSNATIVE

IdTech4A++ (Harmattan Edition)

NATIVE PORTSHOOTER / ACTIONWINDOWSLINUXMACOSALPHA

IdTech4A++ (Harmattan Edition)

idTech4A++ (Harmattan Edition)

TechnologyNative C/C++ port (engine reimplementation)

Available forWindows, Linux, macOS

View official project

About the project

idTech4A++ (Harmattan Edition) es un videojuego de disparos, lanzado en 2006.

Official project information

Author's original READMEOpen on GitHub ↗

idTech4A++ (Harmattan Edition) <img align="right" width="128" height="128" src="https://github.com//glKarin/com.n0n3m4.diii4a/raw/master/idTech4Amm/src/main/res/drawable/icon.png" alt="idTech4A++" />

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

<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80">

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

DOOM III/Quake 4/Prey(2006)/Enemy Territory: QUAKE Wars 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.0harmattan73(lindaiyu)
Latest update: 2026-09-25
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

GameEngineVersionOpenGL ES versionVulkan versionStandalone folder<br/>(* means always enabled)Mods/Plugins
DOOM IIIn0n3m4's dante-2.0/3.0doom3Resurrection of Evil<br/>The Lost Mission<br/>Classic DOOM3<br/>Rivensin<br/>HardCorps<br/>Overthinked Doom^3<br/>Sabot(a7x)<br/>HeXen:Edge of Chaos<br/>Fragging Free<br/>LibreCoop<br/>LibreCoop D3XP<br/>Perfected Doom 3<br/>Perfected Doom 3:RoE<br/>Doom 3: Phobos(Dhewm3 compatibility patch)
Quake IVn0n3m4's dante-2.0/3.0quake4Hardqore<br/>Awakening<br/>Translate Subtitle
Prey(2006)n0n3m4's dante-2.0/3.0prey
Enemy Territory: QUAKE Warsn0n3m4's dante-2.0/3.0etqw
DOOM 3 BFG(Classic DOOM 1&2)RBDOOM-3-BFG1.4.0<br/>(The last OpenGL renderer version)3.01.1doom3bfg
The Dark ModDark Mod2.133.2<br/>(require geometry shader support)darkmod *
Return to Castle Wolfensteiniortcw1.51d1.1rtcw
Quake III Arenaioquake31.361.1quake3Quake III Team Arena
Quake IIYamagi Quake II8.601.1/3.21.0quake2Capture The Flag<br/>Ground Zero<br/>The Reckoning<br/>Team Evolves Zaero<br/>3rd Zigock Bot II
Quake IDarkplaces-2.0quake1
UZDOOM(64bits)UZDOOM4.14.22.0/3.21.0uzdoom *
Wolfenstein: Enemy TerritoryET: Legacy2.83.21.1etwOmni-Bot support
RealRTCWRealRTCW5.31.1realrtcw
STAR WARS™ Jedi Knight - Jedi Academy™OpenJK1.0.1.11.1openja
STAR WARS™ Jedi Knight II - Jedi Outcast™OpenJK1.0.1.11.1openjo
FTEQWFTEQW1.053.21.1fteqw *
Serious Sam Classic : The First EncounterSamTFE1.10.71.1serioussamtfe *
Serious Sam Classic : The Second EncounterSamTSE1.10.71.1serioussamtse *
Urban TerrorQ3-UT44.3.41.1urt
Medal of Honor: Allied AssaultOpenMOHAA0.82.11.1openmohaa
Skin DeepSkinDeep1.0.43.2skindeep
Quadrilateral CowboySkinDeep1.0.26022522.0/3.0qc
Icarus Starship Command SimulatorSkinDeep1.0.92.0/3.0icarus

Update 1.1.0harmattan73 (2026-09-25)

  • Add Enemy Territory: QUAKE Wars(ver 1.5) support, game standalone directory named etqw, game data directory named etqwbase. More view in Enemy Territory: QUAKE Wars.
  • Add Quake 4: Awakening mod of Quake4 support, game data directory named q4xbase. More view in Quake 4: Awakening.
  • Add Quake 4: Translate Subtitle mod of Quake4 support, game data directory named hazzzzzy. More view in Quake 4: Translate Subtitle.
  • Update RealRTCW version to 5.4.
  • Update The Dark Mod version to 2.14.
  • Fix DOOM3-BFG vulkan.
  • Add gyroscope dead zone(rad/s) setting in launcher's controls tab panel.

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

  1. Effect system: Quake4 new advanced BSE particle system is working now! Also see Quake4BSE, Quake4Decompiled.

About Prey(2006)

  1. Some problems solution: e.g. using cvar harm_ui_translateAlienFont to translate Alien text on GUI.
  2. Exists bugs: e.g. some incorrect collision(using noclip), some GUIs not work(Music CD in RoadHouse).
  3. 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"

----------------------------------------------------------------------------------

> #### About Enemy Territory: QUAKE Wars
1. Only support play with bots, and has some bugs.

----------------------------------------------------------------------------------

> #### Screenshot
##### Game

<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_doom3_bathroom.png" width="50%" alt="Classic bathroom"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_quake4.png" width="50%" alt="Quake IV on DOOM3">
<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_prey.png" width="50%" alt="Prey(2006) on DOOM3"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_etqw.jpg" width="50%" alt="ETQW on DOOM3">

##### Mod

<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_doom3_roe.png" width="25%" alt="Resurrection of Evil"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_doom3_the_lost_mission.png" width="25%" alt="The lost mission"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_classic_doom3.png" width="25%" alt="Classic DOOM"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_quake4_awakening.jpg" width="25%" alt="Quake 4: Awakening">

##### Other

<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_quadrilateral_cowboy.jpg" width="33%" alt="Quadrilateral Cowboy"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_doom3bfg.jpg" width="33%" alt="DOOM 3 BFG"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_icarus.jpg" width="33%" alt="Icarus Starship Command Simulator">
<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_quake_iii_arena.jpg" width="33%" alt="Quake III : Arena"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_skin_deep.jpg" width="33%" alt="Quake III : Team Arena"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_urt.jpg" width="33%" alt="Urban Terror">
<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_quake2.jpg" width="33%" alt="Quake II"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_the_dark_mod.jpg" width="33%" alt="The Dark Mod"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_quake1.jpg" width="33%" alt="Quake I">
<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_return_to_castle_wolfenstein.jpg" width="33%" alt="Return to Castle Wolfenstein"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_wolfenstein_enemy_territory.jpg" width="33%" alt="Wolfenstein: Enemy Territory"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_realrtcw.jpg" width="33%" alt="RealRTCW">
<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_openja.jpg" width="33%" alt="STAR WARS™ Jedi Knight - Jedi Academy™"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_openjo.jpg" width="33%" alt="STAR WARS™ Jedi Knight II - Jedi Outcast™"><img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_openmohaa.jpg" width="33%" alt="Medal of Honor: Allied Assault">
<img src="https://github.com/glKarin/com.n0n3m4.diii4a/raw/package/screenshot/Screenshot_wolf3d.jpg" width="33%" alt="Wolfenstein 3D">

----------------------------------------------------------------------------------

> #### Changes:

[Change logs](doc/CHANGES.md ':include')

----------------------------------------------------------------------------------

> #### 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.
19. **_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.
4. **_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.

#### * Enemy Territory: QUAKE Wars
##### All new sources files put on `humanhead` folder.
1. **_SPLASHDAMAGE**: Enable SplashDamage ETQW patches in engine and idlib source code.
2. **_ETQW**: Enable SplashDamage ETQW patches in game source code.

#### 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](bin/cmake_linux_build_doom3_quak4_prey.sh ':include')

#### 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](bin/cmake_msvc_build_doom3_quak4_prey.sh ':include')
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)
* idTech4A++ for Android arm64: [Android testing](https://github.com/glKarin/com.n0n3m4.diii4a/releases/tag/android_testing).
* idTech4A++ for Android arm32: [Android testing](https://github.com/glKarin/com.n0n3m4.diii4a/releases/tag/android_testing_armv7).
* DOOM 3/Quake 4/Prey(2006) for Windows x64: [Windows x64 testing](https://github.com/glKarin/com.n0n3m4.diii4a/releases/tag/windows_x64_testing).

----------------------------------------------------------------------------------

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

* [DOOM 3 & RoE SDK](https://github.com/glKarin/idtech4amm_doom3_sdk)  
* [Quake 4 SDK](https://github.com/glKarin/idtech4amm_quake4_sdk)  
* [Prey(2006) SDK](https://github.com/glKarin/idtech4amm_prey_sdk) 

----------------------------------------------------------------------------------

> #### 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` `etqw` `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](doom3/base/full_body_awareness.cfg ':include')  
[Quake 4 example](doom3/q4base/full_body_awareness.cfg ':include')  
[Prey(2006) example](doom3/preybase/full_body_awareness.cfg ':include')  

2. Make third-person mode and use crosshair(different from `pm_thirdPerson`)
[DOOM 3 example](doom3/base/full_body_awareness_third_persion.cfg ':include')  
[Quake 4 example](doom3/q4base/full_body_awareness_third_persion.cfg ':include')  
[Prey(2006) example](doom3/preybase/full_body_awareness_third_persion.cfg ':include') 

----------------------------------------------------------------------------------

> #### Player view flashlight on DOOM3
[Point flashlight example](doom3/base/show_view_point_flashlight.cfg ':include')  
[Spot flashlight example](doom3/base/show_view_spot_flashlight.cfg ':include')  

----------------------------------------------------------------------------------

> #### Player body view on DOOM3/Quake4
[DOOM 3 example](doom3/base/def/player_viewbody.cfg ':include')  
[Quake 4 example](doom3/q4base/def/player_viewbody.cfg ':include')  

----------------------------------------------------------------------------------

> #### 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<br/>(using `multithread` command to switch if enabled in gaming) | d3es-multithread support<br/>(and support switch in gaming) |
| New stage shader<br/>(heatHaze, heatHazeWithMask, heatHazeWithMaskAndVertex, colorProcess, enviroSuit(D3XP)) | Yes | - |
| No lighting | Yes<br/>(And support switch in gaming by set harm_r_lightingModel to 0) | Yes |
| TexGen | Yes | - |
| OpenGL ES version | 2.0 and 3.0+<br/>(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<br/>(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)/Enemy Territory: QUAKE Wars 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:

* [Baidu网盘: https://pan.baidu.com/s/1hXvKmrajAACfcCj9_ThZ_w 提取码: `pyyj`](https://pan.baidu.com/s/1hXvKmrajAACfcCj9_ThZ_w?pwd=pyyj)
* [Baidu贴吧: BEYONDK2000](https://tieba.baidu.com/p/6825594793)
* [F-Droid(different signature)](https://f-droid.org/packages/com.karin.idTech4Amm/)

----------------------------------------------------------------------------------
View official project
CALIFICACIÓN
—
Loading votes…
Advertisement

PROJECT FILE

Project type
NATIVE PORT
Genre
Shooter / Action
Status
alpha
Original platform
—
Technology
Native C/C++ port (engine reimplementation)
Version
—
Updated
—

Target platforms 3

Windows
Linux
macOS
View on GitHub
Advertisement