【プチコン4講座】シューティングゲームのやさしい作り方

プチコン4

プチコン4 シューティングゲーム 作り方

こんにちは。継続の錬金術士なおキーヌです。

ブログ毎日更新は208日目になります。

プチコン4RPG講座は一旦完結しましたが、バトルシーンは消化試合なので気分転換に新たな講座を始めようと思います。

タイトルにもある通り、シューティングゲームの作り方講座を始めていこうと思います。

実のところ、私自身がシューティングゲームが苦手でぶっちゃけ正直好きじゃないので
基本的に作ろうとも思わなかったんですが、過去に友人が

「ゲーム作りにおいてSTGは基本的なプロセスが詰まっている」

と言ってたのを思い出したのでゲームクリエイターを名乗るからには食わず嫌いはいけないなと思い、
今回STG制作+制作講座にチャレンジしていこうと思いました。

プチコン4RPG講座では文字でだらだらと解説をしていたので、
今回の講座は以下の構成で進めていきます。

  • キャラクターの対話形式で進行
  • コードを実際に書いてみる
  • コードの解説
  • キャラクターの対話形式で感想
  • 今回やったことのまとめ

キャラクター同士の対話形式がうっとうしかったら読み飛ばしても大丈夫です。

基本的には

コードを書く

コードの解説をみる

まとめをみてやったことを思い返す。

の3つで完結します。

対話形式の導入は実験的なものなのでお許しください。
(なるべく長くなる茶番チックなのは排除しますゆえ……)

冒頭が長くなりましたので早速始めていきましょう。

それではプチコン4でSTG作りその第1回目始めましょう。

  1. ゲームプログラミングを始めよう
  2. 作るゲームのジャンルを決める
  3. とりあえず自機を出してみる

ゲームプログラミングを始めよう

トモカズー!来たぞー!

やあリキくん、いらっしゃい。……ってあれ?キミはもしかして……マユミちゃん?

トモくん、やっほー!お久しぶり!

さっき偶然バッタリ会ってな、トモカズのところにゲームプログラミングを教えてもらうって言ったら一緒に教えてほしいってよ。

へぇ、マユミちゃんもプログラミングやるんだ。リキ君と同じでスポーツバ……万能なイメージが強かったんだけど……

スポーツやってたのは中学までだよ。高校に行ってからは勉強ばっかりしてたからどっちかというと理系寄り?

マユミが理系……?嘘だろ……

何よその反応!失礼しちゃうわね!

まぁまぁ二人とも、とりあえず上がってよ。

ゲームプログラミングの始め方

それじゃあ、さっそく始めようと思うけどその前にちょっとマユミちゃんに聞いていいかな?

うん。なぁに?

プログラミング歴はある?それによって進め方を変えなきゃいけないからさ。

ううん、まったくないよ。

理系なのに無いのかよ!俺でもあるぜ!

嘘……リキ以下なの……?

おい、そんな露骨に絶望そうな顔すんなよ!

リキ君も最近始めたばっかりでしょ。じゃあすごく簡単なところから始めていくね。

まぁな(笑) で、今日は言われた通りNintendo Switchにプチコン4を買って入れて持ってきたぜ。

プチコン4?

ゲーム機でプログラミングができるソフトだよ。難しいことをしなくてもすぐにゲーム作りが始められるんだ。

プチコン4はインストール前提の記事となっていますので、
対話形式でやっていると長くなるためプチコン4導入部分はカットです(笑)

ゲームプログラミングを始めたいけどどうしていいかわからない。

そんな時はニンテンドーSwitchでプチコン4だ!

ゲーム制作に必要なものは全て入っているからゲームプログラミングに集中できるのがオススメです。

もしまだ買ってない人はプチコン4を買ってぜひゲームプログラミングにチャレンジしてみてください!

なるほどね。Switchなら私も持ってるわよ!帰ったら買ってみるわ!

それじゃあ今日はボクのSwitch使ってくれていいよ。

わぁ、リキくんやっさしー!ありがとー!

作るゲームのジャンルを決める

じゃあ始める前に作るゲームのジャンルを決めようか。二人とも何か作りたいゲームはある?

俺はこう、銃でバンバンって撃って敵を倒していくゲームを作りてぇな!

私は障害物に当たらないように進んでいく避けゲーが好き!

リキくんが想像してるのは多分3DゲームのFPSの部類だと思うんだけど、正直ちょっと難易度が高いしプチコンで再現するには厳しいかな。できなくはないんだけど……
マユミちゃんはスマホでよくあるタップしてして土管と土管の間をくぐっていくような感じのゲームかな?

そ!通勤中、私ずっとあれやってて乗り過ごしたことあるんだ(笑)

なるほどなるほど……そうだね……じゃあこうしようか。STG、つまりスクロールタイプのシューティングゲームを作ってみよう。

スクロールタイプのシューティングって、よくゲーセンのレトロコーナーとかにあるあれか?

そうだね。横スクロールと縦スクロールで大体分かれるんだけど、
シューティングならリキ君の銃を撃つっていう要望にも応えられるし、マユミちゃんの避けゲー要素も満たせるからちょうどいいかなって。

シューティングゲームってあの弾が画面いっぱいに飛んでくるゲームでしょ?私あんなのできないわ。

多分それは弾幕シューティングゲームの部類だね。今回はもっとシンプルなシューティングゲームを作るよ。弾幕ゲーは人気があるけど人を選ぶからね。

シューティングと言っても様々なゲームがあります。

レトロ枠で言えばインベーダーのような1画面完結のシューティングだったり、ゼビウスやツインビーのような縦スクロールだったり、
グラディウスやR-TYPEのような横スクロールですね。

現代ではシューティングゲームといえばFPSやTPSがシューティング枠としてメインになっていますね。

プチコンは基本的に3Dは得意ではないので、レトロ風なシューティングゲームを作っていきます。

とりあえず自機を出してみる

まずは自機、つまりプレイヤーが操作するキャラクターを出そうか。プチコン4を起動したら右下の「プログラムを作る」を選んでね。

プチコン4 シューティングゲーム 表示結果1

うおっ、いきなり黒い画面がでたぞ!

これがハッカーなのね……

(ボケ二人か……疲れるな……)そ、それじゃあ始めるよ。joyconの「X」ボタンかキーボードのF4を押してみて。

なんか画面が変わったわね。まるでパソコンの画面みたい。

ココにプログラムを打ち込んでいくんだ。早速キャラクターを表示させてみよう!

よしきた!実践派の俺に任せろ!

次のコードを打ちこんでね。

' がめん ぜんけし
ACLS

' スプライト じゅんび
SPSET 0, 352
' スプライト いどう
SPOFS 0, 30, 100

トモくん、打ち込んだよ?

プチコン4 シューティングゲーム 表示結果2

二人ともいけたかな?それじゃあJoyConの+を押すかキーボードのF5を押してね

なんかOK ってでたぞ。

後なんかちっこい車みたいなのが出たね。

プチコン4 シューティングゲーム 表示結果3

おめでとう二人とも!ゲームプログラマーの門を開いたよ!

??どういうことだ?

ゲーム作っているっていう感覚はまだないわね。

ううん、立派なもんだよ。今まで出来てなかったことが出来たんだよ?凄いじゃないか!

なんかすっごいバカにされてる感じがするんだけど……

あぁ、同感だな

や、やだなぁ!素直な感想だよ!それじゃあ何をやっているか説明するね。もう一度さっきのコードを張るよ。

コード解説

' がめん ぜんけし
ACLS

' スプライト じゅんび
SPSET 0, 352
' スプライト いどう
SPOFS 0, 30, 100
ACLS

文字・背景・スプライト(キャラクター等)を全部画面から消してしまう優れもの!
プログラムの最初にこれを書いておけば表示に邪魔なものを消せます!

SPSET スプライト管理番号, スプライト定義番号

スプライトとは主にキャラクターや動かしたりしたい画像を表示するための仕組みです。
主にプレイヤー(自機)や敵、弾等を表示するために使います。

SPSETとはスプライトセッティングの略でスプライトを使いたいときに使う命令になります。

深く説明すると記事一つは余裕なので今はキャラクターを出すための命令と思っていてください。

スプライト管理番号とは

プチコン4ではスプライトを0~4095の番号を付けて管理します。今回は0番目にしました。
プログラミングにおいて、数字は基本的に0から始まるのを心がけてください。

スプライト定義番号

スプライト定義番号とは、プチコン4で最初から設定されている画像に割り振られている番号のことです。
スプライト管理番号の後ろに「カンマ」を付けて、特定の数字を打ち込むと画像を指定することになります。

この命令は何をしているかの要約

スプライトを用意しろ! お前は番号0番目な! そして352番の服を着ろ!

