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

Revamping server (to C# / .Net Core 2.0) and website

VonKrieg

Member
Joined
Dec 31, 2017
Messages
13
Reaction score
7
Greetings.

A friend (MarceloP) and I (both graduated in computer science) decided to come back to the Open Tibia Servers scene.
When we last played Tibia we barely knew lua, hehe.
Nowadays, however, we believe we could rewrite the servers / websites.
And that's exactly what we decided to do :D

We are implementing the game server in C# 7.2 .Net Core 2.0. I shouldn't have to say this, but .Net Core can be ran in Linux, Windows and Mac and it's performant enough to run servers.

We are still studying different technologies to implement the website. ASP.NET is currently the strongest candidate.

We are looking for people to help us :D
I'm specifically looking for people that can help me understand some kinks of the C++ codebase (the documentation is kinda weak I'm quite out of the loop).

Discord:
Discord - Free voice and text chat for gamers

Github:
GitHub - CoreOpenTibiaServer/CoreOpenTibiaServer

From times to times we'll create a new post in this thread with status updates :)

Edit:
We have the utmost respect for what you guys (TFS) have accomplished, and we hope to build upon it.
We are not trying to undermine the C++ version nor trying to steal your members / resources (be it time or money).
And we absolutely not saying you guys should stop the development of the C++ version and use C# instead. That would be insane. I'm sure every 4 weeks a new technology is released and someone says we should use it instead. Sadly, its impossible to change to entire codebase to use a new shiny technology.
What we are saying is that we are creating a new implementation in a language that could make the overall development process less painful and more inclusive.

Edit -- Status Updtes:
Revamping server (to C# / .Net Core 2.0) and website
 
Last edited:
Why did you decide to port a server distro to C# / .NET Core 2.0?

I think your efforts would be much more valuable if you could help contribute to the official TFS repo. Check out the pull requests, check out the issues, submit pull requests. Its a nice way to get to know the codebase as well, and anything you do there will definitely benefit the community. (And even OTX down the line, as they are based on TFS).

Creating another server ditrobution, if you ever succeed, will only fragment our community. Which doesn't really help us much.
 
Hello Znote.

We have pondered about the pros and cons about switching to .Net Core 2.0 and decided that it would benefit the community and the project as a whole.

Cons:
Pros:
  • But it would (could) make the code easier to read, reason about and maintain.
  • It's far easier to write unit tests for languages like C# and Java than it's to C++.
  • It's also easier (and faster) to debug C# code.
  • Switching to a easier language could also attract more contributors.
  • It's (arguably) far more pleasant to work with C#. From compile times far smaller, simpler semantics, simpler project structures and great tooling support (Visual Studio is a best), I can see hobbyist (like myself and my friend) spending far more time coding in C# than in C++.
  • Having a official repository of libraries (NuGet) and a massive framework we can easily and elegantly solve many issues. From xml, json and csv parsing to database managing.
I really dislike the possibility of spiting the community.
But... I really feel like C# (or even Java... or any other simpler language) could attract far more people to the community.
Let's give it a shot :)
 
So you won’t even use english? How can this „atrract” more people? (Reply based on repo)
Isn’t c# only compatible with windows? People use linux to host servers (every serious server is hosted on linux). Whats the purpose of this (not yet created server), only for local use?
 
I think that making a port of a server is just a waste of time.

Don't take me wrong, I'm not saying you waste your time but as a community I think that this time could be much better invested in other areas (updated/polished mapeditor and client to start with)
 
I think windows its better for Otserver , but its more expensive.
 
For educational purposes it's cool because it's useful that we would not have a forgottenserver!
 
So you won’t even use english? How can this „atrract” more people? (Reply based on repo)
Isn’t c# only compatible with windows? People use linux to host servers (every serious server is hosted on linux). Whats the purpose of this (not yet created server), only for local use?

We will use english.
My friend hastly created the repository and didn't bother to write a decent README.
If you check the branchs, you'll see that the actual code and comments are in english.

About being Windows only:
You didn't even bother to click the "but Microsoft and the .Net community went to great lengths to make sure it would be." so here's the short version:
Even older .Net Framework ran on linux (Mono and Xamarin).
But I'm proposing we use .Net Core 2.0. It's a implementation of the .Net standard targeted @ servers (running on Linux, Mac or Windows).
That's the whole point of the .Net Core project.

I think that making a port of a server is just a waste of time.

Don't take me wrong, I'm not saying you waste your time but as a community I think that this time could be much better invested in other areas (updated/polished mapeditor and client to start with)

To be honest, I think it kinda is a waste of my time (as I'm programming for free). But I think I'll have a good time and possibly create something really cool, so no problemo.
About the community: I think it's an investment.
It will take some time to get things going, but after the port is done, it's gonna be be far easier to maintain.
Again: C# is a far easier language AND with greater tooling.
Btw, I edited the original post to address some of your concerns.
 
Last edited:
So you won’t even use english? How can this „atrract” more people? (Reply based on repo)
Isn’t c# only compatible with windows? People use linux to host servers (every serious server is hosted on linux). Whats the purpose of this (not yet created server), only for local use?

Sorry about that, I totally agree that English should be our way to manage and communicate, my bad for writing such small and bad README. Fixed.
And no, if it was only for local usage, we certainly wouldn't be showing our project here or even asking for help. We just started the project, but that's how it works, you kind start coding it and start looking for people that are willing to help you, or even be part of it. We're also willing to read other peoples' opinions, since anything can and will be helpful for us.
Please, also read my last reply.

I think that making a port of a server is just a waste of time.
Don't take me wrong, I'm not saying you waste your time but as a community I think that this time could be much better invested in other areas (updated/polished mapeditor and client to start with)

I don't think so. From my point of view, everyone helps if they can, as they can. For instance, I can't help with C++ neither with Geisor, so I agree with us trying to do something new and that have pros that outweigh cons. We'll still use PHP, but with some frameworks that are more secure and can be easily maintained. Same idea for the server; as VonKrieg said, using C# is safer and easier. We're here to try out something new, which we believe will be better for the community. The ones from the community that feel like doing so with us, we'll be very welcome.

I think windows its better for Otserver , but its more expensive.
In fact, like VonKrieg pointed, C# can be used to generate .Net Core 2.0 code, which runs in any platform. So anyone will be very welcome to deploy it to their favorite SO and with their preferred configs/modifications. Same for Symfony and PHP, no problems on using them on Linux or Windows. Simplicity and portability are key features of what we're proposing.
 
PyOt proposed the exact same thing, except with Python, which has an even better learning curve, readability and expressiveness as C#, plus could add Django or another Python based web framework to make literally everything usePython.
However, it has apparently been abandoned (GitHub - VAPus/PyOT 10 months since initial commit for a total of 5 commits).

Another developer tried making it in Java, but it has been abandoned and the author claim it is useful because, and I quote, "showcases several interesting technologies including aspect oriented programming using AspectJ, asynchronous networking using Apache MINA, and the Maven build system". I can't see why someone would convert to Java with the argument of simplicity, and then incorporate multiple other technologies into the whole mixture of code. Website for anyone interested: jOTServer - Java implementation of an OpenTibia server

Some other people state they have some features working in one language or another of their preference, but no fully functional server. An interesting thread to read is this one: OTServ in other programming languages.

I don't believe any of the arguments stated justify this kind of project, and it's a vain effort. Anyone is, of course, free to try and see if they can reach success.
However pessimistic this may sound though, I hope that no project of this kind succeeds - nothing personal or towards this specific project.

What I could see happening, though, is a change of the whole web server stuff. It leaves most people out - even more than the actual server. The server has the advantage of using Lua for a lot of content development, which is very inclusive. Website stuff is usually very convoluted, using multiple technologies that aren't friendly towards beginners and sometimes not even complete/stable. Who wants to learn 5+ technologies and how they interact (aka the web development stack) just to be able to make an account maker? Or learn whatever archaic language the current most known free account creation websites were developed in just to add a new vocation, for example? I certainly wouldn't.

I personally have been using MyAAC (MyAAC Official Website – Official site of the MyAAC. The best AAC in the world!), it's very good and the developer is a brilliant, very nice guy that helps me out whenever I have some questions. I do have my own criticisms about the global view of the work though, and I did have a short conversation with him about it once.

On the topic of alternative web servers, this guy has some interesting stuff going on: Castro AAC
The idea is to use Lua only to work with the systems and whatnot. This would move the current web meta towards a more inclusive enviroment since most people can do a bit of Lua.
 
PyOt proposed the exact same thing, except with Python, which has an even better learning curve, readability and expressiveness as C#, plus could add Django or another Python based web framework to make literally everything usePython.
However, it has apparently been abandoned (GitHub - VAPus/PyOT 10 months since initial commit for a total of 5 commits).

Even though Python does have a better learning curve than C#, I believe that designing and maintaining large project in a dynamic language is harder.
I also don't think Python is performant enough to run the main game loop.

Another developer tried making it in Java, but it has been abandoned and the author claim it is useful because, and I quote, "showcases several interesting technologies including aspect oriented programming using AspectJ, asynchronous networking using Apache MINA, and the Maven build system". I can't see why someone would convert to Java with the argument of simplicity, and then incorporate multiple other technologies into the whole mixture of code. Website for anyone interested: jOTServer - Java implementation of an OpenTibia server

Even though I agree with Java, as a language choice, I disagree with his approach.
From an outside perspective, I think using such frameworks bloats and complicates the project.

I don't believe any of the arguments stated justify this kind of project, and it's a vain effort. Anyone is, of course, free to try and see if they can reach success.
However pessimistic this may sound though, I hope that no project of this kind succeeds - nothing personal or towards this specific project.

I respect your opinion, even tho I disagree with it. In my opinion, stepping away from C++'s overwhelming complexity is reason enough.
And as I said in another post, it's going to take some time and effort to do this. But, based on the conversations with the people that joined our discord, I don't think we are going to "steal programmer-hours" from the FTS project; people that prefer FTS's C++ approach will continue to contribute exclusively to FTS, and that's ok.
I say this because I imagine you hope no project like this succeeds because it could end up diverting resources from FTS to it. Relax, that won't happend.
I'll grab something to eat and expand on this point later; but the TL;DR version is: people that joined us are, mostly (I can't speak for everyone), people that were already unhappy with C++ and not willing to contribute to a C++ project.

What I could see happening, though, is a change of the whole web server stuff. It leaves most people out - even more than the actual server. The server has the advantage of using Lua for a lot of content development, which is very inclusive. Website stuff is usually very convoluted, using multiple technologies that aren't friendly towards beginners and sometimes not even complete/stable. Who wants to learn 5+ technologies and how they interact (aka the web development stack) just to be able to make an account maker? Or learn whatever archaic language the current most known free account creation websites were developed in just to add a new vocation, for example? I certainly wouldn't.

Agreed.
I think I should say that I, personally, dislike messing with anything website related.
I'll leave MarceloP and the others to decide which technologies should be used and justify them.
 
PyOt proposed the exact same thing, except with Python, which has an even better learning curve, readability and expressiveness as C#, plus could add Django or another Python based web framework to make literally everything usePython.
However, it has apparently been abandoned (GitHub - VAPus/PyOT 10 months since initial commit for a total of 5 commits).

Another developer tried making it in Java, but it has been abandoned and the author claim it is useful because, and I quote, "showcases several interesting technologies including aspect oriented programming using AspectJ, asynchronous networking using Apache MINA, and the Maven build system". I can't see why someone would convert to Java with the argument of simplicity, and then incorporate multiple other technologies into the whole mixture of code. Website for anyone interested: jOTServer - Java implementation of an OpenTibia server

Some other people state they have some features working in one language or another of their preference, but no fully functional server.
That's really bad =(

However pessimistic this may sound though, I hope that no project of this kind succeeds - nothing personal or towards this specific project.
On the opposite perspective, I do think that was bad that other projects failed. Since, from my perspective, someone created the idea of the TFS and using C++, with the same "whoa" a great technology and a group that is willing to help me. So, for that matter, don't take it personal, but I do believe that this sentence really shows why TFS or even any new idea on Tibia community hasn't had enough chance to grow as it could, and most people has simply abandoned going toward "the new".

Many people here are trying to discourage, instead of showing their support, even though they may not help with the project. I'll comment more about this bellow.

An interesting thread to read is this one: OTServ in other programming languages.
That's really interesting! I liked it. Conversations like that one are really good for the community to discuss and think about changes and new ideas. We're pass that, but I think this example counter-points what you just said (and I quoted) above.

I don't believe any of the arguments stated justify this kind of project, and it's a vain effort. Anyone is, of course, free to try and see if they can reach success.
Thanks, that's what we'll do. In fact, we don't need to justify why we want this project and, even so, we kind of did it. We're actually expecting you guys to tell us points that would change our minds about the technology, or even about decisions on the Project (not that we shouldn't try, or that we should make this a discussion about this being any kind of vain try).

What I could see happening, though, is a change of the whole web server stuff. It leaves most people out - even more than the actual server. The server has the advantage of using Lua for a lot of content development, which is very inclusive. Website stuff is usually very convoluted, using multiple technologies that aren't friendly towards beginners and sometimes not even complete/stable. Who wants to learn 5+ technologies and how they interact (aka the web development stack) just to be able to make an account maker? Or learn whatever archaic language the current most known free account creation websites were developed in just to add a new vocation, for example? I certainly wouldn't.
The idea is to use Lua only to work with the systems and whatnot. This would move the current web meta towards a more inclusive enviroment since most people can do a bit of Lua.
We're not abandoning Lua at all. We're getting out of C++. Lua stays and we'll certainly use it. About the website, we're still discussing it, but the Idea already changed to something even better, that we hope to bring you guys soon. The main idea is to bring the code to the community, as you pointed about Lua. That was probably the same intention of both ideas you mentioned before, Python and Java. In fact, we could name uncountable projects that got way better support and space only for being programmed on a simpler and easier language, having compatible qualities and efficiency. Therefore, we're definitely thinking in all of that, and taking that all in account.

I personally have been using MyAAC (MyAAC Official Website – Official site of the MyAAC. The best AAC in the world!), it's very good and the developer is a brilliant, very nice guy that helps me out whenever I have some questions. I do have my own criticisms about the global view of the work though, and I did have a short conversation with him about it once.
On the topic of alternative web servers, this guy has some interesting stuff going on: Castro AAC
We intent to be completely open with our ideas, development and communication. As you saw, we setup a discord and are completely open to talk about everything and develop this together with anyone that is willing to help us. We'd love to have feedbacks about our work and talks about that. But we do expect, at least, positive/constructive criticism.
 
Last edited:
The idea is great, specially for learning. But I don't see any advantages of using C#. Only windows hosting servers, lower compatibility, lower efficiency.
 
The idea is great, specially for learning. But I don't see any advantages of using C#. Only windows hosting servers, lower compatibility, lower efficiency.
I should say that your idea about c# and .net tecnology is outdated. Since the first release of.net core, it is compatible with Linux, Mac and Windows. Also, if we compare .net core performance againt the old .net framework, the newest .net core is surely better and faster as any top tecnology, like the good C++ if you know how to develop and use correctly its features.

If you are a developer, you surely know the stackoverflow website - also if you don't know, you are not a develper. Have you noticed any connection loading problem on that? Performance issues? StackOverflow was developed on a older version of C# (2 if im not wrong, nowdays C# it is on his 7º release!). The main problem on development world ir not language, but how it is developed.

The idea is surely great and, as any new programing language to be adopted as a new ot tibia server, it helps the comunity and bring on new peoble interested to help and learn. It also give us new options to use and adopt when we create our own tibia servers. And not, it is not any kiddy fight to deicide what programming language is better and what should be the correct one, it is a options gama that the server owner should be choose what it wants to, because any of these has positive and negative points.

I like more that any other language the c# syntax and I hope the idea be more than a scratch, but a new implementation of Tibia servers - all the community and players deservers it.
 
Hello people :)

Came here to post a "status update".
I will refer to people by their Discord nicknames, since I don't have a Discord-to-OTLand-nickname-map.

I wrote some code to parse the OTB format and am currently implementing the world loading.
Muniz implemented the server's encryption (RSA and XTEA) routines, using C# unsafe code. We can do some basic communication with the OTClient, like authentication and getting the character's list.
RodallDemoJuhziz is refactoring Muniz code to avoid unsafe code.
TheRatazana is implementing the item loading.
StriterAlfa helped us set configure the EntityFramework (used to handle database management).

Oh, RodallDemoJuhziz and Muniz are also working on the .lua interpretation functionality.

We have also implemented a few "somewhat independent" parts of the server logic, like the A* algorithm for path finding.
They are not fully implemented, since often they rely, at least a little, on some other module. The actual path finding, for instance, also requires the World (map) to be fully functional (in order to know if a tile is walkable or not).

djarek is helping us understand the C++ codebase.
 
Back
Top