• 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!

OTClient for Web Browsers

Has any OTS used this yet for their server?
I kinda want to hear the feedback of normal players :D
 
It seems that latest Emscripten versions are causing issues as well as some fixes will be necessary to compile after the addition of the cam system. I will take a look at it soonish and also intend to update the guide with a specific version of emscripten to avoid future problems.
 
A fix has been pushed and I've added a Workflow to automatically make builds after each commit. For now we should use emsdk version 3.1.73 (./emsdk install 3.1.73) and I'll eventually try to make it work with the newest versions.

Added build 168c1e5 to the modular version. Updated data and modules are recommended.
 
I compiled ot client for webbrowsers, configured nginx, configured websockify.
Client runs in the browser, shows login screen, but when I put my acc number and password, click login, I get ERROR 73.

Do you know what might be causing this issue?

Thank you in advance!



Solved: I was using ip address in init.lua on server list, changed it to mydomain.com/ws/login/ and it opens correctly character list.
 
Last edited:
Can you let me know if wasm compilation is working for current version in github?
What are requirements for emsdk etc? I'm able to compile otclient but once uploaded to home server I'm unable to load up otclient.
I get START button, then black screen and in developer console I can see issues with otclient.js.

Have no idea if this is error with compilation or server config.

I no longer use vps with port forwarding, but try to run it on local network with cloudflare tunnel.
 
Can you let me know if wasm compilation is working for current version in github?
What are requirements for emsdk etc? I'm able to compile otclient but once uploaded to home server I'm unable to load up otclient.
I get START button, then black screen and in developer console I can see issues with otclient.js.

Have no idea if this is error with compilation or server config.

I no longer use vps with port forwarding, but try to run it on local network with cloudflare tunnel.
I've just compiled the debug version with the latest commits (up to abd5b68cd9ca763409dcbcb1c8649659c96aae4b) and it's working:
1750889732410.webp
1750889746731.webp

Will test the release version later.

Can you share the error you see in the developer console?
 
Can you let me know if wasm compilation is working for current version in github?
What are requirements for emsdk etc? I'm able to compile otclient but once uploaded to home server I'm unable to load up otclient.
I get START button, then black screen and in developer console I can see issues with otclient.js.

Have no idea if this is error with compilation or server config.

I no longer use vps with port forwarding, but try to run it on local network with cloudflare tunnel.
IDK. I would first use official OTClient Web with custom data.zip and then try to compile my own version ex.:
OTClient Web (https://webclient.otarchive.com/?gameData=https://downloads-oracle.ots.me/data/MehahWeb860/otclient-otarchive.zip)`
It uses mine custom OTCR data .zip archive from 2025-01-23 ( OTS.ME Downloads (https://downloads-oracle.ots.me/?dir=data/MehahWeb860) ) and last official OTCR Web release. You can login and play with login/password:
Code:
ppp
ppp
I no longer use vps with port forwarding, but try to run it on local network with cloudflare tunnel.
IDK how you can use local network and cloudflare.
 
Guys this thread is really intresting! Wondering a few things. You must have unlimited bandwith in order to use something like this right? Also, how to web traffic could be handle so it doesn't load so much bandwith while using and loading the client/rendering on web browser (locally)? Is there something, like what cdn does with images? (sorry for the bad comparision but I think it goes to the point).

Regards!
 
You must have unlimited bandwith in order to use something like this right?
There is no video streaming. It does not use any extra transfer to stream/download any images.
It runs C++ app in web browser using WebAssembly | MDN (https://developer.mozilla.org/en-US/docs/WebAssembly)

It uses the same bandwidth as normal client. WebSocket protocol may add some extra data to transfer, but when I play on my warots bandwidth never goes over 24 kb/s.
When you start client for first time, it downloads data.zip, which is the same as normal OTCR files. Without web client, player would download client.zip from your website, so it's the same transfer.
 
There is no video streaming. It does not use any extra transfer to stream/download any images.
It runs C++ app in web browser using WebAssembly | MDN (https://developer.mozilla.org/en-US/docs/WebAssembly)

It uses the same bandwidth as normal client. WebSocket protocol may add some extra data to transfer, but when I play on my warots bandwidth never goes over 24 kb/s.
When you start client for first time, it downloads data.zip, which is the same as normal OTCR files. Without web client, player would download client.zip from your website, so it's the same transfer.
Hmmm! Sounds good. But usually I have seen servers that provides client download by external pages. It's hard to see some that host their own files. So I think you must have unlimited bandwith as requierement for sure. And basically the most critical point is downloading files/client updates right?
 
But usually I have seen servers that provides client download by external pages.
Most of OTSes use cloudflare.com, that caches client/updater files and serve them from closes location to user (using CF CDN).

Ex. stats from 500+ OTS - 75% cached. On first day, when players downloaded ~300MB client, 50% of them get client from CF cache (366 GB from server, 350GB from cache).
1754579531169.webp
So I think you must have unlimited bandwith as requierement for sure. And basically the most critical point is downloading files/client updates right?
You need a lot of transfer, but transfer amount is the same with WebClient as it is with normal client.

With normal client, you can upload client to some Google Drive or transfer.it, but even, if you host it on own server, it shouldn't be a problem.
I host my warots with webclient on 4 EUR/month Hetzner machine that has 20 TB transfer included and 1.2$ for every extra TB (1000GB = 25k client downloads). OTS data .zip https://downloads-oracle.ots.me/data/MehahWeb860/otclient-otarchive.zip is hosted on free 1 core 1 GB RAM server in Oracle.

All VPSes in OVH have unlimited transfer. You can get 1 gb/s server for 8$/month. That's what ex. Malvera uses:
Code:
https://client.malvera.online/Malvera_v1.zip
Subdomain client points to OVH VPS with unlimited transfer, it also goes thru cloudflare, so 50% of transfer is cached.
 
I am using the Otclient Web Modular Version: OTClient Web (https://webclient.otarchive.com/). I am using the otclient from this commit: GitHub - opentibiabr/otclient at cb4aa3906feccdca905cab37b36d321e599969f8 (https://github.com/opentibiabr/otclient/tree/cb4aa3906feccdca905cab37b36d321e599969f8). It works normally for Tibia version 13.40, but when I try it with version 10.98 the browser freezes without showing any error in the console. I compiled Canary for version 1098. I think the problem might be that version 1098 doesn’t accept HTTP?
 
Last edited:
Back
Top