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

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 casual
gaming).

The idea is to find out 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 @ 30fps  |                           Game Types
           |
+---------------------+----------------------------------------------------
-----------+
|                  5  |  Board games, card games, word games.
           |
+---------------------+----------------------------------------------------
-----------+
|                 25  |  Classic arcade games, 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 depedning 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
<https://www.facebook.com/video/video.php?v=696729990595&oid=9445547199&com
ments>
[2]: https://github.com/facebook/jsgamebench/

[3]: http://coremob.github.com/level-1/index.html#canvas2d
<http://coremob.github.com/level-1/index.html#multimedia>

Received on Thursday, 26 July 2012 21:43:40 UTC