March 2005 Archives

PopCap

|

Recently I visited PopCap games again. It had been a long time since my last visit - perhaps over two years - and boy have things changed.

Before, most games were written in Java, and a deluxe, dpwnloadable version was offered for a price. Now, it seems, all games are developed in Visual C++, and a smaller-featured version is playable online via an ActiveX control in Explorer (I haven't yet tried Firefox). PopCap also released a new developer's framework in February for people enrolled in their developer program (free). Included with the framework are a bunch of working, useful samples. I've already gone through all the samples and I love what I see.

I also decided to play a few games while I was there. I played a few minutes of Bejeweled 2, which is always fun. But Insaniquarium is where it's at. I first saw this game at the Independent Games Festival at the GDC. The premise is kind of strange - manage a fish tank and fight off invading aliens - but it works really well.

I also played Zuma, a really fun puzzle-arcade game that takes a new approach. Instead of falling blocks, there's a long curve of marbles that you have to match. The path of the marbles sometimes does some really funky things, like curving in on itself (see level three) - and this really adds to the gameplay. Give it a try. You might have to install an ActiveX control or some other client, but it's painless and the site explains how to do it.

逆転裁判 - Gyakuten Saiban

|

It was Heather's birthday on Monday. We were looking for a good place to have some dinner, and we found this great Jewish delicatessen - David's Deli - over in Takanawa-Shirogane. The food was really delicious - and cheap! We got a half-plate of olives, and some pita and hummus. Heather got a really delicious falafel. I ordered a kind of bowtie pasta. The taste was really great - my only complaint about that dish is that it was slightly too dry. Overall, though, it was a great place, and we're definitely going again. Here's a good review in English.

On Sunday, Heather was busy playing her Neverwinter Nights campaign online with some friends. I was kind of bored so I went for a bike ride. I ended up riding all the way to Ogikubo, although I had wanted to go further, to Kichijouji. But it was a really pleasant ride. On the way, I found an Iraqi furniture seller (the guy's Iraqi, not the furniture). Really, his pieces were more like art. Most of his stuff was metal and glass. One piece in particular was really beautiful - a dining room table with a glass top, and a kind of simulated metal aquarium underneath. I can't really do it justice in my explanation but I was blown away by it. He has a website; I'll post it if I can find it. I forgot where I put the flier!

The other day, I had a discussion with one of my bosses about new types of games. We started talking about a game for the GBA that is popular in Japan and soon-to-be-released in America. The game is called Gyakuten Saiban (逆転裁判 in Japanese). The translation basically renders something like this in English: "reversal in [legal] trial." That's right - in this game the player plays the role of a lawyer. Your first case is to acquit your best friend of murder. I'm excited to try it - I don't think I've ever tried a courtroom simulation before.

Warren Buffett

|

Well, I started reading that biography of Warren Buffett that Heather checked out of Nakano library. It's really very interesting. It's not only a biography of one of the most storied investors and businesspeople of our time, but it's also a history of Wall Street, and a (simple) explanation of Buffett's sound investment practices. Reading about those practices alone was worth reading the book. It's really changed my attitude about investing; I've become a value investor, through and through. And I'm still only about halfway through the book.

The book also talks at length about Buffett's relationship with Katherine Graham, the head of the Washington Post. Buffett bought a portion of the newspaper, and he heavily influenced Graham's decisions. Heather recently read a biography about Graham that serves as a nice companion to the Buffett volume - just from another perspective. Unfortunately, that volume is in America, rotting away in our storage unit.

Today's my birthday, by the way. I'm 28 today. I should probably start growing up.

Found a great flash game a couple weeks ago - Ball Revamped. You control a ball under the influence of gravity. Don't let it touch the ground, and get it to the gate. It's a great way to waste an hour or so. I got past level 100 - can you?

Worlds and Mandrills

| | Comments (1)

Our newest project at work (I work at a game company, by the way) is the design of a tool to create a world for an MMORPG - that is, a massively multiplayer online roleplaying game. This is a gaming environment in which many people participate at the same time - and by many, I mean several thousand. This requires a huge world, and this world will be the output of that program.

Most of the world is described, first-order, as a heightmap - a two-dimensional array of, essentially, elevation. On top of this, attributes are added, such as terrain type, climate, texture, etc. The problem is, with big world maps (and we're talking five kilometers by five kilometers at a base resolution of one meter per pixel), we're talking about 25,000,000 values just for elevation. On top of that, the resolution and score requirements for the elevation are pretty high, so we'll probably need to use no less than 32-bit floats. 4 bytes per hexel (our term for Height Element) for 25,000,000 hexels equals a 100,000,000 byte footprint for each map. And, there will be several maps for the game - and we've only included elevations!

mandrill_orig.jpg

So, we needed a way to reduce the dataset. One of the most promising methods that we've been looking at is mentioned in a paper by Micheal Garland and Paul S. Heckbert at Carnegie Mellon called Fast Polygonal Approximation of Terrains and Height Fields (PDF). Basically the algorithm works like this. We take the four corners of the heightmap and add them to the mesh. Then, for a specified number of iterations (or, until the maximum error is below a certain threshold), we search the heightmap for the hexel for which the corresponding mesh value (interpolated or not) is the most different - in other words, there error. We add that point, and continue looping. Pretty cool, eh?

Not only is this algorithm useful for the triangulation of a heightfield array, but the authors have applied the method to general textures, such as this one of a mandrill. It's not a photograph - it's a triangularized mesh where a color is specified at each vertex and the color is linearly interpolated across each face based on the face's three vertices. That blew me away.



Mesh triangulation created by the Garland-Heckbert algorithm (no color):

mandril_tri.jpg

Mesh triangulation created by the Garland-Heckbert algorithm (vertices colored and faces Gouraud-shaded):

mandrill_triColor.jpg

The pictured triangulation has only four hundred vertices. Pretty neat, eh?