ゲームをきちんと完成させる方法

ゲームを開発しようと意気込んで始めたものの開発の難しさに気づき、漠然として広大な完成イメージに全く近づくことができずに諦めてしまう。。。っていうことが世間のあちらこちらで起きていると思われます。

正直、ゲーム作りって完成させることが難しい。特に今まで何かを作るっていう経験をしたことがない人間には夢だけが広がり過ぎてて、現実を知った瞬間に一気に心が折れてしまうというのは当然の現象だと思う。

料理で考えてみよう

料理したことありますか?なに作れますか?

スマートな方ならもうすでに私の言いたいことは理解していると思いますが、まともに料理したことない人間がうまい飯なんて作れねーんだよ!!カーッ(゚Д゚≡゚д゚)、ペッ

おっと、ちょっと本心が漏れてしまいましたがそういうことです(`・ω・´)

出来ないんですよ。出来ないっていうことを知る。

そう、みんな出来ないところから始まるんです。そして少しずつ出来るようになっていく。そういうもんだということを知ることがまず大事です。

最初にクリア条件を作る

さて、いざゲーム開発を始めたらゲームのクリア条件を先に作ってしまいます。「走ってゴールまで行く」でもいいし「敵を全滅させる」でもいいし「アイテムを全部取る」なんかでもいい、とにかく最初にクリアの条件を決めておきます。そしてステージクリア(ゲームクリア)のシーンを作ってしまいます。

おわかりいただけますでしょうか?

これでゲームは完成してるんですよ(`・ω・´)

「敵を全滅させる」が条件ならとりあえず敵を1匹画面に出しといてそいつを倒せばクリアになります。完成です。感動です(´;ω;`)

 

…えぇ、言いたいことはわかります。

しかし、これで夢半ばで開発がとん挫しようともゲームは完成させられます。

 

個人的な話ですが私ははっきりしたゲームの内容を決めずなんとなく作り始め、結果、目的のわからないクリアも出来ない謎の未完の大作(?)をいくつも作ってしまいました。それらを試作と思えるならいいですが、ゲームとして完成させたいと思って開発していると心がやられます(;´Д`)

作りたいゲームのイメージはしっかり作る

結局作りたいものが何かはっきりしているのか?っていうことが一番大事です。クリア条件を先に作るのもそのためです。

「俺はマリオやロックマンを超えるすごいアクションゲームを作る!!」

みたいな壮大だけどぼやけたイメージだと完成しないです。

「マリオみたいなゲーム作りたいから、手始めにゴールまで走るゲーム作ってみよう!!」

最初はこれくらいでいいです。そしてこの内容でできる限りはっきりとしたイメージを作ります。「まっすぐの道だけどたまにウ〇コとか落ちててジャンプで避けながら進む」みたいな感じでね(そんなゲームどっかにあったなぁ。。)

まとめ

偉そうに書きましたが半分は自分への戒めです(^^;)

ただ、本当にイメージは大事だと思います。強くはっきりイメージがあればあるほど自分の望んだものが出来上がる可能性は確実に高くなります。

ゲームに限らず、料理でも絵でも音楽でもファッションでも人生でもイメージが大事です。はっきりしたイメージであればあるほど達成できる可能性が上がります。

人生はイメージ

そんな言葉をどっかで聞いたような。。

 

秘密警察ギャボリン第1話

今回は「秘密警察ギャボリン第1話」の紹介です。ギャボリンは私が考えたおっさんヒーローです。全然カッコ良くないし、強そうでもない。。だけどなんだかとても愛らしい。そんなおっさんヒーローのアホな物語の記念すべき第一回目です

ギャボリンとは?

ギャボリンは正義の味方である。しかし、その正体は誰も知らない。唯一わかっていることは「おっさん」だということ。

ギャボリンに変身すると強いらしい。具体的にはわからないがとにかく強い、ということになっている。

ギャボリンのヒーロースーツには秘密がいっぱい隠されている。見た目が毎回違うのはどうやらヒーロースーツの影響らしいぞ(大ウソ)

「体は子供、頭脳はアレ」などっかのマンガの主人公みたいに事件に遭遇するらしい。そのたびに熱い心のギャボリンは戦いにでる。

「男とはそういうものさ・・」と彼の背中は語っている。。

ゲームのあらすじ

平和な生活を送る市民のお茶の間の主役であるテレビの電波が突然ジャックされた!!

謎のテロリストによる「爆弾を仕掛けた」宣言

突然の恐怖にパニックとなった東京を救うべく一人の男が立ち上がる!

 行け!ギャボリン!

ギャボリンの孤独な闘いが今はじまる!!パパラパラー(テーマソング的な何か)

ゲームの遊び方

テロリストが仕掛けた時限装置を破壊することが目的です。時限装置の周りには防衛装置が配備されており近づくことが出来なくなっています。なので動いている防衛装置の合間を狙って時限装置を撃破しましょう!!

ゲームは全部で39ステージあります。最後の数ステージの難易度はけっこう高いので頑張ってください。確実に当てられるタイミングがあるのでそれを見つけてください。

39ステージクリアすると感動のエンディングが待っています!!

制作のはなし

このゲームは開発初期に作ったタイミング射的をベースにしています。

ゲームの基本部分はタイミング射的のものをそのまま使っています。なのでこれも「えぴそーど0」のときと同様イベントシーンと音を付け加えて完成させました。

タイミング射的に関しては影響を受けたゲームがあります。

