最終更新日:

はじめてゲームプログラミングのゲームID『マリオピンボール』の作り方

はじめてゲームプログラミングの自作ゲームID『マリオピンボール』の作り方を解説。
マリオピンボールの特徴、作品のノードンの組み合わせによる作り方など詳細に載せてます。
ステージが切り替わったり、独自のルールを付けてオリジナルのピンボールを作ろう!


ゲームID『マリオピンボール』の概要

はじめてゲームプログラミングのゲームID『マリオピンボール』のPR画像
タイトル マリオ・ピンボール
ゲームID G 001 BNV 6Y4
ジャンル テーブルゲーム
プレイ人数 1人

ゲームの説明書

マリオピンボールの遊び方・球を敵にぶつけてスコアを稼ぐ

ピンボールは実機と同じように、基本的には左右のフリッパーで球を弾いて、
ターゲットとなる敵にヒットさせてスコアを稼ぐゲームです。
スコアが『9999』になると、ゲームを攻略したことになります。


球が下側の土管のエリアまで落ちてしまうと、スコアが減点される。
フリッパーで球を弾いたり、マリオジャンプを活かして、球が落ちないように操作します。
尚、スコアが『-500』になるとゲームオーバー。


マリオピンボールの遊び方・ハテナブロックに球をヒットさせてボーナスを狙え

敵から得られるスコアは少ない。
左右に設置されたハテナブロックに球をヒットさせると、画面下部の左右に、
ヒットさせた回数分の球が表示されます。


その球は自動的に落下して、スターのところまでたどり着ければボーナススコアを得れる。
しかし、道中ではノコノコが球の進行を妨害してくるので、
スターまでたどり着けれるかは運要素となります。
下手な鉄砲も数撃ちゃ当たるので、積極的にハテナブロックを狙うといい。


対応ボタン 内容
L/R 左・右フリッパー
ZL/ZR 左・右フリッパー
(ステージ3で使用)
B マリオ・ジャンプ
A 球が微妙に横へ移動する
X リトライ
Y ゲームスタート

※Aボタンの使い方は、たまに敵やハテナブロックの上に球が乗り上げて、
停止してしまうことがあります。そういうときにAボタンを押す。



マリオピンボールの作り方の大まかな解説

ゲームID『マリオピンボール』のプログラム画面の説明

詳細はゲームID『G 001 BNV 6Y4』でダウンロードして確認してください

■内容
  1. タイトル画面の演出
  2. ピンボールの筐体
  3. 筐体横の演出、スコア&操作説明
  4. 球の設定
  5. フリッパーの設定
  6. 土管ワープ、マリオジャンプの設定
  7. スコア計算、ステージ移行の判定
  8. ステージ1
  9. ステージ2
  10. ステージ2の壁紙
  11. ステージ3


1:タイトル画面の演出

タイトル画面のプログラム

タイトル画面は、4枚の直方体(板ポリゴン)をゲーム画面前に並べたものに、
テクスチャを貼って表現している。板ポリゴンはそれぞれ連結させておけば、
1枚だけピンボールの筐体前に設置することで、筐体前がごちゃごちゃしないで済む。
その他、ワールドノードンの設置、Xボタンでリトライできるようしてます。


あとはYボタン(ゲームスタート)を押したときに、板ポリゴンを破壊するように組んでいる。
球の下には見えない足場も設置しておき、Yボタンを押すと破壊するようにしてます。
これはゲームを開始したときに、まだタイトル画面表示中なのに、
勝手に球が落下しないようにするためのもの。


2:ピンボールの筐体

ピンボールの筐体のプログラム

普通のピンボールゲームだとつまらないので、一定スコアに達するとステージの変更、
およびスターのボーナススコアを加えている。


壁紙を何枚も重ねているので、それらを選択するのが案外大変だったりします。
こういったワンステージの切り替え型のゲームを作るなら、
いきなりステージ3から作り初めて、最後にステージ1を作る順序で制作した方が作りやすいので、
最初からある程度どうするか考えてから作ったほうがいい。


あとメイン画面には、ノードンやワイヤーが大量に集まるものなので、
完成度が増すほど見づらくなる。
できるだけ『モノをワープ』や『ワイヤーワープ』を使用して、スッキリさせるようにした。


