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

Gravak - Play Tibia 7.4 in your Browser

Pedrook

Advanced OT User
Joined
May 24, 2009
Messages
484
Solutions
3
Reaction score
224
Location
Brazil
GitHub
pedrogiampietro
Hello OtLand community!

I saw this project and wanted to continue it, so I've been working on it over the days... building things.


We are excited to share our latest project: Tibia Browser Engine. This is a custom engine built from scratch using NodeJS for the server and HTML5 Canvas for the client, allowing you to play a classic Tibia 7.4 experience directly in your browser—no downloads or plugins required!

🌟 Key Features​

  • Browser-Based: Play anywhere, anytime. Just open your browser and login.
  • Custom Engine: Written entirely in JavaScript (NodeJS + Client).
  • Modern Enhancements:
    • Dynamic Lighting System
    • Weather Effects (Rain, Snow, Thunder)
    • Sound Support for immersive gameplay
  • Classic 7.4 Experience: Faithful recreation of the golden era mechanics.
  • Functional UI: Complete window system, skill bars, battle window, and minimap.
  • Smooth Performance: Optimized HTML5 Canvas rendering.

📸 Media​

Here are some sneak peeks at what we've been working on:

Epic Gameplay
Login screen;
1766176325227.webp
1766176411898.webp


1766176549960.webp


🚀 Join the Community!​

We are constantly improving the engine and adding new features. We'd love to have you join our community, give feedback, and follow our progress.