このcore ballのようなシンプルで面白いゲームができないだろうか?と考えて作ったものがタイミング射的でした。

実際タイミング射的自体もシンプルで、個人的にはこれだけでもアプリとして開発すれば売れるんじゃね?と思いました。ただ、これはステージを作るのが結構大変で。。(;´・ω・)それで途中で放置してたんです(^^;)

それでえぴそーど0を作ったあと、これもストーリーを加えて復活させてやろう!、ということになりました。

プログラムに関して

プログラム的に苦労した点としては、各ステージの玉の動きをどう扱うか?っていうところだったかと思います。単純に連想配列を使ってパターンを管理するようにしましたがこの辺のデータの扱い方については勉強が必要だと思いました。

その後のゲームの開発でも経験してわかってきたことなんですが、こういったデータの設計や管理がゲーム制作では重要になってくるようです。

作った感想

タイミング射的は自分の作ったゲームの中では一番よくできているゲームだと思っています。それをベースにして作ったこのゲームは間違いなく今の時点の私の最高傑作だと思います。

ついでに言うとイベントシーンの絵も無駄に力が入っていて、特にエンディング部分は結構時間をかけて丁寧に書きました。そういった面でも愛着のあるゲームです

えぴそーど0【自作ゲーム紹介】

えぴそーど0は私のゲーム制作の方向性を示してくれたゲームです。ゲーム自体は以前作ったSTG-PROTOTYPEと全く同じ内容なんですが、そこにくだらないストーリーを足して一本のゲームとして完成させることができました。そんなえぴそーど0の紹介です。

ゲーム内容

「なぞの宇宙人ぷりぷり星人による地球への攻撃で人類は滅亡の危機に瀕していた。もはや人類は滅亡するしかないのか?

そう誰もが諦めかけていたとき、一人の少年が現れた!!」

っていうアホなストーリーが付いていますが、ゲームの内容としては平凡なシューティングゲームです。これと言って特筆するところもない( ´艸`)

しかし、平凡なシューティングゲームにアホなストーリーをくっつけることによってゲームとして一つの作品っぽくさせることができました。

制作の話

このゲームはenchant.jsで一番最初に作ったSTGプロトタイプをベースにしています。シューティングゲーム部分はSTGプロトタイプをそのまま使い、イベントシーンを追加し、まだ実装していなかったBGM再生や効果音も付けて完成させたゲームです。

STGプロトタイプ自体は基本的なシューティングゲームで、昔専門学校で習ったことなどを思い出しながら何となしに作り上げました。なのでプログラムはすごく汚いです(-_-;)

プログラム的にちょっと困ったところは敵が弾を自機の方に向けて発射するようにするところや、ボスの周りを飛ぶザコの部分とかだったと思います。sin、cosとか使うやつですね。。それについての記事もそのうち書こうかな。

また、ストーリーを演出するためにこの時初めて効果音とBGMを入れました。音の再生自体はそんなに難しくはないですがループにはちょっと工夫が必要でした。

enchant.jsで効果音を鳴らす

enchant.jsでのBGMの再生の方法

イベントシーンについて

このゲームで一番悩んだのはイベントシーンでした。ゲーム自体はできていたのでそこにイベントシーンを加えるだけだったんですが、一体どういう風に作ったらいいもんだろうか?とちょっと悩みました。それでとりあえず紙芝居的な感じで作ってみようというなりました。

内容は単純に一つの画面にセリフが付く感じで、それを切り替える感じでやってみました。そこで再帰関数というものを初めて使いました。関数の中から自分自身を呼び出すっていう関数です。同じ関数を話のページを進めながら呼び出すっていう感じでやってみました。(再帰関数についてはまた記事にします)

あ、そういえばこれにはテキストの表示でけっこう苦労したんだった!!enchant.jsでは改行がうまくできなくて自分で実装する必要がありました。(それについてもまた記事にします)

作った感想

完成度としては素人レベルのショボいゲームですが、作った本人としては初めて最初から終わりまであるゲームを作り上げた作品なのでとても気に入っています。ゲームを一つ作り上げたということはとても自信になりました。

不要な要素は削除しよう

enchantjs講座

enchant.jsでは画面に追加した要素はプログラムの変数とは別の存在になっているようで、削除の手続きをしてあげないと消えないようです。少量だと問題ないですが多くなると実行処理の負担になってたりします。なので不要になったものはきちんと削除してあげましょう。

とはいえ、例えば敵キャラを倒したりするたびにそのキャラの要素を削除する必要はないです。敵キャラなどは状態を「死」にしておいて画面外に放りだしておけばOKです。要素を削除したり新たに生成するのは結構負担が大きいようなのでメインループ内では基本使わない方が良いと思います。

要素の削除が必要になってくるのはシーンの切り替えなどの時です。例えば会話シーンなどを作ってゲーム画面に出した後にその要素をちゃんと削除せずにいるとずっとその要素は残り続けます。そしてまた別の会話シーンで要素を生成して、また別の会話シーンで・・とやっていると使った要素が蓄積されてそのうち処理が重くなってきます。

なのでシーン切り替えの時はいらなくなったシーンをしっかり削除しましょう。

上記の関数をシーンを切り替える際に消したいシーンを引数にして呼び出してやります。これでシーン内の子要素はすべて削除できます。そして最後に

シーン自体も削除してやれば完了です。

こんな感じでシーン切り替えの際にシーンの子要素をすべて削除してシーンもその後に消してやればきれいさっぱり消えてなくなってくれます。