Skip to content

Jones-HM/project-igi-internals

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

70 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Project I.G.I Internal

Version Build Platform License

Project I.G.I Internal is Project to access internal methods of the game by using DLL injection method into the game and calling IGI Natives methods to modify/alter the behaviour of the game.
This was originally intended for research project to understand the game mechanics and how developers worked hard to create them.
So don't use this project to misuse the game's identity and source of original game devs.

Pre-Requisite

  • General section.
  • DLL File - This project is DLL file rather than standard application.
  • DLL Injection - This project needs DLL injection into IGI game.
  • Hooking - This project uses Minhook for API calls.
  • GTLibc -C/C++ library for interactig with Game.
  • Pattern Scanning - This project use pattern memory scanning to check Game/Player is loaded properly.
  • Game specific section.
  • IGI Graphs Structure - Project IGI 1 Graph structure data.
  • IGI 3D Models - Project IGI uses 3D models in form of MEF (Mesh External File).
  • IGI Camera View - IGI use game Camera called Viewport to display the game updates.
  • Native section.
  • Native Invoker - Native invoker is a technology to invoke native methods from Game using their Hash with its Handler.

Building DLL project.

๐Ÿ—๏ธ Platform Requirements

โš ๏ธ Important: This project supports only x86 (32-bit) builds because IGI (2000) is a 32-bit game. Any attempt to build or inject a 64-bit DLL will fail.

๐Ÿš€ Auto-Inject DLL with Hot Reload

Use the build_and_reload.bat batch file for automated building and DLL injection with hot reload capability:

# Debug build with auto-injection
.\build_and_reload.bat Debug x86

# Release build with auto-injection  
.\build_and_reload.bat Release x86

Configuration: Update OUTDLL and INJECTOR paths in the batch file according to your setup.

๐Ÿ”ง Manual Building

Open this project in Visual Studio and build it. Your output will be in Release/Debug folder depending on configuration. You'll find IGI-Internals-Debug.dll or IGI-Internals-Release.dll. Use any x86(32-bit) compatible DLL injector or the recommended IGI-Injector.

๐ŸŽฎ IGI Debug Keys Integration & Enhanced Features

This DLL seamlessly integrates with IGI's built-in debug functionality while adding powerful enhancement features. See IGIDebug.md for complete documentation on IGI's native debug keys and activation methods.

๐Ÿš€ Core Features:

  • ๐Ÿ”“ Mission Unlock - Access all missions instantly without progression
  • โš”๏ธ Weapon Unlock - Unlock complete weapon collection
  • ๐Ÿ›ก๏ธ Invincible Mode - Unlimited health and damage immunity
  • โœˆ๏ธ Fly Mode - Fly through levels with unrestricted movement
  • ๐Ÿ‘๏ธ 3rd Person Mode - Enhanced perspective for better gameplay

๐Ÿ”ฅ Advanced Capabilities:

  • ๐Ÿ“ท Free Camera Controls - Professional camera manipulation
  • ๐Ÿ—๏ธ Level Management - Instant level loading and restart functionality
  • ๐Ÿ’พ Memory Operations - Real-time game state modification
  • ๐ŸŽฎ Enhanced Debugging - Native IGI functionality integration

๐Ÿงต Task Scheduling Architecture:

  • FiberPool.hpp - IGI-specific task scheduler optimized for IGI (2000) game architecture
  • FiberPoolEx.hpp - Generic fiber pool implementation for modern game engines
  • Dual-thread system - Separated DLL management from game operations for better performance

โš ๏ธ IGI Game Loop Architecture Limitations:

IGI (2000) uses a Windows Message-based event loop rather than modern game engine loops:

  • Current Implementation: TextPrintDetour() hook calls FiberPool::Instance().RunPending()
  • Critical Limitation: Only executes when HUD text is being drawn (e.g., weapon names, status messages)
  • Problem: When player shows knife or no HUD text is displayed, the scheduler stops running
  • Impact: Task execution becomes inconsistent and frame-dependent on UI state

๐Ÿ” Alternative GameLoop Methods Under Investigation:

  • SFX Sound hooks - May provide more consistent per-frame execution
  • Render pipeline hooks - Graphics calls that execute every frame
  • Input polling hooks - Continuous input processing methods
  • Timer-based approaches - Windows timer integration for consistent execution

๐ŸŒŸ Coming Soon:

  • More gameplay enhancement modes
  • Advanced AI manipulation
  • Custom mission scripting
  • Enhanced visual effects

๐Ÿ™ Special Recognition: Massive thanks to BlankName for discovering and documenting IGI's debug key system, making this integration possible!

Building project for IGI Editor.

The project could be build for IGI Editor the only thing we need to change is Features.cpp file we have to update with Features file for Editor which could be found here Features_Editor.cpp

