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

PyOT

~X~

LoA Founder
Joined
Oct 30, 2007
Messages
432
Reaction score
96
Location
USA
GitHub
VielNexus

PyOT — A Modern Open Tibia Server, Reimagined in Python​

GitHub: GitHub - Mystikil/PyOT (https://github.com/Mystikil/PyOT)

What Is PyOT?​

A while back Stain started a Python distro called PyOT. It is a full-featured Open Tibia server completely written in Python 3 — not TFS, not C++, not glued with Lua. It’s a clean slate. Then it was latter mentioned by Amirosolo. SO credits go to them for the start of PyOT. I simply plugged in my custom Distro with theirs so far.
It was born from a simple idea:
“What if we could build a Tibia-like MMO server using clean, modern code that anyone could read, understand, and expand?”
That’s what PyOT is all about — a moddable, readable, Python-powered server core.
No compiler. No memory leaks. No guessing.
Just files, folders, and code you can actually understand.

Philosophy​

Traditional OT ServersPyOT Approach
C++ base with Lua scripts100% Python stack
Difficult to debug or modifyReadable, live-editable code
Statically compiledHot-reloadable scripts
Scattered logicModular folder-based systems
Slower developmentRapid iteration, even live

Core Features​

Gameplay Systems​

SystemStatusNotes
Character Login / Accounts✅ WorkingMySQL-backed
Movement & Pathfinding✅ WorkingIncludes monster follow behavior
Spells System✅ ModularPython-defined, easy to extend
Vocations✅ ConfigurableJSON or Python definitions
Monsters & AI✅ BasicAdvanced AI in progress
NPCs✅ FunctionalKeyword & trade logic
Items System✅ SupportedWearables, effects, usable logic
Combat / Stats✅ FunctionalCooldowns, damage types, scaling

Data Handling​

FeatureDescription
✅ JSON/Python ConfigsMonsters, vocations, spells, etc.
✅ Unified LoaderDrop data into folders, it's read at runtime
✅ Hot ReloadingModify systems without restart
✅ Stat ScalingPer rarity, level, or config values
✅ Dynamic Item DefinitionsAdd new effects/bonuses easily

Maps & World​

Map FeatureStatus
OTBM Support✅ Fully functional
Instanced Maps🔄 In progress
Region Chunks✅ Base implemented
Procedural Generation🧪 Experimental scripts
Dungeon Loader✅ Reads chunk configs

Web/AAC​

FeatureStatusNotes
Website Login✅ Working
Character Search✅ AJAX-powered
Highscores✅ Live leaderboard
Online List✅ Dynamic list
Admin Tools🛠️ Coming soon

Coming Soon (In Progress)​

FeatureDescription
💀 Instanced DungeonsScalable, configurable, group/solo
🧠 Advanced Monster AIHostility flags, memory, anger, element logic
🎮 Unity ClientCustom modern client (OTClient supported for now)
🔌 Plug-in SystemDrop folder → auto-load scripts
🎭 Profession SystemForging, alchemy, crafting trees
💡 Visual OverlaysRarity glows, condition indicators
📚 Quest SystemFully modular, flag/storage-based
📈 Admin DashboardLive server stats & player tracking

Why Python?​

BenefitHow it Helps
🧠 Readable SyntaxEasier for new devs to contribute
🔁 Live ReloadingChange logic mid-game
📚 Built-in LibsFile handling, math, data, etc.
🔒 No CompilingFast testing + fewer crash risks
⚡ Modular CodeSystems live in separate folders
👥 Community FriendlyGreat for teaching/gamejam servers

How to Get Started​


  1. Clone the repo
    git clone https://github.com/Mystikil/PyOT

  2. Install Python 3.11+ and dependencies
    pip install -r requirements.txt

  3. Setup your MySQL database using the schema provided

  4. Run the login server:
    python loginserver.py

  5. Run the game server:
    python gameserver.py

  6. (Optional) Launch the website at /website/ in any PHP server or XAMPP

Want to Contribute or Watch?​

If you:

  • Know Python

  • Are tired of hacking in Lua/C++

  • Love MMO or OT design

  • Want to build new systems cleanly

  • Just want to see something different succeed…
We’re building this out in the open.
Check out the repo:
👉 GitHub - Mystikil/PyOT (https://github.com/Mystikil/PyOT)

⚠️ Future Plans: PyOTV2​

We’ll be renaming the project to PyOTV2 soon.
That version will include:

  • Unity client integration

  • Full plug-and-play scripting

  • New AI core ("ECHO")

  • Admin panel

  • Secure serialization + login security
 
Did you actually test how many players this server supports? I can imagine python being single core could be a problem relatively fast
This would all depend on the actual hardware. However Stain previously mentioned should withstand a great number of players. I personally have not tried it but I see no issue housing 1k players at once. But I run all industrial grade equipment.
Amazing work
Thank you!
 
Well you are saying that but doing pathfinding in python and smth like this:

Python:
# A cache, this can probably get pretty big, but right now it's not something I'll think about
RouteCache = {} # {(FromX, FromY, ToZ, ToY, Z): [Route]}

doesn't really sounds promising
 
Well you are saying that but doing pathfinding in python and smth like this:

Python:
# A cache, this can probably get pretty big, but right now it's not something I'll think about
RouteCache = {} # {(FromX, FromY, ToZ, ToY, Z): [Route]}

doesn't really sounds promising
Ive yet to run into a path finding issues, but path finding is something that is being reworked via play time. This means its monitored, logged, and checked.. Then once done its analyzed and if needed things change. Also worth noting — route caching is dangerous if done naively. That's why I'm leaning toward scoped or LRU-based caching for hot zones or repeated paths (like temple exits or instance bosses). Not global A→B maps.
 
Last edited:
I'm slowly learning coding on my own time after work using LUA for personal hobby scripts and also taking boot.dev courses which has a focus on python. I saw this and was delighted. In the github though it does state 3.4.1 for the python version. Will this work with the latest version of python and tornado library?

This could be a valuable and fun way for me to continue learning coding!
 
Have you benchmarked this with at least 3000 active monsters ?
 
Last time I checked the original PyOT project out many years ago out, it did not stand basic scrutiny. I didn't get to test much out, all I remember was monsters were broken, stopped walking, IIRC suddenly glitched around, etc, so I just logged out and deleted the files off my computer.
Not to mention the code was unreadable, imo worse than OTServ C++ code.

The lack of any good alternatives to the massively bloated OTServ based projects is why I started my own project (TaoEngine) from scratch many years ago myself, so I can sort of understand the wish to work on something like this.

Instead of an LLM generated thread, I would've liked to see what this thing can do, and whether it stands basic scrutiny, in something like a youtube video, I think that would be pretty cool and a fair request, and without 3 second cherry picked clips where things doesn't break - let us see it break, and show us the progress along the way getting this thing not to break :) That's my opinion.

I'd like to be positive and hopeful, but it's kind of hard without any demonstrations of what it can (or can't) actually do yet.
That said, I wish you the best, hope you can show us more of what this can do in the future! Good luck with the project! :)
 
Last time I checked the original PyOT project out many years ago out, it did not stand basic scrutiny. I didn't get to test much out, all I remember was monsters were broken, stopped walking, IIRC suddenly glitched around, etc, so I just logged out and deleted the files off my computer.
Not to mention the code was unreadable, imo worse than OTServ C++ code.

The lack of any good alternatives to the massively bloated OTServ based projects is why I started my own project (TaoEngine) from scratch many years ago myself, so I can sort of understand the wish to work on something like this.

Instead of an LLM generated thread, I would've liked to see what this thing can do, and whether it stands basic scrutiny, in something like a youtube video, I think that would be pretty cool and a fair request, and without 3 second cherry picked clips where things doesn't break - let us see it break, and show us the progress along the way getting this thing not to break :) That's my opinion.

