レビュー

「ナビつき! つくってわかる はじめてゲームプログラミング」レビュー

サードパーソン的な3Dゲームも簡単に作れる!「はじめてゲームプログラミング」ならではのプログラミング手法

 これまでのビジュアルプログラミングで、3Dゲームを作るのはなかなか難しかったが、「はじめてゲームプログラミング」では、もともと画面に表示されるモノが3Dの物体として定義されているので、あまり難しいことを考えずに、3Dゲームが作れる。ナビつきレッスンでも、後半のレッスン5,6,7は3D視点のゲームを作るのだが、カメラノードンを使うことで、カメラの位置や画角などを自由に設定でき、プレイヤーの動きにカメラを追従させ、斜め後ろから撮影した画面にするなども簡単だ。

 プログラム画面自体の視点を、上から見た視点と横から見た視点に切り替えられることについては、すでに説明したが、具体的な例を挙げよう。レッスン5では、3Dで描かれた部屋の謎を解いて脱出する「謎解きの部屋」を作る。この部屋は、まず床を作り、次にそれをコピーして壁を作るのだが、壁の高さを変更するには、横から見た視点に変えて行う。

レッスン5で作るゲームは3Dで描かれた部屋から脱出する「謎解きの部屋」である。まず、緑色の部屋の床と黒色の隠し部屋の床を作った
プログラム画面で床をコピーして、細長くし、奥に持っていく。この視点は部屋を上から見ている視点だ
右上の正方形をクリックすると、視点が変わる
部屋を横から見た視点になり、壁を高くしたり、低くしたりできる
壁の色を白に設定する
ゲーム画面に切り替えると、奥に壁が見えている

 また、プログラムが複雑になると、プログラム画面が一画面に収まらず(もちろん拡大縮小は可能だが)、遠く離れたノードン同士をワイヤーで繋ぐのが大変になる。そのために用意されているのが、ワイヤーワープ入口ノードンとワイヤーワープ出口ノードンである。ワイヤーワープ入口ノードンとワイヤーワープ出口ノードンは、右上にラベルとなるアルファベットが書かれており、同じラベルのものを必ずセットで使う。ワープ入口ノードンに入ったシグナルは、同じラベルのワープ出口ノードンから出てくる仕組みだ。また、テクスチャノードンを使えば、表面の模様(テクスチャ)を自由に描くことができ、オリジナルのテクスチャを物体に貼ることができる。

横スクロールゲームなどではプログラム画面がかなり大きくなってしまい、遠く離れたノードン同士をワイヤーで繋ぐのが大変になる。そのために用意されているのが、ワイヤーワープ入口ノードンとワイヤーワープ出口ノードンだ
まず、ワイヤーワープ入口ノードンを呼び出し、シグナルを伝えたいノードンとワイヤーで繋ぐ
こちらは、受けとる側となるワイヤーワープ出口ノードン。右上にAとあるが、AはA同士でワープする
ワイヤーワープ出口ノードンの出力ポートと別のノードンをワイヤーで繋ぐ
テクスチャノードンでは、自由にテクスチャを描くことができる

ノードベースプログラミングの欠点は可読性が低いこと

 このように、ノードベースのプログラミングを採用した「はじめてゲームプログラミング」は、プログラミングを初めて学ぶ人でも、直感的にプログラミングが行えることが利点だ。その半面、少し複雑なプログラムになると、複数の画面にプログラムが分かれるため、可読性が低いという欠点もある。可読性とは、要するにプログラムの読みやすさということだ。特に他人が作ったプログラムをひと目見ただけで理解するのは難しい。

 Scratchのようなブロックベースのプログラムでは基本的に繋がっているブロックの上から下へと処理が行われるが、ノードベースだとノードの配置によって、プログラムの流れ方は千差万別である。また、何かが壊れたときなどのイベントが生じると、ただちに実行されるイベントドリブン的なノードンもあるため、なかなか全体像が見にくい。ワイヤーワープ入口ノードンとワイヤーワープ出口ノードンも、プログラミング中は便利だが、数日経つと、どことどこが繋がっていてワープしているのか忘れてしまうこともある。

【規模が大きくなると可読性がイマイチ】
レッスン4で作る「GO!GO!アスレチック」のプログラム画面の左側
「GO!GO!アスレチック」のプログラム画面の中央部
「GO!GO!アスレチック」のプログラム画面の右側

フリープログラミングで簡単なゲームを作ってみた

 筆者と子どもたちで手分けして、ナビつきレッスン7つをすべてクリアした。中2の息子も、すぐ操作と扱い方がわかった様子で、「これは面白い!」と言ってのめり込んでいた。高2の娘も、「XY平面とXZ平面に切り替えられるのがすごいね」と夢中で取り組んでいた。

 最後にフリープログラミングで、簡単なゲーム「オトス」を作ってみた。2人で遊ぶ対戦ゲームで、Joy-Conを傾けることでそれぞれのUFOを動かし、相手にぶつかってフィールドから押し出せば勝ちというものだ。このゲームはまだひな形のようなもので、ジャンプして相手の攻撃を避けたり、フィールドに穴が空いていくようなギミックを入れれば、もっと面白くなるだろう。

 レッスンはクリアしたものの、オリジナルで一から組むのは初めてだったので、完成までに1時間くらいかかったが、シンプルなゲームなので慣れれば数分で組めるだろう。なお、一つのプログラムにつき、使えるノードンの数は最大512個、ワイヤーは最大1024本という決まりがある。また、ワイヤー出口ノードンとワイヤー入口ノードンのラベルはA~Hまでの8種類だけという制限がある。

 「はじめてゲームプログラミング」には数多くのノードンが用意されており、ナビつきレッスンを最後までクリアしても、出てくるノードンはその一部だけだ。ノードンのリファレンスやノードンガイドも充実しているので、ナビつきレッスンに登場しなかったノードンを使う場合は、リファレンスを参照するとよい。

【オリジナルゲーム「オトス」を作ってみた】
オトスのプレイ画面。Joy-Conの傾きでUFOを操る
このようにフィールドから落ちると負け
オトスのプログラム画面を横から見たところ
オトスのプログラム画面を上から見たところ
プログラムが完成したゲームの名前を付ける
このプログラムで使ったノードンは22個、ワイヤーは11個である
完成したゲームは選択画面に登録される

ゲームを作りたいと思っている子どもには是非遊んで欲しい

 「はじめてゲームプログラミング」は、従来のプログラミング手法とは全く違うノードベースのプログラミングの採用により、プログラミング経験がない子どもでも、ナビゲーターに従ってレッスンを進めていくだけで、自由にプログラムを作れるようになる画期的なソフトだ。マイクラなどが好きな子どもやゲームを作りたいと思っている子どもはもちろんのこと、ANDやORなどの論理回路やフラグを立てることなど、言語を問わず、プログラミングに共通する基本的な考え方を自然と身に付けることができるので、これまでプログラミングからは縁遠かった大人の方にもお勧めだ。

 ノードン数やワイヤー本数に制限はあるが、使いこなせばかなり複雑なゲームを作ることもできそうだ。タッチパネルや加速度センサー、モーションIRカメラなどを活用するノードンもあり、身体を動かして遊ぶゲームなども作ることができる。夏休みの自由研究として、ゲームを作るのも面白いだろう。価格的にも手頃であり、プログラミング未経験者から、本職がSEやプログラマーの方まで、幅広い人にお勧めしたい。