PlayStation Home: Serial Killer Edition

My Default Playstation Home Avatar
My Default Playstation Home Avatar

PlayStation Home came out not too long ago. Penny Arcade pretty much said what needs to be said about it, but I had to try it myself. Naturally the first thing you do is create your character from a randomized (I hope) default character.

To the left is the default character that I got.

Sony appears to be targeting the coveted 18-25 male Caucasian skinhead/serial killer demographic. I’m kind of surprised that they didn’t filter the default characters to avoid characters that appeared obviously threatening/defective. If this guy showed up at my front door, I’d call the cops.

Naturally, I ended up tweaking him to try and make him freakier, but honestly, what I ended up with was less terrifying. He resembled a creepy real life version of Robbie Rotten.

He stood out nicely compared to all the cookie cutter people on Home, but nobody really cared. In fact, it was hard to communicate with people or interact with the world at all. The loading times were ludicrous. The difference between last gen and this gen is that you can let things load in the background while you stare at the room you’re stuck in. Why would Sony spend millions of dollars and years of time on something like this?

Does anyone else get the feeling that big game projects don’t have fun on their agendas?

Tip: Setting Up Flex Builder The Sane Way

Flex Logo

There is a right and a wrong way to set up Flex Builder. The wrong way is to get the Flex Builder package from the Adobe site. It’s running on a super old version of Eclipse, and it lacks a lot of useful editors and functionality. I have lost many man-hours of productivity to this version of Flex, which is why I am writing this post.

What you want to do is this: Go get the latest, vanilla Java-IDE version of Eclipse. You can do this at the Eclipse downloads page, the package called “Eclipse IDE For Java Developers.” (Not Java SE, unless you want an extra hundred megs of Java tools.)

Now, go to the Adobe Flex download page, and go to download it – but scroll waaay down and get the plug-in instead.

Finally, install Eclipse – then install the plugin. Now you have a fully up to date, ready to go version of Flex, as well as a bunch of nice tools that come with Eclipse for Java. In my experience, this is significantly more reliable and responsive than the all-in-one build from Adobe.

Edit: Don’t forget to do Help -> Search for Flex Builder Updates and Help -> Software Updates… to make sure that you are fully up to date!

Blockland Physics

I spent some of my downtime over the past few months working on client-side brick physics for Blockland. The feature has finally been announced, so I can talk about it. The video shows off most of the features; the main one that isn’t shown is the interaction between players/vehicles and bricks; they will push bricks around but aren’t affected themselves. Watch it in full screen, it’s full 720p HD video.

There were two big problems related to doing physics for Blockland. The first was the scale of the problem – there can be well over 100,000 bricks in a single server, which is beyond the capabilities of most physics SDKs to simulate as discrete objects. I started with PhysX, and moved to Bullet after realizing that the PhysX runtime is 80mb, far more than could be included in the Blockland download (which weighs in at 20 mb). Both of these libraries broke in different ways with large numbers of objects.

