STUDIO SHIN著の「本気でゲーム開発力をつけたい人のための! iPhone 2Dゲームプログラミング」を読んだので、書評を書きます。
この本では、はじめに書いてある通り、iOSアプリの開発経験がない場合は、iOSアプリ開発の入門書を読むように書いてあるが、その通りであろう。また、SPriteKitのAPIについては、あまり説明なく使われているので、この本を読む前に、
SpriteKitではじめる 2Dゲームプログラミング Swift対応
などを読んだ方がいいだろう。Swiftについては、第2.2章で簡単な説明があるが、これについても、Swiftについての入門書を読んだ方がいいだろう。
この本には次のような特徴がある。
1. 他のiOSアプリ開発本のSpriteKitの章や、SpriteKitアプリ開発本とは違い、1冊の本で、画面遷移のある本格的な1つのアプリの作り方を順を追って説明している。
2. 広告の貼り方やアプリ内課金のやり方にも説明をさいている。
3. アプリ内では、マップ、ステージを導入して、ゲームの進行に従って、遊ぶゲーム面を変える仕組みがあったり、弓という武器を購入することにより攻撃力を増したり、敵キャラ、ボスキャラ、障害物、アイテムの配置を自由に行う配置ツールの作り方も説明されているので、App Storeに出せるようなゲームアプリの開発をするのに役立つであろう。
4. アクションゲームというと、小さい画面のスマホでプレイヤーの操作をどうやるかが課題である。この本では、プレイヤーが矢を発射しないときは、マップを左に自動で移動させ(プレイヤーは通常画面内で固定位置で、マップが画面を左に流れていく)、武器である弓は、コントローラとして画面の一部に操作しやすい大きさに独立させ、弓を指で引くことにより、矢を発射するように工夫している。
この本は、本のタイトルの通り、本格的なゲーム開発力をつけることができるが、次のようなマイナスな点がある。
1. 本に書かれているコードと、ダウンロードしたサンプルのコードとに食い違いが多い。一方では関数に引数があったのに、他方では引数がないとか。また、ボスキャラを導入したのに、本では、ItemPutViewControllerクラスの更新を説明していないとか、ItemBuyViewControllerクラスで、UITableViewDataSourceの記述がないとか。誤記が多い、本のコードとダウンロードしたコードに食い違いが多い点は、同じ著者の
SpritekIt iPhone 2Dゲームプログラミング
について、Amazonでのレビューで指摘されていたので、レビュー(点検)があまり行われなかったのであろう。
2. 本のコードでは、どこを書き換えていけばいいか分かりにくいところが多い。
3. 関数の中身が長すぎる。ifのネストが深すぎる。ifのブロックが長すぎる。Xcodeでコーディングしているとき、どのifのブロックにコードを書き加えたらいいかわかりにくく、バグが発生しやすい。こういうことを書くと、アプリ開発本は、順を追ってアプリの作り方を説明しているので仕方ない、リファクタリングを行うと、本のページ数が極端に多くなるという反論があるであろうが、例えば、ifのブロックの中身をはじめから関数として記述するなどの方法はあるであろう。
4. 配置ツールなしで、敵キャラ、障害物の位置がコードにじかに書かれていると、敵キャラが障害物に近接しすぎていて、ゲーム開始でゲームが即終了する。著者は、途中途中の開発過程のゲームの動作確認をやっているのだろうか。
5. サンプルコードが完成したものしかなく、章ごとのソースコードがなく、写経ミスがあった場合、原因を探りにくい。
6. 必要なコードが、本で説明されていないか、本を先まで読まないと書かれていないことが多い。例えば、4.2章で、矢を発射する操作は、gameStateが、.gamePlayingでないと、touchesBegan関数にある最初のif文内のreturnが実行され、touchBegan内の残りの処理が実行されない。gameStateのセッターで、shootOKをtrueに、gameStateを.gamePlayingにするなどの処理を書かないといけない。この説明がないので、4.2章で矢を発射できることを確かめることができない。
以上の通り、マイナスな点が多いのではあるが、本格的なゲームアプリを開発するには、いい本であると思うので、評価4を付ける。