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

Source's custom OT game engine (TypeScriptFTW)

Hey guys, quick update before I gotta go.

We made 2 new blog posts on our blog, Source's Tiny Technology Blog (http://taoengine.net/)

You might want to read these, as there's some groundbreaking news both in terms of TaoEngine and also what YOU should probably do in terms of encryption, keep XTEA or switch it out ??? on YOUR Open Tibia server.

Now I gotta go, take care everyone!
 
Hello again friends and strangers alike.

I forgot it's been 2 weeks yesterday, only just remembered it hehe!

This time we have optimized the server and redesigned world storage a lot among other things.

Here's the changes since last time:
  • We now use AES instead of XTEA (with old XTEA backwards compatibility)
  • We've made the server many many times faster than before with all kind of changes/optimizations
  • Server now takes in up to N cores (the number YOU want can be set in config, I like this number though for stability) number of players every gameround, for me this is 16 x 50 per second or up to 800 players, but in reality server can't handle taking in more than up to ~400 players per second, I haven't actually profiled this so I don't know why not more - maybe the SQL? Maybe the file parsing? Maybe a combination of all that + RSA? I'm not sure
  • Mass login script is more functional now (and also supports AES)
  • We get 0.1s of lagg every gameround with 5k players on all turning every second after optimizations
  • After these optimizations we used 3G of memory instead of ~1.2G by using nested vectors
  • Then we reduced it back down to 1.2G by switching to C arrays
  • Further reduced it down to 1.1G by implementing the class "CheapVector" for creature positions
  • We tested logging in 9000 players (not the max number, I just arbitrarily picked 9000 after 5000); it works, but ~1s lagg every gameround, so the game is not really playable with this many players

Couple of notes:
1. To be clear: the 9000 players were, yes, all online at the same time.
I will maybe make a youtube video about it later.
But while the CPU lag was only ~1s every gameround, the actual network/server interaction lag was more like ~10s.
This might have been however because we made the main thread sleep too short in between gamerounds, not allowing enough packet flow in.

I'm not sure, but I've since changed the minimum sleep amount to a higher number, but haven't tested whether the lag is any better.
We can see monsters moving every second or so, but we can't actually move, almost like a DDoS attack.

Doing some quick math, I'm not sure, but the network traffic could easily surpass the MB/s of the local network interface, which I believe is usually measured in mbit/s, not MB.
That's another possibility, either way - 9k players online is unplayable.

2. There's one (semi-big) limitation now with map traversal, that we see with oldschool Real Tibia too.
Namely: players/actually any creature can't step on empty (black) tiles anymore.
As it is right now, the server will in fact segfault if you do, but this will be fixed by the next update (instead it will simply not allow you to step on the tile).
This is why most likely Gamemasters and Gods on Real Tibia can/could only teleport to "safe"/existing tiles.

This was necessary for the server to be optimized to handle possibly up to ~5k players online at the same time without much noticable lag.

In fact it's actually impossible using C arrays to create the tiles even if we wanted to (which I kind of do want to).
Because the position of tiles on NEGATIVE offsets is either a negative number (non-indexable) or overflows to 65535, which is an impossibly large number of tiles to actually store.
Even with just empty pointers, calloc'ing 65535 x 65535 x 16 tiles is 68GB of memory, way out of scope for any reasonable server.

The only other option is using what I used before - a hash for player creatures, but this severely limits CPU performance / the number of players we can host simultaneously.

In fact the reason why I switched to C arrays was almost only to optimize gameGetPlayers, which is the server's last bottleneck at ~70% of the CPU usage.

So yes, well, that's about it.

Until next time, take care ya'll!
 
Happy New year everyone!

Today there's two main updates:
  • My 3D client (with free fly camera, never seen before) is about 50-75% complete and has already been ported to Android and VR, as well as supporting Desktop (Windows/Linux/Mac)
  • TaoEngine is now being vibecoded, because it's much faster and less stressful to work like that; only been doing so for the past week, and we've added NPCs fully with all logic and most action keywords; they can now trade, teach spells, set vocation, set respawn point, teleport players, etc, so for example the Oracle NPC works flawlessly now, among many other bug fixes that you can read more about on my blog Source's Tiny Technology Blog (http://taoengine.net/)

I stopped working on TaoEngine for months, so I'm sorry for not making it by Christmas like I had estimated, but at this pace we should be done in a couple of months for an alpha server launch, maybe even just 1 month or less, depending on how much work I'm willing to put in.

Cheers!
 
Time for another brief bi-weekly update ya'll:

  • Implemented all spell words, optimized full spell triad system, and a couple of individual spells
  • Improved NPCs further (gambling now works, teleporting to Ghostship works, everything should work)
  • Added parsing of towns and depot ids from map.dat
  • Been working for the last 8 days on reworking item definitions (objects.srv) internal data and worlditem system to work more like Realots based on decompiled code... Somewhat complicated system so is taking some time, but I'm pretty close to wrapping this task up now, maybe 3 more days hopefully; this will also solve wrong fluid color ids which is what prompted me to investigate this closer; new system will be much faster, reducing time checks for things like protection items on player damage

That's all for now, I'll be back again in two weeks, until then take care!
 