I'd like to be positive and hopeful, but it's kind of hard without any demonstrations of what it can (or can't) actually do yet.
That said, I wish you the best, hope you can show us more of what this can do in the future! Good luck with the project! :)
You are completely write! And the post was generated by the AI I built which works with me on the server. Soon as I get back I will update things as you mentioned!!!
Post automatically merged:

Have you benchmarked this with at least 3000 active monsters ?
I have ran the server with a full RL Tibia map and no issues have came up with monster's. The only issues I did see was of my own which was a direct result of my instances system.
 
You are completely write! And the post was generated by the AI I built which works with me on the server. Soon as I get back I will update things as you mentioned!!!
Post automatically merged:


I have ran the server with a full RL Tibia map and no issues have came up with monster's. The only issues I did see was of my own which was a direct result of my instances system.
Idle monsters don't count to measure how the server will behave.
 
I can arrange a large number if needed. That is not a issue!
I'm eager to see performance! From a programmer's perspective, I want to see how Python interacts with at least 1000 active monsters walking around and casting spells, I want to see if it would throttle or remain good,
 
Updated the site to be more modern, updated with information, and added a download button to download the current release. Please check out all the new information and features! Visit the site at PyOT Overview — PyOT Developer Guide (https://devnexus.online/pyot)
Post automatically merged:

Last time I checked the original PyOT project out many years ago out, it did not stand basic scrutiny. I didn't get to test much out, all I remember was monsters were broken, stopped walking, IIRC suddenly glitched around, etc, so I just logged out and deleted the files off my computer.
Not to mention the code was unreadable, imo worse than OTServ C++ code.

The lack of any good alternatives to the massively bloated OTServ based projects is why I started my own project (TaoEngine) from scratch many years ago myself, so I can sort of understand the wish to work on something like this.

Instead of an LLM generated thread, I would've liked to see what this thing can do, and whether it stands basic scrutiny, in something like a youtube video, I think that would be pretty cool and a fair request, and without 3 second cherry picked clips where things doesn't break - let us see it break, and show us the progress along the way getting this thing not to break :) That's my opinion.

I'd like to be positive and hopeful, but it's kind of hard without any demonstrations of what it can (or can't) actually do yet.
That said, I wish you the best, hope you can show us more of what this can do in the future! Good luck with the project! :)
Your more than welcome to test out the server! Sorry Im super late replying but I had emergency shoulder surgery and it set me back a bit, but I'm back at it!
 
Last edited:
Back
Top