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

PyOT2 (private project, open to trade code/release project for contributions 1:1)

Status
Not open for further replies.
First some bad news:
I feel like the quality of the types of applications I've received about this project over PMs and DMs has been so overwhelmingly poor that I've decided to just close my PMs and DMs to not have any more of my time and patience wasted on this kind of stupidity.
As a result all future applications will have to be made over at Github from now on.

Which leads me to some other, more ambivalent news:
Because the applications made for this project has been both few and of disappointingly poor quality (I'm talking people who either can't figure out what print() does, or think they're doing
me a favor just by messaging me and expects to be treated as some kind of a heroic savior figure accordingly, or messages me in multiple paragraphs kinda randomly only not to respond back, etc) combined with the fact that I've completed every difficult task there was now including full speed XTEA and RSA encryption using a C interface, I'm now thinking about changing the project up if not to simply close it as far as open source part goes.
In fact what I was thinking was that I might as well close it (the open source part) at this point, but then I had another idea that I'm willing to make as my last offer before I "go my own ways" so to say.
So if anyone's interested here's the offer: I'm willing to upload enough PyOT2 server code (downgraded, kinda like "demo code") to allow you to at least login into the game for free. No contributions or pledges necessarily, just ask for it really really nicely ;)
RSA and XTEA encryption/decryption will not be included in an open source format, but will likely be shipped as a downgraded performance-wise Linux-only dynamic library that can be imported from within Python. This is required for the login process for client versions > 7.6.
No monsters, no npcs, no map storage, no protocol even.
Just enough primitive network code and binary data to let you login to the game as a static, highly ethereal character. That's it.
If it needs to be said this is still very useful code for learning, testing and experimenting, and for any potential development ideas such as PyOT3 if you're all willing to work together on it.
You can also very easily use this primitive codebase to make a cam player for example.

Anyway, that's all I had to say. Lets see what's on my mind tomorrow and so on. Cheers.
 
Last edited:
And also still looking for some positive people to chat and chill with, maybe co-op on some silly OT project for fun, play some free Linux-compatible games (I have steam), or just chat.

I and a few others run a Discord channel focused on programming, Tibia, and other games if you're still looking for people to chat/play with.
It's got a lot of like-minded developers and gamers in it, it's invite only to keep the assholes and spambots out.
PM me for an invite.
 
Autowalking/map clicking between large distances such as from POH to Dwarven Bridge or Carlin to Ab as it turns out only takes fractions of a second (about 0.1-0.2 seconds) currently without any teleportation involved and seemingly only uses 3% of the CPU
Just like you said - I'd be skeptical. Not that you actually achieved that, I believe you did and congrats for that. I'm skeptical that TFS can't do that - I think it can. It doesn't take a long time even with latency over network (I assume you were testing locally, so that does yield some results not typically seen when playing servers).

Because the applications to this project has been both few and of disappointingly low quality
In other words basically the same offer what I've made before, except everything downgraded this time
So... since nobody thought your offer was interesting, now you're making it worse and hoping to spur more interest?
I'm not trying to criticize, just understand the dynamics of new projects these days. It's clear that nobody is really publishing anything valuable and whoever has someone valuable (like what seems to be here), keeps it to themselves. That's really not how open source works. I can see a lot of slowdown in OT even in PRs to TFS - there are many open but none of them merge-worthy.

What I see would be very valuable is documentation on a lot of internals (not even code), especially around OTBM, OTB and client binary formats. That seems to be something you have difficulty with but at this point the best place ot figure that out is researching existing code.

In any case, best of luck and I hope we will see something eventually. What's the point of writing all that if not to have some sort of reward at the end? Are you planning to run a server of your own using that engine?
 
Just like you said - I'd be skeptical. Not that you actually achieved that, I believe you did and congrats for that. I'm skeptical that TFS can't do that - I think it can. It doesn't take a long time even with latency over network (I assume you were testing locally, so that does yield some results not typically seen when playing servers).
Thanks. Feel free to test this out on OTHire (or TFS I suppose?) yourself. All I know is that maxing out a GM's level, speed and draw speed in OTHire does not yield > 10 movements/s when map clicking or otherwise, but several thousands movements/s on PyOT2.
Would be interested in hearing from you just how much or little it might take to accomplish the same thing on OTHire if you're willing to test this out.
I'm under the impression that it would take quite a bit more, but I'm always open to being wrong if you're willing to demonstrate.
Either way I was making a broader point that you may have missed which char movement speed was just a random but convenient visual example of, that lighter and experimental servers can have their own advantages compared to heavier and more mature ones in some instances.

