are aaa 3d games for the web possible?
DESCRIPTION
TRANSCRIPT
Are AAA 3D Games for the Web Possible?
Renaun EricksonAdobe Game Developer Evangelist
Web: The What
This preso is focused on
Desktop Webnot mobile or TV
Web: The Tech
NaCL
What is AAA?
Possible Definitions big budget & team size commerical games high quality game play high production value - looks good marketing term to sell more games
My definition:
A game that has high production value and good game play
regardless of the budget or team size.
Purpose
Discuss available Technical Features required by AAA games,
not a comparison of why you might choose
one technology over the other.
NaCL
Demos
NaCL
Web Game Architecture
Game Runtime
Asset Loading & Caching
Code (Languages)
Rendering (GPU, Shaders,
Textures, Fullscreen)
Audio
Input
Networking
Game Runtimes
NaCL
Browser Plugin
Browser Plugin* - export to Flash / NaCL
Khronos Group Spec - turned off by default in some browsers
Browser Specific
* 125 million out of +1 billion connected computers http://mwne.ws/HwBz2Y
Game Runtimes: Code
NaCL
ActionScript, C/C++ through Flascc
JavaScript (#pragma strict option), C#, Boo
JavaScript, C/C++ to JavaScript through Emscripten
C/C++
NaCL
Default: Relies on specific browser caching mechanisms.
Other: LocalStorage, dev can ask user for more space
Asset Loading & Caching
Default: Relies on specific browser caching mechanisms.
Other: Premium feature for caching asset bundles
Default: Relies on specific browser caching mechanisms.
Other: WebStorage, 5-10Mb varying quota request apis
Default: Relies on specific browser caching mechanisms.
Other: Pepper File I/O API, WebStorage
NaCL
Stage3D API (based on OpenGL ES 2.0) - Win & Mac & Linux (Chrome) >2006 requires Pixel Shader 2.0, has blacklist - Constrained mode for previously blacklisted Intel® GMA - Software fallback
Rendering: GPU
Abstract API (DirectX and OpenGL), can make OS specific - Win & Mac, Linux through exporters
OpenGL ES 2.0 - Win Chrome >2009, Firefox >2010 - Blacklists with browser overrides
OpenGL ES 2.0 - Follows Chrome’s WebGL driver support
NaCL
Rendering: Shaders
AGAL
Cg/HLSL – ShaderLab with #pragma specific targets
GLSL
GLSL
NaCL
Rendering: Textures
DXT1 / DXT5 / RGBA
Handles texture conversion in authoring
DXT1 / DXT3 / DXT5 / RGBA
DXT1 / DXT3 / DXT5 / RGBA
NaCL
Rendering: Fullscreen
Fullscreen supported
Fullscreen supported
Different browser implementations, mostly supported
Relies on Chrome’s implementation
NaCL
Audio
mp3, aac (video file), pcm (wav)
Handles audio conversion in authoring - IDE supports mpeg(1/2/3), ogg vorbis, wav, aiff, mod, it, s3m, xm
HTML <audio> or new Web Audio API spec
Relies on Chrome’s HTML implementation
NaCL
Input
Yes, mouse lock in fullscreen Not Yet
Yes, mouse lock always Yes
Yes, mouse lock in some browsersrequires fullscreen some browsers
Depends on Chrome Pepper API
NaCL
Networking
TCP, Pseudo UDP with RTMFP
Provide full server implementationTCP/UDP low level API through C# .Net/Mono
Relies on browsers implementations, WebSocket, WebRTC will push UDP progress for games
Relies on Chrome’s implementation, WebSocket
Conclusion
NaCL Yes, NowEarly Yes, Progessing Fast
Future Topics
OpenGL ES 3.0 spec was released by the Khronos Group Unity/UDK game engine/tool vs low level APIs
(Flash/WebGL/NaCL) Frameworks on top of low level APIs
Flash – Away3D, Flare3D, Alternativa3D WebGL – three.js, PlayCanvas.com, CopperLicht,
CloudMatch, many others A lot of current demos use the C++ to web tech path.
There is a lot of existing content looking to come to the web. Not so many original full AAA games built on web tech (exception is Unity).
Thank You - Q/A
http://github.com/renaun
@renaun
http://renaun.com