[ゲーム制作本 紹介] ゲームアルゴリズム まるごと図鑑

ゲームアルゴリズム まるごと図鑑
ゲーム開発をするうえで遊んでもらう環境は重要だ。せっかくゲームを公開するのなら、できれば多くの人に遊んでもらいたい。私のような初心者は簡単なゲームをたくさん作って公開して遊んでもらうほうがいい。なので遊ぶ人の環境を選ばない公開方法があればベストだ。
「ゲームアルゴリズム まるごと図鑑」は開発言語としてJavaScriptを使用することによって簡単にWindowsでもMacでも動作するゲーム開発ができる。ブラウザ上で動作するので遊ぶ人の環境の影響を受けにくく、遊んでもらいやすいゲーム制作を学べる。ゲーム制作の準備や素材もダウンロードできるので比較的豪華な見た目のゲームが作れるし、Unityなどのゲーム開発エンジンを使わないので、ゲームエンジンの操作に気を取られず純粋にゲームのアルゴリズムにフォーカスしたゲーム制作ができる。
初心者にとってはいいことばかりなように感じるが、本を読み進めてゆくと少し問題が出てくる。使用するプログラムが短い間は気にならないのだが、本の中で説明してくれるのは”アルゴリズム”が中心でプログラムの全体を載せているわけではない。そんなに重要でない部分には説明がないこともあるので、注意していないと結構な頻度で見落としをしてしまう。この本で打ち込むプログラムを正しく動作させるには、ダウンロードしたプログラム例が必須だ。
そういった注意は必要だが、完成するゲームはそれなりに豪華だし満足感もある。自身でプログラムを打ち込むときはプログラム例を写経して、プログラム内で使用したアルゴリズムを説明は本で確認する。といった使い方が私としてはしっくりきた。くれぐれもサンプルのダウンロードは忘れずに!
内容をChapterごとに紹介
問題のない範囲で本の内容をイメージできるように各CHAPTERごとに簡単に紹介したい。
1 ゲーム制作の基本
ゲームのアルゴリズムについての説明。ブラウザ上で動くゲームを作るために、HTMLとJavaScriptの簡単な仕組みや文法を説明。この本で使うゲーム開発に使える機能をまとめた”WWS.js(独自のJavaScriptの関数をまとめたもの)”というゲーム開発エンジン(ダウンロードできます)の使い方の説明。これからの準備運動として簡単なゲームの制作。
まずは小手調べとしてスカッシュゲームを制作。必要なものはダウンロードファイルに入っているので、説明にしたがってプログラミングすれば完成する。特に難しい部分はないので、以降の学習の進め方の手順を確認するといった感じ。
2 シューティングゲーム
制作するシューティングゲームのルールとアルゴリズムの説明。画面のスクロールから時期の操作、スマートフォン対応などの説明。エフェクトの処理や自機のパワーアップまで作るので、ファミコンおじさんにはかなり満足度の高いゲームが出来上がる。PCでもスマホでも遊べて感動する。
いきなり豪華なゲームができるので驚いた。当たり判定の仕組みや座標の指定でのエネルギー表記、for文を使ってのエフェクトの表示演出など学べることは多い。特にUnityまかせでなんとなくこなしていた部分のアルゴリズムを自分でプログラムしてみることは勉強になった。
3 落ちものパズル
定番の落ちものパズルの制作。二次元配列を使ってのマス目の定義と管理からブロックの処理まで、欲しいと思う情報が詰まっている。ブロックの操作性を確保するためにキー入力に”待ち”を入れたり、ブロックの操作・消し・連鎖など気になるアルゴリズムのオンパレードだ。応用のききそうなアルゴリズムが多数登場するので想像以上にお腹いっぱいになる。
似たようなシステムのゲームが多いわりにどれを遊んでもハマってしまうのがパズルゲーム。アイデア次第では大ヒットを狙えるジャンルだ。ポイントは”世界観”と”気持ちよさ”で、違和感のない操作性とブロックが消える爽快感と連鎖の高揚感をどう演出するかが重要になってくる。ここではそういった知識も学べるので非常にありがたかった。
4 ボールアクションゲーム
ビリヤードのようにボールをぶつけ合うボールアクションゲームの制作。これまでよりも数学的な話が多いので拒否反応が出そうだが、反射や摩擦を現実よりもシンプルにそれらしく表現する方法が学べる。複数のボールの個性や衝突の処理やプレイヤーが順番に行動するゲーム的な仕組みを導入する。
対戦型のゲームでCOMとも対戦できる。ボールをドラッグする距離によってボールを弾く勢いが変わるのも面白いが、それを視覚的に分かるようにプログラミングする方法が素晴らしい。物理演算をよりシンプルにかつそれらしく見えるようにする手法がとても参考になった。
5 横スクロールアクション
横スクロールアクションの制作。二次元配列を使って自動生成マップを作成。マップのスクロールやキャラとブロックの当たり判定をプログラムする。キャラクターの操作や慣性の影響など細かい改良もしてゆく。ステージ進行に応じて難易度が上がってゆく仕組みも作る。最後にゲームのルールやゲームオーバーを追加して完成。
定番の横スクロールアクションだが、これほどUnity等のゲーム開発エンジンの恩恵が実感できるとは思わなかった。自キャラのアニメーションもマップ作成も段違いの難しさだ。正直まだ良く理解できていない部分もたくさんある。最後におまけで自動生成ではないマップを制作できるツールも用意されているので、作り込んだステージでゲームを遊ぶこともできる。
6 タワーディフェンス
シミュレーションゲームのタワーディフェンスを制作。カードからキャラクターを召喚・配置し、敵から城を守るゲームを作る。ゲームはリアルタイムに進行するので、それに合わせた敵の侵攻やカードの魔力量の処理。敵の経路と召喚したキャラクターの攻撃や体力の管理。ゲームオーバーやステージクリアを組み込んで完成。
非常に多くの要素がありプログラミングのミスも増えてくる。理解が追いつかない部分も多く心が折れそうになる。全く遊ばないジャンルなのもその一因だと思う。完成するゲームは絵の綺麗さもあって豪華なものになっている。遊んでみると非常に面白く、背景や敵のルートを変えればもっとハマれるゲームになりそうだ。
7 ロールプレイングゲーム 前編
ここではドラクエやFFとは毛色が違う携帯向けデザインのロールプレイングゲームを制作する。画面のタップ(クリック)だけでゲームが進行し、フィールドマップの移動はしない。パーティや敵のデータ画面とバトルに遭遇するマップをタップで行き来しながら敵の捕獲やアイテムの生成などを進めてゆく。
前編ではボタンやメッセージの表示、画面の遷移やキャラクターと敵のデータ管理など、ゲームの土台となるシステムを作る。ロールプレイングゲームだけでなく、他のジャンルのゲームでもキャラクター画面は使えるので応用範囲の広い知識が得られると思う。
8 ロールプレイングゲーム 後編
本格的にゲームシステムを作ってゆく。探索と戦闘、敵の捕獲から研究所でのアイテム開発と、やることがもりだくさんでクラクラする。慎重にプログラムを書かないといけない。これにマップ移動をくっつければ普通のロールプレイングゲームにすることも可能だ。内容が難しいぶんアルゴリズムの組み合わせで色々なことが実現できるのを実感できる。オートセーブとオートロードができるようになっており、ローカルストレージとはいえゲームが一気に商品っぽくなり感動する。
途中からは理解するというより写経しているだけになってしまった。オリジナルで一からロールプレイングゲームを作るまでには、まだまだ道のりは遠い。
さらに学ぶには
1 新しいゲームを作ろう
各章で作ってきたゲームの知識を転用してできそうなゲームを紹介。次は自分で新しいゲームを作ってみましょうという話。
2 新しい知識を学ぼう
この本で紹介した以外のアルゴリズムをゲームに使ってみよう。ゲームの処理がスムーズになるようにプログラムを考え直してみましょうという話。
3 ゲームAIを作ってみよう
AIを学んでゲームに深みをあたえてみようという話。
4 ゲームを配信しよう
ゲームを公開して遊んでもらいましょうという話。
5 PWA化に挑戦しよう
PWA(プログレッシブ・ウェブ・アプリ)として遊んでみる。PWAとはいわゆるスマホアプリのようにアイコンから起動できるアプリのこと。ウェブからスマホにアプリとしてダウンロードして遊べるようになる。
感想
ゲームに使えるアルゴリズムがたくさん紹介しており、とても参考になる内容だった。付属のゲームエンジンもダウンロードして中を確認すれば、本の中で使われている関数のアルゴリズムも確認できる。本の装丁がPOPな感じで初心者向けの内容にみえるが、初心者にはちょっとハードルが高い内容だ。ある程度プログラムが分かっている前提でアルゴリズムの解説に絞っているので、まっさらの初心者はそうそうに挫折してしまうだろう。簡単なゲーム開発本をやった後の2冊目以降に最適な内容と言える。JavaScriptのプログラムに関しては、他言語を学んでいれば問題なく読み進められると思う。
Untyなどのゲームエンジンようにグラフィカルにゲーム制作ができるわけではないが、逆にそれが勉強になった。ボタンひとつとってもプログラムで実現するのは大変なことだ。関数をどこまで作れば広い汎用性を確保しつつ便利なものが作れるのか、そういったことも考えさせられた。自分でゲームを作るのなら、自分のゲーム制作に便利な関数を用意することも必要になってくるかもしれない。
いっこうに始動しない私の自作ゲームの開発も、とりあえずはJavaScriptで作ってみようと思う。この本で作ったゲームをブログサーバーにアップして遊んでみたら、PCでもスマホでも問題なく遊べた。ブラウザ上で動かすのでOSのことも気にせずに触ってもらえるし、私としても開発の数をこなしたいという思いもある。Unityで作って無料や安価でストアに並べるという公開方法もあるが、登録設定画面だけで失神しそうになるくらいややこしいのだ。今の私にはハードルが高すぎる。
内容が濃いので1回読んで作ってみただけでは内容を全部理解できたとはいえない。ずっとこの本に固執しているわけにはいかないが、頭の隅に置いておいて必要なときに読み返そうと思う。ブログ内でゲームを公開する方法が分かったところで、ゲーム制作の教則本はこの本で最後にする。いよいよ自分の力でゲームを作るときがきた。相当な時間がかかりそうだが、あきらめずに挑戦し続けようと思う。