Time for another brief bi-weekly update ya'll:

  • Implemented all spell words, optimized full spell triad system, and a couple of individual spells
  • Improved NPCs further (gambling now works, teleporting to Ghostship works, everything should work)
  • Added parsing of towns and depot ids from map.dat
  • Been working for the last 8 days on reworking item definitions (objects.srv) internal data and worlditem system to work more like Realots based on decompiled code... Somewhat complicated system so is taking some time, but I'm pretty close to wrapping this task up now, maybe 3 more days hopefully; this will also solve wrong fluid color ids which is what prompted me to investigate this closer; new system will be much faster, reducing time checks for things like protection items on player damage

That's all for now, I'll be back again in two weeks, until then take care!
Whenever i see your post my heart accelerate
 
Okay everyone, changes since 2 weeks ago :):

  • Completed rewrite of item system successfully, making item lookups much faster, as well as added Tibia enums.h from open source decompiled github project (thanks to @fusion32 for his amazing 1:1'ish decompiled project!!)
  • Fixed fluid names and colors using decompiled fluid enums
  • Fixed containers not working after item rewrite
  • Other bugs, among others several segfaults
  • Fixed (using same hack as Ezzz's old TFS project it looks like*) stackpos >= 10 object removal packet by always calling sendUpdateTile afterwards; I tried cheaper alternatives, but nothing else worked unfortunately


* I was first looking for the solution by Realots decompiled code, but couldn't find it, so I looked into TFS and it used the worst solution, but I was tired of working on this problem for 5 days so I just did the same for now

Thanks everyone who follows this project for your motivating comments and likes, I really appreciate it, and I wish you good luck with your projects too :)
 
Hello everyone. Feeling a little low in energy after what I consider a milestone achievement with my server but little response out there, so posting this to motivate me:
  • We've implemented full raid system! BigRaid vs SmallRaid system, tiebreaker system, RNG scheduling, broadcasted messages, RNG placement based on radius, waves, etc, also Date based raids, oh actually I forgot to add Inventory system because I need to rewrite some stuff, but will do this by next week!
  • We also achieved 5000 active players (sending turn packets every second) with little to no noticeable lag at 20Hz (I mistakenly thought default Hz was 50 on Realots, but it's 50ms per delay, so 20Hz)

Screenshots, videos, and more detailed information on our blog as usual at Source's Tiny Technology Blog (http://taoengine.net/)

Have a good one ya'll!
 
Hello everyone. Time for another (bi-)weekly update, I might post weekly when I feel like it in the future as I've sped up development using an LLM (~10x dev speed).

Main changes since last week:
  • Full and clean raid system (fixed bugs with raid system since last update)
  • Original Realots MoveUse system implemented internally (not just the script file)
  • Original Realots A* system
  • Significantly improved performance of 5k players walking around randomly every second (about 40-100x speedup, seemingly fully maximized)
  • All spells and runes
  • All fluids
  • Re-implemented double cast monster spell bug with absolutely perfect precision
  • Fixed fluid colors
  • Added all creature conditions (skill boost, skill reduction, paralyze, haste, etc)
  • Added all amulet and ring handlers -> counting down seconds, adding skills, regen, gives stealth, physical damage protection, etc etc)
  • Added AOL, blessings, fixed PvP EXP formula (and limited to PvP-E worlds), skull system, frag counters, etc
  • Removed PvP dist fighting -> shielding applies (no longer)
  • Added rate limits per IP
  • Implemented map/cylinder refresh
  • Implemented full house system (minus auctions in SQL) with guest, subowner and door lists, fixed all house spells
  • Monster changeTarget optimization (uses cached targets instead of search)
  • Push monsters push and/or destroy blocking objects and weaker monsters
  • Reduced memory/RAM usage from 3.8GB to 2.0GB
  • Lots of lots of bug fixes

Server might be ready for an alpha version / test server launch in the near future.

There's still stuff to do, but the main core functionality of the server now seem to mostly work, and the main challenge is now finding and squashing bugs.

Make sure to check our blog out at Source's Tiny Technology Blog (http://taoengine.net/)

Stay tuned!
 
Been sick for over a week, and worked on website for almost a month which is starting to come together functionally, old update on the blog Source's Tiny Technology Blog (http://taoengine.net/) from 2 weeks ago.

Nothing else new to report on the server part for now, but in the past 3-4 days I've modified RME to work fully with Realots/SEC maps, will create a thread about it and post on my blog about it at some point later today, likely in the next less than 60 minutes.

Btw, the server isn't done, but I needed to add website to start creating guilds and stuff, and that will then be parsed and used in the server, but it's practically/pretty much done, not much left in the server engine itself.

i practically only come here to read this thread and @fusion32 thread lol
That's nice btw, glad to hear it.
 
Sorry for the late update (more news at my blog Source's Tiny Technology Blog (http://taoengine.net/)).

Server and client is basically ready for an alpha launch. Few more adjustments / bug checks & stress tests with the server to be done.
Yesterday I found out how to cross compile OTC from Linux to Windows and the client needs to be tested on Windows because behind wine WinTrust doesn't work, so that also needs to be tested.
And lastly I need to finish and afterwards pentest my own website/AAC.

I started working on lights for OTC, and I fixed basically everything, but one thing I don't fully understand yet is buildings (I think how it works is light is drawn upwards multiple floors from the outside, but that tile floors shadows it?).
So maybe not expect that to be fully fixed by the alpha launch coming up soon, and I won't be running the Neural Net anti-cheat server due to HW costs (for now), other than these things we're pretty much ready to go! Expect maybe a week or two or more before launch, though there's a chance it will be less as well :)
 
you have some amazing and crazy good stuff made to be honest , love the work always have!
 
Back
Top