View RSS Feed

Mike's Blog

Excellia - Jagcached File Server Integration

Rate this Entry

While I was working on fixing the last bugs I had in the trading system (which were mostly just things I didn't think about while doing the bigger scaled features), I was thinking of what I wanted to do when it was finished. Which raised the question of "What is something that I really want to have in Excellia, and at the same time is a very comfortable feature for the user?".

The answer was immediately known to me; a file server. A small clarification of what a file server is:
A file server is a server that is dedicated to streaming the cache of the client to the user's computer. It is used in the common MMORPG such as RuneScape because it also allows the user to play without already having downloaded the entire cache.

This file server uses the HTTP and on-demand protocol. If HTTP is for some reason not available, then the JAGGRAB protocol will be used. JAGGRAB is a protocol which was designed by Jagex Ltd.

And I will be honest with you now. So far I've written pretty much everything from scratch. But this file server has not been made by me. The Jagcached file server has been made by Graham Edgecombe, who has open-sourced it for everyone to use. The reason I've not made one myself is simply because this file server is already top of the line. If I find room for improvement, I won't hesitate to make it even more efficient than it already is.

The Jagcached file server can be found here:
https://github.com/apollo-rsps/jagcached

It is a standalone file server but because the on-demand service uses the very same port as the actual game itself, it had to be integrated so it could listen on the same port.

To make a long story short;
When downloading the Excellia client now, there is no need to download the cache along with it. The cache directory will be allocated upon the client's startup (thanks to Ben for providing me with that function - yes, the Excellia cache folder shall most likely be placed next to UnScape's). When loading, it will connect to the web server (the HTTP protocol) to download the highest priority files to make sure the user can play.

When already logged in, the rest of the cache is downloaded in the background, based on priority.

Hope you'll like this all.

Thanks for reading.

Comments