At first, I implemented a management system for brick proxies, so that it kept them under the hard limit in the SDK (around 2**16). PhysX accepted this, but Bullet’s broadphase has some stuff that’s O(# objects) or worse, so it fell down. Eventually, I moved everything into the same system used for static world geometry, which was a grid of static meshes. It turns out that Bullet is a bit faster at creating these mesh objects than PhysX was.

The static mesh cache took quite a bit work to get solid. Because the simulation is for aesthetic purposes, it can tolerate a fair amount of “fudge,” which I take full advantage of. Nearly every kind of update is timesliced so that only a little bit is done each tick. This keeps things smooth, even at the cost of the physical state being inconsistent for a tick or two. Most updates are lazy, as well, only done if a dynamically moving brick, player, or vehicle comes into the area.

The other problem is the wide variability of Blockland user’s computers and usage patterns. Not every user has enough CPU to run physics. And every user has the potential to build something that is very resource intensive to simulate. I spent a lot of time implementing a “physics diaper” – logic to detect when physics calculations were taking too much time, and scaling back the simulation until it’s fast again. This takes two forms. First, if physics ticks are too slow, the simulation is decimated – every other brick on the list of moving bricks is converted to a lighter weight parametric simulation that doesn’t consider collisions. If they remain too slow, then eventually the physics simulation is disabled entirely, until the user turns it back on. This can help with very complex builds or very slow computers.

Thanks to good physics middleware (I include both PhysX and Bullet under the “good” category, even though PhysX is a little on the bloated side), I was able to solve a pretty tough problem – simulating motion for hundreds of thousands of bricks on commodity hardware – in short order. And I have to thank my friend Eric for making such an awesome sandbox and letting me play in it. 🙂

Getting Your Photography Published, the Lazy Way

If you are an amateur photographer, you should do what I do: license your Flickr photos under the Creative Commons Attribution license. It is easily done; go to your account settings, under privacy & permissions, and change (under “details for new uploads”) “what license your content will have” to “Attribution Creative Commons.”

Changing this single option will make you immediately get boost in views, and thanks to the wonders of the internet, some of your photos may even end up in print. 🙂

Here are pictures of mine that have been used, that I know of, since I turned on CCA a few years ago:

Spruce Goose Panorama 1 Spruce Goose Panorama 1
Printed in Leonardo Times, Sep 2007 issue.
Printed in Glimpse Magazine, Spring 2008 issue.
Red-Nosed Cymbalist Red-Nosed Cymbalist
Printed in “ROY G. BIV”, via Blurb.
Red Girl & Dead Japs Red Girl & Dead Japs
Used in Schmap for the iPhone.
Go Speed Racer Go! 1 Go Speed Racer Go! 1(featuring James Wiley)
Used in a NowPublic post on the Speed Racer movie.

PushButton Labs Site Goes Live

PushButton LAbs

The PushButton Labs site is live!

PBL is made up of a small group of awesome people – Jeff Tunnell, Rick Overman, Sean Sullivan, Tim Aste, and Adam Larson. Since I left GarageGames earlier this year, I’ve also been helping out. 🙂

What are we all about? I think Jeff puts it best: Make great products with people that we want to work with, and have fun doing it!

More concretely, our first product is OnePress Community, a theme for WordPress. The official PBL site, as well as this blog and the sites for most of my coworkers are all running it. We’ll be announcing more as it gets closer to launch.

You can read posts from other PBL-ers on the site going live at Make It Big In Games, Tim Aste, or Sean Sullivan’s blogs.

Another Flash MMO Talk

Via Ted On Flex, a talk on “Creating an MMO w/ Flex 3 in 59 Min” by Samuel Asher Rivello. This should be of interest for anyone who attended Raphael Cedeno and I’s talk on Unlocking Flash To Build The Next Great MMO. Definitely worth a watch.

Web Service Explosion: Put Out The Fire With FriendFeed

How many web services do you use that have a section for linking into your other web services? I love having my internet presence linked together. But the number of links grows quickly. 10 services means 50 links that you have to maintain.

Most of these integrations are there just to post nice status messages from one place to another or provide a link to a profile. Why not use a central service like FriendFeed to handle the details? The FriendFeed API is almost there. If FriendFeed had better options for the API to push outwards, 90% of that service configuration box could go away.

Austin GDC Talks

Hello world!Server Idle

I gave two talks at Austin GDC last week. The slides for both are available now. Check them out!

  • Robust Efficient Networking How to make great networking for your game. Also interesting for people working with Torque’s networking (as I discuss a very similar architecture). This was a lot of fun to research and give. I had a friend do the art. People seemed to really dig it.
  • Unlocking Flash To Build The Next Great MMO Is it possible to build a great MMO in Flash? Learn about the possibilities and the technical issues involved. I gave this one with Rafhael Cedeno of Multiverse.

As always, feel free to e-mail me with any questions or comments! You can reach me at .


A bunch of great papers related to Larrabee from Siggraph 08. Great perspective on parallel computing in general.

My read is that the GPU guys don’t have a clue. A lot of their talent has moved on. They’re focusing on maximizing flops without realizing that it isn’t always the flops that matter – it’s how you spend them. There’s for sure a market for teraflops of raw power, but LRB’s feature set maps so beautifully to rendering that I think the reduced performance is going to more than make up for it.

The trend in rendering is towards branch-heavy shaders doing random access. GPUs are fast when you’re doing branchless shaders with linear access patterns – but the trend is forcing them into the realm that Intel has been dominating for thirty years.

I guess we’ll see where things are in five years. But you can see which way I want things to go. ;)

%d bloggers like this: