On October 26-28, the Austin Game Conference was held for the third time at the Austin Convention Center. Over 2000 people attended from diverse areas of the game industry. As in the past, the conference featured high-quality presentations from established game developers. The expo was roughly twice the size as last year, which made it just big enough to be interesting, but still small enough that you could actually spend some time talking to people.
GameDev.net is proud to once again be a media sponsor of the AGC this year, and we had several people in attendance to cover the show (as well as man our booth!). What follows is a summary of the sessions that we attended.
The Future of Online Gaming
John Smedley, President, Sony Online Entertainment
Business models
The vision of online gaming is a worldwide, cross platform experience, where you can login and play the game on any platform from anywhere, with friends anywhere else in the world. For example, you
may be playing with people in Japan who are accessing the game from their cellphones - with graphics that are only marginally less good. You may be playing on your PS3, or on your PC, where the
game is being streamed digitally as you play it.
This going to require overcoming some technical challenges:
- Different platforms have very different capabilities (e.g. Xbox 360 vs. a cellphone)
-
- Procedural content is one way to deal with this
- Accept that the games should be different, rather than trying to do a direct port.
- Avoid requiring that gamers buy additional hardware (e.g. console harddrives) to play your game, while taking advantage of optional hardware when it's there.
- You will need to support many kinds of communication between players, especially to allow communication between different platforms.
- Data storage is an issue. Networked storage and streaming data are solutions, especially with broadband.
-
- There is still a sizeable portion of the market that doesn't have broadband, though, so you'll have to address that. It may just mean that those people have to stick with PCs, since they have large storage.
- Depending on the game, platform or other hardware differences may give some gamers unfair advantages.
We'll also need to deal with other players that can negatively affect the online experience, as well as outside forces (e.g. a certain lawyer) that are trying to disrupt the industry.
The common theme regardless of the platform is the persistence of the world, which is why players will want to be able to access the game at home, at work, on the train, etc.
What persistence means in a cross-platform context:
- Character name is very important. Allowing players to choose any name they want is more important than the name being consistent with the setting of the game.
- Overall look and consistent art style across platforms, at least on a basic level.
- Character abilities: level, items, skills, etc.
Challeges from the business side include:
- Subscription gaming is a tough sell on consoles.
- People are still used to playing for free, but...
- Client/server games can be cost prohibitive to run.
One solution is to make the subscription free but charge for periphery services (e.g. digital item sales, such as Station Exchange). Another is to offer a basic subscription for free, but charge for a premium subscription with additional features.
Speaking of digital item sales, some points:
- It's estimated that player to player sales represent a $300-500 million industry
- Need to take strong measures to deter abuse.
- Make it easy to use.
- Huge in Asia right now
Worldwide market
- The market in China for example will be 3 times the US within a few years
- Try to offer play styles that appeal to different cultures - just doing language localization won't be sufficient.
-
- Sony worked with local partners and sent their developers to other countries to get a better feel of how to appeal to these markets.
- Different payment options will need to be supported.
- You'll need to offer local language community teams and customer support.
Mobile Keynote
Jason Ford, General Manager Games and Entertainment, Sprint
Market Demographics
Hardcore gamers are more than twice as likely to buy games than the typical wireless customer. However, far and away, the biggest demographic in mobile games is casual game players. (According to
NPD).
The next biggest group is "Cardcore" players - gamers who play casual games in a hardcore way (e.g. investing thousands of hours in poker games).
The mobile games market is immature compared to the traditional game business. So it's important to exceed customer's expectations so that they'll come back and recommend the games to their friends.
64% of wireless subscribers already play games on other platforms, so there is a good opportunity to attract more of this group to mobile games.
Three of the pillars of game development to focus on to be successful:
Exceed Expectations
The game name and brand set a certain expectation. If the expectation is too high (e.g. overhyped) it'll be impossible to make the gamer happy, no matter how good the game is.
As always, making the game fun is the most important factor. According to NPD, people stop playing games because they lose interest (55%), or have a dim view of the gameplay quality (31%).
Make Every Gamer A Repeat Gamer
It's easier to keep an existing customer than find a new one.
The most important feedback is from customers and potential customers. Too often, decisions are made based on feedback from people who are already drinking the Kool-Aid: people in the office, professional reviewers, and others in the value chain. Try to put yourself in the potential customer's position as well.
Buzz Marketing
Both of the previous pillars will directly contribute to this. The goal should be to make mini-evangelists out of everyone who plays the game. Don't give them a downside to talk about.
21% of customers heard about it from a friend (74% from the carrier, either via ads or the website).
Next-Gen Graphics on Windows Vista Revealed
Chuck Walbourn, Software Design Engineer, WGGT Microsoft Corporation
Windows Vista and DirectX
In Windows Vista, DirectX 9 is used for the UI, which will help ensure that more machines are high-end game ready by default.
The Windows Vista Display Driver Model:
- Provides multi-tasking support for the GPU
-
- Command scheduling
- Virtualized VRAM
- GPU first class citizen of the system
- Moves much of the driver to user mode for better stability, security, and performance, avoiding things like system crashes.
- Will work on Direct3D 9 hardware, but this will require new drivers.
- Removes the need for the "lost device" when switching tasks of video modes
- WDDM distinguishes several new scenarios
-
- S_PRESENT_MODE_CHNAGED
- S_DEVICE_OCCLUDED
- DEVICE_LOST
- DEVICE_HUNG
- DEVICE_REMOVED (PCIE card removed, laptop removed from a docking station, or, more likely, driver updated)
- These cases are really the only ones when you may need to save, exit, and restart.
Direct3D 9.0c will work on Windows Vista:
- WDDM improves stability
- Emulates running on the DirectX 9.0x runtime
- Gets emulated "lost device" behavior
- Resource allocation emulates a fixed VRAM
Direct3D 10: Advancing the Platform
Microsoft has approached the design of DirectX 10 in three steps.
The first step was to address stability, consistency, and small batch performance, and to prune legacy fixed-functionality to streamline the API (they'll provide sample code that wraps this functionality for easy in porting).
Stability is necessary since Vista will be using graphics all the time.
To address consistency, they are reducing the number of optional features, so doing caps queries and developing multiple code paths or building for the lowest common denominator will (mostly) be a thing of the past. The 300-page specification that IHVs will have to adhere to is also much more strictly defined and consistent, and includes things such as near-IEEE floating point compliance and precise FP32 sampling/blending/math conversion rules. This should lead to algorithms producing the same results on different cards.
By removing redundancy and moving state validation to creation time, they addressed some small batch performance issues. New features will help with this as well.
The second step was to evolve the programming model, and the third step was to evolve the architecture and enable new classes of algorithms on the GPU. The rest of the presentation focused on these changes.
Direct3D 10 adds 3 new pipeline stages: input assembler, geometry shader, and stream out. More on these in a moment.
It will also introduce Shader Model 4.0, which provides a common shader model for the vertex, pixel, and geometry shader. It provides:
- Enables performance scaling and tuning, since IHVs can reallocate shader units on the fly to address bottlenecks.
- Full integer/bitwise instruction set
-
- Custom resource decompression schemes
- More robust flow control and logic
- Uses: FFT, Codecs
- More of everything
-
- Interstage registers, samplers, textures
- Unlimited instruction count
- Comparison-Sample instruction
-
- Useful for percentage close shadow filtering
- Load directly from buffer (no filtering)
Direct3D 10 also introduces resource types and "views":
- Create multiple "views" of a base resource for usage at different points in the pipleline. For example, a cube map can also be a render target.
-
- Pipeline output
-
- Render target
- And
- Shader Resource Input
-
- Texture
- And...
- Uses
-
- Render-to-mipslice
- Custom mip-mapping
- Render-to-Vertex-Buffer
-
- "Scatter" operations
-
- Sparse morph targets, etc.
- Use a view every time you bind a resource to the pipe
- Views enable create-time validation for superfast pipeline binding
- Pay for sub-resources only when you need them
It also introduces resource arrays (Texture1D/2D Arrays). These can be dynamically indexable in shaders.
The input assembler supplies types with adjacency information (line/tri strips and lists with adjacency - trifans have been dropped). It also provides PrimitiveID (visible to geometry and pixel shader), InstanceID (visible to vertex shader), and Vertex IDs (visible to vertex shader) which are passed down the pipeline
The geometry shader joins pixel and vertex shaders, and presents some interesting possibilities:
- It takes whole primitives (with adjacency) as input
-
- Material selection/setup to reduce the number of draw calls
- Set up barycentrics to exceed the number of interpolators
- Compute edge lengths
- Compute plane equations
- Compute silhouette edges
- Emits new primitives of a specified output type
-
- Limited geometry amplification/de-amplification: Output 0-1024 vertices per invocation.
- No more 1 vertex in, 1 vertex out
-
- Shadow volumes, fur/fins
- Procedural generation
- Post vertex shader, post-primitive assembly
-
- Vertices can be computed once, shared by multiple primitives
- Can specify up to 8 clipdistances and culldistances per primitive
- Can emit the system-interpreted value RenderTargetArrayIndex for the primitive
-
- Choose a slice for render-to-volume
- Choose a face for render-to-cubemap
- MRT still specified in the pixel shader
- Examples:
-
- Shadow volumes on the GPU
- Render-to-cubemap
Finally, the stream output stage defines how the output of the geometry shader is used:
- Results can be piped for another pass
- Optionally write geometry shader output to one or more buffers
- A new DrawAuto() function is added to draw streamed-out data of variable size without CPU intervention
- Uses:
-
- Intra-frame re-use
-
- Skin/morph once, render many
- Inter-frame re-use
-
- Iterative/procedural
- All GPU particle system
State objects have been introduced to reduce state-change overhead by grouping state in immutable objects that are cacheable in hardware. They are several types of state objects:
- Input layout
- Rasterizer
- DepthStencil
- Blend
- Sampler (no longer bound to a specific texture)
Up to 4096 of each time can exist on the device, allowing you to create as many as you need at initialization, and then set them as needed without paying the typically high cost of state changes.
Constant buffers have been added to minimize the overhead of sending shader constants to the device. They are managed much like vertex or texture data, with efficient updates via lock/discard or Update. They can even be rendered to.
Miscellaneous new features include:
- New formats (for HDR, for example)
- Alpha to Coverage, which is required to work when MSAA is enabled. This can remove the need to sort blended objects in some cases (e.g. those that are using alpha as a mask)
- Additional queries, including better occlusion
- Predicated rendering, which allows you to predicate draws based on the results of asynchronous queries, eliminating the need for CPU involvement. So when doing occlusion queries, you can draw the bounding volume, generate a query, and draw the real geometry predicated on the results of the query. If the query fails, the predicated draw will be skipped.
The Direct3D 10 API itself has been highly streamlined, and represents a completely new version of D3D. Some of the changes it includes:
- It exposes new constant buffers, stage objects, resource views, resource arrays, geometry shader, no fixed function left
- HLSL is the native shader language (the assembly view available for debugging)
- The new DXGI library factors out Windows operations from the basic Direct3D API: Adapter enum, monitor gamma, presentation, swapchain, fullscreen, windows/focus handling, low-level resource management
The Direct3D 10 Effects API has also been updated. The runtime has been completely rewritten for better performance and a smaller footprint. It segregates run-time data from load-time/author-time reflection data. The Direct3D 9 Effects is also being updated to allow the same effect file to work across both versions.
To review, the performance improvements offered in Direct3D 10 include:
- Improved small batch performance
- Easier to reduce number of batches through GS material selection and texture arrays
- State and constants are now explicit resources
- Validation has been moved from draw time to creation time
- CPU round-trip stalls avoided
-
- DrawAuto() from Stream Output for multipass on GPU
- Some queries can be used to predicate draw calls without stalls
Because Direct3D 10 requires Windows Vista and a new generation of hardware, it should be thought of as another platform target. In fact, Microsoft is treating Windows Vista as a game platform launch, and will even have launch titles for it.
Direct3D 10 will be entering public beta soon. Vista Beta 2 will include the runtime, and the SDK will be shipped in sync. The full reference rasterizer implemented, and Direct3D 10 class hardware on the way
Microsoft is encouraging developers to get involved:
- Get on the Vista Beta program and test your games
- Review the bi-monthly DirectX SDK releases
-
- D3D 10 public beta coming in a future update
- Articles and samples on supporting Windows Vista gaming features
- Evaluate Direct3D 10 for your titles
Introduction to XNA Studio
Joe Nalewabau, Program Manager, Microsoft
This presentation focused on the two main efforts related to XNA Studio: XNA Content Build, and XNA Studio.
XNA Content Build
This will provide core content build technology, with the focus being on surfacing content relationships to more tools. It is based on MSBuild (build engine in Visual Studio 2005).
The XNA build tools create a relationship database among assets by monitoring existing build tools (which it does not replace). It also adds extensive logging.
These tools will allow you to easily identify which assets are and aren't being used, and since they monitor when assets are updated, they help speed up incremental builds by only updating assets that depend on the modified assets.
By themselves, the XNA build tools can only provide relationship information on a very course level. DCC and other tools can opt-in to work with XNA and provide more detailed relationship information.
XNA Studio
XNA Studio is being created to address poorly integrated processes used by programmers, artists, producers, etc.
It is built on top of the recently-released Visual Studio 2005 Team System. This product adds easily extensible work items, which are directly integrated into the IDE. The work items can be accessed from multiple interfaces (e.g., Excel, Visual Studio, custom tools, etc.). It includes a brand new scalable and robust source control system. Check in has been integrated with work items, and check in rules can be extended to fit your team needs. It also includes support for build automation and reporting.
To this, XNA Studio adds features specific to game studio collaboration, in particular asset management and work items. Game specific tools can time into the Team Foundation Services, and asset management can be integrated into DCC tools.
It enable code style checks for content, customizes the system for game content, and adds things like asset viewers, diffs for non-ASCII assets, etc.
Because asset management and work items are managed using .NET and web services, XNA Studio should work well for geographically distributed teams.
The entire XNA Studio and XNA Content Build system was designed such that a team can take parts of the system if you don't want to replace existing systems.
It's not clear at this point how XNA Studio will be productized (i.e. variant of Visual Studio 2005, add-in, free tools included with the SDK, etc.). The beta will be available at GDC 2006, so these details will be sorted out by then.
Photos
What would a GameDev.net conference report be without photos with comments courtesy of John Hattan?
Here's a couple of folks from Association of Shareware Professionals talking about "Maximizing Your Downloads". I took some notes from the presentation and will probably put 'em up later.
Best moment was when they presented a slide showing various places to get game development information. Top of the list was GameDev.net, followed immediately by flipcode. A couple of folks pointed out that flipcode is now deader than Colonel Sanders, so we're now the top of the heap. Woohoo!
The finest freebies were available from gametrust, a portal for online casual games. They started out with some free bling.
They later went with rubber purple and pink gorilla balls (and yes this is the first instance of the phrase "purple and pink gorilla balls" on the internet, I googled). Not sure what morbidly obese purple gorillas have to do with anything, but they were fun and I was drawn to take a couple.
Ms. Rhino has touched an Xbox 360, and you haven't. Bask in your bottomless envy, those of you who have not touched one.
Microsoft has definitely decided to target the new Xbox away from the hardcore gaming market. While it'll still have its predecessor's share of 3D shooters aimed at boys, it's a broadband kind of thing and will have some good high-quality downloadable casual games available. The game you see above, Hexic, will be pre-burned on the hard drive when you buy it. The game is also available for PC's and lots of cellphones.
The Austin Game Conference was the conference of the low-rent banner. IGDA Writers' SIG came in second place with some printed-out letters and a handful of safety pins.
The winning entry, though, came from id Software with their "Quake Mobile". While the banner itself is of higher quality than that of the Writers' SIG, id got the vote for being a multimillion dollar company that publicizes itself by taping a plastic banner to the side of a tacky rented hummer-limo, parking in front of the convention center, and inviting people to see what the inside of a limo looks like.
An hour later, the driver took down the banner, put up a banner for something else, and drove away.
Exceedingly lame, guys.
Finally, here's the view from the GameDev.net booth (though this was one of the rare moments there wasn't a person standing there). Sit and stare at this picture for eight hours, and you'll learn the wonders of running a tradeshow booth.