As a non tech savvy person from what i've seen so far in this thread it seems like Cipsoft is professional and ots creators are amateur. So that 2005 tibia "cip server even being a relic still outmatches modern ots in general performance and reliability"
" Cipsoft is professional and ots creators are amateur." no shit. TFS is 16~ years old attempt to reproduce Tibia. The code is somehow modern C++ but the design choices aren't.
I think kay idealizes the cipengine since its the original deal and its somehow different from TFS, which makes it unique compared with the rest even if its not better.
The first is configurable and perfectly enough. The latter (said "lag") is caused by Nagle's algorithm, which in tfs and otc is already disabled by default. It's not a software issue but a matter of adjusting (network bandwidth used to be a bigger concern back then). You can disable Nagle in both tibia client and server by setting a flag on socket.
Nothing about nangle issue in the 7.7 cipengine, i said the current Tibia has software lags. Ping increases with more players, some events and wars lags the game server.
The cip server source was definitely way more readable, in some parts even the decompiled code is, which speaks for itself. As you said, it's simple, small and consistest, shows more of academic approach, while tfs is unnecessairly overbuilt and goes spaghetti, which is also reflected in resources usage on runtime.
It evolved from C code. A lot of code is inside the creature class instead of player. There is text messages and other things in the main game loop, i don't see it as a good code. Its simplier, but not better either.
"while tfs is unnecessairly overbuilt and goes spaghetti, which is also reflected in resources usage on runtime." I agree, anything that TFS has is overbuild for a 7.7 game.
Tfs might be "praised for smooth/realtime" but is it actually that smooth? Unlikely.
In general, it is. Players can't perceive the random lags and they rarely happen.
it lags terribly when managing big stocks of items, especially when the action involves database, and tfs does rely alot on database (say saving / loading player's depot). It doesn't support multi-threading and inserts huge queries in the main thread. It exceeds to a point in which player can basicaly blow the server up with a stock that cip server could eat like a piece of cake.
Its true but that did not prevent me from having 1800 players online without lags. TFS approach to database is a very bad one, since its so easy to save/serialize stuff to the dabase when you need in a sync fashion.
Multi threading in TFS is a joke, everything is done by dispatcher(world simulation) and asio thread. Cipengine uses raw files for character(bad choice) but at least they cache the players so loading them is not that expensive. TFS could be greatly improved if there was something like a query manager that just answered TFS with the data it need in async fashion.
The fact that Cipengine invested way more engineering into this because they were a professional company with many players online in a single monolithic server + shit hardware(way worst than we have today) so they had to make it work performance wise.
Though it's true that it's still very far from the real thing.
Not really. Its just no one invested in having a consistent action system for creatures(specially player actions) and rpg features.
Its just a ugly mimic of Tibia without the care of being an actual game, which OT players almost never bother to pay attention to the flaws.
But neither should be the limit of cip scripting, since it was limited to what they actually needed. It wasn't indended for anyone to customize what they like. Annihilator script unsafe? It's actually hard to break anything even with a faulty script, server checks the correctness of everything on start, while one defective lua script can cause unexpected crashes and you may have a hard time trying to determine the cause.
Should you have the sources, it would be easy to add new functions to cip syntax. Which is the crucial advantage tfs has, that you have full access to its sources. Unlike in cip engine which is also the reason I wouldn't recommend using it as an ot (unless you really know what you're doing). In other case this discusion would be pointless, cause cip server even being a relic still outmatches modern ots in general performance and reliability.
Try to imagine implementing current RL Tibia with such scripting.
Like i said, as a domain specific language made for the condition -> action design, its simple and elegant. Try to make anything more complex than that and it will be ugly.
In order to be more productive, a full-fledged scripting system with a language like Lua where you can develop new systems/features is better and game changing. This is where the cipengine really sucks, customization.
The good things i think are worth to learn from cipsoft engine are:
Game loop which simplies a lot of things and add consistence to the world/game simulation
Rpg features(player actions, A.I, monsters gaining skills, monsters being in defense mode while walking, saving the map in the server save, etc)
Database Manager(async layer with the database for the game server, no sql)
simple condition -> action design
Item id instead of server id(fuck items.otb)
disguise items
npc dialogs system(condition -> action design)
randomization in few places which add to the idea of throwing dices while playing
more logging of player actions?
There is more, but i don't remember at the momment.