- ランダムノードンをどのように使えるかイメージできていないあなた
- ランダム要素をもったゲームを作りたいあなた
- ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子
- 入力された数値が0か、0以外か判断して出力する
- 1/60秒前の数値から変わったかどうかを判断して出力する
お疲れ様です。YUmarunosuke(ゆうまるのすけ @YUmaru16061307)です。
「ナビつき!つくってわかる はじめてゲームプログラミング」(はじプロ)でゲームを作ろうと頑張っているお子さんも多いでしょう。
ナビ付きレッスンをクリアしたうえでゲームを作っていくと、

クリアのしかたを覚えちゃったら飽きちゃうよね・・・。

毎回違う仕掛けを作るにはどうすればいいのかな?
と、せっかく作ったゲームを何回も楽しんでもらいたい、と欲がでてくるのではないでしょうか?
今回は、「ナビつき!つくってわかる はじめてゲームプログラミング」(はじプロ)の”ランダムノードン”の解説をします。
過去に私が作ったゲームをご紹介しています。
ぜひ一度ご覧になってから、あるいは何度かプレイしてから読んでいただければ、より理解が深まります。
私がつくったゲームには、1〜4の数字がかかれたパネルを順番にタッチする、というミニゲームがあります。
ランダムノードンを使わないと、1〜4のパネルは毎回同じ場所に出現してしまいます。
押す場所がわかってしまっているとミスのしようがないので、ゲームとして飽きてしまうと思いませんか?
また、皆さんは『ドラゴンクエスト』、『ファイナルファンタジー』、『ポケットモンスター』をプレイしたことはありますか?
どのゲームでも冒険中に敵が出てきますが、皆さんは敵が出現するタイミングを100%知ることができるでしょうか?
おそらく大半のかたは知ることができないでしょう。
これらのゲームでは、敵が出てくるタイミングがランダムに決まる、いわゆる”ランダムエンカウント”と呼ばれる仕組みが使われています。
この仕組みがあることで、プレイヤーに予測をさせないように工夫しているのですね。
この記事を読めば、ランダム要素をもった仕組みをご自身のゲームに組み込むことができます。
ランダムノードンとは?好き勝手に数字を出力する気まぐれな子
ランダムノードンの役割を覚えよう
ランダムノードンの特徴を一言でいうと、
ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子
です。身近なもので例えると、
ランダムノードン = ビンゴゲームのガラガラ
と覚えてもらえたら、とてもイメージしやすいと思います。

(画像引用元:https://www.nintendo.co.jp/switch/awuxa/reference/contents/Pages/Page_810688278.html)
ランダムノードンの役割は、ざっくり2つあります。
- あらかじめ決められた数字の範囲から
- ランダムに1つだけ出力する
ランダムノードンを使うために覚えること
ランダムノードンには、
- 入力ポートが2つ
- 出力ポートが1つ
あります。
- 「?」(はてな)
- 0が入力された場合:出力ポートから何も出力しない
- 0以外が入力された場合:出力ポートからあらかじめ決められた範囲の数字をランダムに出力する
- リセット
- 0が入力された場合:何もしない
- 0以外が入力された場合:0を出力する(=リセットする)
- あらかじめ決められた範囲の数字をランダムに出力する
- 出力したい範囲は、設定>出力はんい で設定することができる
- 出力する範囲=『ビンゴのガラガラの中に、1からいくつまでの数字が書かれた玉を入れるか?』
(設定画像)
なお、設定画面のなかで理解が難しいポイントとして、『数を更新するタイミング』があります。
- 0から変わったしゅんかん:入力ポート「?」に入る数値が0から変わった瞬間”だけ”、出力ポートからランダムに出力する
- 0以外のときずっと:入力ポート「?」に入る数値が0でないときは”ずっと”、出力ポートからランダムに出力する
ここで、はじプロのルールについて復習です。
過去記事:【はじプロ】カウンターノードンと時間表示を攻略:つまづきやすいポイントを解説してみた で説明していますが、ノードンガレージで作られたプログラムは、1/60秒ごとに処理を行っています。
ランダムノードンを例にとると、次のような処理が1/60秒ごとに行われています。つまり、1秒間に60回行われているのです。
- ランダムノードンの入力ポートにつながっているノードンから、入力を受け取る。
- 入力された数値が 0か?0以外か? 判断する。
- 0以外の数値だったら、決められた範囲の数字をランダムに選ぶ。
- 出力ポートから次のノードンへ選んだ数字を送る。
この説明と、『数を更新するタイミング』とどんな関係性があるのか、定数ノードン&ランダムノードン&数つきモノノードンをつなげたプログラムで確認してみましょう。
確認する前に、どんな違いが見られるようになるか、一度ご自身で考えてみてくださいね。
・
・
・
- 0から変わったしゅんかん:入力ポート「?」に入る数値が0から変わった瞬間”だけ”、出力ポートからランダムに出力する
→ 【出力結果】ランダムな数値が1つ表示され、いつまでたっても表示される数値は変わらない。 - 0以外のときずっと:入力ポート「?」に入る数値が0でないときは”ずっと”、出力ポートからランダムに出力する
→ 【出力結果】ランダムな数値が1秒間の60個表示され、目で追うことができないほど表示される数値が変わり続ける。
実際のゲーム画面で見てみましょう。
(0から変わったしゅんかんに設定した場合)
(0以外のときずっとに設定した場合)
設定の違いを擬人化するように例えてみました。
0から変わったしゅんかん:ランダムな数値が1つ表示され、いつまでたっても表示される数値は変わらない。
0以外のときずっと:ランダムな数値が1秒間の60個表示され、目で追うことができないほど表示される数値が変わり続ける。
まとめ
今回は、「はじプロ」におけるランダムノードンの解説を行っていきました。
- ランダムノードン = 『好き勝手に』『数字を出力する』気まぐれな子
- 入力された数値が0か、0以外か判断して出力する
- 1/60秒前の数値から変わったかどうかを判断して出力する
今回、ランダムノードンをとりあげた理由として2つあります。
- YUmarunosuke がつくったゲームで使用しており解説したいから
- 『重複しない乱数』を見つけて感動したから
私も自身でゲームをつくっている際、発生する乱数が重複(ちょうふく・じゅうふく)してしまう問題にぶち当たりました。
そのときに調べた際に見つけたプログラムが『重複しない乱数』だったのです。
リンク:はじカミ Nintendo Switch『ナビつき! つくってわかる はじめてゲームプログラミング』のゲームID共有サイト 『重複しない乱数』
ゲームID:G 000 K88 LX6
プログラマーID:P 004 M9Y 4Y00
ランダムノードンの出力をそのまま使うのではなく、ランダムノードンの大小関係を使ってランダムな順番を生み出す、という言葉では表現しにくいしくみが考えられています。
発想が柔軟だと思って感動し、ぜひ知ってもらいたいと思ったので、まずは基礎知識として必要なランダムノードンの解説をしました。
次回はこの『重複しない乱数』の解説をしたい、と考えられています。
では、次の記事までごきげんよう。
コメント