2008 Austin GDC Coverage Part 1
Unlocking Flash to Build the Next Great MMORafhael Cedano (Multiverse), Ben Garney (Pushbutton Labs)Habbo Hotel, Webkinz, and Club Penguin are excellent proofs of concept. Benefits of Flash – 98% penetration. Everyone has it, and they keep it up to date. ActionScript 3 is awesome. It has first-class XML support. Java-esque classes and interfaces. The runtime is very good. It has a JIT on x86 and PPC, and the garbage collector is very good. FlexBuilder is a good Eclipse-based IDE with debugger, profiler, intellisense, and wizards. The Sprite-based object model for Flash was cleaned up for Flash 9, and it makes a lot more sense than it used to. It also has a good rasterizer. It even supports 3D as a software rasterized (not hardware accelerated) system. The Flex UI is functional and looks good. It's skinnable via CSS, so it's easy to split up between designers and programmers. Networking. Flash 9 supports limited TCP (security restrictions). Flash 10 has some UDP protocols. Protocols include raw TCP, XMLSocket, and AMF. Middleware – ElectroTank, BlazeDS, and Multiverse all support Flash. Security. Flash isn't super hardened. All normal client-side security concerns apply. There will be theft, and there's not much you can do about it technically. Flash has good support for streaming. Just about everything can be streamed. Graphics/animation/movies/audio/UI/code. You'll need a consistent APU and a caching system to make things efficient. Game objects also need to be able to deal with absent content. Large worlds in MMO's are difficult. Room-based worlds are simple. Large worlds require stronger object state management. Objects, not just avatars, can appear at any time. Most worlds deal with a perception-radius system, so your client encounters things as they get near him. Coordinate spaces between points. Large worlds may need coordinate localization to deal with loss of precision when converting from from server-based coordinates to screen-based coordinates on the client. Content creation – be flexible. You can write loaders for a variety of formats. It's easy to create content in Flash 9, package the content into a SWF and then stream into a game. How do you handle animations on the Flash side? Last frame actions – repeats, jump to frame, and notify Flash client code. You need to be able to handle this and be able to override Flash's default frame behavior. Complex Avatars – in 3D, you can share animations but vary geometry. With Swift3D, you can combine sprites. Gameplay logic – MMO's don't require much logic on the client side. Predict a few generic things, like movement or cooldowns. You don't need to do heavy-duty prediction like an FPS. Flash is a solid, proven platform for building MMO's, so go out and make some! Slides are available at http://coderhump.com/austingdc08 Coverage by John Hattan
|
|