GuildTalk Client is an alternative game client for the GuildTalk MMORPG platform. It aims to be complete and flexible, offering LUA scripting for all game interface functionality, CSS-like syntax for UI design, and a modular system where each functionality is a separate module. Users can create new mods and extend the interface freely. Written in C++20 and heavily scripted in LUA.
For a server to connect to, you can use the GuildTalk Server.
- Overview
- Features
- Platform Compatibility
- The Mobile Project
- Building
- Docker
- Protocol Support
- Community Mods and Integrations
- Roadmap
- Need Help?
- Bugs
- Contributing
- License
GuildTalk Client is a full-featured MMORPG game client with a powerful scripting engine, modern rendering pipeline, and extensive customization capabilities. It supports protocols from version 7.6 through 15.11, making it compatible with a wide range of GuildTalk Server configurations. Beyond its flexibility with scripts, it comes with a sound system, graphics effects with shaders, modules/addons, animated textures, styleable UI, transparency, multi-language support, in-game LUA terminal, and an OpenGL 2.0 ES engine that allows porting to mobile platforms. It is also flexible enough to create tools like map editors using scripts -- GuildTalk Client is a framework + Game APIs.
Draw Render (optimization showcase)
460783937-d8a36c7e-b5ba-46ac-a881-a42f76a9eb01.mp4
Asynchronous Texture Loading
-
Description: With this feature the spr file is not cached, consequently less RAM is consumed.
-
Video:
Asynchronous.texture.loading.mp4
Multi-threading
Main Thread
- Sound
- Particles
- Load Textures (files)
- Windows Events (keyboard, mouse, ...)
- Draw texture
Thread 2
- Connection
- Events (g_dispatcher)
- Collect information on what will be drawn on the Map
Thread 3
- Collect information on what will be drawn in the UI
Garbage Collection
Garbage collector is used to check what is no longer being used and remove it from memory (lua, texture, drawpool, thingtype). This allows the client to maintain efficient memory usage, avoid unnecessary data accumulation, and improve overall stability.
Texture Atlas System
Coming with engine improvements and draw-call reduction.
- C++20 (v17, Unity build and Manifest Mode via
vcpkg.json) build in x32 and x64 - Walking System Improvements
- Supports sequenced packages and compression
- Assets load (version 13)
UIWidgets Improvements
-
Description: Improvements in the UI algorithm; better performance in add/remove/reposition widgets. Visible in the battle module.
-
Video:
460149646-4eee68e4-7572-4232-b762-65f4d50219ee.mp4
Auto Reload Module
Activate: g_modules.enableAutoReload() (init.lua)
Video:
2022-11-17_17-45-35-1.1.mp4
Attached Effects System (aura, wings...)
- Compatible with .APNG
- ThingCategoryEffect
- ThingCategoryCreature
- ThingExternalTexture: images in PNG | APNG
- Wiki: https://github.com/mehah/otclient/wiki/Tutorial-Attached-Effects
- Example Code: effects.lua | test code
- Specific lookType settings: outfit_618.lua
You can adjust offsets per looktype using ThingConfig when a default offset doesn't align perfectly for a given sprite.
![]() |
![]() |
![]() |
| ThingCategory Attached Effect | Texture (PNG) Attached Effect | Particle |
Module Controller System
A safer way to create modules, without the need to unbind keys, disconnect events, or destroy widgets. Example: (modules/game_minimap/minimap.lua)
Creature Information by UIWidget
- Enable: setup.otml
- Style: modules/game_creatureinformation
- Note: There is a performance degradation vs direct Draw Pool, about ~20%, tested with 60 monsters attacking each other.
Video:
Video_Sem_Titulo_Feito_Com_O_Clipchamp1.mp4
Tile Widget
Wiki: https://github.com/mehah/otclient/wiki/Tutorial-Attached-Effects
![]() |
![]() |
![]() |
| Tile Attached Effect | Tile Widget | Tile Particle |
Support HTML/CSS Syntax
htmlcss.mp4
OTClient_-_Redemption_LIVE_RELOAD_ENABLED_2025-09-20_17-08-56.mp4
Video_Sem_Titulo_Feito_Com_O_Clipchamp1.mp4
349623570-3fa1803a-2759-4b2f-890e-05f987f43260.mp4
Module examples:
Latency-adaptive camera
The camera adapts to the server latency to always remain smooth and avoid stuttering while walking. If the ping gets high, the camera moves slower to keep up with the server's response time; if the ping drops, the camera moves faster. (Depends on character speed.)
Support Negative Offset (.dat)
- Compatible with ObjectBuilderV0.5.5
- Enable:
g_game.enableFeature(GameNegativeOffset)
Video:
offsets.mp4
- Floor Shadowing
- Highlight Mouse Target (press Shift to select any object)
- Floor View Mode (Normal, Fade, Locked, Always, Always with transparency)
- Floating Effects Option
- Refactored Walk System
- Support for more mouse buttons (e.g., 4 and 5)
- Support DirectX
- HUD Scale
- Client 7.6 ~ 12.85 ~ 12.92, 13.00 ~ 15.11 support (protobuf)
- Market rewritten (compatible with GuildTalk Server)
- Async Texture Loading (engine-level feature)
- Supports sequenced packages and compression
Discord RPC -- @SkullzOTS
- by @SkullzOTS, @surfaceflinger and @libergod
- To enable go to config.h, set 1 in
ENABLE_DISCORD_RPCand configure the other definitions - If using CMake:
cmake -B build -G "Ninja" -DENABLE_DISCORD_RPC=ONcmake --build build
- Step-by-step on YouTube: https://www.youtube.com/watch?v=zCHYtRlD58g
![]() |
![]() |
![]() |
| Example interface | Example in game | Future discord-game-sdk |
Encryption System -- @Mrpox (unsafe implementation)
- by @Mrpox
- Enable via config.h: set ENABLE_ENCRYPTION=1 and change ENCRYPTION_PASSWORD
- To enable building encryption with
--encrypt, set ENABLE_ENCRYPTION_BUILDER=1 (by @TheMaoci) - Generate encrypted files by running client with:
--encrypt SET_YOUR_PASSWORD_HERE
Warning: This encryption implementation is considered unsafe. Use at your own risk.
Client Updater -- @conde2
- by @conde2
- Paste the API folder in your www folder: https://github.com/mehah/otclient/tree/main/tools/api
- Create a folder called
filesin your www and pasteinit.lua,modules,data, andexe - Uncomment and change this line: https://github.com/mehah/otclient/blob/main/init.lua#L6
Colored Text -- @conde2
- by @conde2
- Usage:
widget:setColoredText("{Colored text, #ff00ff} normal text")
QR Code support -- @conde2
- by @conde2
- UIQrCode properties example:
code-border: 2code: Hail GuildTalk Client - Conde2 Dev
Smooth Walk Elevation -- @SkullzOTS
- by @SkullzOTS
- Preview: Gyazo
- Enable in modules/game_features/features.lua: uncomment line 5
Layout based on version 13 -- @marcosvf132
- by @marcosvf132
- Game_shop based on Store by @Oskar1121, modified/fixed by @Nottinghster
- Minimap WorldTime
- GuildTalk Server LUA:
function Player.sendWorldTime(self, time)
- GuildTalk Server LUA:
- Outfit windows compatible with attachEffect, shader
- Calendar
client_bottommenu(activateServices.statusarray ininit.lua)
![]() |
![]() |
| Interface | In-game |
- Imbuement tracker -- by @Reyaleman
- Blessing
- Screenshot
- Highscores
- Store (compatible with 1098, 12.91 ~ 13.40)
- QuickLoot
- Groups Vip
- Reward Wall (Daily Rewards)
Browser Client -- @OTArchive
- Mobile Support -- by @tuliomagalhaes, @BenDol, @SkullzOTS
![]() |
![]() |
![]() |
| Interface | Density Pixel | Joystick |
- Support HTTP/HTTPS/WS/WSS -- by @alfuveam
- Support protocol 12.85/protobuf by @Nekiro
- Action Bar -- by @DipSet
- Access to widget children via
widget.childId-- by @Hugo0x1337 - Shader System Fix (CTRL + Y) -- by @FreshyPeshy
![]() |
![]() |
![]() |
| Creature | Map | Mount |
- Refactored Battle Module -- by @andersonfaaria
- Health and Mana Circle -- by @EgzoT, @GustavoBlaze, @Tekadon58 | Project
- Theme 1.2 by Zews -- Forum Thread
- Add option
ADJUST_CREATURE_INFORMATION_BASED_ON_CROP_SIZEin setup.otml -- by @SkullzOTS - Lua Debugger for VSCode -- see wiki -- by @BenDol
- 3D Sound and Sound Effects! -- by @Codinablack
| Example 1 | Example 2 | Example 3 |
|---|---|---|
001_example.mp4 |
002_example.mp4 |
003_example.mp4 |
-
Bot V8 -- (@luanluciano93, @SkullzOTS, @kokekanon, @FranciskoKing, @Kizuno18)
- Adapted 85%
- VS Solution / CMAKE
-
Shader with Framebuffer -- (@SkullzOTS, @Mryukiimaru, @JeanTheOne, @KizaruHere)
![]() |
![]() |
![]() |
| Creature | Items | UICreature |
-
Full Cyclopedia -- (@luanluciano93, @kokekanon, @MUN1Z, @qatari)
-
Wheel of Destiny -- (R!ck, ZLukSrT#8740, Christianlb, @andreoam, @Libergod)
- Lighting System
- Floor Fading
- Path Finding
- Module Shop
- Module Outfit
- Placeholder
- UIGraph
- Keybinds
- Cam system
- Supported versions: Windows 10 or later (64-bit)
- Compiler: MSVC 2022 (Visual Studio 2022) with C++20 support
- Build tools: CMake 3.22+, vcpkg for dependency management
- Graphics: OpenGL 2.0 ES or DirectX 9/11 support
- Architecture: x86, x86_64
- Supported distributions: Ubuntu 22.04+, Debian 12+, Fedora 38+, Arch Linux
- Compiler: GCC 12+ or Clang 15+ with C++20 support
- Build tools: CMake 3.22+, Make or Ninja
- Dependencies: OpenGL, OpenAL, Boost, PhysFS, zlib, libzip, protobuf (installable via package manager)
- Architecture: x86_64
- Supported versions: macOS 13 (Ventura) or later
- Compiler: Apple Clang (Xcode 14+) or Homebrew GCC/Clang
- Build tools: CMake 3.22+ (via Homebrew)
- Dependencies: installable via Homebrew or vcpkg
- Architecture: x86_64, Apple Silicon (arm64)
- Minimum version: Android 5.0 (Lollipop)
- Build: See Compiling for Android
This is a fork aimed at developing a runnable GuildTalk Client on mobile devices.
Tasks
- Compile on Android devices
- Compile on Apple devices
- Adapt the UI reusing the existing LUA code
Current compiling tutorials
If you are interested in compiling this project, visit the Wiki for detailed build instructions for all platforms.
Build and run the application using Docker:
1) Build the image
docker build -t guildtalk/client .2) Run the built image
# Disable access control for the X server.
xhost +
# Run the container image with the required bindings to the host devices and volumes.
docker run -it --rm \
--env DISPLAY \
--volume /tmp/.X11-unix:/tmp/.X11-unix \
--device /dev/dri \
--device /dev/snd guildtalk/client /bin/bash
# Enable access control for the X server.
xhost -| Protocol / Version | Description | Required Feature | Compatibility |
|---|---|---|---|
| TFS (7.72) | Downgrade nekiro / Nostalrius | force-new-walking-formula: true | Supported |
| TFS 0.4 (8.6) | Fir3element | item-ticks-per-frame: 500 | Supported |
| TFS 1.5 (8.0 / 8.60) | Downgrade nekiro / MillhioreBT | force-new-walking-formula: true | Supported |
| TFS 1.4.2 (10.98) | Release | -- | Supported |
| TFS 1.6 (13.10) | Main repo (2024) | See wiki | Supported |
| GuildTalk Server (13.21 / 13.32 / 13.40) | GuildTalk | See Wiki | Supported |
| GuildTalk Server (14.00 ~ 14.12) | GuildTalk | See Wiki | Supported |
| GuildTalk Server (15.00 ~ 15.11) | GuildTalk | See Wiki | Supported |
Tip: If using Nostalrius 7.2, Nekiro TFS-1.5-Downgrades-7.72, or any protocol below 860, and the walking system is stuttering, set
force-new-walking-formula: trueindata/setup.otml. In old protocols, if item speed feels too fast, adjustitem-ticks-per-frame: 75.
| TO-DO | Status | PR |
|---|---|---|
| Sound version 13 | 80% | #1098 |
| Prey and tasks | 10% | #1380 |
| Compendium | 15% | #1625 |
| Party List | 0% | None |
| Proficiency | 80% | #1593 |
| New Imbui 15x/14x | 80% | #1616 |
Ask questions on Discord: https://discord.gg/tUjTBZzMCy
Found a bug? Please create an issue in our bug tracker.
Contributions are welcome! Fork the repository, create a feature branch, and submit a pull request.
If you are interested in supporting the project, donate here: PayPal
GuildTalk Client is made available under the MIT License -- you are free to use it for commercial, non-commercial, closed or open projects. See: MIT License





















