|
|

This is a server I am writing to be faster than any other. Gone are the days of worrying if you can hold 2k players. You may think this is a complicated, multi-threaded design. It uses one for the game and multiple threads for various tasks such as networking, tile discovery, player loading, etc.
I am developing this because I enjoy the challenge and I've taken a break from Java and came back. The time away gave me enough perspective, and [Only registered and activated users can see links. ], it motivated me and made me think that it was possible to do a tile-based system fairly easily and that it was MORE than worthwhile to investigate the system.
How is this better than traditional player updating?
Well, old player updating loops through every player, and then each player loops through the array again. This creates a situation, where if there's 2,000 players online, there will be 4,000,000 operations. That's crazy. This system uses logic and lists to bring you an improvement of something to the tune of 30x when 2,000 players are all walking and 15x when they're all running at the same time. I don't have a formula to calculate the amount of operations, because that's way over my head (I don't do mathematical notation and formula creation thx), but for the math that I can do, that's the percentages I've come up with (to go along-side of my existing data). You can see that data on [Only registered and activated users can see links. ]. The actual results are a lot faster considering the radius I'm using is 16 tiles. Someone in that thread suggested 25 tile radius, which isn't the same as I've seen other servers. Regardless, it can still handle it, especially if you limit how many connections will be accepted per second. The creation of new tile objects is what takes the most time (not nearly as much time as traditional player updating, not even close). Tiles are cached for some amount (using 30 seconds right now) of time once they become inactive to further increase speed benefits.
This project is open-sourced on Github: [Only registered and activated users can see links. ]
I've made other servers/project threads before, but none like this. This is how I think a private server should be designed. No complicated synchronization and it should be easy to understand because that makes writing code for it easier.
I'm not concerned with adoption or anything, since I'm writing it for myself, but if people are actually interested in using it I will try and bring this server to a production state. I mostly just hope that someone might find it an interesting read. I am using the 377 client revision since, logically, that's what we're trying to emulate anyway.

Will be following the progress on this until the end.
Best of luck SF.

Sounds interesting, looking forward to seeing this progress![]()

Good luck friend.![]()


I really really want to see your updating implementation, will definitely be following this!



| « Project Cinnabar - The Pokémon RSPS! | KovaOS - 操作系 - Oldschool Runescape Style Remake - items/bosses/minigames/events/BH » |
| Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |