もともとWin32環境で動いていたガンハウンドをCocos2Dxで動かしてみよう。せっかく買ったMacでゲームをつくれる環境がほしいもんね。もともとPSPで動かしていた実績もあるので機種依存しないコードでできている自信はあるんだけど、DirectX用につくったゲームエンジン部分をCocosエンジンに載せ替える必要があるのが結構大掛かりではある。
ゲームエンジンと言っても、最終的にはOpenGLに集約されるので、入り口と出口の部分は割りと問題なさそうではあるが、そこに至るまでのポリゴンの形成とか、入力や出力の集約の仕方がCocosとはまったく考え方が違うので苦労しそう。
おおざっぱにわけてしまうとスプライトの表示方法には2通りあって、1つのスプライトと1つのテクスチャを1対1で使う方法と、1つのテクスチャから複数のスプライトを生成する方法の2通りある。前者はキャラクタの絵を書いたテクスチャを読み込んでインスタンス化し、それをコントロールする。UnityとかCocosは基本的にこの方法であって、便宜上名前をつけると「スプライト・インスタンス方式」とでも言っておこう。
プログラムで描くとイメージはこんな感じ。スプライトの大きさ=テクスチャの大きさになる。
Sprite("texture.png")->Draw();
で、僕の得意とする方法は、テクスチャは個別に読み込んで、スプライト側が参照するテクスチャを決めて表示する。イメージで言うとこんな感じ。
#define TextureIndex (0)
LoadTexture( TextureIndex , "texture.png");
Sprite( TextureIndex , u ,v , w , h )->Draw():
Draw()となっているが、実際には「こんなスプライト表示をしたい」というリクエストを送るだけで、リクエストを貯めこんだあと、描画のフェーズでまとめてOpenGLなりDirectXの求めるポリゴン形状に丸めて描画する。なので、これを便宜上「スプライト・リクエスト方式(※)」と言っちゃう。
スプライト・インスタンス方式の場合は、画面に出てくるキャラクタがしっかりと決まっていてあまり不定な要素がない場合にとても便利。例えばアングリーバードみたいにキャラと敵の数がステージごとに決まっていて最初に生成してしまった後は、それを操作しまくってゲームに仕立てあげる。
スプライト・リクエスト方式は、無数の敵キャラが時間に応じてどんどん出てくるようなシューティングの場合、あとから中ボスを足そう、敵キャラを間引こうっていう不定なキャラとか、仕様がかっちりしていない場合に柔軟に対応できる。
※Cocosも最終的にはノードに割り付けられたスプライトを順番に描いていくので、その場で描いているわけではない。
ゲームエンジンと言っても、最終的にはOpenGLに集約されるので、入り口と出口の部分は割りと問題なさそうではあるが、そこに至るまでのポリゴンの形成とか、入力や出力の集約の仕方がCocosとはまったく考え方が違うので苦労しそう。
おおざっぱにわけてしまうとスプライトの表示方法には2通りあって、1つのスプライトと1つのテクスチャを1対1で使う方法と、1つのテクスチャから複数のスプライトを生成する方法の2通りある。前者はキャラクタの絵を書いたテクスチャを読み込んでインスタンス化し、それをコントロールする。UnityとかCocosは基本的にこの方法であって、便宜上名前をつけると「スプライト・インスタンス方式」とでも言っておこう。
プログラムで描くとイメージはこんな感じ。スプライトの大きさ=テクスチャの大きさになる。
Sprite("texture.png")->Draw();
で、僕の得意とする方法は、テクスチャは個別に読み込んで、スプライト側が参照するテクスチャを決めて表示する。イメージで言うとこんな感じ。
#define TextureIndex (0)
LoadTexture( TextureIndex , "texture.png");
Sprite( TextureIndex , u ,v , w , h )->Draw():
Draw()となっているが、実際には「こんなスプライト表示をしたい」というリクエストを送るだけで、リクエストを貯めこんだあと、描画のフェーズでまとめてOpenGLなりDirectXの求めるポリゴン形状に丸めて描画する。なので、これを便宜上「スプライト・リクエスト方式(※)」と言っちゃう。
スプライト・インスタンス方式の場合は、画面に出てくるキャラクタがしっかりと決まっていてあまり不定な要素がない場合にとても便利。例えばアングリーバードみたいにキャラと敵の数がステージごとに決まっていて最初に生成してしまった後は、それを操作しまくってゲームに仕立てあげる。
スプライト・リクエスト方式は、無数の敵キャラが時間に応じてどんどん出てくるようなシューティングの場合、あとから中ボスを足そう、敵キャラを間引こうっていう不定なキャラとか、仕様がかっちりしていない場合に柔軟に対応できる。
※Cocosも最終的にはノードに割り付けられたスプライトを順番に描いていくので、その場で描いているわけではない。
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。