30 July 2008

Lacy, Gently Wafting Curtains

Oh Em Gee.

If you haven't yet, you MUST check out Dr. Horrible's Sing-Along Blog. Funniest thing I've seen in a long time. As a bonus, you can watch it now for free at Hulu.com. However, if you love it as much as I do, you might possibly want to purchase it from iTunes and benefit Joss Whedon and friends. It's only $4!

In other news, I had a bunch of fun at SOE's Block Party. However, the same day as the Block Party I found out that my awesome friend Patrick "Leurocian" Malott from Mythic was in town for a UO Town Hall, so I headed down there to attend the Town Hall and then brought Patrick up to the Block Party to check out the SOE New Hotness. We had a playable demo of DC Universe Online that people were loving, a new dungeon on display for EverQuest II, other games, a live band, food and more.

Speaking of EverQuest II, Game Update 47 is set to launch tomorrow. With support for (finally!) the Voice Chat system I've been working on for the past few months. Yay!

22 July 2008

Going to AGDC?

I am headed out to Austin in September for the Austin Game Developers' Conference (woohoo!)

Who else is going? Definitely need to see some old friends while I'm out there...

13 July 2008

Interesting Quiz

144

As a 1930s husband, I am
Very Superior

Take the test!



No doubt my wife would (will?) take issue with that score ;)

10 July 2008

Voice Chatting Across Continents

EverQuest II is product that is translated into several different languages and runs in several different regions around the globe. We want our voice chat to be game-wide, so that means making it work in those different regions. (Having a Universal Translator would be nice too, but I think that's a few years away).

Anyways, different languages have different character sets for names and text, so EQII uses a combination of UTF-8 encoding and Unicode to represent all text (names, places, quests, player communication, etc). However, a common signaling protocol used by voice chat applications (including Vivox's that we're using for EQII) is a case-insensitive, ASCII-only protocol known as SIP. This leaves us with a dilemma: how do we represent Unicode player names and channel names in the SIP protocol?

Originally we were going to use Base64 encoding, but this has a variety of problems for our application:
  • It requires case sensitivity, but SIP is case insensitive
  • Encoded text is not human readable
  • It increases the size of the data
In the end, we found and decided to use an interesting encoding scheme called Punycode. Consider the Russian word "свободными". UTF-8 encoding requires 20 bytes. Our encoding must fit within the limit of about 60 characters. Standard URL percent encoding requires 60 characters. Base64 encoding would probably require around 26+ characters. Punycode requires only 13 characters! What's more is that Punycode is human readable for ASCII strings ("Autenil" encoded in Punycode becomes "Autenil-", but "свободными" becomes "90abhqtfebx0i").

I've enjoyed discovering this neat encoding algorithm (and it's been a lifesaver for our Voice Chat implementation). If you need to efficiently represent Unicode in ASCII, Punycode might be the way to go.

01 July 2008

More EQII/nVidia news

If you're still having trouble with EverQuest II and your nVidia 8800, rest assured that we haven't forgotten about you.

In my talking points on the subject in the past, you'll note that we added a feature called "Reuse Vertex Buffers" that seems to alleviate the problem for some folks. However, it doesn't completely fix the issues that EverQuest II (and other games) are having.

We're currently working with nVidia specifically on this problem and are currently testing out some super-top-secret-internal-only-penalty-of-death drivers in our compatibility lab with high hopes. I'll keep you posted when I hear more.