Skip to content

Releases: opentibiabr/otclient

4.1

07 Jun 00:19
8edd57b

Choose a tag to compare

What's Changed

Read more

4.0 + hotfix(1)

13 Jan 20:04
f38ab2b

Choose a tag to compare

Release 4.0 – Paperdoll System

Hotfix(1) Included

  • fix(#1596): rect of creature drawInformation bar (#1597)

This release marks a major milestone for the project, highlighted by the introduction of the long-awaited Paperdoll System, alongside a broad set of improvements, performance optimizations, refactors, and bug fixes across the client.

Paperdoll System

The new Paperdoll feature brings a modern, flexible, and visually accurate way to render character equipment and appearance. It lays the foundation for richer customization, better visual consistency, and future feature expansion related to outfits, items, and effects.

Preview

2023-05-12_14-30-35_3.mp4

Highlights

UI, Rendering & Graphics

  • Major shader improvements across UI components (items, creatures, missiles, effects).
  • Stabilized UI creature rendering, sizing, and clipping behavior.
  • Atlas rendering enabled in UI, including support for large spritesheets.
  • Significant DrawPool and rendering pipeline optimizations.
  • New CSS-compatible text engine with precise width calculation.

HTML / CSS Engine

  • Continuous evolution of the embedded HTML/CSS system:
    • Table support, initial flexbox support, placement attributes, absolute positioning fixes.
    • Improved text rules, white-space handling, width/height support.
    • Better compatibility with older modules.
  • Modal dialogs now accept HTML strings correctly.

Gameplay & Systems

  • New/expanded systems: Paperdoll, Forge, Prey, Stash, Market, Cyclopedia, and Game Market.
  • Monk vocation support: spells, stat bars, cooldowns, health/mana circles.
  • Improved mouse control modes and smarter click handling.
  • Enhanced action bars with multiple bars support.
  • Numerous fixes for battle list, cooldowns, skills, outfits, walking logic, and minimap behavior.

Performance & Stability

  • Extensive performance optimizations in text layout, glyph positioning, spectator retrieval, and draw pipeline.
  • Reduced memory usage in underline handling.
  • Parallelized rendering stages for improved frame times.
  • Dozens of crash fixes, nil-guard additions, and memory leak resolutions.

Tooling, Build & CI

  • Updated and pinned vcpkg baselines and workflows.
  • Faster Debug builds with /DEBUG:FASTLINK.
  • Improved Linux, Android, Emscripten, and non-Unity build support.
  • New CLI tool for DAT dumping.
  • Refactors and codebase modernization for long-term maintainability.

Contributors

Returning Contributors

Thanks to everyone who contributed to this release:

New Contributors

A special welcome to first-time contributors in this release:


Full Changelog

4.0b4...4.0

4.0 Beta 4 (UI Improve)

27 Aug 22:03
8311a01

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 4.0b3...4.0b4

4.0 Beta 3 (Texture Atlas/Async Texture Loading)

09 Aug 00:48
e376723

Choose a tag to compare

🚀 Improvements

  • 🔥 Major Performance Upgrade – Texture Atlas System

    • Implemented and optimized Texture Atlas to reduce texture binds, improve GPU batching, and boost rendering performance.
    • Impact: Up to 1.4x–3x FPS boost in heavy rendering scenarios.
  • ⚡ Async Texture Loading (SPR/DAT) Performance Boost

    • Replaced mutex with atomic in async sprite loading to reduce contention – #1240 (by @mehah)
    • Implemented faster sprite decoding & streaming – #1265 (by @mehah)
    • Impact: Significantly reduces map/asset load times, especially on large datasets.
  • Android

  • System & Performance

    • Refactor things.lua to Controller System + add loadDat fallback logic – #1224 (by @mehah)
    • Optimize drawpool – #1235 (by @mehah)
    • Replace Mutex with Spinlock in Dispatcher & Draw Pipeline – #1238 (by @mehah)
  • Features


🐛 Fixes

  • UI & Interface

    • Fix map resizing in extended view when toggling topmenu (Ctrl+Shift+T) – #1220 & #1225 (by @vllworldbuilding)
    • Fix vBot analyzer button – #1223 (by @BastardofWinterfell)
    • Fix game_actionbar sending text to the correct channel – #1228 (by @kokekanon)
    • Properly animate items in outfits – #1241 (by @nekiro)
    • Fix battlelist widget with Object Pool – #1260 (by @kokekanon)
    • Container window like RL Tibia (miniborder) – #1262 (by @Nottinghster)
    • Text window like RL Tibia – #1263 (by @Nottinghster)
    • Fix m_effects ordering – #1267 (by @kokekanon)
    • “Clear messages” works with readonly mode – #1268 (by @Nottinghster)
  • Shop

    • Fix negative balance in game_shop#1239 (by @Nottinghster)
    • Adjust shop history display – #1247 (by @Nottinghster)
  • Console

    • Read-only tab now clears and closes correctly – #1246 (by @Nottinghster)
  • Gameplay

  • Rendering & Sprites

  • Miscellaneous


🧹 Code Cleanup


👥 New Contributors


Full Changelog: 4.0b2 → 4.0b3

4.0 Beta 2

27 Jun 21:47
9b2cf4b

Choose a tag to compare

What's Changed

Creature Scale

Otclient.-.Redemption.2025-06-27.18-45-50.mp4

Battle Optimization

459005215-33524496-68ce-4e51-bafa-1f48ae7d4d2d.mp4

Peformance Test (VSYNC 144hz)

Otclient.-.Redemption.2025-06-30.19-39-47.mp4

✨ Features

  • feat: Allow to disable animation for Thing #1021
  • feat: Support adding items to any slot in containers #1033
  • feat: Boosted creature, staticdata from assets, bestiary races rework #1064
  • feat: Latency-adaptive camera (Beta) #1090
  • feat: Checkbox for quickloot accepted items #1105
  • feat: Quickloot through bestiary #1112
  • feat: Cyclopedia back button #1115
  • feat: Thing scale #981
  • feat: Cam system by kondra #1116
  • feat: Create accounts with API MyACC #1131
  • feat: Daily Reward in HTML/CSS #1143
  • feat: Quest Log tracker and Style 14.10 in HTML/CSS #1144
  • feat: Options control buttons #1148
  • feat: New shop (based on store) #1151
  • feat: Add Lua functions getAnchors and getAnchor(anchorType) #1207
  • feat: Player / monster icons 12.81 #973
  • feat: Texture cache for drawpool #1216
  • feat: "Read-only Tab" in game_console #1189
  • feat: Load sounds with protobuf #1074

🛠 Improvements

  • improve: Walking system independent of server response #1087
  • improve: UIGraph line smoothing #1016
  • improve: Refactor walking for better responsiveness #1028
  • improve: Remove duplicate include #1006
  • improve: Encryption system #1075
  • improve: Game walk uses controller system #1055
  • improve: QuickLoot features #1096
  • improve: Crypt #1089
  • improve: Utils #1092
  • improve: String #1117
  • improve: Rect/Point/Size #1118
  • improve: Color #1120
  • improve: New game shop #1153
  • improve: Optimization of new shop (store) #1159
  • improve: Encryption #1138
  • improve: Add macOS CMake presets #1083
  • improve: GameLoadSprInsteadProtobuf #1204
  • improve: Add support to fmt format to logger class #1169
  • improve: Textures/Matrix Cache/Camera/Pre-Draw optimization #1170

🐛 Bug Fixes

  • fix: Incorrect usage of const ref shared_ptr #1010
  • fix: Freezing walking #1069
  • fix: Fluid colors #1110, #1167
  • fix: Texture flickering #1188
  • fix: Make some things thread-safe to resolve crashes #1165
  • fix: Loading textures without transparency in DirectX #1213
  • fix: Use weak_ptr in connection callbacks #1177
  • fix: Animated foreground #1181
  • fix: Updater texture #1211
  • fix: And many more small bug fixes (see changelog for full list)

⚙️ Performance

  • perf: Support multithreading in updateVisibleTiles #1082
  • perf: Battle and general layout update optimized #1193, #1212

🧹 Cleanup

  • Cleanup: Prevent errors and warnings in Lua code #1179

🔧 CI / Build

  • fix: Build workflows #1139
  • ci/cl: Improved caching, concurrency, and trigger control #1178
  • fix: Browser build + Emscripten Build Workflow #1124

🆕 New Contributors


📄 Full Changelog: Compare v4.0b → v4.0b2

4.0 Beta

25 Dec 17:12

Choose a tag to compare

Summary

Creature Information by UIWidget

widget_creature_information.mp4

Html syntax beta v0.1

html1.mp4
htnl2.mp4

Hud Scale

hud.mp4

Pulse and fade in Attached Effect

pulse.mp4

What's Changed

Read more

3.5

10 May 19:15
7d96402

Choose a tag to compare

3.5

What's Changed

  • GHA: Update Docker and Ubuntu workflows by @Costallat in #659
  • build: add shellapi and timeapi includes to fix visual studio solution by @Giorox in #611
  • build: compile fix by @mehah in #637
  • ci: Use GITHUB_OUTPUT envvar instead of set-output command by @arunsathiya in #696
  • feat: Added Local Lua Debugger support for VSCode! by @BenDol in #671
  • feat: Attached particles for creature, tiles and items by @conde2 in #634
  • feat: Creature Information by UIWidget by @mehah in #737
  • feat: Drawpool 3.0 by @mehah in #641
  • feat: GameCountU16 by @SkullzOTS in #581
  • feat: GameNegativeOffset by @mehah in #727
  • feat: Opacity effect and missile in options by @kokekanon in #676
  • feat: QR Code support, with auto generate it from string by @conde2 in #593
  • feat: Shader with framebuffer by @mehah in #633
  • feat: Smooth Walk Elevation by @SkullzOTS in #663
  • feat: Tile Widget by @mehah in #579
  • feat: ToolstipsV8 for inventory items by @kokekanon in #740
  • feat: Typing Icon by @SkullzOTS in #582
  • feat: attachable widgets by @conde2 in #645
  • feat: attached effects on tile and possible to change draw order by @conde2 in #628
  • feat: character list window by @majestyotbr in #602
  • feat: colored text by @conde2 in #580
  • feat: compatibility with 13.20 and 13.21 by @marcosvf132 in #592
  • feat: game stash window by @pennaor in #695
  • feat: imageSourceBase64 by @SkullzOTS in #584
  • feat: otimize build time using unity build tool from cmake by @dudantas in #573
  • feat: possible to highlight objects by @conde2 in #648
  • feat: toggle on/off console using ENTER and toggle off console using ESC by @yrpen in #549
  • feat: v8 Bot by @mehah in #621
  • fix: 'getMapWidget': is not a member of 'UIManager' by @luanluciano93 in #673
  • fix: Android build by @SkullzOTS in #629
  • fix: Build with ENABLE_DISCORD_RPC by @SkullzOTS in #678
  • fix: Ctrl+Shift+M show and hide minimap by @conde2 in #682
  • fix: Effects.cpp for consistent behavior when rendering special patterns by @LeandroLibanio28H in #734
  • fix: Enter Game window when setUniqueServer is activated by @Nottinghster in #719
  • fix: GameCountU16 by @IcaroPimentel654 in #618
  • fix: Highlighted items by @Nottinghster in #709
  • fix: Improve updater api for different versions of php by @conde2 in #589
  • fix: Move setEffectAlpha and setMissileAlpha from "framework" to "client" (luafunctions) by @kokekanon in #677
  • fix: Outfit Window by @Nottinghster in #699
  • fix: Prevent crashes caused by client_entergame and other minor bugs. by @kokekanon in #736
  • fix: UIWidget::setIcon crash by @Kamenuvol in #555
  • fix: Using top ground item not working! by @Nottinghster in #697
  • fix: [game_entergame] loadBox in old protocol by @kokekanon in #743
  • fix: action bar spells progress bars ignoring group cooldowns by @glecko in #748
  • fix: android build by @SkullzOTS in #639
  • fix: android initialization crash by @tuliomagalhaes in #554
  • fix: artifact name conflict (ubuntu) by @Costallat in #715
  • fix: artifact name conflict (windows) by @Costallat in #716
  • fix: attached effect looping more than it should by @conde2 in #626
  • fix: attached widgets flickering by @conde2 in #670
  • fix: avoid potential crash when layout is not created yet by @conde2 in #692
  • fix: battlelist error | first time you open the client by @SkullzOTS in #566
  • fix: botserver updates by @Nottinghster in #722
  • fix: center text message like Tibia by @Nottinghster in #711
  • fix: center text private message like Tibia by @Nottinghster in #726
  • fix: charges/duration parsing by @Zbizu in #543
  • fix: compilation error due to PR #573 by @Nottinghster in #575
  • fix: compiling in windows (Visual Studio) by @conde2 in #597
  • fix: crash when trying to attach a non existing attachedEffect by @conde2 in #625
  • fix: debug build by @SkullzOTS in #635
  • fix: delay when moving widgets by @csantbr in #590
  • fix: disable rpc android by @SkullzOTS in #631
  • fix: draw particles only once, when not highlight or marked by @conde2 in #651
  • fix: framework_editor compile by @mehah in #567
  • fix: function getItemCountOrSubType does not exist. by @luanluciano93 in #643
  • fix: hotkeys not working when any analyzers options by @Nottinghster in #649
  • fix: invisible outfit (utana vid or stealth ring) by @Nottinghster in #710
  • fix: isSightClear wrong check for block projectile by @conde2 in #693
  • fix: item id on look at by @ramon-bernardo in #725
  • fix: local client attachable object effects and some clean up by @BenDol in #674
  • fix: long messages was lasting more than 25 seconds on screen by @Nottinghster in #745
  • fix: market browsing broken in pre-12.51 protocols by @glecko in #746
  • fix: market issues by @alfuveam in #576
  • fix: max/min height width not working by @conde2 in #642
  • fix: multiple errors produced in # 621 by @kokekanon in #712
  • fix: not drawing attachable widgets for creatures by @conde2 in #668
  • fix: onLook is selecting incorrect floor as (first) reference by @Nottinghster in #708
  • fix: onTextMessage message mode 50 by @luanluciano93 in #612
  • fix: panels/widgets saving positions by @Nottinghster in #720
  • fix: parse packets for protocol 13.20 by @Zbizu in #683
  • fix: protocol error in NPC trade by @luanluciano93 in #701
  • fix: qr code compilation error by @Nottinghster in #600
  • fix: real fix for Using top ground item not working! by @Nottinghster in #698
  • fix: resize chat panel by @Nottinghster in #685
  • fix: spells cooldown if UINT16 is expected by @yrpen in #542
  • fix: temporary framebuffer by @mehah in #640
  • fix: uiprogress draw by @mehah in #556
  • fix: use function isDead() instead of getHealthPercent() <= 0 by @Nottinghster in #713
  • fix: use port for http login and allow custom URL by @Costallat in #606
  • fix: walking 2 tiles when only pressing key 1 time by @conde2 in #680
  • fix: walking issue #560 by @mehah in #562
  • fix: windows build by @taelg in #714
  • improve: Attached Effect by @mehah in #702
  • improve: Framework Cleanup (no more client code in fw) by @BenDol in #666
  • improve: add almost all missing spell group cooldown; add missing spells from … by @yrpen in #552
  • improve: add deferEvent in dispatcher to fix UI Draw by @mehah in #669
  • improve: async dispatcher now use asio / cleanup by @mehah in https://github.com/meha...
Read more

3.1

20 May 16:40
47a3e59

Choose a tag to compare

3.1

What's Changed

  • build: fix vcpkg builtin-baseline for enable GHA builds by @dudantas in #498
  • cleanup: remove unused CMake modules by @ranisalt in #487
  • feat: attachedeffect with apng by @mehah in #490
  • feat: client auto updater by @conde2 in #529
  • feat: compatibility with 13.16 by @marcosvf132 & @mehah in #538
  • feat: config default font to creature/static-text/animated-text/widget text by @mehah in #534
  • feat: data/setup.otml by @mehah in #535
  • feat: font-scale by @mehah in #485
  • feat: module features by @mehah in #533
  • feat: new prop image-individual-animation by @mehah in #508
  • feat: otmod[scripts] now support * to find all lua files by @mehah in #536
  • feat: server map shader support #512 by @mehah in #521
  • feat: uiwidget::[recursiveGetChildrenByStyleName/getChildrenByStyleName/getChildByStyleName] by @mehah in f4d6bb6
  • feat: widget shader support by @mehah in #519
  • fix: enable vip groups feature by default by @marcosvf132 in #495
  • fix: in read items in older versions and use GameItemShader by @poxis in #518
  • fix: mapmarks images order by @yrpen in #539
  • fix: mouse buttons by @Riverlance in #489
  • fix: typo by @Nottinghster in #483
  • fix: walk animation with only two frames by @Nottinghster in #484
  • improve: Attached Effect (Server Support) by @mehah in #501
  • improve: module controller by @mehah in #532
  • improve: particle and title sample by @mehah in #488
  • improve: remove tinyxml and add pugixml instead by @dudantas in #520
  • improve: walking system by @mehah in #531
  • refactor: drawpool (emplace to try_emplace) by @mehah in #494

New Contributors

Full Changelog: 3.0.2...3.1

[Widget Shader Support]

widget_shader_support.mp4

[Attached Effect (Server Support)]

attached_effect_server_support.mp4

[Attached Effect with apng]

Attachedeffectwithapng.mp4

[Font Scale]

font-scale.mp4

[Particle and Title with scale sample]

particle_title_sample.mp4

3.0.2

18 Mar 15:07

Choose a tag to compare

What's Changed

fix: text scale by @mehah
fix: lighting system bugs by @mehah
fix: messages are in wrong position by @mehah

Full Changelog: 3.0...3.0.2

3.0.1

16 Mar 20:20

Choose a tag to compare

Hotfix

fix: lighting bug with creature information scale @mehah

What's Changed

  • feat: Task Module by @dewral in #457
  • feat: adaptive ui loading by @BenDol in #451
  • feat: text scale options by @mehah in #466
  • fix: Outfits as item id does not works with Creature widget by @mehah #472
  • fix: Player diagonal direction lag by @mehah #469
  • fix: Target texture unloads (red square) by @mehah #468
  • fix: [Highlight] Disappears on relog by @mehah #476
  • fix: [Highlight] Select top item of stack, instead them all by @mehah #474
  • fix: [Highlight] Wrongly updated mouse position on floor change by @mehah #475
  • fix: android sound crash by @tuliomagalhaes in #461
  • fix: crash and UI mobile by @beats-dh in #465
  • fix: for alot of OTC's to not display health properly in circle bars. by @themaoci in #463
  • fix: for custom asserts, where ids are not sorted. by @mehah
  • fix: highlight stop to work on change outfit](1bfa892)
  • fix: m_glyphsTextRectCache random crash by @mehah #470
  • improve: Attached Effect (new props) by @mehah in #460
  • improve: autowalk by @mehah
  • improve: density pixel (mobile) by @mehah in #462
  • perf: lighting optimization up to 39% by @mehah in #459
  • rework: remove client code from framework (fps & ASYNC_DISPATCHER_MAX_THREAD) by @BenDol in #458

New Contributors

Full Changelog: 3.0b...3.0

Message Scale Options

Otclient.-.Redemption.2023-03-16.17-16-23-1.mp4

Attached Effect (New Props)

loop(number): quantity of loop that the effect will remain active.
duration(number): duration of effect.
transform(bool): Instead of attaching, the character will change the outfit.
hideOwner(bool): Hide the owner where the effect was attached.

2023-03-06_19-43-16-1.mp4

Android [Density Pixel]

image

image