What is a sprite sheet? The Movie - Part 2 - Performance

Increasing your game's performance

Did you like it? Just tell your friends...


Introducing sprite sheets and reducing memory consumption - watch part 1!

Language flag en en Language flag jp jp

スプライトシート すべてのゲーム開発者が知るべき事実-

spritesheets the movie - performance: opengl

パート2ではスプライトシートを使うことでどのようにしてゲームのパフォーマンスを向上させることができるのかを学びます。

まずはOpenGLを紹介します。 彼はゲームシーンとフレームバッファーと呼ばれる場所を描く画家です。

もうひとつの重要な要素はもちろんゲーム自身です。

スプライトシートではなくスプライトを個別に使う場合に何が起こるのかを見ていきましょう。

spritesheets the movie - performance: game
spritesheets the movie - performance: waiting

まずゲームはOpenGLにどのスプライトを描くのかを伝える必要があります。

次にスプライトのどの部分を描くのかも伝える必要があります。

最後にフレームのどこにスプライトを描くのかを伝える必要があります。

この情報をもとにOpenGLはシーンを描きはじめます。 しかし、OpenGLが忙しくしているのに対し、ゲームは次のコマンドが処理できるようになるまで待たなくてはなりません。

この一連のやり取りはすべてのスプライトが描画されるまで繰り返されます。 つまり、この処理が速いほどゲームのフレームレートも高くなるのです。

これまで見てきたように、ゲームとOpenGLのあいだには多くのコミュニケーション費用が発生しています。 これが理想の方法でないことは明らかです。

spritesheets the movie - performance: exhausted
spritesheets the movie - performance: atlas

より良い方法は、前の例で作成したようなスプライトシートを使うことです。 そのためには、スプライトバッチやスプライトアトラスと呼ばれる追加モジュールがゲームに必要になります。 このモジュールはスプライトを描画するために必要なすべての情報をひとまとめにします。 スプライトシートへの参照、これからシーンに描き写すスプライトシートの各パーツを含む描画元の座標リスト、シーン上でスプライトが描画される位置の座標リストです。

これでゲームとOpenGLのあいだのコミュニケーションはかなりシンプルになりました。 スプライトシート、変換元の座標リスト、描画先の座標リストを用意するだけです。

こうして、OpenGLは余計にゲームを中断させることなくシーンを描画できるようになり、ゲームはプレイヤーの入力処理やオブジェクトの移動、衝突判定処理のような仕事に集中することができるようになりました。

spritesheets the movie - performance: gameplay
spritesheets the movie - performance: summary

これで、スプライトシートを使うとどれだけいいことがあるのか分かってもらえたかと思います。

スプライトシートは、メモリ使用量を減らし、描画処理速度を上げ、フレームレートを高く保つことを手助けしてくれます。

さあ、スプライトシートを使いはじめましょう。

codeandweb.com/texturepackerでお待ちしております。

Japanese translation thanks to Nobuhito Kurose

Leave a comment

comments powered by Disqus