Searches are available and can be ordered in whatever way you like.
Web applications authenticate themselves via AuthSub. Users log in on a Google web page. The browser then redirects back to your site with an authentication token, which can then be used on behalf of that user.
Installed applications use ClientLogin.
Write operations require user authentication. Each partner must register for a different developer key and client id. Every request requires the developer key, client ID, and token.
Ratings and complaints are write-only. Everything else (favorite, playlist, subscription, comments, contacts) are read-write.
URL parameters can control the player itself, specifically autoplay, related videos, looping, etc.
Coverage by John Hattan
Developing Games with Open Source Technologies
All day session sponsored by Sun Microsystems
This is an all-day discussion of various free technologies out there and how they're viable alternatives to commercial products.
Views from the Big Chair û first panel
Daniel James û Three Rings (Puzzle Pirates) û Much of Puzzle Pirates infrastructure has been open-sourced
Jesse Schell û Schell Games û Panda 3D game engine for Disney
Prakash Ramamurthy û Gaia Online û Runs on open source server software
Online products benefit from lack of boxed deployment, and many open-source licenses deal with that kind of distribution. And that makes things a bit easier, as stuff running server-side isn't as rigidly controlled. Lack of knowledge of licenses and the tangle of several conflicting licenses is a problem when using open-source software.
Sun has moved from a custom open-source license to GPL version 2 for their open-source products. GPL can be scary if you don't know the pitfalls.
Oftentimes, getting bugs fixed in open-source software depends on how much money you have, either to give to the community or to hire someone to fix the problems.
One advantage of open-source software is that you can see the code, so if the code is horribly designed, you can see it. The benefits are not only financial, but are also technical.
Successful open-source communities are not democratic. They all have associated communities, but the most successful ones are the ones that have one or two people at the top who maintain the vision of the site. Communities can fracture (example Emacs vs Xemacs) over features and fixes. In the end, one or two people are driving the boat. Yes, it's undemocratic, but it's necessary to keep the product as a coherent whole.
Meet The jMonkey engine
Joshua Slack û lead developer
It's easy to get started, and cameras and such can be set up automatically.
- jMonkey û scenegraph API based (culling, embedded actors, material inheritance, pluggable rendering system) on the ideas of David Eberly (see also NetImmerse, Wild Magic)
- Ready to use shader effects such as bloom, cel shading, and water with reflection/refraction.
- Supports Pbuffers and FBO object for imposters and render-to-texture operations
- Runs full screen, windowed, or embedded in a web page. Different versions don't require a lot of changes.
- API is 100% Java. Implementation uses native bindings to OpenGL and OpenAL for full hardware acceleration.
- Open Source û BSD License
- First development release was in 2003. Current version is 2.0a
- Large, active community
Why use jMonkey?
Sun is switching from Java3D to jMonkey for their own internal VR projects.
- It's Java and is cross-platform. There are lots of open-source libraries to plug into.
- The engine and source are free to use and change for your own purposes.
- It's easy to use and has example code for every engine feature.
- The community is supportive and helpful.
NASA is using it at their robots center in California.
OGRE: An Object Oriented Graphics Rendering Engine
What is Ogre: It's not a complete game engine (no sound, networking, or physics). It's strictly an open-source graphics engine. It provides and easy-to-use high level API. It's written in C++ but has bindings for other languages, and it deploys on Windows, Linux, or MacOS.
It's run by a small team of committed developers and is backed by Torus Knot Software (a consulting company that consults on Ogre-based projects).
It's been used in many commercial projects.
Scene Management û determining what should be drawn and when. The default scene manager uses a bounding volume hierarchy. Octree and terrain scene managers are also provided. You can also create custom scene managers is the default ones won't suit your needs. For most projects, the default ones will work.
Ogre provides its own mesh format, and exporters are available for Blender, 3D Studio and other modelers.
Per-vertex animation is available as well as skeletal animation.
Level-of-detail control is supported.
Scripts control the material objects (like shaders). Fixed function and programmable pipelines are supported
Particle systems are supported and are defined through scripts.
Shadow volumes or shadow maps are supported.
Compositors û used for post-processing effects, and can be chained together.
Ogre is integrated with loads of third-party API's from multiple software companies. Integrates with C#, Java, and Python.
Coming up is a DX10 rendering system, geometry shaders, portal-based scene manager, parallel-split shadow maps, and new script compilers.
Panda3D û Jesse Schell
Panda3d Came out of Walt Disney's virtual reality studio. Originally it was intended to be deployed in Disney's DisneyQuest VR theme park. Built on an architecture similar to SGI's ôperformerö. When Toontown Online came about, they decided they needed something more platform-agnostic.
PANDA = ôPlatform Agnostic Networked Display Architectureö
Toontown online and Pirates of the Caribbean Online is built from Panda3D.
Uses OpenAL, OpenDynamics (open source) or PhysX (not open source). Originally designed to have replacable scripting languages, but Python seems to have taken over.
Late-binding scripting is a cornerstone of the system. Things do not have to be shut down to adjust subsystems.
Panda 3D recently changed ownership, and it's been given to Carnegie Mellon University. The license is being changed from a custom Apple-inspired license to something else that should generate fewer problems with the community. The original aim was to work closer with universities, and since Disney is a content company and not a technology company, they felt they would benefit from having a high quality community (universities) with access to the product. Another side-effect of the university emphasis is that since things work on a semester-level, people need to be able to ramp up on it quickly. You can't spend 2 + months learning an engine for a project that must fit in a 3 + month semester. It is currently used extensively in Carnegie Mellon's ôBuilding Virtual Worldsö class.
Type ôbuilding virtual worldsö in YouTube for numerous examples of virtual worlds written using the system from the class.
Strengths û character animation integration.
Weaknesses û needs better support for networking. Disney has a powerful server architecture for their own MMO's, but they haven't released 'em yet. No strong visibility-culling algorithms yet, mainly because there's no one-size-fits all solution for that kind of thing.
The community for Panda3D is centered at Carnegie Mellon. The project is currently in a bit of upheaval, as one of the main people has left for a commercial project, but they're hoping that things will settle down and the project will eventually be stronger for it.
The Bullet Physics Engine
Erwin Coumans û Simulations lead at Sony's US R&D
Bullet Physics û open source physics engine. Eventually hopes to be a physics standard ala OpenGL or OpenAL. The name is inspired by the classic ôbullet through paperö conundrum that physics engine developers face.
Bullet is a rigid and soft body dynamic engine. It's portable, debuggable, and multi-threaded. It supports PS3, 360, Wii, PC, Mac, and iPhone. It's modular and open-source, and is free for commercial development.
The demos are pretty impressive, showing seamless interaction between rigid and soft bodies.
GTA4 uses some Bullet physics in the game. You probably didn't know that because Bullet doesn't have an advertising clause forcing you to mention that Bullet physics is being used.
Bullet is also used in some movies both ôHancockö and the upcoming movie ôBoltö uses Bullet physics for some realistic effects.
Disney is using ôDinamicsö, which is a Bullet physics plugin for Maya, used in its pre-rendered movies, not games. Disney contributed the plugin back to the community as open source.
Blender also has built-in Bullet support. A recent book called Bounce, Tumble and Splash! uses Bullet in a physics tutorial.
Bullet supports COLLADA physics. For more information, check out www.collada.org
Havok tools can work with Bullet physics, as the Havok physics file format (HVK) can be converted to Collada (DAE) format.
www.producingoss.com has a very good book on open-source development. The book is available free on the site.
The project was originally available on sourceforge, but it eventually moved to googlecode. It's now available on bullet.googlecode.com. Google Code is nice because it can import complete subversion repositories, including history.
Bullet is based on the Zlib license, which is about the most liberal one out there. MIT is also pretty liberal. BSD has an advertising clause which runs afoul of some projects that can't advertise a project's underlying libraries.
GPL was out of the question, because it's incompatible with the major game consoles (PS3, Xbox, Wii). It's also very difficult to change the license after-the-fact if you want to change license terms later.
There's also a Java port of Bullet called JBullet. It's a one-to-one mapping classes of Bullet's C++ classes to Java. Performance is actually fairly good, not on par with the C++ version, but not bad. Unfortunately with the port from C++ they also ported some of the bugs, so it's still very much a work in progress.
In years past, you'd expect to pay at least $200 for a reasonable IDE. Today there are some great tools for free. Netbeans 6, Eclipse 3, IDEA, and Visual Studio.
- Syntax-oriented Editor
- Integrated Compiler
- Integrated Debugger
- Source Code Control Integration
It has support built-in for CVS, SVN, and Mercurial out of the box.
Netbeans can support just about anything as a plugin, and you can build editors for anything.
Eclipse 3 is also open source and written in Java, so it has the same platform support as Netbeans. It's sponsored by IBM and supports Java, PHP, and XML out of the box. Source control systems are supported as plugins. The Subversive plugin for SVN is recommended for Subversion support.
There's a profiler built in, but it's fairly broken.
IDEA from IntelliJ. It's open source, but you must apply to be approved. Java developers like this one quite a lot.
Visual Studio Express. It supports C++, C#, and VB as a .NET tool. Java support (via J#) has been officially dropped. The tool itself isn't open source, but it's free.
XNA Game Studio Express. Also from Microsoft. It's $100 a year for console support, which makes it pretty-much the cheapest console development tool out there.
Filling the Gaps in your toolchain
Emanuel Greisen of Gamalocus Studios
Good tools can get you 90% of the way there, but there's no perfect tool that'll solve all your problems. Open source tools get you access to the source so you can alter tools to better fit your toolchain. Or you can write plugins if your tool supports such a metaphor.
Eclipse plug-ins are written in Java. For the project, they needed a tool to convert a MySQL database to a binary format that could ship with the game. Eclipse plug-ins are pretty easy to write, but you will need to dig through some documentation to get there. Since Eclipse is made of plugins, the process if pretty well-refined and documented.
Blender plug-ins are written in Python. For the project, they needed to assemble, optimize, and export models to jMonkey format. The plug-ins were easy to write, especially regarding visual feedback (easier than the database project).
GIMP plug-ins are also written in Python, as well as other languages (scheme, perl). Unfortunately the Windows version doesn't support Python well at all, so they ended up rewriting their plug-in in C.
Jeff Kesselman û Chief Technical Monkey û Rebel Monkey Inc
What is a game engine?
At minimum, it's a game loop with input handling, drawing functions, and sound functions
To add to that, it can have advanced drawing features like particle systems, image processing, and dynamic shadow casting. It can even encapsulate all game logic, like an isometric engine or script language interpreter.
Slick û Written in Java. BSD License. Based on the LWJGL (lightweight Java game library). This is a basic 2D engine with a game loop, time management, routines for music and sound effects (OGG, MP3, and WAV), and drawing routines to load common image file formats and in common meta-usage (sprite sheets, tiled maps, bitmapped fonts). One good example is the 2D space game ôStrafeFighterö.
PyGame - Written for Python. It's based on SDL and handles the game loop and time management, music and sounds. It loads lots of bitmap formats. Unlike Slick, it also supports vector objects.
AS3GE - Game Engine for Flash CS3. Flash keyframes == 1 game ôscreenö or state. Each keyframe has its own update method. Input is polled globally. Everything else is done via AS3. It will be appearing on Google Code soon. I got the strong impression that this is just a demo that will never pan out as an actual product
Ffilmation û Isometric engine designed for use with Flash CS3. Has advanced lighting and dynamic shadows. Automatic tile warping and animation system with movement and blocking.
HGE û C++ engine and unlike the previous ones is Windows-only. One very cool game done with HGE is ôFreakwaveö.
Torque Game Builder û not free but is very reasonably priced. Available on Windows, Mac, and Linux. Has every feature of the above engines including physics. It also has its own toolchain and scripting language.
What is Project Darkstar? It is a software platform for the server-side that simplifies the development of multiplayer online games. It's written completely in Java and is 100% open source.
It automatically handles communications, thread management, contention management, persistence, and scaling.
Problem 1: Communications. Just setting up a system to handle logins is hard work. Darkstar abstracts away all network programming mechanics. It provides an intuitive API to handle all of the coarse-grained behavior of the communication between client and server. Interfaces on the server side are just response functions and all of the communications are handled for you. The client side is language-agnostic. The Java API has one class and one interface.
Problem 2: Multi-client communications. How do you communicate messages to multiple clients? Project Darkstar provides a mechanism to group clients together to minimize traffic. On server-side, there is a ChannelManager class with methods to add and remove clients to the channel. There's a ChannelListener that processes incoming messages coming into a channel.
Problem 3: Thread Management. How can we efficiently process messages in parallel. Darkstar is a multi-threaded environment under the hood. Tasks appear single-threaded to the developer, as threads happen at a lower level than where you're working.
Problem 4: Data Consistency. When working with multiple threads, contention is a problem. Transactions are required if you need to maintain game state. In Darkstar all state management stuff is transacted. All persistent objects must be marked as managed.
Problem 5: Persistence. When running a large virtual world, you must protect against server classes and other unrecoverable problems. Darkstar's default data store is implemented as a Berkeley DB database.
Problem 6: Scalability. The current industry industry solution is ôzones and shardsö, but Darkstar is trying to work around this. The goal is automatic multi-node scalability and balancing.
There's a good demo (a multiplayer snowman game) available at project-snowman.dev.java.net
Coverage by John Hattan
From Development to Launch: The Keys to Building a Successful Free-to-Play MMO
Min Kim (Director of Game Operations, Nexon America, Inc.)
What Are FTPs?
Min Kim comes from a background well suited to his position. Born in South Korea and moving to the states when he was about 5 years old, when he was older his parents would regularly send him back to South Korea for the summer to live with his relatives. As such, he got to spend time living in both cultures and has been able to apply this unique viewpoint to the Free-to-Play (FTP) MMO experience here in the US, which is just starting to pick up speed, having been a fad in South Korea for many years (and Asia in general).
What makes FTP games so scary to lots of people is the business model: You create a game that players are then allowed access to and are able to playà for free. As in, no money. You then create revenue through ads and/or micro-transactions within the game itself. Obviously you present such an idea to a publisher not familiar with the concept and theyÆll laugh in your face. But Nexon has pioneered the field over in Asia since 1994 and theyÆll show you that itÆs no laughing matter at all, taking in $230M in revenues for 2005. They employ 1,900+ people around the world and run over 15 game services globally. If you havenÆt heard of Nexon, perhaps youÆve heard of the games theyÆve published/created, including MapleStory, KartRider, Mabinogi, and Counter-Strike Online.
While Min posits that the FTP industry will surge over the next 2-3 years in North America, a lot of it will be based off of imported products from the East. As these services grow more accepted with the NA market, developers and VCs will become more attracted to the idea. As with all things, the increasing amount of competition will serve to weed out the low-quality entries and the worthy ones will rise to the top. The biggest barrier Kim sees among the NA market is perceived value: people viewing FTP games as light or of lower production quality than the games theyÆre shelling out hard cash for. It makes sense: a buyer would naturally feel that a game which costs $60 is of a higher quality than a game you can play for free. This, Min argues, is simply not true. DonÆt believe him? Have a good look at Combat Arms.
Key #1: Play the Games
If you want to get into the FTP business, you need to do your research. And donÆt forget that the best part about this research is that itÆs practically free! Immerse yourself in the popular and successful FTP MMOs like Dungeon and Fighter, MapleStory, KartRider, Sudden Attack, Combat Arms, Freestyle Basketball, Mabinogi, Perfect World, Sherwood Dungeons, etc. You might even want to try others that are not so successful and see if you can determine why. DonÆt forget that these games are also meant to be a social experience, so be sure to rope in some friends and co-workers to play them with.
Key #2: Focus on Fun, Not Money and Items
FTP games that are not fun fail even more spectacularly than paid-for games. If someone buys a paid-for game and hates it well, you still make some money. If someone plays a FTP game and hates it, they will leave and never generate a single cent for you (other than maybe a few ad impressions). Obviously this is a very important concept to keep in mind! While you want your game to have items people can buy and trade, donÆt make the mistake of designing your game around them. Your items should always be designed around your game. Items are a way for a player to enhance their gaming experience. If they get no value from the game itself, they will have no reason to buy items to enhance it and continue playing.
Key #3: The ôFreeöway is NOT About Collecting Tolls
DonÆt make the mistake of thinking youÆre creating some kind of shareware. Shareware has its own rules, and none of them apply to FTP. FTP is its own animal and as such, your players should never see a charge window to access any of the main content of the gameplay. This would be akin to telling people in Combat Arms they can enter the game for free, but have to run around defenseless because they first have to buy a gun. Expansions and content updates? Also free. Again, itÆs about social experiences. You donÆt want your players to be separated from their friends because some bought a cool new map they now like to play exclusively and others didnÆt. Finally, donÆt bombard your players to upgrade to any sort of ôPremiumö account. MinÆs slide on this key said it best: ôSpending money should feel positive, but playing free should not feel punitiveö. In bold text, no less.
Key #4: Watch Your Weight
FTP games need to be quickly accessible. A person is thinking ôokay, the game is free û which means I donÆt have to buy it, I donÆt have to get it from a store û itÆs right here in front of me and I want to play it nowö. Then they eagerly click the Play Now button and are dismayed to find they have to download the 500MB client application first. ôWell, screw that, itÆs probably not worth it anyway, being free and allö. Once again, the playerÆs perceived value vs. the value of their time comes into play. DonÆt forget also that the nature of an MMO is to grow. The more successful it becomes, the more clients you get, and the more downloads you have. A smaller client will make a smaller impact on your content delivery scheme. One of NexonÆs ideas is to have a starter client and a full client, one for people just checking out the game and another for players ready to fully immerse themselves in it.
Even if a player downloads your client with no problem, make sure they can actually run it. YouÆre targeted a mass-market with your FTP service so you have to be careful and watch your specs. Make sure you design your game for the common denominator among PCÆs out there today so that low-end machines have a chance of running the game just as much as high-end PCÆs do. Alienating the high-end users is only a small percentage of your total possible user base, and if a game is fun to play, its graphics donÆt matter.
Key #5: Create a Social Experience
Unlike single-player titles, in MMOs almost everyone is another human being. As such, interaction between players it to be both expected and encouraged. Give your players means to invest in the game through building buddy lists or clans, allowing their in-game characters to progress in skills or looks, etc. The more time a player puts into a game the more they will be willing to open up their wallets to further increase the value of their game play. The more money the put into a game, the more theyÆll feel like they need to stick around. But in order to get there, you have to be sure to protect your newborns and challenge your veterans. DonÆt let first-time players get camped or head-shot all the time, and donÆt give well-worn players a chance to be bored with the gameplay and leave.
Key #6: You are creating a SERVICE
FTP MMOs are not products. They are services that you will support for anywhere from 5-7 years or more on successful titles. Because of this they require constant attention and updates. Nexon has whole teams assigned to each service for the duration of that titleÆs lifetime. Make sure your community is interacting and getting value from the game. Run events often so that people have reason to come back and play more, and to make the service itself feel more alive. Your service is always running so be sure to keep an eye on the vitals and be able to handle things like server outages or maintenance.
FTP games may seem like an easy-in to the MMO world and appear to offer great benefits to the developers, but donÆt forget that theyÆre still MMOs. This means a lot of server-side support to keep them up and running. Still, youÆre avoiding many of the obstacles that retail games face, and the zero cost of entry creates an expanded reach for your product. Even if only a small minority pays, youÆre sill reaching 10x the amount of people because those who normally wouldnÆt pay are playing anyways, and theyÆre telling their friends, some of whom will pay. And those that donÆt pay you can also potentially monetize through proper advertising. The viral nature of the game helps with the marketing as well. If you want to hear more about FTP, check out the summary of Sherwood Dungeons, which is an FTP game created and maintained by a game development couple.
Coverage by Drew Sikora
Game UI Development in Flash
Grant Skinner (CEO and Chief Architect, gskinner.com) & Graham Wihlidal (Senior Programmer, BioWare)
Most UI solutions are proprietary tools, developed in-house or as part of a larger engine. There's not a broad adoption of any particular tool. New versions are often complete rewrites, as there's no legacy support. Support is whatever you can make of it. There's difficulty in creating rapid prototypes of products. Import is limited to whatever you can write. Text and fonts and localization are a pain.
Flash solves a lot of these problems. It was designed from day-one for building rich UI's. It has a lot of backwards compatibility. It's easy to outsource, because Flash support is a common skillset.
Flash Lite is also a player. It's the Flash player built for mobile development. It supports emulation and easy device testing for a mobile device on a desktop machine.
The Flash toolset is designer focused and developer friendly. It features wysiwyg art, text, and animation. It integrates seamlessly with Adobe's other design tools, like Illustrator. It's extensible fairly easily (not as easy as Eclipse, but hey), It supports a robust OOP language based on ECMA-262. ActionScript fully groks streaming in assets and communication with external sources.
Flash also supports code in external files, which is important when you need to separate functionality from graphics. Designers can concentrate on the visuals without having to worry about the code.
Drawbacks û Good Flash developers are still rare. FLA files are binary and not-editable, so it's not easy to work it into a development workflow. There is some deviation from player to player, so it's important to check the end-result on various players. There's no existing component framework that's specific to games û the existing component framework is a bit heavy. Game engine integration is not as smooth as it should be.
Workflow overview via ScaleForm
Prior to ScaleForm, Bioware's UI design was heavily bitmap based. Now it's based on Flash using the ScaleForm Flash UI engine.
Conceptually, it's similar to a traditional UI workflow. Authoring in Flash is easy for designers. AS libraries (text files) can be imported without regard to what's in 'em.
Engine import û map the resource name to the handler/tag in an INI file. Them import the SWF into Unreal Engine as an object.
Engine integration is client-centric, host-centric or mixed. You can create a handler for the SWF in UnrealScript/C++. The UI should be event driven without constant polling in the ActionScript. Localization is global by default but can be overridden.
In-game testing û verify the quality of rendering, modality, configuration entry.
Project ôSkinö - gskinner.com & scaleform. A UI toolkit specifically for game UI's. It's going to address some getting-started issues regarding Scaleform, as it'll have a lower point of entry for tool designers.
Adobe OpenScreen Initiative û Adobe program to ôblessö third party players as well as working with alternative player-makers to help 'em with future plans for the player.
Coverage by John Hattan
Hardcore Games for Casual Audiences
Jesse Schell (Carnegie Mellon University)
The seminar opened with Jesse playing the opening stanza of ôWhen The Saints Go Marching Inö on the harmonica.
Hardcore û big, expensive, immersive
Casual û small, colorful
The difference between hardcore and casual is more perceptual than actual.
Game genres, plaformers, shooters, stealth, survivor horror, text adventure, etc. Casual or Hardcore doesn't fit into this list. Any game can be played casually or hardcore, within limits. Some games by nature of complexity fit into the hardcore genre.
Attitude û hardcore players are generally obsessed. They read game magazines and game websites. Casual players play for fun û games are okay. Hardcore players want the game to define their lives. Casual players want games to enhance their lives. Hardcore players think punishment is a challenge. Difficulty itself is a challenge. Casual players think that punishment is. . .punishment. Hardcore players will sculpt their lives to fit your game. Casual players sculpt your game to fit their lives.
In some ways, casual games are more difficult because casual players can more easily discard your game. Hardcore players are more forgiving and will wait for the big payoff with the game. Casual players will not.
Hardcore games fit a much narrower demographic than casual. The typical 15-35 year old male demographic is the key.
Casual players like games. They're just not going to bend over backward for 'em. Kids love games and seniors love games.
Tips for bridging the gap between casual and hardcore players.
Casual players play games to improve their mood, to feel a sense of accomplishment, to connect with friends and family, to escape from responsibilities, to fantisize about wish fulfillment (not killing fantasies but more benign ones), for the novelty of the experience, and to kill time.
- Try to see games from the point of view of different demographics, not just your own.
- What people say they want is not necessarily what they actually want.
ôToo many buttonsö. People who were fans of classic games shy away from newer games because the controller is too elaborate. But it was really about the difficulty of simultaneous ambidextrous manipulation. The controller itself is a metaphor for the games. Nintendo made up the Wiimote for that very reason.
ôThe Elemental Tetradö. Games consist of four main categories: aesthetics, story, technology, and mechanics. It's important not to concentrate on one piece to the detriment of the rest.
Tip#3: break it down. Break your game down to its most basic elements, throw out the stuff that's not fun for casual players, and then fill in the gaps with fun stuff.
Example: The Aladdin flying-carpet game. It was basically a flight simulator. The designers were tempted to keep in flight simulator mechanics, but it was eventually discarded in favor of a much simpler flight mechanic that concentrated more on unexpected and exciting elements.
Casual players don't like dying. In Toontown online, the life-meter was replaced with a laugh meter. Rather than dying, a character just gets sad and mopes around a bit.
Tip#4: Let people play their way. In Bejeweled, women tend to play in ôinfinite modeö in which you play as long as you want and there's no real goal or achievements. ôIt's just like knittingö. Make your game something that they can play their way.
Punishment: Make the hurting stop. Don't punish players. In ôtoontagö, the bounding sphere would grow to equalize the game between bad players and good.
Make things simple. A RTS game for kids had a 30-minute tutorial to get kids started and raise their confidence. Tutorials are a pain because they necessarily happen after everything else is complete, but you must budget for it in the development cycle. The secret for making tutorials is to work with users and clarify your instructions until you can point out the key things that trip people up.
Hardcore players are very critical of your product, and there's often no reward at the end of the development cycle. Casual players are grateful for what you've made.
- See through their eyes
- Use the elemental tetrad
- break it down
- let them play their way
- make the hurting stop
- make awesome tutorials
Coverage by John Hattan
Making a Web-Based MMO in Your Attic with Shockwave
Gene Endrody (Founder, Maid Marian Entertainment)
Is This for Real?
Yes, the title of this talk does sound absurd. You get people all the time on forums (especially here on GDNet) about people wanting to build their own MMOs and most commonly the response is something akin to ôoh yea? You and what army?ö Nevertheless, Gene has indeed succeeded where countless others have failed (no doubt miserably). Sherwood Dungeon is a 3D browser-based fantasy MMO created entirely in Shockwave, with no outside funding. Launched in 2003, it now attracts over a million unique users each month and generates its revenue solely through banner ads.
Inspired by the book Dungeons & Dreamers, which tells the story of Richard Garriot and other solo game developers of the time, Gene started Sherwood Dungeon as a hobby in 2000. He had a vague idea of what he wanted to do with the game and didnÆt really plan anything out, just adding one feature at a time. People who checked out the game recognized that it was just a hobby project, but came back from time to time to see what had been added. The player base grew organically as development continued and Gene added more and more features into the game for people to check out. In 2003 the first guild (Black Death) appeared of its own volition; Gene had not yet implemented any sort of clan or guild functionality in the game yet. Now there are many guilds, clans, and orders in the game, along with various guild sites, fans sites, and tips and tricks sites.
The game itself is a very casual and social environment with classic hack-n-clash player vs. enemy combat against creatures like giant spiders and dragons. Player vs. player combat is allowed as well, but it is not emphasized and player XP does not factor into the battles. There are no classes or level caps, again appealing to the casual nature of the game. Plenty of items and infinitely deep dungeons create the majority of the user experience, as well as six themed islands to explore featuring quests and merchants.
ThatÆs a good question, and Gene went into great detail to answer it. FlashÆs forgotten older bastard step-brother, as Gene likes to call it, has quite the market penetration with 59.2% in mature markets (U.S., Canada, UK, France, Germany and Japan) and 34.2% in emerging markets (China, S. Korea, Russia, Taiwan and India) as of June 2008. This penetration rate is much higher than most other 3D browser technologies such as Unity, although in all fairness Unity is relatively new and wasnÆt an option when Gene began development. He does, however, give props to JavaÆs 3D tech, which he says has gotten much better over the years. Flash, according to Gene, also still doesnÆt do 3D as well as Shockwave does.
Gene went through several slides listing the various qualities of Shockwave 3D and why itÆs such a robust solution for something like a web-based 3D MMO. You could get the majority of the facts off the Shockwave site, but some highlights are:
While Director 11 is now available, Gene continues to develop with version 10, as he does not want to move ahead of his user base, many of whom are casual users who do not upgrade their plug-in software very often, if at all past their initial install.
- Very small file sizes for things like meshes, skinned meshes with bones, textures with embedded alpha and animations thanks to an excellent lossy compression scheme.
- Support for a variety of platforms and graphics technologies including Mac, Windows (Vista/XP) and DirectX7, DirectX9 and OpenGL
- Shader support, which Gene put to good use on item customization (colors)
- Automatic Level of Detail modifier, which is great for performance and easy to use
- There are a lot of undocumented useful features that you can dig up online
The Content Problem
So how does one person make enough content for an MMO, and how do you keep it small enough to run in the browser? These were two main issues that Gene had to solve, because without content there was no reason for people to stick around that long, and if it took too long to download, people wouldnÆt play at all. So he decided to use procedural content, creating objects made up of models that could be re-used in various things. He also used shaders to allow people to customize the colors of their objects. He also used a random seed to create random height maps for his islands, and generated quests, dungeons and items. All this is done client-side and is faster than loading or streaming in content from a server. As a result, the Sherwood Dungeon Shockwave client is a mere 2.7MB of data.
Running completely independent of any major publisher or portal has allowed Gene to retain full IP over his work, but obviously heÆs not making money by doing that and refusing to work for hire or license out. However he doesnÆt need to thanks to banner ads that run at the bottom of the window outside the game frame, from which he gets a 4% click through. Anyone familiar with banner advertisement will realize thatÆs a pretty impressive rate. He supports various ad networks and allows anyone to embed Sherwood with an IFRAME so long as they show the ads as well, though they can also monetize other space on the page if they wish. So very shortly he had hundreds of small game sites hosting Sherwood and effectively creating a viral distribution network.
While the game is free-to-play, as of September 19th Gene introduced the first purchasable item û a pet that the user can own for $5 a year. These pets can be helpers (like a wolf that attacks enemies with the player) or mounts (like the horse that players can ride around). He demoed both in the game and chuckled when he told us that it was an as-yet unannounced featured and he was probably causing quite a stir amongst the players who were now seeing him running/riding about. This is the first small step he and his wife (who handles the business side of things) are making towards micro transactions.
Sherwood Dungeon continues to grow and evolve, and offers quite the perspective on casual MMOs and their creation. People may once have scoffed at the idea of one man making a successful MMO, but apparently Gene never heard them.
Coverage by Drew Sikora
Unlocking Flash to Build the Next Great MMO
Rafhael 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