2025-08-08 20:46:17 -03:00
< h1 >
< img src = "https://github.com/mehah/otclient/blob/main/data/images/clienticon.png?raw=true" width = "32" alt = "logo" / >
OTClient - Redemption
< / h1 >
2024-08-09 13:26:03 -04:00
2025-02-04 10:53:29 -03:00
[](https://discord.gg/tUjTBZzMCy)
2026-05-19 10:47:43 -03:00
[](https://github.com/opentibiabr/otclient/actions/workflows/ci.yml)
2023-02-24 16:31:46 -03:00
[](https://opensource.org/licenses/MIT)
2021-04-30 00:20:36 -03:00
2025-08-08 20:46:17 -03:00
---
2021-11-17 13:20:07 -03:00
2025-11-09 16:59:15 +01:00
## <a id="table-of-contents"></a>📋 Table of Contents
2025-08-08 20:46:17 -03:00
1.  [What is OTClient? ](#what-is-otclient )
2024-08-09 13:26:03 -04:00
2. 🚀 [Features ](#features )
2025-08-08 20:46:17 -03:00
3. < img height = "16" src = "https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/android/android.png" /> [The Mobile Project ](#the-mobile-project )
4. 🔨 [Compiling ](#compiling )
5. 🐳 [Docker ](#docker )
6. 🩺 [Need Help? ](#need-help )
7. 📑 [Bugs ](#bugs )
8. ❤️ [Roadmap ](#roadmap )
9. 💯 [Support Protocol ](#support-protocol )
10. ©️ [License ](#license )
11. ❤️ [Contributors ](#contributors )
feat(client): add automatic modern asset installation (#1727)
Add automatic client-asset installation for modern Tibia versions in OTC, with the UI and runtime support needed for a safe download-and-install flow.
Main changes:
- Add modules/client_assets to orchestrate descriptor and release resolution, downloads, retries, cancellation, archive extraction, optional LZMA handling, and SHA-256 integrity checks.
- Add richer install logs in the console, including download phases, install phases, and final install paths.
- Add support for packaged runtime files, including large DLLs distributed through archives.
- Make client_entergame depend on client_assets.
- Check required assets during login for modern clients version 1281 and newer.
- Prompt the user to download missing modern assets instead of requiring manual setup.
- Allow the client list and version selection to work with installed modern asset sets.
Install layout:
- Install things assets under data/things/<version>.
- Install sound assets under data/sounds/<version>.
- Keep extra runtime files in the existing client root/bin flow.
- Preserve the existing OTC asset layout as the source of truth instead of introducing a separate permanent path.
UI improvements:
- Improve missing-assets and progress dialog sizing and text wrapping.
- Improve progress behavior for downloads without Content-Length.
- Add indeterminate progress behavior for unknown-length phases.
- Add an hourglass busy indicator for indeterminate phases.
- Reduce the perception that the installer is stuck during long extraction steps.
Runtime and build support:
- Add libarchive usage and linking for archive extraction.
- Add SHA-256 helpers and Lua bindings used by client_assets.
- Add safer extraction and path normalization in ResourceManager.
- Adjust the Emscripten HTTP login path to follow the same HTTP/HTTPS fallback behavior used by native login.
Security and integrity:
- Enable strictManifestSha256 by default.
- Disable raw fallback on hash mismatch by default.
- Key releasesCache per source URL and repository to avoid stale cross-source cache reuse.
- Add an LZMA decompression output cap to reduce memory-exhaustion risk.
Compatibility:
- Keep existing classic asset behavior unchanged.
- Use the new auto-install flow only for modern versions when required assets are missing.
- Keep the scope limited to client-side asset automation and required runtime support.
- No server-side Canary behavior is changed by this PR.
This makes modern client setup safer and more automatic by downloading, validating, extracting, and installing missing assets directly from OTC while preserving the existing classic asset flow.
2026-05-28 16:18:44 -03:00
12. 📦 [Client Assets Auto-Install ](docs/client-assets-auto-install.md )
2025-07-01 21:56:58 -03:00
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-11-09 16:59:15 +01:00
## <a id="what-is-otclient"></a> What is OTClient?
2025-08-08 20:46:17 -03:00
OTClient is an alternative Tibia client for usage with OTServ. It aims to be **complete** and **flexible** :
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- **LUA scripting** for all game interface functionality
- **CSS-like syntax** for UI design
- **Modular system**: each functionality is a separate module, allowing easy customization
- Users can create new mods and extend the interface
- Written in **C++20** and heavily scripted in **LUA**
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
For a server to connect to, you can build your own with **theforgottenserver** or **canary** .
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
> [!NOTE]
> Based on [edubart/otclient](https://github.com/edubart/otclient) • Rev: [2.760](https://github.com/edubart/otclient/commit/fc39ee4adba8e780a2820bfda66fc942d74cedf4)
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-11-09 16:59:15 +01:00
## <a id="features"></a>🚀 Features
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
Beyond its flexibility with scripts, OTClient comes with many features that enable client-side innovation in OTServ: **sound system** , **graphics effects with shaders** , **modules/addons** , **animated textures** , **styleable UI** , **transparency** , **multi-language** , **in-game LUA terminal** , and an **OpenGL 2.0 ES engine** that allows porting to mobile platforms. It is also flexible enough to create Tibia tools like map editors using scripts—OTClient is a **framework + Tibia APIs** .
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
### ⚡ Performance & Engine
< details >
< summary > 🖼️ Draw Render (optimization showcase)< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
https://github.com/user-attachments/assets/fe5f1d7f-7195-4d65-bca6-c2b5d62d3890
< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
< summary > 📦 Asynchronous Texture Loading< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- **Description**: with this the spr file is not cached, consequently, less RAM is consumed.
- **Video**:
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
https://github.com/kokekanon/otclient.readme/assets/114332266/f3b7916a-d6ed-46f5-b516-30421de4616d
< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
< summary > 🧵 Multi-threading< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Main Thread**
- Sound
- Particles
- Load Textures (files)
- Windows Events (keyboard, mouse, ...)
- Draw texture
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Thread 2**
- Connection
- Events (g_dispatcher)
- Collect information on what will be drawn on the Map
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Thread 3**
- Collect information on what will be drawn in the UI
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Image:**

< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
< summary > 🧹 Garbage Collection< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Description (1):**
```
Garbage Collection is the feature responsible for automatically managing memory by identifying and releasing objects that are no longer in use. This allows the client to maintain efficient memory usage, avoid unnecessary data accumulation, and improve overall stability.
```
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Description (2):**
Garbage collector is used to check what is no longer being used and remove it from memory. *(lua, texture, drawpool, thingtype)*
< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
< summary > 🧭 Texture Atlas System< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
*(coming with engine improvements and draw-call reduction)*
< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- C++20 ( v17 , Unity build and Manifest Mode *(vcpkg.json)* ) build in x32 and x64
- Walking System Improvements
- Supports sequenced packages and compression
- Asserts load (Tibia 13)
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
### 🎛️ UI & UX
< details >
< summary > 🧩 UIWidgets Improvements< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- **Description:** Improvements in the UI algorithm; better performance in add/remove/reposition widgets. Visible in the **battle module** .
- **Video:**
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
https://github.com/user-attachments/assets/35c79819-b78b-4578-a4a2-af1235139807
< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
< summary > 🔁 Auto Reload Module< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
Activate: `g_modules.enableAutoReload()` ([init.lua ](https://github.com/mehah/otclient/blob/main/init.lua#L114 ))
Video:
2025-07-01 21:56:58 -03:00
2025-08-08 20:46:17 -03:00
https://github.com/kokekanon/otclient.readme/assets/114332266/0c382d93-6217-4efa-8f22-b51844801df4
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > ✨ Attached Effects System (aura, wings…)< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- Compatible with ** .APNG**
- ThingCategoryEffect
- ThingCategoryCreature
- ThingExternalTexture: images in **PNG | APNG**
- **Wiki:** https://github.com/mehah/otclient/wiki/Tutorial-Attached-Effects
- **Example Code:** [effects.lua ](https://github.com/mehah/otclient/blob/main/modules/game_attachedeffects/effects.lua ) • [test code ](https://github.com/mehah/otclient/blob/main/modules/game_attachedeffects/attachedeffects.lua#L1 )
- **Specific lookType settings:** [outfit_618.lua ](https://github.com/mehah/otclient/blob/main/modules/game_attachedeffects/configs/outfit_618.lua )
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
> [!TIP]
> You can adjust offsets per looktype using **ThingConfig** when a default offset doesn’ t align perfectly for a given sprite.
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< p align = "center" >
< table >
< tr >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/001_Bone.gif?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/002_aura.gif?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/003_particula.gif?raw=true" width = "250" > < / td >
< / tr >
< tr >
< td align = "center" > ThingCategory Attached Effect< / td >
< td align = "center" > Texture (PNG) Attached Effect< / td >
< td align = "center" > Particule< / td >
< / tr >
< / table >
< / p >
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🧭 Module Controller System< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
A safer way to create modules, without the need to unbind keys, disconnect events, or destroy widgets.
**Example:** ([modules/game_minimap/minimap.lua ](https://github.com/mehah/otclient/blob/cache-for-all/modules/game_minimap/minimap.lua ))
< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
< summary > 🖼️ Anti-Aliasing Mode Options< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- *Note*: **Smooth Retro** will consume a little more GPU.
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**GIF:**

2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🧩 Creature Information by UIWidget< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- Enable: [setup.otml ](https://github.com/mehah/otclient/blob/e2c5199e52bd86f573c9bb582d7548cfe7a8b026/data/setup.otml#L20 )
- Style: [modules/game_creatureinformation ](https://github.com/mehah/otclient/tree/main/modules/game_creatureinformation )
- **Note:** There is a performance degradation vs direct Draw Pool, about ~20%, tested with 60 monsters attacking each other.
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Video:**
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
https://github.com/kokekanon/otclient.readme/assets/114332266/c2567f3f-136e-4e11-964f-3ade89c0056b
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🧱 Tile Widget< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
Wiki: https://github.com/mehah/otclient/wiki/Tutorial-Attached-Effects
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< p align = "center" >
< table >
< tr >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Tile/001_attachedeffect.gif?raw=true" width = "250" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Tile/002_widget.png?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/raw/main/Picture/Attached%20Effect/Tile/003_particulas.gif?raw=true" width = "310" > < / td >
< / tr >
< tr >
< td align = "center" > Title Attached Effect< / td >
< td align = "center" > Title Widget< / td >
< td align = "center" > Title Particule< / td >
< / tr >
< / table >
< / p >
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🧩 Support HTML/CSS Syntax< / summary >
2024-08-09 13:26:03 -04:00
2025-09-28 15:14:13 -03:00
https://github.com/user-attachments/assets/b16359d3-09a4-4181-bcb8-c76339b64b37
https://github.com/user-attachments/assets/d3844223-7e35-45da-a872-3141f1c5860a
2025-08-08 20:46:17 -03:00
https://github.com/user-attachments/assets/9f20814f-0aed-4b70-8852-334ac745ec11
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
https://github.com/user-attachments/assets/3ac8473c-8e90-4639-b815-ef183c7e2adf
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Module examples:**
- [Shader ](https://github.com/mehah/otclient/tree/main/modules/game_shaders )
- [Blessing ](https://github.com/mehah/otclient/pull/825 )
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🎥 Latency-adaptive camera< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
Basically 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.)*
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🧭 Support Negative Offset (.dat)< / summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- Compatible with [ObjectBuilderV0.5.5 ](https://github.com/punkice3407/ObjectBuilder/releases/tag/v0.5.5 )
- Enable: `g_game.enableFeature(GameNegativeOffset)`
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
**Video:**
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
https://github.com/kokekanon/otclient.readme/assets/114332266/16aaa78b-fc55-4c6e-ae63-7c4063c5b032
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
- 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
2025-04-12 20:33:19 -04:00
- Hud Scale
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
---
2025-04-12 20:33:19 -04:00
2025-08-08 20:46:17 -03:00
### 🔗 Compatibility & Protocols
feat: protocol 15.24 packets and features (#1604)
New Features:
- Task Board (Bounty, Weekly, Shop) with Preferred & Soulseal modals, Kill Tracker, Offline Training dialog, Vocation tutorial, infobanner notifications, redesigned NPC chat/trade, and multi-slot action bar.
Gameplay Enhancements:
- Expanded Cyclopedia stats, talisman upgrades, weekly rewards/progress, soulseal fights, taskboard shop/offers and offline training actions.
UI / Graphics:
- Per-source spell-effect opacity sliders, status icon bar, HUD/scroll improvements, many new templates/styles, screenshot UI updates, and small label/icon fixes.
Bug Fixes:
- Miscellaneous UI behavior, layout and robustness improvements.
2026-05-20 10:26:11 -04:00
- Client **7.6 ~ 12.85 ~ 12.92** , **13.00 ~ 15.24** support *(protobuf)*
2025-08-08 20:46:17 -03:00
- Market rewritten (compatible with TFS and Canary)
- Async Texture Loading *(engine-level feature)*
- Supports sequenced packages and compression
2025-04-12 20:33:19 -04:00
2025-08-08 20:46:17 -03:00
> [!NOTE]
> See section **[💯 Support Protocol](#support-protocol)** for a full compatibility matrix and required flags.
2025-07-30 14:17:32 -04:00
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
### 🧩 Community Mods & Integrations
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
#### 🙋 Community (Features)
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
2025-09-16 19:24:11 +02:00
< summary > 🕹️ Discord RPC — @SkullzOTS </ summary >
- by [@SkullzOTS ](https://github.com/SkullzOTS ), [@surfaceflinger ](https://github.com/surfaceflinger ) and [@libergod ](https://github.com/libergod )
- To enable just go to [config.h ](https://github.com/mehah/otclient/blob/main/src/framework/config.h#L43 ), set **1** in `ENABLE_DISCORD_RPC` and configure the others definitions
- If using CMake execute:
- Removes Content of Build Folder if needed
- `if (Test-Path -Path build) { Remove-Item -Path build -Recurse -Force; New-Item -Path build -ItemType Directory }`
- Configure CMake
- `cmake -B build -G "Ninja" -DENABLE_DISCORD_RPC=ON`
- Build it
- `cmake --build build`
2025-08-08 20:46:17 -03:00
- Step-by-step on **YouTube** : https://www.youtube.com/watch?v=zCHYtRlD58g
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< p align = "center" >
< table >
< tr >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/001.png?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/002_ingame.png?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/003_future.png?raw=true" width = "200" > < / td >
< / tr >
< tr >
< td align = "center" > Example interface< / td >
< td align = "center" > Example in game< / td >
< td align = "center" > future discord-game-sdk< / td >
< / tr >
< / table >
< / p >
< / details >
< details >
< summary > 🔐 Encryption System — @Mrpox *(unsafe implementation)* </ summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- by [@Mrpox ](https://github.com/Mrpox )
- Enable via [config.h ](https://github.com/mehah/otclient/blob/main/src/framework/config.h#L33 ): set **ENABLE_ENCRYPTION=1** and change **ENCRYPTION_PASSWORD**
- To enable building encryption with `--encrypt` , set **ENABLE_ENCRYPTION_BUILDER=1** (by [@TheMaoci ](https://github.com/TheMaoci )) — removes encryption code from production build
- Generate encrypted files by running client with: `--encrypt SET_YOUR_PASSWORD_HERE` (or omit to use the password from [config.h ](https://github.com/mehah/otclient/blob/main/src/framework/config.h#L38 ))
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
> [!WARNING]
> This encryption implementation is considered **unsafe**. Use at your own risk.
< / details >
< details >
< summary > ⬆️ Client Updater — @conde2 </ summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- by [@conde2 ](https://github.com/conde2 )
- Paste the **API** folder in your www folder: https://github.com/mehah/otclient/tree/main/tools/api
- Create a folder called `files` in your www and paste `init.lua` , `modules` , `data` , and `exe`
- Uncomment and change this line: https://github.com/mehah/otclient/blob/main/init.lua#L6
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🌈 Colored Text — @conde2 </ summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- by [@conde2 ](https://github.com/conde2 )
- Usage: `widget:setColoredText("{Colored text, #ff00ff} normal text")`
< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
< summary > 🔳 QR Code support — @conde2 </ summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- by [@conde2 ](https://github.com/conde2 )
- **UIQrCode** properties example:
- `code-border: 2`
- `code: Hail OTClient Redemption - Conde2 Dev`
< / details >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< details >
< summary > 💬 Typing Icon — @SkullzOTS </ summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- by [@SkullzOTS ](https://github.com/SkullzOTS )
- Enable in [setup.otml ](https://github.com/mehah/otclient/blob/main/data/setup.otml ): set `draw-typing: true`
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< p align = "center" >
< img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/typing%20ico/001.gif?raw=true" width = "200" >
< / p >
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🪜 Smooth Walk Elevation — @SkullzOTS </ summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- by [@SkullzOTS ](https://github.com/SkullzOTS )
- Preview: [Gyazo ](https://i.gyazo.com/af0ed0f15a9e4d67bd4d0b2847bd6be7.gif )
- Enable in [modules/game_features/features.lua ](https://github.com/mehah/otclient/blob/main/modules/game_features/features.lua#L5 ): uncomment line 5 (`g_game.enableFeature(GameSmoothWalkElevation)` )
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< p align = "center" >
< img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/smooth/001_smooth.gif?raw=true" width = "200" >
< / p >
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🗺️ Layout based on Tibia 13 — @marcosvf132 </ summary >
- by [@marcosvf132 ](https://github.com/marcosvf132 )
- **Game_shop** based on Store by [@Oskar1121 ](https://github.com/Oskar1121/Store ), modified/fixed by [@Nottinghster ](https://github.com/Nottinghster/ )
- **Minimap WorldTime**
- TFS C++ (old): `void ProtocolGame::sendWorldTime()`
- TFS LUA (new): `function Player.sendWorldTime(self, time)`
- Canary: `void ProtocolGame::sendTibiaTime(int32_t time)`
- **Outfit windows** compatible with attachEffect, shader
- Canary
- **1.4.2**: https://github.com/kokekanon/TFS-1.4.2-Compatible-Aura-Effect-Wings-Shader-MEHAH/commit/77f80d505b01747a7c519e224d11c124de157a8f
- **Downgrade**:
- https://github.com/kokekanon/forgottenserver-downgrade/pull/2
- https://github.com/kokekanon/forgottenserver-downgrade/pull/7
- https://github.com/kokekanon/forgottenserver-downgrade/pull/9
- Calendar
- `client_bottommenu` (activate `Services.status` array in `init.lua` )
**Status service**
Put `./otclient/tools/api/status.php` in:
`C:/UniServerZ/www/api/`
If it doesn't work, enable **curl** :


2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< p align = "center" >
< table >
< tr >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Layout%2013/001_interface.png?raw=true" width = "300" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Layout%2013/002_ingame.png?raw=true" width = "300" > < / td >
< / tr >
< tr >
< td align = "center" > Interface< / td >
< td align = "center" > In-game< / td >
< / tr >
< / table >
< / p >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- Imbuement tracker — by [@Reyaleman ](https://github.com/reyaleman )
- Blessing
- Screenshot
- Highscores
feat: protocol 15.24 packets and features (#1604)
New Features:
- Task Board (Bounty, Weekly, Shop) with Preferred & Soulseal modals, Kill Tracker, Offline Training dialog, Vocation tutorial, infobanner notifications, redesigned NPC chat/trade, and multi-slot action bar.
Gameplay Enhancements:
- Expanded Cyclopedia stats, talisman upgrades, weekly rewards/progress, soulseal fights, taskboard shop/offers and offline training actions.
UI / Graphics:
- Per-source spell-effect opacity sliders, status icon bar, HUD/scroll improvements, many new templates/styles, screenshot UI updates, and small label/icon fixes.
Bug Fixes:
- Miscellaneous UI behavior, layout and robustness improvements.
2026-05-20 10:26:11 -04:00
- Store *(compatible with 1098, 12.91 ~ 15.24)*
2025-08-08 20:46:17 -03:00
- QuickLoot
- Groups Vip
- Reward Wall *(Daily Rewards)*
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
< details >
< summary > 🌐 Browser Client — @OTArchive </ summary >
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
- by [@OTArchive ](https://github.com/OTArchive )
- Wiki: https://github.com/OTArchive/otclient-web/wiki/Guia-%E2%80%90-OTClient-Redemption-Web
- Video: https://github.com/user-attachments/assets/e8ab58c7-1be3-4c76-bc6d-bd831e846826
2024-08-09 13:26:03 -04:00
< / details >
2025-08-08 20:46:17 -03:00
- Mobile Support — by [@tuliomagalhaes ](https://github.com/tuliomagalhaes ) • [@BenDol ](https://github.com/BenDol ) • [@SkullzOTS ](https://github.com/SkullzOTS )
2024-08-09 13:26:03 -04:00
< p align = "center" >
2025-08-08 20:46:17 -03:00
< table >
< tr >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/001_ingame.png?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/001_interface.png?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/003_patrikq.jpg?raw=true" width = "270" > < / td >
< / tr >
< tr >
< td align = "center" > Interface< / td >
< td align = "center" > Density Pixel< / td >
2025-10-14 14:02:25 -03:00
< td align = "center" > Joystick< / td >
2025-08-08 20:46:17 -03:00
< / tr >
< / table >
2024-08-09 13:26:03 -04:00
< / p >
2025-08-08 20:46:17 -03:00
- Support **HTTP/HTTPS/WS/WSS** — by [@alfuveam ](https://github.com/alfuveam )
- Support Tibia 12.85/protobuf by [@Nekiro ](https://github.com/nekiro )
- Action Bar — by [@DipSet ](https://github.com/Dip-Set1 )
- Access to widget children via `widget.childId` — by [@Hugo0x1337 ](https://github.com/Hugo0x1337 )
- Shader System Fix *(CTRL + Y)* — by [@FreshyPeshy ](https://github.com/FreshyPeshy )
2024-08-09 13:26:03 -04:00
< p align = "center" >
2025-08-08 20:46:17 -03:00
< table >
< tr >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/001_creature.gif?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/003_map.gif?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/002_mount.gif?raw=true" width = "200" > < / td >
< / tr >
< tr >
< td align = "center" > Creature< / td >
< td align = "center" > Map< / td >
< td align = "center" > Mount< / td >
< / tr >
< / table >
2024-08-09 13:26:03 -04:00
< / p >
2025-08-08 20:46:17 -03:00
- Refactored Battle Module — by [@andersonfaaria ](https://github.com/andersonfaaria )
- Health & Mana Circle — by [@EgzoT ](https://github.com/EgzoT ), [@GustavoBlaze ](https://github.com/GustavoBlaze ), [@Tekadon58 ](https://github.com/Tekadon58 ) • [Project ](https://github.com/EgzoT/-OTClient-Mod-health_and_mana_circle )
- Tibia Theme 1.2 by **Zews** — [Forum Thread ](https://otland.net/threads/otc-tibia-theme-v1-2.230988/ )
- Add option `ADJUST_CREATURE_INFORMATION_BASED_ON_CROP_SIZE` in [setup.otml ](https://github.com/mehah/otclient/blob/main/data/setup.otml#L24 ) — by [@SkullzOTS ](https://github.com/SkullzOTS )
- **Lua Debugger for VSCode** — [see wiki ](https://github.com/mehah/otclient/wiki/Lua-Debugging-(VSCode )) — by [@BenDol ](https://github.com/BenDol )
- **3D Sound and Sound Effects!** — by [@Codinablack ](https://github.com/codinablack )
2024-08-09 13:26:03 -04:00
| Example 1 | Example 2 | Example 3 |
|---------|---------|---------|
| < video src = "https://github.com/kokekanon/otclient.readme/assets/114332266/4547907a-8eb9-42f5-b445-901cb5270509" width = "200" controls > < / video > | < video src = "https://github.com/kokekanon/otclient.readme/assets/114332266/0bb4739f-e902-4370-85dc-e796564aac8e" width = "200" controls > < / video > | < video src = "https://github.com/kokekanon/otclient.readme/assets/114332266/95db3fa1-a793-4ab7-86a3-e21a8543a23c" width = "200" controls > < / video > |
2025-08-08 20:46:17 -03:00
#### 💸 Sponsored (Features)
- **Bot V8** — ([@luanluciano93 ](https://github.com/luanluciano93 ), [@SkullzOTS ](https://github.com/SkullzOTS ), [@kokekanon ](https://github.com/kokekanon ), [@FranciskoKing ](https://github.com/FranciskoKing ), [@Kizuno18 ](https://github.com/Kizuno18 ))
- Adapted **85%**
2023-11-21 22:27:20 -03:00
- [VS Solution ](https://github.com/mehah/otclient/blob/68e4e1b94c2041bd235441244156e6477058250c/vc17/settings.props#L9 ) / [CMAKE ](https://github.com/mehah/otclient/blob/68e4e1b94c2041bd235441244156e6477058250c/src/CMakeLists.txt#L13 )
2023-12-04 18:42:45 -03:00
2025-08-08 20:46:17 -03:00
- **Shader with Framebuffer** — ([@SkullzOTS ](https://github.com/SkullzOTS ), [@Mryukiimaru ](https://github.com/Mryukiimaru ), [@JeanTheOne ](https://github.com/JeanTheOne ), [@KizaruHere ](https://github.com/KizaruHere ))
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
< p align = "center" >
< table >
< tr >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/001_creature.gif?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/002_items.gif?raw=true" width = "200" > < / td >
< td > < img src = "https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/003_UICreature.gif?raw=true" width = "110" > < / td >
< / tr >
< tr >
< td align = "center" > Creature< / td >
< td align = "center" > Items< / td >
< td align = "center" > UICreature< / td >
< / tr >
< / table >
< / p >
2023-08-02 13:39:44 -03:00
2025-08-08 20:46:17 -03:00
- **Full Cyclopedia** — ([@luanluciano93 ](https://github.com/luanluciano93 ), [@kokekanon ](https://github.com/kokekanon ), [@MUN1Z ](https://github.com/MUN1Z ), [@qatari ](https://github.com/qatari ))
2026-01-30 16:45:21 -03:00
- **Wheel of Destiny** — (R!ck, ZLukSrT#8740 , Christianlb, [@andreoam ](https://github.com/andreoam ), [@Libergod ](https://github.com/libergod ))
2025-08-08 20:46:17 -03:00
#### 🔦 OTClient V8 (Features)
- Lighting System
- Floor Fading
- Path Finding
- Module Shop
- Module Outfit
- Placeholder
- UIGraph
- Keybinds
2025-03-16 17:20:00 -03:00
- Cam system
2022-09-23 15:01:16 -03:00
2025-08-08 20:46:17 -03:00
---
2022-09-23 15:01:16 -03:00
2025-11-09 16:59:15 +01:00
## <a id="the-mobile-project"></a><img height="20" src="https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/android/android.png"/> The Mobile Project
2025-08-08 20:46:17 -03:00
This is a fork of edubart's OTClient. The objective of this fork is to develop a runnable OTClient on mobile devices.
2022-09-23 15:01:16 -03:00
2025-08-08 20:46:17 -03:00
**Tasks**
- [x] Compile on Android devices
- [ ] Compile on Apple devices
- [ ] Adapt the UI reusing the existing LUA code
2013-11-13 15:17:38 -02:00
2025-08-08 20:46:17 -03:00
---
2011-11-15 18:07:00 -02:00
2025-11-09 16:59:15 +01:00
## <a id="compiling"></a>🔨 Compiling
2025-08-08 20:46:17 -03:00
If you are interested in compiling this project, visit the ** [Wiki ](https://github.com/mehah/otclient/wiki )**.
2011-11-14 13:01:09 -02:00
2026-08-13 18:47:47 -03:00
For content-addressed vcpkg reuse across CMake presets, Visual Studio Solutions,
worktrees, and compatible forks, see the [shared build cache guide ](docs/development/shared-build-cache.md ).
2025-08-08 20:46:17 -03:00
---
2021-04-30 00:20:36 -03:00
2025-11-09 16:59:15 +01:00
## <a id="docker"></a>🐳 Docker
2018-03-21 01:54:10 -03:00
2025-08-08 20:46:17 -03:00
In order to build the app for production, run the following commands:
2019-09-26 18:23:08 -07:00
2025-08-08 20:46:17 -03:00
**1) Build the image**
2024-08-09 13:26:03 -04:00
```bash
2022-11-17 13:37:24 -03:00
docker build -t mehah/otclient .
2018-03-21 01:54:10 -03:00
```
2019-09-26 18:23:08 -07:00
2025-08-08 20:46:17 -03:00
**2) Run the built image**
```bash
2019-09-26 18:23:08 -07:00
# 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 \
2022-11-17 13:37:24 -03:00
--device /dev/snd mehah/otclient /bin/bash
2019-09-26 18:23:08 -07:00
# Enable access control for the X server.
xhost -
```
2013-12-04 14:00:09 -02:00
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-11-09 16:59:15 +01:00
## <a id="need-help"></a>🩺 Need Help?
2025-08-08 20:46:17 -03:00
Ask questions on **Discord** : https://discord.gg/tUjTBZzMCy
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-11-09 16:59:15 +01:00
## <a id="bugs"></a>📑 Bugs
2025-08-08 20:46:17 -03:00
Found a bug? Please create an issue in our ** [bug tracker ](https://github.com/mehah/otclient/issues )**.
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
> [!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: true`](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L21) in `data/setup.otml`.
> In old protocols, if item speed feels too fast, adjust
> [`item-ticks-per-frame: 75`](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L32) in `data/setup.otml`.
2024-08-09 13:26:03 -04:00
2025-11-17 17:07:19 -03:00
> if you use TVP or Nostalrius 7.72 activate the feature `g_game.enableFeature(GameTileAddThingWithStackpos)` in game_feature .
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-11-09 16:59:15 +01:00
## <a id="roadmap"></a>❤️ Roadmap
2025-08-08 20:46:17 -03:00
| TO-DO list | Status | PR |
|---|---|---|
| Sound tibia 13 |  | [#1098 ](https://github.com/mehah/otclient/pull/1098 ) |
2026-01-30 16:45:21 -03:00
| Prey and tasks |  | [#1380 ](https://github.com/mehah/otclient/pull/1380 ) |
| Compendium |  | [#1625 ](https://github.com/mehah/otclient/pull/1625 ) |
2025-10-14 14:02:25 -03:00
| Party List |  | None |
2026-01-30 16:45:21 -03:00
| Proficiency |  | [#1593 ](https://github.com/mehah/otclient/pull/1593 ) |
| New Imbui 15x/14x |  | [#1616 ](https://github.com/mehah/otclient/pull/1616 ) |
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-11-09 16:59:15 +01:00
## <a id="support-protocol"></a>💯 Support Protocol
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
| Protocol / version | Description | Required Feature | Compatibility |
|---|---|---|---|
| TFS (7.72) | Downgrade nekiro / Nostalrius | [force-new-walking-formula: true ](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L21 ) • [item-ticks-per-frame: 500 ](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L32 ) | ✅ |
| TFS 0.4 (8.6) | Fir3element | [item-ticks-per-frame: 500 ](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L32 ) | ✅ |
| TFS 1.5 (8.0 / 8.60) | Downgrade nekiro / MillhioreBT | [force-new-walking-formula: true ](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L21 ) • [item-ticks-per-frame: 500 ](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L32 ) | ✅ |
| TFS 1.4.2 (10.98) | Release Otland | | ✅ |
| TFS 1.6 (13.10) | Main repo otland (2024) | [See wiki ](https://github.com/mehah/otclient/wiki/Tutorial-to-Use-OTC-in-TFS-main ) | ✅ |
2026-05-21 14:27:37 -03:00
| Canary (13.21 / 13.32 / 13.40) | OpenTibiaBr | [See Wiki ](https://github.com/opentibiabr/otclient/wiki/Tutorial-to-use-OTC-in-Canary-main ) | ✅ |
| Canary (14.00 ~ 14.12) | OpenTibiaBr | [See Wiki ](https://github.com/opentibiabr/otclient/wiki/Tutorial-to-use-OTC-in-Canary-main ) | ✅ |
| Canary (15.00 ~ 15.24) | OpenTibiaBr | [See Wiki ](https://github.com/opentibiabr/otclient/wiki/Tutorial-to-use-OTC-in-Canary-main ) | ✅ |
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
---
2024-08-09 13:26:03 -04:00
2025-11-09 16:59:15 +01:00
## <a id="license"></a>©️ License
2025-08-08 20:46:17 -03:00
OTClient is made available under the **MIT License** — you are free to use it for commercial, non-commercial, closed or open projects.
See: [MIT License ](http://opensource.org/licenses/MIT )
2024-08-09 13:26:03 -04:00
2025-08-08 20:46:17 -03:00
---
2011-11-15 18:07:00 -02:00
2025-11-09 16:59:15 +01:00
## <a id="contributors"></a>❤️ Contributors
2025-08-08 20:46:17 -03:00
If you are interested in supporting the project, donate here:
**[PayPal ](https://www.paypal.com/donate/?business=CV9D5JF8E46LY&no_recurring=0&item_name=Thank+you+very+much+for+your+donation.¤cy_code=BRL )**