変種オセロをiOSで遊べるようにするために、SpriteKitのサンプルコードを読んでみた。
SpriteKitについて
SpriteKitは2Dゲームを開発するためのフレームワーク。
アーキテクチャ
SpriteKitのアーキテクチャを大雑把に説明すると、以下のような感じ。
- ビューの1つであるSKViewにSKSceneをセットすると、SKSceneの内容が描画されていく。
- SKSceneは短い一定の間隔で更新が行われる。
この更新の際に呼ばれるメソッドを上書きすることで、ゲームに必要な処理(キャラを動かしたりとか)を行える。 - SKSceneにはSKNodeを追加でき、これらは階層構造をとる。
- SKNodeには、画像を表示させるもの(SKSpriteNode)や文字を表示させるもの(SKLabelNode)などが用意されている。
なお、SKScene自身もSKNodeのサブクラスの一つ。 - SKNodeにSKActionを渡すと、アニメーションを実行することが出来る。
- SKNodeにSKPhysicsBodyを設定すると、物理シミュレーションを行うことが出来る。
サンプルコード
AppleがSpriteKitのサンプルコードとして、Adventureというサンプルコードを用意している。
https://developer.apple.com/library/mac/samplecode/Adventure-Swift/Introduction/Intro.html
このゲームはMacとiPhone、それにiPadで遊ぶことが出来るようになっていて、
- 実行すると、タイトル画面が表示される。
- タイトル画面で「アーチャー」か「ウォーリアー」を選ぶと、そのキャラクターでゲームが始まる。
(といっても、キャラクターで性能が違うわけではないw) - ゲームが始まると、マップ(の一部)が俯瞰で表示され、そこにキャラクターがいる。
- 敵としてゴブリンが出てくる。
- 最後にボスがいて、ボスを倒すとクリア。
・・・らしいのだけど、ボスに辿り着けない(^^;
という感じ。
画面は次のような感じ。
まず、タイトル画面。
そして、実際のゲーム画面。
各デバイスで画面のサイズは違うのだけど、昨日紹介したテクニックを使うことで、ほぼ同じだけの情報をユーザに与えることが出来ていることが分かる。
なお、このサンプルはObjective-Cでも書かれていて、そちらには解説がついている。
ただ、クラスの構成などがちょっと違う感じ。
クラス名にもObjective-Cっぽく接頭辞がついてたり。
(APA- という接頭辞がついてる。これはApple AdventureでAPA- だとか)
なので、この解説を参考にしつつ、コードはSwiftで書かれたものを読んでいった。
コードの詳細は、明日以降で。
今日はここまで!