So... since nobody thought your offer was interesting, now you're making it worse and hoping to spur more interest?
I'm not trying to criticize, just understand the dynamics of new projects these days.
Strange way to ask a question not intended to be taken as criticism first of all. But I accept it.

The new offer is actually that I'll add more for less, that is I'm willing to throw in a free initial commit, which I have not at all offered in the past, in exchange for nothing more than people asking me nicely for it. If you're not interested, then just don't ask ¯\_(ツ)_/¯.
Doesn't have to be any more complicated than that.
On the flipside the code will be even more downgraded than I was going to offer before because:
1. I'm willing to make the initial basic commit for absolutely nothing this time, the only cost is downgrades (you get what you pay for, for example if you run TFS and do something unexpected your server will crash and will have to spend hours to days of your time debugging it with gdb, such is life) and
2. I'm tired of people disappointing me, and the more people disappoint me the less I'm naturally willing to give.
Not to mention people seem to have no clue what quality means in terms of things like coding standards, open design, code readability, simplicity, optimizations and so on, so why not downgrade it?

It's clear that nobody is really publishing anything valuable and whoever has someone valuable (like what seems to be here), keeps it to themselves. That's really not how open source works. I can see a lot of slowdown in OT even in PRs to TFS - there are many open but none of them merge-worthy.
We creative guys have to make a living somehow you know ¯\_(ツ)_/¯

What I see would be very valuable is documentation on a lot of internals (not even code), especially around OTBM, OTB and client binary formats. That seems to be something you have difficulty with but at this point the best place ot figure that out is researching existing code.
I absolutely agree on this. This was actually my first suggestion and initiative when trying to reform the original PyOT project back before I started this project when my attempt at reforming PyOT did not exactly work out as I had hoped at the time.
And I do not unfortunately enjoy wrapping my mind around other people's code. It's just something I don't really enjoy.
I also kinda wish I didn't have to do everything myself sometimes. But I'll get to it eventually if I have to.

In any case, best of luck and I hope we will see something eventually. What's the point of writing all that if not to have some sort of reward at the end? Are you planning to run a server of your own using that engine?
Thank you, I really do appreciate that and your post too.
Yes, that's the dream, especially if I could make a living off this somehow, but it has also been really rewarding for me personally just to be able to work on this.
Learned a hell of a lot and had a lot of fun too. And at the end of the day isn't that what it's all about? :p
 
Last edited:
Nice work! Even as just a learning project this is meaningful. But I sincerely hope you can bring it further than that.
 
  • Like
Reactions: e.e
It's clear that nobody is really publishing anything valuable and whoever has someone valuable (like what seems to be here), keeps it to themselves. That's really not how open source works. I can see a lot of slowdown in OT even in PRs to TFS - there are many open but none of them merge-worthy.
Me and possible other people gave up on doing prs because its so slow to have something added to tfs + burocratic + there is no will to change critical stuff. I was thinking that i maybe i should do a pr with my npc system which gets ride of xml + has a new topic system but for which reason? it will stay there and will never be merged. Here you can see how this NPC system would work [Research] New ways of bulding Npcs (https://otland.net/threads/research-new-ways-of-bulding-npcs.241046/) I want to know of you or the tfs team would merge it in the project.
 
Last edited:
* Offers weaker performance out of the box compared to traditional engines (but has the potential to pretty much catch up in every way with a little bit of effort).
* High-performance libraries and algorithms developed on my own would not be included for free (except for any donated by volunteers or taken directly from any open source projects).

I feel that this is going to be a huge hindrance to this project.

Admitting that your server will have some hard-to-overcome performance difficulties due to interpreter overhead is one thing, but to then turn around and tell them they need to fork over money in order to overcome these performance difficulties you forced on them, is just hitting the breaks before you've even turned the engine.

With this, people have literally zero reason to pick your project over "competing brands", which are not only truly free (both as in beer and as in freedom), but also high-performant and battle hardened from years of work and community input. And no amount of "The Benefits of Python" marketing spins is going to change that.
 
I do Python on daily basis (not gaming related, but still).
I cannot tell that Python is superior over C++/C# on that matter.

I would like to say that. But I just cannot.
Maybe C# + Python would be a way better than C++ + Lua, but just python... no, unfortunately, no.
 
I do Python on daily basis (not gaming related, but still).
I cannot tell that Python is superior over C++/C# on that matter.

I would like to say that. But I just cannot.
Maybe C# + Python would be a way better than C++ + Lua, but just python... no, unfortunately, no.
my friend made C++ and python work with 7.6 engine along with lua together so integration of multiple languages is definately possible and beneficial.

#edit ( someone should maybe work on external.dll and call it OTPL-OpenTibiaProgrammingLanguage ? )
 
Last edited:
OTPL-OpenTibiaProgrammingLanguage

Probably better to just call it what it is (Python or otherwise). That way people can just google for online resources when they want to learn.
 
Probably better to just call it what it is (Python or otherwise). That way people can just google for online resources when they want to learn.
idk the biggest issue i see with the engine is that if you want to change major things you need to compile. once we get out of compiling and have everything notepadeable thats when we hit top ground. but also there is not enough information available up front about stuff like config.lua options for tfs. many tfs come with config.lua that doenst have half of stuff included in the .lua and it should be
 
Now I'm offering a free/"beginner" package so to speak, an initial commit, with no cost or expectations as long as it's asked for very nicely.
I see. That wasn't clearly explained earlier I believe.

Absolutely. This was actually my first suggestion and initiative when trying to reform the original PyOT project back before I started this project when my attempt at reforming PyOT did not exactly work out as I had hoped at the time.
There's an effort to create documentation for newcomers, who might otherwise be very skilled contributors (or users) but don't have any knowledge about OT so far. It aims to present a single way of doing something (as opposed to every possible way - we know there are typically many) in OT. It's just a stub but it's up here and I'm looking for contributors: Introduction - OTS Guide (https://docs.otland.net/ots-guide/).

Me and possible other people gave up on doing prs because its so slow to have something added to tfs + burocratic + there is no will to change critical stuff.
That is a valid concern and you are right that there's sometimes pushback on changing critical stuff. That's because every time we make a breaking change (non backwards compatible), we are making it more and more difficult for people to piece it together. Remember that most people (new or old) really learn from examples, that means downloading pre-made script without understanding them and learning from them (hopefully - not everybody learns). That means that the hated "download & run" is really the main way for people to learn. It gets more hate than it deserves, it's how most of us learned. The benefits for any change must outweigh the costs and changing something to simply make it "different" is unlikely to get merged now.

I was thinking that i maybe i should do a pr with my npc system which gets ride of xml + has a new topic system but for which reason? it will stay there and will never be merged.
That's one example of background incompatible change. It's not impossible to get it merge but it has to be done in the right way, which means you must understand what would be expected from such contribution and the bar is higher than for non-breaking changes. Most people are too lazy to make the contribution high quality enough to get merged, which is a shame. But there's nobody here with time to fix all those half-done PR's.

I want to know of you or the tfs team would merge it in the project.
Here's how it COULD get merged (not saying it's the only way and not saying that the below guarantees merging).
  • First, you must argue that NPCs in Lua are better than in XML.
  • Secondly, this change cannot happen before TFS 1.3. More likely 1.4 or 2.0, whatever comes next.
  • Third, a migration script would help a lot (like a Python script that parses the XML files for NPC and output whatever you design in Lua). That's to let people easily upgrade to that future version of TFS.
  • Finally, full documentation on how the new Lua framework works is needed. Nobody will use it without having some sort of documentation.
So the question is, would your PR now pass these tests?

once we get out of compiling and have everything notepadeable thats when we hit top ground
That would be indeed great but the question is always: how much should be customizable? You can't have everything configurable with Lua/XML because then the whole game would be in Lua. Developers make choices and while letting users customize more is always a good thing, making a lot of useless options that nobody uses takes a lot of time for no benefit.

