PBE Video Talks and Austin GDC

Hey there!

We’ve been trying different approaches for the documentation for PushButton Engine. We have reference docs, API docs, and tutorials. There are comments at the class, function, and body levels. There are example applications of varying size and complexity. There’s still a lot more to document, but what is covered seems to be making sense to people.

Lately, I’ve been doing short – 5 or 10 minute – Keynote presentations, recording them, exporting them with the iPod video export option, and putting them up on YouTube. They’re a nice workout for presentation skills; I spend an hour or so building a slide deck, then run through it a few times before recording and uploading. They also seem to be a good way to explain high-level concepts about PBE.

I’ve done them on Resources in PBE, on the PBE profiler, on why components are a smart idea, and how your UI and PBE related. Nearly 500 views across the four of them in the last month, which I think is pretty good for what is dry technical content at best. 😉

Speaking of presentations, I will be talking about Developing in the Cloud at Austin GDC this Friday, 4pm. Talking to game developers, I have noticed there is not a lot of awareness of how cloud computing can help cut budgets, shorten development time, and increase features. We’ve been using cloud resources heavily at PushButton Labs, so the talk will cover the risks, rewards, and tradeoffs related to things like EC2, S3, Google’s services, SVN hosting and so forth in terms of letting you focus on your game. I’ll also talk about how you can directly integrate things like Google Spreadsheet and Analytics directly into your game, and why it is a good idea to do so.

I’ll be at Austin GDC Wed-Fri. If you want to meet up and talk cloud computing, Flash game dev, or PBE, shoot me an e-mail, tweet, or comment and let’s make it happen!

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.
SAMURAI! SAMURAI!
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.

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 .

Graphics Paper Roundup

All of these papers except the Larrabee paper were found on Ke-Sen Huang’s list of recent graphics conference papers. Fantastic site, well worth a browse.

Larrabee: A Many Core Architecture for Visual Computing – Larrabee is huge. If they can deliver, Intel is going to go from laughing stock to dominant force in the GPU industry. In five years, every CPU will have the capability to run Renderman in realtime. GPU manufacturers are running into a wall as they try to implement fast general processing. Intel has the expertise and muscle to pull off a massively parallel general rendering architecture and get it into the marketplace.

dinosaur.png

Lapped Solid Textures – A mechanism for texturing a whole solid object, not just the surface. The best example from their talk is a kiwi – it has skin on the outside and all the right striations and chunks inside. The artist provides a small exemplar 3d texture, and uses the interactive editor to indicate how the object should be textured. The tool does the rest. Very cool, especially when you start thinking about breakable objects. kiwi.png
Shading-Based Surface Editing – The authors present another image based mesh editing technique. In other words, you scribble on the shape in 2d and it affects the geometry of the mesh. This one is based on you sketching shading onto a surface to affect its contour – draw a shadow and you get an appropriate shaped bump. bunny head.png
Interactive Procedural Street Modeling – Latest greatest procedural city tech. The video is a lot of fun, especially with the flythrough at the end. I keep waiting for Introversion to release that game they posted screenshots of with the procedural city.

TeaserFinalV2.png

Improved Seam Carving for Video Retargeting – You remember that cool seam-based image resizing stuff that came around about a year ago? These guys extended it to video, and also revised the decimation metric to give better and more consistent results. video seam.png
CHC++: Coherent Hierarchical Occlusion Culling Revisited – Pretty cool hierarchical occlusion technique. Hardware and the algorithms are finally getting good enough that occlusion queries seem to be a viable technique. I’d love to try this out in Blockland, which would benefit quite a bit from a good occlusion system. oq.png
Statistical Reconstruction and Animation of Specific Speakers’ Gesturing Styles – They build an algorithmic model of Jay Leno’s body language and have the virtual Leno recite the intro crawl from Star Wars. The paper is actually pretty interesting; lots of good observations about body language (from a weird CS algorithm perspective).

vlcsnap-875062.png

Always lots of cool stuff coming out around SIGGRAPH. Graphics technology just keeps getting cooler and cooler. :)

Published (Twice)

Game Programming Gems 7, which has a chapter by me on clipmaps, is out. Very nice!

There’s errata – they forgot the sample app on the CD. You can download the missing app at this URL. Please drop me an e-mail if you run into any problems compiling or have any questions at all – I switched hard drives recently so it might not be the very latest code.

GameDev.Net also is running an article that I and Eric Hartman wrote titled Learning From The 3000 “Classics”: What can MAME teach us about game design?. Pretty cool! So far all the comments have been positive. Cut us down to size and tell us what we did wrong here.

Forest Pack – Finally out the door

Trees With Shadows

It took a few years, but I finally released the fixed function GL forest renderer I was working on for Torque. You can find out all about it at my .plan on GarageGames. Various businessy things got in the way of releasing it (and perhaps a bit of apathy on my own part :) … but it’s nice to have it out! Done with? We’ll see. There’s always a lot of question/answer and trouble-shooting to go with these things.

On a personal level, I like to think this heralds a new chapter of my life, where things Just Get Done a lot more often. We’ll see how that pans out.