25 August 2009

EverQuesting

It has been a busy time for me. For the past few weeks I've been splitting my time at SOE between three different game projects.

Two of them are new projects that I can't talk about yet. I'm very excited about both of them (and think know you will be too!) and look forward to being able to talk more freely about them. One was a temporary post while waiting for the second to ramp up. Now that it has I will be transitioning to it full time.

The third is the project that I've been working on for over four years: EverQuest II. However, with the new project my involvement on EverQuest II is shrinking. My official title has moved away from Technical Director on EverQuest II to being the Technical Director on one of the new projects. Don't worry though: the EverQuest II programming team is in the hands of the very capable Greg "Rothgar" Spence. Plus I fully expect to be available to the EverQuest II team for questions and technical direction for a while to come.

I'm currently finishing up my last task with EverQuest II. This last hurrah is designed to do something very important--increase exposure to EverQuest II. I've been personally involved with nearly every change to EQII's trial program over the past four years, but this is the one I'm the most excited about.

EverQuest II is a very large game. Overwhelming content from the get-go followed by five (Soon™ to be six) expansions have conspired to create a client footprint of about 10GB. Yikes! That takes hours upon hours to download even on pretty fast connections. As my last task, I'm working on reducing the initial download down to about 60MB (which is barely a blip with broadband) and streaming the rest as the client needs it.

A few things make this possible. First, the fetching technology that we're using was first pioneered by the incredible talent on the Free Realms team. This made it much faster for us to get on-demand fetching up and running since they had already done the legwork and experimentation. Second, the fetches are nothing more than HTTP GETs which allows us to distribute all of EverQuest II's 500,000+ individual assets over a very fast CDN. Using a CDN means that we don't have to develop, test, distribute and manage our own file serving solution which obviously would take more time. Third, EverQuest II already has a fairly robust asynchronous resource-loading system that was fairly easy to extend with remote file fetching.

Getting asset fetching in place was really only the beginning of the story. My time since then has been focused on heuristics for prefetching the next assets the client will need and reducing some dependencies on synchronous IO (which would appear to "lock up" the client until the needed assets were fetched). These challenges are far more complicated, but the challenge is welcome!

It's been a great four+ years on EverQuest II, and I look forward to getting people playing after downloading a mere 60MB.

3 comments:

Stropp said...

That's really quite excellent news.

I was quite impressed with the way Free Realms streamed data as needed and was wondering if that was going to make it into any other SOE games. I didn't expect to see it added to established titles.

Anonymous said...

Hey amigo! So glad you're still getting to work on all kinds of crazy cool fun stuff there. I look forward to hearing about the new projects once they're not shrouded in swear-on-your-mother's-grave secrecy any more. :)

Don said...

That's awesome news, I'm impressed!

Hope your new project is just as amazing.