ハテナブロックのギミックは、左側はハコ+さわっているセンサーに触れると、
ボーナスエリアに仕込んだモノを発射ノードンが、球を撃つように組んでます。
右側はサイコロ+さわっているセンサーに分けており、
それぞれ直方体にテクスチャを貼って上から被せてます。


3:筐体横の演出、スコア&操作説明

筐体サイドもスコアによって壁紙が切り替わるように演出。
縦長の筐体だと両サイドにスペースができるので、そこに操作説明やらスコアを設置して、
無駄のないスペースの使い方をした。


4:球の設定

球に対してモノが衝突したときのエフェクト、効果音再生、
円柱に当たったときにスコア+の設定などをしている。


一つのモノに連結できるワイヤーの本数は8本までなので、
さわっているセンサーなどは、球側で設定するか、モノ側で個々に設定するか
少し考えてから作ったほうが良いと思った。


5:フリッパーの設定

フリッパーのプログラム

フリッパーは2つの直方体の棒をヒンジれんけつで繋いで、
ボタンを押したときに定数を出力させて、フリッパーがZ軸の角度へ曲がるように設定。
あとは球にヒットしたときに効果音を再生したり、振動を起こすようにしている。


6:土管ワープ、マリオジャンプの設定

土管ワープとマリオジャンプの設定画像

土管の部分は、まず球が落下したときに、上側にある土管へワープするようにしている。
そしてワープする前に、さわっているセンサーに球が触れると、
スコアが減点+効果音再生のプログラムを組んでます。


Bボタンのマリオジャンプは、Bボタンを押したときにヒトがジャンプしてます。
ヒトとマリオのテクスチャを貼った直方体を連結させて、
ヒトの頭上に直方体がくるようにしている。


あとはヒトが落下しないように、動かない足場を設置してます。
最後にマリオが土管から登場するように、土管のテクスチャを貼った直方体を被せている。


7:スコア計算、ステージ移行の判定

ピンボールのスコアと、ステージを移行させるためのプログラムです。
詳細は以下で解説してます。


8~11:ステージ1~3

各ステージのプログラム

ステージ1以外は一定スコアに達したときに、『モノをワープ』や『ワイヤーワープ』を使用して、
敵やギミックなどをワープさせてます。また前ステージに登場する敵は、
新しいステージに突入した際に破壊するようにプログラムしている。


モノを連結した状態でワープさせれば、連結させたモノも一気にワープできるので、
そこら辺は見えない直方体で連結させてワープさせるなど工夫することで、
ワープの使用数を減らしたりできます。


あとは動かない敵だけ配置してると退屈なゲームになりがちなので、
敵がスライド移動したり、炎の棒が回転したりする簡単なプログラムを組んでます。



ピンボールの作り方の手順

ピンボールの筐体部分のプログラム

まずピンボールは、巨大な箱を直方体で作って、
あとは球とフリッパーとターゲットを配置してしまえば完成するもの。
なので、ピンボールの筐体を作るのは案外簡単ですが、
テクスチャを描いてたりする時間のほうが長かったという印象です。


フリッパーで球を弾くと、手前(-Z方向)へ球が飛んでしまうことがあるので、
透明な板ポリゴンを用意してフタをしておくのがポイントになります。



スコア計算、ステージ移行の判定のプログラム
■内容
  1. 土管のさわっているセンサーに触れたときのスコア減点
  2. スコア『-500』でゲームオーバー&自動リトライ
  3. ステージ1のBGMや重力
  4. ステージ2になったときに、BGMや重力の変更処理
  5. ステージ3になったときに、BGMや重力の変更処理
  6. スコア『9999』になったときのエフェクト発生&自動リトライ

今回は「ワンシーンでステージが移行するときの作り方をどうしたらいいのか?」
をメインに考えて作っていたこともあり、
メインプログラムの処理は、スコアの増減によるステージ移行で制御してます。


新しいフラグが立ったら、前のフラグは『オフ』にしておく必要があり、
ただ単に定数と比較してBGMや重力を変更する方法だと、
新しいステージに入ったときに、前のステージのBGMが一緒に流れたり、
または重力が加算されたりするので、フラグノードンを使ってそこをコントロールしてます。


定数に関しては1000が上限のようなので、
けいさんノードンで『+』させれば、合算の値として出力してくれます。



ゲーム作りのフローチャート

こういった一連の流れを作るのが苦手な方は、まずフローチャートを作ってから、
どう制御したらいいのか考えると作りやすいかもしれません。