๐ŸŽฎ Current Features & Hotkeys

The DLL provides the following implemented features accessible via hotkeys during gameplay:

๐Ÿ”ง Active Hotkeys (Ctrl + F1-F6):

  • Ctrl+F1: Random weapon pickup - Equips a random available weapon
  • Ctrl+F2: Random FPS setting - Sets game framerate to random value
  • Ctrl+F3: Load humanplayer - Loads/reloads the human player character
  • Ctrl+F4: Free Camera Mode - Activates free camera (Arrow keys to move, Space/Alt for up/down, Home to exit)
  • Ctrl+F5: Show status message - Displays game status information
  • Ctrl+F6: Write config - Saves current game configuration

๐Ÿ› ๏ธ Debug Features:

  • Home (Debug builds only): Display all available hotkeys in console

Modifying this project.

You can modify the project by focusing on the Features.cpp file located in the DllMainLoop() method under the MENU_SCREEN_INGAME section. Add your logic for Adding/Removing Buildings/Weapons/A.I etc into the game using the FiberPool task scheduler for thread-safe execution.

โš ๏ธ Important Note: Due to IGI's Windows Message-based architecture, the current FiberPool scheduler relies on TextPrintDetour() which only executes when HUD text is being rendered. This means task execution may be inconsistent when no UI text is displayed (e.g., when showing knife weapon). Consider this limitation when implementing time-sensitive features.

Adding new hashes for Natives.

Lets say you found new hash for Native now how to add them into project and use them. So you have to follow the steps.

  1. First Add your Hash to Natives.hpp class like this
  MY_FIRST_NATIVE = 0x00402F90
  1. Go to Natives folder and open NativeHelper.hpp file and in any relevant section add its definition.
  NATIVE_DECL void MY_FIRST_NATIVE_LOAD() { NATIVE_INVOKE<Void>((Void)HASH::MY_FIRST_NATIVE); }
  1. Now go to Features.cpp class and use it.
  // Native method.
  if (GT_HotKeysPressed(VK_CONTROL, VK_F1)) {
	MY_FIRST_NATIVE_LOAD();
  }

๐Ÿ“‹ Changelog

For detailed version history and comprehensive changelog information, see CHANGELOG.md.

๐ŸŽ‰ Latest Release - Version 2.6.1 (September 8, 2025)

Debug Hotkey Improvement:

  • ๐Ÿ”ง Hotkey Update: Changed debug hotkey logging from Space to Home key
    • ๐ŸŽฏ Reason: Prevents conflicts with game controls and provides dedicated debug access
    • ๐Ÿ“‹ Scope: Updated in both Features.cpp and Features_Editor.cpp
    • ๐Ÿ› ๏ธ Function: LogAllHotkeys() now triggered by Home key in debug builds

Previous Architecture Updates (v2.6.0):

  • ๐Ÿงต Dual-Thread Architecture: Major architectural overhaul separating DLL and Game threads
  • ๐Ÿ”„ Auto-Ejection Technology: Single-keypress DLL unloading with CreateRemoteThread
  • ๐Ÿ›ก๏ธ Crash Prevention System: Console control handler and MinHook protection
  • โšก Optimized Performance: 100Hz responsive hotkey detection (10ms intervals)
  • ๐ŸŽฏ Thread-Safe Operations: Detached thread architecture with proper cleanup

Technical Achievements:

  • โœ… Zero-Crash DLL Lifecycle: Complete elimination of detachment crashes
  • ๐Ÿ”ง Smart Cleanup System: Automatic debug hotkey, console, and MinHook cleanup
  • ๐Ÿ“Š Performance: 100Hz hotkey responsiveness, instant DLL ejection
  • ๐Ÿงต Thread Architecture: Separated game thread from DLL management thread
  • ๐ŸŽฎ Seamless Re-injection: No external ejector needed for development workflow

View Full Changelog โ†’

๐Ÿ“š Resource Documentation

For comprehensive resource management documentation including Resource operations, MEF Models, Script handling, Camera controls, Memory operations, and Configuration management, see resource_docs.md.

Quick Reference:

  • ๐Ÿ”ง Resource Operations: Loading, unloading, and managing game resources
  • ๐ŸŽฎ MEF Models: 3D model management and manipulation
  • ๐Ÿ“œ Script Handling: QSC, QAS, and QVM script operations
  • ๐Ÿ“ท Camera Controls: Free camera implementation with custom controls
  • ๐Ÿ’พ Memory Operations: Memory allocation and player management
  • โš™๏ธ Configuration: Game and weapon configuration management

View Complete Resource Documentation โ†’


๐Ÿ“„ License & Credits

Original Author: HeavenHM@2022

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •