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

OpenTibia OTBR Login Server (Golang + gRPC)

skulls

Well-Known Member
Joined
Aug 28, 2010
Messages
42
Reaction score
60
Hello,

We are currently developing a Login Server in golang on top of a gRPC layer.
This is a fully open source project that aims to start bringing some modern technologies to the open tibia universe.

Features
  • gRPC layer using protobuf 3
  • gRPC login possibility
  • Cipclient HTTP login support
  • Dockerized container (6.35Mb)
  • Rate limiter per IP
  • Over 1.1k req/s in HTTP and over 8k req/s in pure gRPC
  • Log integration with request tracing and different logging levels
  • Test coverage
  • Fully customisable via environment variables
  • Github actions integration (linting, tests, build and release)
  • iOS, Windows and Ubuntu build (via automated release)
  • Easy benchmark configuration
1621360957125.png

Benchmark

We've compared the current implementation with other available options, and the results are shown below.
We've got a 1.1k+ request per seconds rate, in the HTTP reversed proxy setup

1621343669824.png

A live benchmark was done using google cloud run and cloud sql was performed, reaching 800+ requests per second (this was run in free tier machines and already include latency). We've also benchmarked the pure gRPC setup that reaches +8k requests/second.

All the benchmarks and other informations can be found in our repository.
Download our latest release

Future Roadmap
  • Auth Token
  • Website login support
  • 2FA
  • Status for OTS List, including spoof option (feat @Night Wolf)
  • Multiple Worlds (allowing you to route your users through multiple servers)

There are no plans initially to make old TCP login (tibia <10.xx).
Our focus is the latest cip clients and otbr (Mehah's) otclient.
We'll be implementing gRPC login in our otclient next month.

We are looking for suggestions, improvements and ideas to future features, so feel free to comment, create issues, PRs or reach out if you feel so.
 
Last edited:

Syntax

Developer
Joined
Oct 10, 2007
Messages
2,888
Reaction score
435
Location
Texas
Very nice, here's a minimal 12.x login server for Node that may be useful as a reference (2FA, error codes, etc) or for benchmarking.
 
OP
OP
S

skulls

Well-Known Member
Joined
Aug 28, 2010
Messages
42
Reaction score
60
Very nice, here's a minimal 12.x login server for Node that may be useful as a reference (2FA, error codes, etc) or for benchmarking.

I was only able to check it out today, quite nice, although a bit slower than the go version, way better than the other ones:
1621642795344.png

And it also scales ok with higher batches:
1621642900683.png
1621643411757.png

However when we scale go version shines a bit:
1621642964103.png
1621643429751.png

I can go even further, but the tests with 100k requests simoutaenously take too much time.
Note, also, that the availability decreases considerably the more we stress.
 
Last edited:
OP
OP
S

skulls

Well-Known Member
Joined
Aug 28, 2010
Messages
42
Reaction score
60
Hold on, running login server on iOS?

sounds expensive.

Otherwise, looks cool.
Good point 😂
In any case the idea is the knowledge sharing and the usage of new stuff. That can be an inspiration to others, so adding macos build is worth it, it's good way of using/playing with github actions. 😉
Thank you!
 
OP
OP
S

skulls

Well-Known Member
Joined
Aug 28, 2010
Messages
42
Reaction score
60
Hold on, running login server on iOS?

sounds expensive.

Otherwise, looks cool.
Lol I just notice now what you meant 😂 I did it wrongly, I meant macOS hehe
Could someone edit it for me please, it seems that I don't have permission to edit anymore.
 

alcapone

Member
Joined
Jan 13, 2021
Messages
76
Reaction score
8
1632115585909.png


I still don't quite understand. I'm using login.php to use this method I need to change something or just configure and run
 
Top