W3C Games Community Group Summit
November 4th 2011
New Game Conference
- Background
- Attendance
- Nuts and bolts
- Existing feature overview
- New Features
- Open source games tools
- Chair selection
- Other topics
- Further Reading
Background
The following is a report of the November 2011 Games Community Group Summit. This report serves as an update on web standards related to Open Web Games, as well as an overview of new features that the games community group would like to propose to W3C groups. Some details have been filled in based on conversations with and notes from people who were unable to attend the summit.
Attendance
Representatives from the following organizations were in attendance:
- Alawar Entertainment, Inc.
- Beintoo
- Bocoup
- CoderCharts
- CoderCharts LLC
- Derivco
- Funsockets
- Geek Provider
- Google
- gskinner.com
- Heat Vision
- Heyzap
- Ideateca
- IGDA
- Illyriad Games Ltd
- Intel
- iWin
- King.com
- LucasArts
- Ludei
- Massively Fun
- Model N
- Montgomery Solutions
- Mozilla
- MTV Networks
- Nextive
- Nokia
- Onan Games
- Opera
- Pheeva
- Pouch
- Switchstyle
- Tecnalia
- Tecnalia Research & Innovation
- The Playforge
- W3C
- W3i
- WebMynd
- WHOmentors.com, Inc.
- Zynga
Nuts and bolts
We began with a discussion of the appropriate scope for the games community group. We agreed that the community group would explicitly not produce formal specifications to avoid licensing and IP ramifications (see Patents: http://www.w3.org/community/about/agreements/cla).
The goals of this community group will be to
* Track specifications and vendor implementations related to open web games
* Recommend new specifications to be produced and find working group homes for them
* Evangelize specifications to browser vendors
* Help the community make open web games
Existing feature overview
We then moved on to run through the status of features related to games that have already been proposed. Bellow is a summary of the specification and implementation statuses for features that have already been proposed:
- Mouselock / input locking
- Enable games to have full control over interpreting mouse movement, e.g. for first person perspective controls.
- Mouse lock has been published as an editor's draftin the web events working group.
- The web events working group is currently being re-chartered to include MouseLock as we speak.
- Chrome has an implementation underway for chrome 16 with a PPAPI plugin that should arrive in DEC 2011
- Triggerable when the content is fullscreen
- Google is trying to land it in webkit so implementation in chrome is dependent on that (webkit is waiting on specification standardization)
- May land next year. Earliest availability would be chrome 17.
- Mozilla (Dave Humphrey) is starting an academic project with students at Seneca to work on this
- Should have a tryserver build by January 2011
- potentially in 13 stable by may 2012- been through security review at Mozilla.
- Relevant bug: https://bugzilla.mozilla.org/show_bug.cgi?id=633602
- Erik Moller will contact appropriate person
- It may be worth while to abstract mouse lock to cover other input locking APIs. The concern is that the Web Events group may not be a good place to cover some of these since it does not have wide participation from all stakeholders. Other input locking APIs may include:
- device orientation
- keyboard
- gestures
- Joystick API (gamepad API (scott and ted))
- Allow gamepads to control games
- Specification is in editor’s draft in the webevents wg, however, there is general agreement between mozilla and google.
- There are special builds in FF available with joystick api http://mzl.la/mozgamepad. Feedback at https://bugzilla.mozilla.org/show_bug.cgi?id=604039 is much appreciated.
- The prototype is still underway pre canary, not available yet, maybe in chrome stable by early spring 2012
- Opera cares
- Erik Moller will contact appropriate person
- Improvements to Web Workers
- Transfer ownership of large data between contexts so that compute power is not used in copying references, or serializing/deserializing data.
- You cannot pass by reference to a worker because changes would be seen in both the parent and worker contexts, and this is a security problem, the alternative is to transfer ownership of object, get it back later.
- Specification
- Transfering ownership is in the process of being added to the existing webworkers specification in webapps working group
- Patches landing in webkit this year. watch https://bugs.webkit.org/show_bug.cgi?id=66578 and related bugs.
- Should be in chrome stable Q2 2012
- Mozilla cares
- Opera cares
- Erik Moller will contact appropriate person
- Discussed on public-webapps mailing list: see http://lists.w3.org/Archives/Public/public-webapps/2011AprJun/thread.html , search for "ArrayBuffer", "Web Messaging"
- The games group wants webgl in web workers as well
- Talk to public web apps about reframing the ownership conversation around immutability
New Features
We then moved on to propose and discuss new features related to games. Bellow is a summary of this discussion:
- This feature is critical for using gyroscope in devices
- Allow developer to disable, or prevent default behavior when a device's orientation changes.
- We need to find a home working group for this (existing or new working group). This may be right for the web events group if mouse lock gets abstracted to input lock.
- When I crouch and walk forward in a game, the window should not close.
- Expose API to lock keyboard. Similar to emerging mouselock spec.
- Hardware feature detection
- Debug performance during development.
- Report actual performance metrics from production.
- Allow games to respond to effective client rendering/compute power in production.
- Expose API that allows developer to ask "what's the relative speed of operation x".
- Should do both feature detection and profiling in the wild.
- Create a graphics scoring system?
- Perhaps we can have a security escalation interface that lets the user permit hardware spec access for specific domains.
- Suggest discussion with Device APIs working group and also look at/consider Web Introducer (http://web-send.org/introducer)
- A few bugs are open with browsers (links?)
- Access to screen pixel density
- Change asset resolution in response to devices pixel density (current implementations lie)
- Fix window.devicePixelRatio to report true values
- No recommendation was made
- A few bugs are open with browsers (links?)
- Surround sound audio support
- Control an array of speakers with JavaScript.
- Allow JavaScript to send different audio channels to different speakers.
- We decided that this group should focus on the remaining issues around the audio tag first.
- General improvements to audio tag
- Trigger frame accurate audio in games from many audio tags
- Make the time update event trigger in consistent frequencies bellow 16hz
- Add event that is triggered when the entire file is loaded (meaning that you can seek to the end of the audio and play a portion there immediately)
- Support high number of audio tags
- Unknown
- We should submit test cases to bug trackers demonstrating the following:
- timeupdate event firing inconsistantly
- 40 audio tags in one DOM failing on desktop
- In platform games, accurate movements are important to ensure a good gameplay. Required accuracy should be to the nanosecond
- Implement a nano second timer and expose it to setTimeout and setInterval
- Chrome issue indicates window.performance.now() may be coming soon.
- Note from PLH to Games Community Group on this feature:
- Real-time peer-to-peer communications
- Expose API for discovering other clients, sending messages directly to them, and receiving messages directly from them.
- Let user screenshot gameplay and post it on the web.
- Allow developer to request full doc screenshot minus restricted content (file input, iframe, etc). webapps.
- Perhaps only allow when in full screen if other security issues make this untenable
- Standard track is unknown.
- This is functionality is currently available in chrome extensions API. chrome.tabs.captureVisibleTab
- Advanced canvas rendering capabilities
- Pulling state information (eg; pixel bounds) from canvas graphic entities without having to memoize it in JS on each draw command
- Canvas API for calculating the pixel bounds of a given draw command that is triggerable by the developer (you wouldn't want to take the perf hit every time unless you are using it)
- Grant Skinner will write this up for HTML Working group
- Vector/Matrix in Javascript
- High performance transformation of vector and matrix values. Eg; for animation.
- glmatrix like api in javascript
- ParrallelArray in JavaScript
- Calculate 3d physics across all available cores
- Expose new parallel typed array that uses all available cores
- Mozilla has a plugin for this implemented by intel
- Erik Moller will contact appropriate person
- Google thinks this is important, but, not a priority
- Write a test case to prove that this actually is good for game developers
- Use WebGL in webworker to perform complex transformations without blocking the main context.
- Expose WebGL context in webworker
- Start discussion in public-webapps about possibilty of using immutable arrays in postMessage to web workers in addition to transferable objects
- End arguements with game developers who say "I can't live with xy or z filter from direct x 11".
- Add more sexy APIs to WebGL
- Define what this actually means
Open source games tools
We listed off open source JavaScript tools, libraries and frameworks for game developers.
Chair selection
Francois from the W3C spoke to the group about the role of community groups at the W3C. He explained that governance and activity is completely up to the group. The only requirement is that the group elect a chair to communicate activity from the group to the W3C, and information from the W3C to the group. We decided to Run the chair selection process on the games community group public mailing list.
Other topics
- We should consider creating device spec recommendations to device manufacturers.
- We should consider creating a rating system for open web games (e.g. ESRB equivalent) to facilitate comunication between game and browser as per box set games.
Further Reading
- Report on first summit at ongamestart: http://www.w3.org/2011/09/games
- see the the list of groups in W3C that are of particular interest from a games perspective: http://www.w3.org/2011/09/games/#fd
- Notes for those not familiar with Browser Fingerprinting:
- How to file bugs: http://ejohn.org/blog/a-web-developers-responsibility