どうもです、ゲームプログラマー13年目のタドスケです。
Nintendo Switchで発売中のソフト『ナビつき!つくってわかる はじめてのゲームプログラミング』をプレイしました。
実際にナビつきのゲーム作成を5つくらいやってみたところ、色々な気付きが得られましたので、記事にまとめたいと思います。
プレイの経緯
一応曲がりなりにもゲームプログラミングで飯を食わせてもらっている僕が、なぜ今更このソフトをプレイしようと思ったか。その理由は以下です。
- 将来子どもにプログラミングを教える際に、「どう教えたらよいのか」の参考にしたかった
- 「コードを一切見せずにゲームプログラミングを教える方法」に興味があった
- ノードベースエディタに触れてみたかった
これらの観点から、このソフトの良さを紹介していきます。
ノードベースエディタ
このソフトではゲームプログラミングに必要な各種パーツを「ノードン」というキャラクターで表現しており、ノードン同士が信号をやり取りすることでゲームができあがる仕組みになっています。
これも一種のノードベースエディタと言えます。
最近ではUnityなどのゲームエンジン上でもノードベースエディタが台頭してきており、現在の業務で使っていなかったとしても「どのようなものなのか」「どんなメリットがあるのか」ということは理解しておいた方が良さそうです。
その点このソフトは「手軽に触れるノードベースエディタ」としても価値があるように思えました。
可愛いキャラクター
「ノードン」はオブジェクト指向言語(C++など)におけるクラス・オブジェクトといった要素に相当します。
オブジェクト指向言語を学ぶ上でこれらの要素の理解は必須になるわけですが、これを子どもに説明するのは中々大変です。
このソフトでは可愛いキャラクターで表現することで「Bボタンノードンを置いて」というシンプルな説明で「ボタン入力クラスのオブジェクトを生成する」ことができます。
それぞれのノードンには強烈な個性があるので、イメージに残りやすいのも良いですね♪
洗練されたチュートリアル
ナビつきモードではチュートリアルに従ってサンプルゲームを作っていくのですが、このチュートリアルが実によくできています。
このあたりはさすが任天堂さんですね。
「ノードンを置く」という操作ひとつとっても
- この部分をタッチして
- このメニューから○○ノードンを選んで
- ○○ノードンを置いて
という感じで徐々に梯子が外されていきます。
必要なメニュー以外は選択できないようになっているので、間違えることもありません。
ゲームプログラミングだけでなく、「人に何かを教える際の手順」としても勉強になりました。
オブジェクト指向設計の学習に
ノードンは以下の機能を持っています。
- 自身の設定(色とか形とか)
- 入力ノード
- 出力ノード
- 連結ノード
内部的には座標とか速度とかも色々と持っているはずですが、プレイヤーがそれらを意識することはほとんどありません。
(「位置を調べるノードン」の判定で使うくらい)
「人間ノードン」を移動させる際にも、「人間ノードンの座標を変更する」のではなく、
「スティック左右ノードン」の出力を「人間ノードン」の入力(左右)ノードに繋げるだけです。
この考えは、オブジェクト指向言語における「カプセル化(隠蔽)」「抽象化」「メッセージのやりとり」といった概念に相当します。
例えば「人間ノードン」の入力(左右)ノードは
// 人間
class Human {
// 左右に移動する
public MoveX(bool on){
if(on == true){
// 移動処理
}
}
};
というpublic関数とみなすことができ、他のノードから引数onに信号が渡されればゲーム内の人間は左右に移動します。
移動速度はHumanクラスのメンバー変数として隠蔽されています。
(※メンバーの代わりにMoveXにfloat型の移動速度を渡すのでもOK)
MoveX関数に値を渡すのは別に「スティックノードン」でなくても構いません。
「定数ノードン」を繋いで自動で移動させたり、「条件ノードン」を間に挟んで特定の条件下のみ移動させたりすることもできます。
これは実際のクラス設計においても重要で、引数の型をスティック入力値に限定しないことで、キーボード・ネットワークパケットAIでも操作できる人間クラスが実現できます。
特に初心者向けの解説本・サイトでは人間クラス内に直接入力判定を書くようなコードが多いので、このあたりを意識することは難しいと思われます。
(僕も仕事で先輩のコードを読んで初めて学びました・・・)
まとめ
以上、『はじめてのゲームプログラミング』をプレイした感想をまとめてみました。
物事を深く理解するための技術として、
「小学生にもわかるくらい簡単に説明できるようになる」
というのがよく言われているのですが、「小学生でもわかること」に特化したこのソフトは、年齢・経験問わずゲームプログラミングの本質を学ぶための教材として優れていると思いました。
今後の業務においても生かしていきたいと思います!
コメント