Skip to content

gameplug-labs/gameplug

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

68 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ GamePlug: The Universal Plugin Layer

GamePlug is a powerful, multi-API interception framework designed for modders. It provides a unified plugin system to inject custom ImGui UIs and game logic across Vulkan, DirectX 9, DirectX 10, DirectX 11, and DirectX 12.

โœจ Key Features

  • Multi-API Support: One framework to rule them all. Works seamlessly with Vulkan, D3D9, D3D10, D3D11 and D3D12.
  • Unified Plugin System: Build plugins once using a clean C++ interface. No need to worry about the underlying rendering backend.
  • ImGui Integration: Full support for Dear ImGui overlays with shared context between the host and plugins.
  • Cross-Architecture: Supports both x32 (Legacy/DXVK titles) and x64 (Modern titles).

๐Ÿ“– Documentation

๐Ÿ›  Build Instructions

GamePlug supports both x32 (x86) and x64 builds. x32 is often the primary target for older games utilizing DXVK.

Requirements

  • CMake (v3.20+)
  • Visual Studio 2026 with C++ Desktop Development

1. Build x32 (Legacy Support)

cmake -B build32 -A Win32
cmake --build build32 --config Release

2. Build x64 (Modern Titles)

cmake -B build64 -A x64
cmake --build build64 --config Release

๐Ÿ“ฆ Outputs

๐ŸŒ‹ Vulkan (Layer Mode)

  • vklayer.dll: The Vulkan interception layer.
  • VK_LAYER_GAMEPLUG.json: The manifest file for Vulkan.
  • dinput8.dll: The proxy loader to automatically set up the Vulkan layer environment.
  • version.dll: An alternative proxy loader to automatically set up the Vulkan layer environment.

๐ŸŽฎ DirectX 9 / 10 / 11 / 12 (Proxy Mode)

  • dinput8.dll: The universal drop-in proxy for all DirectX games (DX9, DX10, DX11 & DX12).
  • version.dll: Backend-specific alternative proxy files (for D3D9, D3D10, D3D11, and D3D12) if a game does not load or support dinput8.dll.

๐Ÿ”ง Usage

๐ŸŒ‹ Vulkan Integration

Vulkan uses a layer system, which we automate using proxy DLL loaders.

  1. Place vklayer.dll, VK_LAYER_GAMEPLUG.json, and either dinput8.dll or version.dll in the game's executable directory.
  2. Launch the game normally.

Manual Method:

  1. Place vklayer.dll and VK_LAYER_GAMEPLUG.json in a folder.
  2. Set VK_LAYER_PATH to that folder and VK_INSTANCE_LAYERS to VK_LAYER_GAMEPLUG.

๐ŸŽฎ DirectX Integration (9 / 10 / 11 / 12)

DirectX integration is simpler and uses a proxy DLL in the game's executable directory.

Method 1: Universal Proxy (Recommended)

  1. Copy dinput8.dll into the game's executable directory.
  2. Launch the game normally.

Method 2: Alternative Proxy (version.dll)

If a game is incompatible with dinput8.dll or fails to load it:

  1. Copy the appropriate version.dll from the corresponding backend build folder (d3d9, d3d10, d3d11, or d3d12) into the game's executable directory.
  2. Launch the game normally.

๐Ÿค Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines on how to report bugs, suggest features, and submit pull requests. All contributors are expected to follow our Code of Conduct.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Universal graphics framework for creating cross-API game plugins, overlays, and rendering tools on Windows.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors