• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Authenticity feedback: zorlore.com (HTML Tibia client)

Toor

Veteran OT User
Joined
Sep 11, 2008
Messages
221
Reaction score
252
Location
NL
Greetings community,

I hope the mods understand this is not a blatant nor overt advertisement attempt.

I've been developing a HTML/Javascript Tibia client that uses Websockets to communicate with a modified version of fusion's decompiled Cipsoft server. It's a public test server that will disappear once I've finished the client, and it's goal is to have a server on which I can test the client.
My goal for the client is to approximate authenticity and optimize user experience. I'd like to invite you to participate in that discussion:

  • What is plainly incorrect (game interaction-wise, wrong colors used, something worked differently than expected)
  • What is your user experience playing with the web client
  • What were your pain points
  • What were the client's strong points
  • What would you improve / change?

On zorlore.com you can create an account and character (press the 'login' button).
Have a play around and share your feedback. You'll start in Rook, with premium.

Getting to level 50 instantly

  • To help you get a quick start you can ask Cipfried for a rookset, and he'll furnish you with the items & give you some starting money.
  • If you ask him for exp he'll get you to level 8 instantly so you can go to mainland.
  • Ask Quentin in the Thais temple about 'exp' and your skills and EXP will be boosted. Level 50 + all skills well-trained.
  • Ask Quentin for 'mainland set' and he'll send a bunch of items and money (100K) to your Thais depot.

Once the client is nailed down I'll add support for more Tibia version protocols and you could for example embed the client on your website or even on mobile apps.

Controls

Shift click for Look
Alt/Option + arrows for turning
Alt/Option click to use
Alt/Option 1, 2, 3, 4... etc for hotkeys
Enter -> switch to chat
Shift->Enter -> Switch to chat, but switch back when you sent your message
Escape -> Go back to character control

Known issues

  • When you are directly on a ladder spot you cannot use it with right click -> use (StackOrder issue). Use the Alt/Option click method
  • Creatures may also talk in blue in chat
  • Taking items from under a creature fails

Looking forward to your findings, and would appreciate your thoughts about what this client should become.

/Toor

P.S. Mods: If this is NOT the correct section, please move it elsewhere.
 
Last edited:
For me the main issue right now is the lack of “Classic Controls” ;c
From bugs;
*VIP list/Hotkeys/Trade windows which can’t be closed (only minimized),
*skills window [popup] instead of a panel
*If we don’t move the mouse over the #game canvas - animations don’t work (ex. lit wall lamps)

After death, nothing happens - missing the popup like in Tibia and respawn option [character just stands on the body and you can't do anything except log out and get "Connection Refused" in your face xD]

If you parse .dat you can also add support for minimap color flag because right now it doesn’t show walls etc on the minimap
 
Last edited:
Best of luck with your project, Toor.
(At the time of your original post and considering the topic of the thread, this looks like a proper place to have your Discussion to me.)

I really enjoy the background image. I think you captured the essence of the 7.4 era well with the remake.
Red
 
For me the main issue right now is the lack of “Classic Controls” ;c
From bugs;
*VIP list/Hotkeys/Trade windows which can’t be closed (only minimized),
*skills window [popup] instead of a panel
*If we don’t move the mouse over the #game canvas - animations don’t work (ex. lit wall lamps)

After death, nothing happens - missing the popup like in Tibia and respawn option [character just stands on the body and you can't do anything except log out and get "Connection Refused" in your face xD]

If you parse .dat you can also add support for minimap color flag because right now it doesn’t show walls etc on the minimap
Very useful feedback. I'll work on it.
Post automatically merged:

I've added a fix for walking with arrows. Its speed was gated at the client and now works much better.
Also borrowed some UI elements from tibiabr's web client, and make inventory shift-clicks work.

I'll add Tibia classic controls next.

Edit: improved minimap. Let me know if it's accurate.
Edit: Fixed autowalk, now considers creatures as blocking as well
Edit: can't reproduce no animations if not hovering over the game canvas. Everything animates for me.
Edit: You can now close VIP list, hotkeys, trade window, etc. also added hotkeys (same as Tibia, but with alt/option instead of control) to reopen them.
 
Last edited:
I tried logging in but it doesn't let me and throws no error too. Registering did work, however the process is a little vague. I had to make a new one because I assumed the name I entered would've been my username, but it gives you your account ID. Should've read ;p

Also the recovery button brings me to the Tibia homepage.

Looks very promising! Will def follow.

edit; Okay im in, it was my browser doing some stupid shit
 
Last edited:
When you enter incorrect credentials it does not show you an error. It's indeed account ID and password. After account creation you can download a .txt so you can copy/paste from it. username you can ignore :)
 
When you enter incorrect credentials it does not show you an error. It's indeed account ID and password. After account creation you can download a .txt so you can copy/paste from it. username you can ignore :)
Yeah I copied it from the textarea to my auto pass but the bitch used the wrong username twice anyway and i didn't notice
 
Made some changes to the server's internals. Testing it now. When it's back on: include parity checks for quests and NPCs.
All NPCs, spells and quests (moveuse) are exclusively backed by LUA now. I built tools to permutate every option (with both happy and sad flow checks) at full depth (100% coverage), but proof is in the pudding. Do check :)

Here's an example of my test NPC:


LUA:
local DATA_NONE = 0
local DATA_RITUAL_CONFIRM = 42

local function wants_ritual(msg)
  return contains_word(msg, "ritual") or contains_word(msg, "raid")
end

local function magz_raid_ritual()
  say("Stand back. This is the part where things get noisy.")
  npc_teleport(32347, 32216, 7)
  set_home(32347, 32216, 7)
  set_radius(8)
  start_raid("thaiscaverats")
  give_item(3585, 1)
  effect_me(13)
end

local function magz_on_address()
  say("Ah, a curious mind. I am Magz, keeper of odd stories and stranger experiments.")
end

local function magz_on_busy()
  say("One moment. Arcane bookkeeping first.")
end

local function magz_on_vanish()
  say("May your next step be the right one.")
end

local function magz_on_message()
  local msg = normalize_message_text()
  local state = data()

  if contains_word(msg, "bye") then
    say("Walk steady.")
    end_conversation()
    return
  end

  if state == DATA_RITUAL_CONFIRM then
    if contains_word(msg, "yes") then
      magz_raid_ritual()
      set_data(DATA_NONE)
      return
    end
    if contains_word(msg, "no") then
      say("Another time, then. The rats can wait.")
      set_data(DATA_NONE)
      return
    end
    say("Say yes if you want the ritual, or no if you prefer peace and quiet.")
    set_data(DATA_RITUAL_CONFIRM)
    return
  end

  if contains_word(msg, "name") then
    say("Magz. Short name, long memory.")
    return
  end

  if contains_word(msg, "job") then
    say("I catalog old tricks, raid patterns, and stories nobody else bothers to remember.")
    return
  end

  if contains_word(msg, "story") or contains_word(msg, "lore") then
    say("Long ago, I studied under lantern light in the alleys of Thais, mapping where fear turns into courage.")
    return
  end

  if contains_word(msg, "thais") then
    say("Thais taught me that chaos always has a rhythm if you listen long enough.")
    return
  end

  if contains_word(msg, "hdp") then
    local base = 100 + (player_level() * 3)
    say("Very well. I will compute and unleash it.")
    spell_damage_origin(8, 18, 1, base, 125)
    return
  end

  if wants_ritual(msg) then
    say("I can perform the rat ritual: I shift my position, awaken the Thais cave rats, and reward your bravery with an apple. Shall I do it?")
    set_data(DATA_RITUAL_CONFIRM)
    return
  end
end

register_npc({
  name = "Magz",
  identity = {
    sex = "male",
    race = 1,
    outfit = {
      id = 128,
      colors = { 116, 79, 117, 76 },
    },
    home = { x = 32347, y = 32216, z = 7 },
    radius = 8,
    go_strength = 10,
  },
  handlers = {
    address = function()
      local text = normalize_message_text()

      if contains_word_pattern(text, "hello$") then
        magz_on_address()
        return
      end

      if contains_word_pattern(text, "hi$") then
        magz_on_address()
        return
      end

      end_conversation()
      return
    end,

    busy = function()
      local text = normalize_message_text()

      if true then
        magz_on_busy()
        return
      end

      return
    end,

    vanish = function()
      magz_on_vanish()
      return
    end,

    message = function()
      local text = normalize_message_text()

      if true then
        magz_on_message()
        return
      end

      return
    end,
  },
})
 
Last edited:
Misc UI improvements & client fixes, and added classic controls (when you log in there's a 'classic' button right of your inventory)
Post automatically merged:

Also, you can use Ctrl (Windows) or Cmd (Mac). Not using 'alt' anymore
 
Thanks for your feedback (also feedback received in private message).
I have enough for the moment. Test server will remain up for a bit for you to check out.

So what's next?

I'm building an MMO factory.

It contains:

  • Web client (MVP is what you've been playing with)
  • Server (with LUA scripting capabilities for NPCs, spells, monsters, actions, bigger map size) << already done, cross-platform
  • Data files (I've created a new OTBM2 format, datapack contains everything) << already done
  • Editor in which you can edit map, npcs, script/modify spells, create your own quests, add spawns << Work in progress.
  • Sprite editor & compiler

Once it's ready I'll post again.
Post automatically merged:

Here's some work in progress screenies.
 

Attachments

Last edited:
Here are some more interface screenies
Post automatically merged:

And here are two more (raid editor and start point for 'veterans' (where you end up when you get evicted from premium area)
 

Attachments

  • Screenshot 2026-02-22 at 06.34.47.webp
    Screenshot 2026-02-22 at 06.34.47.webp
    50.5 KB · Views: 116 · VirusTotal
  • Screenshot 2026-02-22 at 13.27.37.webp
    Screenshot 2026-02-22 at 13.27.37.webp
    1.2 MB · Views: 124 · VirusTotal
  • Screenshot 2026-02-22 at 14.01.23.webp
    Screenshot 2026-02-22 at 14.01.23.webp
    63.4 KB · Views: 105 · VirusTotal
  • Screenshot 2026-02-22 at 14.01.38.webp
    Screenshot 2026-02-22 at 14.01.38.webp
    76.9 KB · Views: 92 · VirusTotal
  • Screenshot 2026-02-22 at 14.04.00.webp
    Screenshot 2026-02-22 at 14.04.00.webp
    228.1 KB · Views: 106 · VirusTotal
  • Screenshot 2026-02-22 at 14.02.15.webp
    Screenshot 2026-02-22 at 14.02.15.webp
    1.2 MB · Views: 112 · VirusTotal
  • Screenshot 2026-02-22 at 14.03.35.webp
    Screenshot 2026-02-22 at 14.03.35.webp
    618.9 KB · Views: 138 · VirusTotal
I'm publishing the editor in the coming days (Mac/Linux/Windows) for you to play with.
 
Finished the release pipeline: ZorLore.com (https://github.com/zorlore/)
It runs on Mac (Intel and arm), Linux and Windows.
  • Game server (The legacy engine, modern architecture and applied security and bugfixes, LUA-based (see world editor))
  • Bridge (database layer)
  • Editor (world editor: map, npcs, spawns, quests, monsters, items, raids, LUA scripting capabilities)
You can self-host (free) on Linux/Mac/Windows. Use the webclient on Tibia HTML Client (https://zorlore.com/) to connect (also locally).
If you're looking for the world map with everything contained: Grab it from GitHub - otbm2/otbm2: OTBM2 repository (https://github.com/otbm2/otbm2)

The world editor is still work in progress. If you have feature requests, let me know.
 
Last edited:
Finished the release pipeline: ZorLore.com (https://github.com/zorlore/)
It runs on Mac (Intel and arm), Linux and Windows.
  • Game server (The legacy engine, modern architecture and applied security and bugfixes, LUA-based (see world editor))
  • Bridge (database layer)
  • Editor (world editor: map, npcs, spawns, quests, monsters, items, raids, LUA scripting capabilities)
You can self-host (free) on Linux/Mac/Windows. Use the webclient on Tibia HTML Client (https://zorlore.com/) to connect (also locally).
If you're looking for the world map with everything contained: Grab it from GitHub - otbm2/otbm2: OTBM2 repository (https://github.com/otbm2/otbm2)

The world editor is still work in progress. If you have feature requests, let me know.
Hey Dennis,

Are you planning on releasing a 7.7 server? It would be such a relief to play a low paced 7.72 server without 400 runemakers selling their runes for real life money. We have been hoping on a server like this for many years. Still remembering the good old realots days.
 
Hey Dennis,

Are you planning on releasing a 7.7 server? It would be such a relief to play a low paced 7.72 server without 400 runemakers selling their runes for real life money. We have been hoping on a server like this for many years. Still remembering the good old realots days.
I'm not planning on running a 7.7 server, no. What you have there is a low rate 7.7 server though. The OTBM2 repo holds the global world files. You'd be able to host it yourself and customise it to your needs. What I'm planning to do in the future is offer free hosting for small servers (small map, limited amount of players) and have offers for bigger servers/audiences.
 
I'm not planning on running a 7.7 server, no. What you have there is a low rate 7.7 server though. The OTBM2 repo holds the global world files. You'd be able to host it yourself and customise it to your needs. What I'm planning to do in the future is offer free hosting for small servers (small map, limited amount of players) and have offers for bigger servers/audiences.
That sounds interesting. I haven’t looked into doing a server myself since 2006. On the scale of 1-10 how hard do you think this will be for someone with little knowledge on the part? I guess it helps to use ai as an assistent and help change stuff. Very curious and funny that your interest in ots got a new spark after all these years 😅
 
The OTBM2 comes packed with LUA examples. An AI assistent will be able to write you the scripts.
Difficulty of set up at the moment is between beginner and intermediate I would say.


In a nutshell:

Run bridge
Run gameserver (and download the full map from otbm2 if you're not interested in the example world :D)
Go to zorlore.com, in load servers select the top one, and you're good to go. In the log in interface you can create an account and a character and you're good to go.

There's some dependencies you'll need to install, and instructions are provided in the README.md
Basically copy/paste.

For hosting a public server: edit config.yaml in both bridge and gameserver to configure your world name and IP. You will need SSL transport (so either your own SSL certificate or use CloudFront or CloudFlare to proxy to your game server). That is not trivial: intermediate to advanced. I'll host a tutorial for that on GitHub in the coming days. Added benefit of CloudFront / CloudFlare route: nobody knows your real server IP so you have DDoS protection out of the box.

Adding a sprite editor in the world editor. Created this (fairly ugly) demon set in 2 minutes. Compiles to sprite file so immediately usable and immediately viewable in the editor.
 

Attachments

  • Screenshot 2026-03-01 at 12.05.09.webp
    Screenshot 2026-03-01 at 12.05.09.webp
    501.2 KB · Views: 45 · VirusTotal
  • Screenshot 2026-03-01 at 12.05.18.webp
    Screenshot 2026-03-01 at 12.05.18.webp
    88.6 KB · Views: 46 · VirusTotal
Last edited:
Added TSX and OTFI-format support for spriters / game world designers. Currently in dev, but publishing a new version soon.
 

Attachments

  • Screenshot 2026-03-03 at 06.37.01.webp
    Screenshot 2026-03-03 at 06.37.01.webp
    255.7 KB · Views: 52 · VirusTotal
  • Screenshot 2026-03-03 at 06.38.28.webp
    Screenshot 2026-03-03 at 06.38.28.webp
    478.7 KB · Views: 52 · VirusTotal
Back
Top