W3C home > Mailing lists > Public > public-coremob@w3.org > July 2012

Re: coremob-action-26: Provide numbers for required sprites/fps in games

From: Tobie Langel <tobie@fb.com>
Date: Thu, 26 Jul 2012 21:57:02 +0000
To: "public-coremob@w3.org" <public-coremob@w3.org>
Message-ID: <CC37893C.EDC1%tobie@fb.com>
Trying again with hopefully better formatting this time. Sorry for the
double post:

Hi,

I was assigned action-26, to provide numbers for required sprites/fps in
games. 

Here are numbers for 2D games in mobile browsers. I lifted those from Cory
Ondrejka's Tech Talk which he gave early last year[1] when he announced
JSGameBench[2].

In his talk, Cory first compares the user experience provided by different
kinds of framerates:

+-----------------------------+-------------+--------------------+
|  Event                      |  Time (ms)  |  Frame rate (fps)  |
+-----------------------------+-------------+--------------------+
|  Timed button click         |        100  |                10  |
+-----------------------------+-------------+--------------------+
|  Minimal interactive frame  |         50  |                20  |
+-----------------------------+-------------+--------------------+
|  Smooth interactive frame   |         33  |                30  |
+-----------------------------+-------------+--------------------+
|  Hardcore gamers are happy  |         16  |                60  |
+-----------------------------+-------------+--------------------+

This brings him to settle on 30fps as the sweet spot for 2D mobile gaming
(lower isn't smooth enough, and higher isn't really worth it for most
casual games).

So the idea is to see how many sprites a device can animate while
maintaining a minimum rate of 30fps.

As seen in the below table, different games types have different
requirements:

+-----------+---------------------------------------------------------+
| # sprites |                          Game Types                     |
+-----------+---------------------------------------------------------+
|         5 | Board games, card games, word games.                    |
+-----------+---------------------------------------------------------+
|        25 | Classic arcade and light action games, simple isometric |
+-----------+---------------------------------------------------------+
|        50 | Real-time strategy games, complex isometric, shooters.  |
+-----------+---------------------------------------------------------+
|       100 | Most 2d, 2.5d game types.                               |
+-----------+---------------------------------------------------------+

Going with this approach (we can always refine the data if we want) allows
us to settle on a minimum framerate (30fps) and require a given number of
animated sprites depending on the kind of games we want to enable (our use
cases).

The wording I used in the coremob spec[3] deliberately avoids spelling out
a required number of animated sprites, but the idea's similar:

    "Implementors should pay attention to the performance characteristics
of the canvas element which is particularly well suited for the
development of 2D and isometric games. In order to meet the expectations
of users, implementations should be capable of running such games at 30fps
in full-screen mode."

--tobie

---                
[1]: 
https://www.facebook.com/video/video.php?v=696729990595&oid=9445547199&comm
ents
[2]: https://github.com/facebook/jsgamebench/
[3]: http://coremob.github.com/level-1/index.html#canvas2d
Received on Thursday, 26 July 2012 21:57:30 UTC

This archive was generated by hypermail 2.3.1 : Friday, 19 April 2013 17:36:47 UTC