Join our Discord Server: 👉 Join the Gravak Discord Server! (https://discord.gg/HkKtNcxsBD)

See you in-game!
Post automatically merged:

Nowadays, it's much easier to work with visual identity, isn't it? In the past, we had to pay and look for professionals to do it; today I think it's so cool to be able to do it ourselves.
 

Attachments

  • logo.webp
    logo.webp
    268.1 KB · Views: 42 · VirusTotal
  • wallpaper.webp
    wallpaper.webp
    508 KB · Views: 23 · VirusTotal
  • mascote-removebg-preview.webp
    mascote-removebg-preview.webp
    25.5 KB · Views: 18 · VirusTotal
  • favicon-removebg-preview.webp
    favicon-removebg-preview.webp
    9.3 KB · Views: 27 · VirusTotal
Last edited:
Hello OtLand community!

I saw this project and wanted to continue it, so I've been working on it over the days... building things.


We are excited to share our latest project: Tibia Browser Engine. This is a custom engine built from scratch using NodeJS for the server and HTML5 Canvas for the client, allowing you to play a classic Tibia 7.4 experience directly in your browser—no downloads or plugins required!

🌟 Key Features​

  • Browser-Based: Play anywhere, anytime. Just open your browser and login.
  • Custom Engine: Written entirely in JavaScript (NodeJS + Client).
  • Modern Enhancements:
    • Dynamic Lighting System
    • Weather Effects (Rain, Snow, Thunder)
    • Sound Support for immersive gameplay
  • Classic 7.4 Experience: Faithful recreation of the golden era mechanics.
  • Functional UI: Complete window system, skill bars, battle window, and minimap.
  • Smooth Performance: Optimized HTML5 Canvas rendering.

📸 Media​

Here are some sneak peeks at what we've been working on:

Epic Gameplay
Login screen;
View attachment 96793
View attachment 96794


View attachment 96795


🚀 Join the Community!​

We are constantly improving the engine and adding new features. We'd love to have you join our community, give feedback, and follow our progress.

Join our Discord Server: 👉 Join the Gravak Discord Server! (https://discord.gg/HkKtNcxsBD)

See you in-game!
Post automatically merged:

Nowadays, it's much easier to work with visual identity, isn't it? In the past, we had to pay and look for professionals to do it; today I think it's so cool to be able to do it ourselves.
10% Human
90% Ai
 
10% Human
90% Ai
How it will continue to be in the future, it speeds un easy and complex workforce and time that's other wise just unessecary.
Debugging, using ai speeds things up, the rest depends if the person using it knows what code does.

Makes things a lot easier and quicker than it otherwise would be, generating a lot of new awesome things like this
 
How it will continue to be in the future, it speeds un easy and complex workforce and time that's other wise just unessecary.
Debugging, using ai speeds things up, the rest depends if the person using it knows what code does.

Makes things a lot easier and quicker than it otherwise would be, generating a lot of new awesome things like this
I understand what you're saying... but if humans rely on artificial intelligence, how can they understand anything? They'll just be a machine using a machine.
 
Thanks for the feedback.


Yes, I know about OTC compiled to WASM, and it’s a great project. This one isn’t meant to replace or compete with OTC. The goal is a from-scratch, browser-native engine in pure JavaScript, focused only on classic 7.4 and full control over rendering, protocol, and mechanics.


It’s more about experimentation, learning, and simplicity than feature parity. Appreciate you checking it out
 
We've implemented an intelligent window positioning system that prioritizes opening windows (Stats, Battle, Containers, etc.) on the right side of the screen, with automatic fallback to the left side when there's no space available.
Post automatically merged:

I'm also finishing up the part about death;

Screen Recording 2025-12-20 at 14.51.15.gifcontainer-resize.gif
 
Last edited:
I understand what you're saying... but if humans rely on artificial intelligence, how can they understand anything? They'll just be a machine using a machine.
I understand your point. But do you understand machine language? (e.g. assembly instructions blabla). Maybe you do, but my point is, people are able build things that works, serves a purpose, solves a problem in the real world, even if they don't understand assembly or basic low level machine language. That's the wonder of technology. It's still important to know the low level, but enabling more people to build things is always a good thing for society, and it is how things evolve. We are already machines using machines.

People using computers doesn't need to know how a kernel is built from scratch, they are able to produce great outcomes regardless.

IA is the next level of technology, where people will build things even without understanding the core underlying technology behind it. It is a tool, to be used to produce things that people want. It is the same as a computer, people use it, they have no idea how the underlying technology works, but it is still a good thing.

We'll still need engineers that understand how a computer works, how IA works, but for the general public, it is a great tool, just reflect on this, it enables people to do more with less, it is the same purpose of any other tool that evolved over time with technology became. Every tool you use in your life has years of work built into it to become what it is, and you may not understand the underlying of how it works but you use the tool and you produce the outcome. You can think of infinite examples for this. This is the same for AI.
 
Last edited:
You got 90+ repos and a lot of activity on GitHub: pedrogiampietro - Repositories (https://github.com/pedrogiampietro?tab=repositories)
Do you plan to release it as open source code or it's private client-server code?
If you do, when do you plan to release it? Any date?

Yes, I'm on vacation from work at the end of the year, taking the opportunity to play around with this project, so I'll be opening this public repo soon, just organizing a few things xd
And as soon as I organize things, I'll upload it for testing, but there's still a lot to do.
Post automatically merged:

Performance Optimizations​

  • FPS Unlock - Added option in Settings menu to switch between 60 FPS (V-Sync), 120 FPS, or Unlimited
  • Optimized Rendering - Replaced forEach loops with for loops in hot paths, cached frequently accessed values

Enhanced Minimap Features​

  • Click-to-Walk on Minimap - Right-click on the sidebar minimap to autowalk to that location
  • Visual Path Marker - Shows a red X at your destination with a green dashed line showing your path

Performance Monitor​

  • Added "Show Performance Stats" toggle in Settings
  • Displays FPS, Draw Calls, Draw Time, Memory Usage, Latency, and more

1766322133604.webpScreen Recording 2025-12-21 at 10.00.21.gif1766322350920.webp
Post automatically merged:

Update: UI Improvements, Postgre Migration & Polishing​

Hey everyone! We've been working hard on modernizing the engine's core and user experience. Here is a summary of the latest changelog:

🖥️ UI & Quality of Life​

  • Dynamic Chat Resize: You can now drag to resize the game console height! We've built a custom resizer system that adjusts the game canvas automatically.
  • Chat Lock Feature: Added a "Lock" button (🔒) to the chat header. When active, it prevents accidental resizing of the console interface.
  • Material Icons: We've ditched the old static arrow images and Unicode characters. The client now integrates Google Material Icons for a much cleaner, consistent, and modern look on all UI buttons (navigation, lock, chat options).

⚔️ Gameplay Feedback​

  • Refined Loot Messages: Loot notifications now appear both as a pop-up on the screen (for immediate feedback) AND in the console log.
  • Color Coding: Console loot messages are now highlighted in Light Green to make them stand out from standard text.
  • Combat Log: Damage dealt and taken is now properly routed to the console log, keeping your game screen focused on the action while preserving the history in the chat.

⚙️ Core & Backend​

  • PostgreSQL Migration: We have fully migrated the account database from SQLite to PostgreSQL using Drizzle ORM. This sets the stage for better scalability and handling massive amounts of data.
  • Graceful Shutdown: Fixed a critical race condition on server restart/shutdown. The server now intelligently waits for all asynchronous character saves to complete before closing the database pool, ensuring zero data loss during restarts.


1766336644811.webp
 
Last edited:
Working a bit on the responsiveness to make it playable on mobile, working on the features, etc.
Progressing well.

We also worked on the spells section, adding spells to the hotkeys bar, etc.

1766545107615.webpGravak - Perfil 1 — Microsoft_ Edge 2025-12-23 23-55-33.gif
 
ngl that login image looks dope and fun. to bad its OT. Making that game instead would be fire.
Could be a click adventure game that plays only with mouse and autoattack with some magic abilities here and there
 
We're developing Gravak, a browser-based Open Tibia server running entirely in HTML5/JavaScript - no client download required!

🌐 Play Now (Development continuous)​

https://gravak.fun

While we're still actively developing, the server is online for testing. Jump in and check out what we've built so far!

⚡ Features Already Working:​

  • Full browser client (works on desktop, future work in mobile (progress%)
  • Real-time gameplay with WebSocket connection
  • Multiple vocations (Knight, Paladin, Sorcerer, Druid)
  • working now in Spells, NPCs, monsters, and quests
  • Day/night cycle with dynamic lighting
  • Weather effects
  • Classic Tibia 7.40 experience

🛠️ Tech Stack:​

  • Client: Pure HTML5 Canvas + JavaScript
  • Server: Node.js
  • Protocol: WebSocket
  • Database: PostgreSQL
 
When I loaded the global map, I encountered a strange problem when creating NPCs. I noticed that all the respawns were appearing in the wrong places, so I checked and the main ground, which should be 7, was set to z=8.

The Problem: The engine used "Z=8" as the ground and tried to invert the coordinates (15 - Z), which caused conflicts with real maps (Z=7) and broke the depth logic.

The Solution: We standardized everything to the official Tibia logic (Z-Down, where Z=7 is ground and Z=0 is sky).

Adjustments:
Server: We removed the map reading inversions.
Projection: We changed the x - z math to x + z (to align with the perspective).
Rendering: We reversed the "bottom to top" loops to "top to bottom" (from 7 to 0).
 
When I loaded the global map, I encountered a strange problem when creating NPCs. I noticed that all the respawns were appearing in the wrong places, so I checked and the main ground, which should be 7, was set to z=8.

The Problem: The engine used "Z=8" as the ground and tried to invert the coordinates (15 - Z), which caused conflicts with real maps (Z=7) and broke the depth logic.

The Solution: We standardized everything to the official Tibia logic (Z-Down, where Z=7 is ground and Z=0 is sky).

Adjustments:
Server: We removed the map reading inversions.
Projection: We changed the x - z math to x + z (to align with the perspective).
Rendering: We reversed the "bottom to top" loops to "top to bottom" (from 7 to 0).
Ok bro , all the best.
 
Back
Top