there is not enough information available up front about stuff like config.lua options for tfs.
That is true and that's why we have initiatives like Introduction - OTS Guide (https://docs.otland.net/ots-guide/). Anybody can contribute, you just need to PM me.
 
  • Like
Reactions: e.e
That would be indeed great but the question is always: how much should be customizable? You can't have everything configurable with Lua/XML because then the whole game would be in Lua. Developers make choices and while letting users customize more is always a good thing, making a lot of useless options that nobody uses takes a lot of time for no benefit.


That is true and that's why we have initiatives like Introduction - OTS Guide (https://docs.otland.net/ots-guide/). Anybody can contribute, you just need to PM me.
first . that link should be shown somewhere on otland maybe library or something that relates to tfs or wikia page like other game engines used i learned a lot from wikia of gothic 2 multiplayer when it had its times on based on raknet and squirrel++ (was nice programming language similar to lua my first use of "case" :) ( wikia could hold scripts and also comments whether it works on certain distros in particular because we can do so much together and there is ton released.)

how much should be customizable?
well monster behaviour is one.
how pvp damage is handled in all forms
all types of exhausts separated from each other via config.lua like it is with exAction etc.
walking in general diagonal or dashing.
doors?
all of network communication to be able to be customized or changed.

#offtopic sorry sir?
tfs with OTC could make a powerfull tool for development it is a shame that nobody integrated OTC to work with data folder for mapping scripting and in general running server via offline DB for testing without need of mysql?( mapping and being able to directly move onto files via the map editor to jump or even create new .lua file) saving enormous time not for 1 person but globally for all of developers out here.
 
I do Python on daily basis (not gaming related, but still).
I cannot tell that Python is superior over C++/C# on that matter.

I would like to say that. But I just cannot.
Maybe C# + Python would be a way better than C++ + Lua, but just python... no, unfortunately, no.
It's not a matter of superiority but of use-case. To keep it simple: if you're looking to host a single huge real map v11 server with as much already builtin functionality as possible and hundreds of players logged in at the same time, PyOT2 is probably not going to be for you unless you're willing to put in the work yourself.
PyOT2 is an experimental project intended for activities such as prototyping, experimenting, learning, extending, creating/hosting completely custom games (including non-Tibia games), and having fun.
This is not a general language discussion thread, so if none of these activities interests you please move along instead of hogging the space.

I see. That wasn't clearly explained earlier I believe.
You're right, I may not have made this particularly clear at the time of quotation.

There's an effort to create documentation for newcomers, who might otherwise be very skilled contributors (or users) but don't have any knowledge about OT so far. It aims to present a single way of doing something (as opposed to every possible way - we know there are typically many) in OT. It's just a stub but it's up here and I'm looking for contributors: Introduction - OTS Guide (https://docs.otland.net/ots-guide/).
Seems like a nice effort. Lua-functions are outside my scope of expertise and interest though, but I'd be interested in participating in a project like this if it's open to taking on a broader scope e.g. documenting things like the file formats we use, the tibia network protocol and how it differs between versions, perhaps some OTClient documentation (abstractions or otherwise), and so on, mainly for the purposes of extending, modifying and potentially improving these systems, and to build simple and fully open-source tools to work with these systems (many tools are either not open-source, are available only for Windows, or contains easily tens of thousands of lines of C, C# or C++ code per tool).
 
Seems like a nice effort. Lua-functions are outside my scope of expertise and interest though, but I'd be interested in participating in a project like this if it's open to taking on a broader scope e.g. documenting things like the file formats we use, the tibia network protocol and how it differs between versions, perhaps some OTClient documentation (abstractions or otherwise), and so on, mainly for the purposes of extending, modifying and potentially improving these systems, and to build simple and fully open-source tools to work with these systems (many tools are either not open-source, are available only for Windows, or contains easily tens of thousands of lines of C, C# or C++ code per tool).
It's open for that as well. You can contribute by submitting PRs to otland/docs (https://github.com/otland/docs) but we can also invite you to the gitbook system that will provide a WYSIWYG interface to editing.
 
Status
Not open for further replies.
Back
Top