という感じで命令を与えてやります。そうするとプログラム側で準備してくれます。

スプライト定義番号はプチコン4に入っている「スマイルツール1」から確認することが出来ます。

プチコン4 シューティングゲーム 表示結果4

スマイルツール1を起動したら効果音やBGMを聞くことが出来るので、その時にRを押していくと画像表示の状態になります。

プチコン4 シューティングゲーム 表示結果5

名前の左に表示されている番号がスプライトの定義番号になります。

SPOFS スプライト管理番号, X座標(横軸位置), Y座標(縦軸位置)

スプライトオフセットの略です。SPSETで準備したスプライト番号を指定して、
X座標とY座標を指定してやるとその位置に移動してくれます。スプライト管理番号の説明は省略します。

X座標

プチコンは基本2次元軸でゲームを表示します。数学で言えば一次関数とまったく同じですね。

一次関数なんて忘れたよ……って人は心配しないでください!計算は全部プログラムがやってくれます。

Y座標

X座標を決めたら次はY座標を決めてやると、指定の位置に動いてくれます。XとYどちらか無い状態だとプログラムに怒られるので気を付けてください。

このように新しく出てきた命令に関しては説明をはさんでいきます。

説明が難しいタイプの命令は、軽く説明するのであとはプチコン4公式リファレンスを見てもらった方が理解しやすくなると思います。

今日はココまでだよ。

え?もう終わりなのか!?

画像を出しただけだね。

一気に詰め込んでも覚えられないでしょ?

またバカにしやがって!……と言いたいところだがちょっと頭痛くなってきたぞ。

しょ、しょうがないわね……リキに合わせて私も今日はここまでにしておくわ!

それじゃあプチコン4で遊んでみる?

え?どういうこと?これってプログラミングソフトじゃないの?

そうだよ。でも二人とも作ってるのってゲームだよね?

まだゲームと呼べるレベルではないけどな。

ゲームが作れるってことはゲームが出来るってことだよ。

もしかして、ネットワークを使って他の人が作ったゲームを楽しめるとか!?

流石マユミちゃん。その通りだよ。インターネットを通じて公開されているゲームをダウンロードして遊ぶことも出来るんだ。
そして遊ぶだけではなくてどうやって作っているか見ることが出来るんだ。今日二人が書いたコードの何百倍ものコードだから読むだけで数日かかると思うけど。

でもそうなったら改造とかもできちゃうんじゃないのか?著作権とかでやばくねぇかそれ

もちろん、著作権は作者にあるよ。でもプチコンっていうタイトルはそういうのも含めてコンセプトにしているゲームなんだ。遊ぶ・作る・学ぶ。それが2500円(本体代除く)で出来るって考えると凄くない?

そうね。プログラミング学習塾とかって結構良いお金取られちゃうし2500円で買い切りなんてすっごいお得かも。ただ一人で学ばなきゃいけないのは私たち初心者にとってはハードル高いかも……

一人じゃないだろ!俺もいるしトモカズっていうプログラミング大先生もいるじゃないか!な、先生!

先生だなんてたいそうな……

まんざらでもなさそうな顔ねトモくん(笑)
でも私たちも、もういい大人なんだからタダで技術を教えてもらうのってなんか悪いわね。

き、気にしないでいいよ……ボクも友達にプログラミングを覚えてもらえればプログラミング仲間が出来て嬉しいし。

技術の安売りはしちゃだめよ。

うーん……じゃあこういうのはどう?二人がゲームを作ってそれをボクにプレゼントしてくれるってのは。

ウッ……ガンバリマス……

きょ、今日のところはメシでも行こうぜ!トモカズ!腹へらねえぇか?何喰いてぇ!?

う、うん。そうだね。じゃあ……

シューティングゲーム作り講座第1回まとめ

  • プログラムを始める前に「ACLS」で画面を全消しする
  • 「SPSSET」でスプライトという仕組みでプレイヤーを表示する準備をする
  • 「SPOFS」でスプライトを移動させる命令でプレイヤーの座標を変更する

第1回目ということで凄く簡単な内容になりましたが、問題なくついてこれているでしょうか?

次回は「SPOFS」を使ってプレイヤーを動かしてみます。

ちょっと講座自体がスローペースになるかもしれませんが、
しっかりとプログラミングを覚えてほしいので前回覚えたことを次回復習するというパターンで進めます。

講座の最後に次回やることも伝えるので、予習しておいてもらえればより理解が深まると思ういます。

それでは。