わたしとSurfaceとSwitchと

ガジェット好きのガジェットブログ(になるはずだった)

ニンテンドーラボの「わかる」でゲーム製作の大変さがわかる【Nintendo Labo】

Nintendo Laboの研究員のイカのすみながです。

 

前回はNintendo Laboを作って遊びましたが

ikanosuminaga.hatenablog.com

 

今回は「わかる」でお勉強&Toy-Conガレージで「発明」をしていきます。

 

Nintendo Laboの一番の醍醐味ですので、購入ご検討中のかたはぜひ読んでいってくださいね。

 

 

自分で作ったToy-Conのしくみがわかる

「わかる」では自分で作ったToy-Conがどのようなしくみで動いているのかがわかります。

 

3人のキャラクターとプレイヤーの掛け合いでToy-Conの遊び方や機能の説明をしてくれます。

 

それだけでなく、そのToy-Conがどのような仕組みで動いているのかもちゃんと説明してくれるので、おっさんになっても「へぇ~なるほどね」ってなります。

 

特にビアノToy-Conのここ

鍵盤についているマーカーをJoy-ConのIRカメラが読み取って音を出すというのはなんとなく理解できますが

 

じゃあ常にIRカメラに映っているであろうこの2つのマーカーはなんなのさ?

なるほど、マーカーがないと鍵盤のマーカーが見えても、どの鍵盤が押されたかが分からないけども

この基準マーカーがあるおかげで、どの音を出すかを判断できているってわけですね。

 

完全に理解した←わかってる

 

このようにToy-Conの何が何の役割をしているのか、子供でも分かりやすいように説明してくれます。

 

画面の文字や映像だけでなく、実際にToy-Conの中を開けて見ることができるのもGood!

 

Toy−Conガレージでピアノを製作

さて、Nintendo Laboの最大の特徴である「Toy−Conガレージ」で遊んで行きます。

 

ご存知の通り、ここでは自分で遊びを作ることができるわけですな。
カンタンなプログラミングといったところ。(プログラミングなんてやったことないんだけどね)

 

ということで早速やっていきます。

この真っ黒な画面で一から「あそび」を作っていきます。

 

「ノード」と呼ばれる枠を作って、それ同士を線でつないで
「◯◯したら□□が起こる」という仕組みを作っていきます。

 

例えばこの画像は

「Aボタンを押したらド音を鳴らす」
「Joy−Conを振ったら画面を光らせる」

という仕組みになっています。

 

ノードとノードの間に中間ノードを配置してもっと複雑にすることもできます。

この画像にある「AND」や「NOT」、「タイマー」、「カウンター」などをノードとノードの中間に配置して

 

「右Joy-Conが表をむいた状態」かつ「左Joy-Conのいづれかのボタンが合計51回以上押された」場合、その10秒後に高いドを鳴らす。

 

 

などなど、発想次第でいろんなことができます。

 

何を作っていいか分からない時は、とりあえず何でもいいのでノードを作ってつなげて、どんな反応をするか実験してみましょう。


その反応を使ってなにかおもしろい遊びを発明するというのもいいんじゃないでしょうか。


やり直しはいくらでもきくので、まずはやってみよー

 

Joy−Conで演奏できるシステムを作る

ということで、私もあそびを作っていきます。

 

私はJoy−Conのボタンを押すと、ボタンに応じてドレミファソラシドが鳴って演奏できるシステムを製作しました。

 

「発想が平凡でこんなのカンタンに出来るでしょ」

と思ったアナタ。たったこれだけのことでも意外に手こずりますよ。

 

これが私が作ったJoy-Conで演奏できるシステムです。

 

画像だと分かりづらいので文字にすると

 

・ZLボタンが押されていない状態で

左Joy-Conの↑ボタンが押されたら「ド」、同様に→で「レ」....

....右Joy-ConのBで「シ」、右Joy-ConのYで「高いド」

を鳴らせ

 

・ZLボタンが押されている状態で
左Joy-Conの↑ボタンが押されたら「ド#」、→なら「レ#」.....右Joy-ConのAなら「ラ#」

を鳴らせ

 

・ZLボタンが押されていない状態で
左スティックが上に倒されたら1オクターブ上がった「ド」、同様に右なら「レ」....

.....右スティックが左に倒されたら1オクターブ上がった「高いド」

を鳴らせ

 

・ZLボタンが押されている状態で
左スティックが上に倒されたら1オクターブ上がった「ド#」、同様に右なら「レ#」...右スティックが右に倒されたら1オクターブ上がった「ラ#」

を鳴らせ

 

 

こういう仕組みになっています。ノードとノードの中間に「AND」や「NOT」などの中間ノードを挟むと複雑になります。


今回作ったのは「ボタンを押すとそれに応じた音が鳴る」ってだけのシステムなんですがそれだけでも頭がこんがらがりますね。やはり作ってる途中に予期しない動きをしましたし。

 

またスティックを使う場合は、スティックの調整も必須です。

今回の場合、重要になるのは左下の「はんい」

どれぐらいスティックを傾けたら音を出すかを調整するものです。

 

要するにはんいが0.10~1.00なら、ほんの少しでも傾ければ音を出し
逆に1.00~1.00なら、完全に傾けるまで音を出さないということになります。

 

初期設定の場合0.10~1.00になっており、このままだと例えばスティックを下に倒して「ミ」の音を出そうとしても、ほんの少しでも左右にズレていれば「ミ」以外の音が鳴ってしまうということになります。

 

うまく調整して0.5以上の傾きがないと反応しないように設定しました。

(訂正 誤:若干右に倒れている 正:若干左に倒れている)

 

また今回は出力を「デジタル」にしました。

デジタルであれば設定したはんい(今回は0.50~1.00)であれば同じ音量で音を出すことになります。
アナログであれば傾きが大きければ大きいほど、大きな音量で音を出すという設定になります。

 

ただボタンやスティックを使って音を出すというシステムを作るだけでこれだけ頭をつかうとは思っていませんでした。


ゲーム1本を作るのに、何年もかかるのには納得ですね。

 

ゲームのバージョンアップも正直わずらわしさを感じていましたが、ゲームをより快適に遊べるようにするには必須なんだなと実感できます。

 

まとめ

例えばゼルダの伝説なら

Yを押す→リンクが剣を振る

 

ZLを押す AND 左スティックを下に倒す AND Xを押す→バク転

というような入力-出力の関係がたくさんあわさってゲームが出来てるわけですね。

 

こういったゲームの裏側で行われている処理を、ちょっとだけのぞくことができますし、それを活用して自分で簡易的ではありますがプログラミングもできるわけです。

 

これさえあればプログラミングは完璧というわけではありませんが、プログラミングの基礎的な考え方をインプットするにはいいソフトですね。

 

小さい頃にこれやりたかったな~。

 

プログラミングを学校で教えるなら、下手にプログラミングを理解してない教師に教えさせるぐらいなら、これを1人1個配って遊ばせてたほうがいいんじゃないかな?

 

そう思えるぐらいのソフトです。