くだらないことに本気!

稼げない個人ゲーム開発者の適当ブログ。開発日記と雑記。

連射ソルジャーの開発を振り返って

昨日新作ゲーム「連射ソルジャー」を公開しました。

wgc-cosmo.com

レトロ感たっぷりなシューティングゲームです。
オート連射はなく自力で連射するファミコン時代のシューティングゲームです。
このゲームの開発時のことを振り返ってみます。

開発開始時はネガティブだった

実はこのゲームを作るちょっと前は非常にネガティブになっていました。

これの前に作った自信作の「おしっこ忍者」が思ったほど評価されずかなり落ち込んでました。

で、そんな状態で次もアクションを作ってたんですがアイデアがしっかりまとまってなくて止まっちゃったんですよね。そしたらそこからゲーム作る元気が無くなってお蔵入りに。。 

それからあれこれ悩んだり他の事しながら「次なに作ろう」って考えてるうちに「久しぶりに本気のゲーム作ろう!!」って決めました。

本気のシューティングゲームを作りたい

2年前の春に一度本気のシューティングゲームを作りました。

www.youtube.com

このときは開発初心者からだいぶレベルアップして自分でもけっこう良いのができたと満足したんですが友達や知り合いの評価は「普通やん」みたいな「あ~はいはい、よくあるやつね」みたいな感じの反応ですごくがっくりした記憶があります。

あれ以来がっつりゲームと向き合えなくなってたんですがこのままでは腐るだけだと思ってもう一度がっつりシューティングを作る!!と決めました。

あれから2年経ってenchant.jsからpixi.jsに乗り換え、さらに技術もかなりアップしたのでもっとすごいのが作れると考えました。

レトロシューティングだけど本当は。。

シューティングゲームを作ると決めてから「どんなシューティングにする?」というのを考えました。

最近は「かわいらしさ」のあるゲームを作ってたのでその方向で考えて「はにい・いん・ざ・すかい」とか「スターパロジャー」みたいなのにしようとか思ってました。

ただ、そうするとドット絵が半端ないことになるということが分かって「いくら何でも無理」ということになりました。あんなの一人でできるわけがない。。

「自分一人でできる範囲」というのを考えるとやはり「スターソルジャー」などのファミコン初期作品くらいが妥当ということになりました。

連射で破壊する楽しさ!

ゲームを作り始めてから具体的にどういうゲームにするか考え始めました。

ただスターソルジャーのパクリゲーを作ってもしょうがないわけで、何か味というか個性というか何か際立つものが無いとまた「普通やん」と言われることになってしまう。

「何かないかな?」と考えながら作業していくうちにちょっとずつゲームが形になり始めて試遊してるうちに「どうせ連射するならめちゃくちゃ連射必要なくらい敵を出したら燃えるんでは?」という気がしてきました。

中途半端な敵の量では連射もだるくなるのでひたすら連射を強いられるくらい出してやろう、そうすれば逆に破壊するのが快感になるに違いない!と思いました。

ブラウザゲームだからミニゲームで良い

実は今回の開発中に少し気持ちが落ちたときに気分転換にかなりシンプルなパズルゲームを作りました。

で、久しぶりにパズルゲームを作ってみて「(アクションゲームなどと比較して)めっちゃ短時間で作れる」というのがちょっとびっくりでした。

考えてみれば他サイトのブラウザゲームはパズルゲームや簡単なカジュアルゲームばかり。たぶんアクションゲームなんて開発が大変すぎて割に合わないんだろうな、なんて思ってちょっと自分の方向性が間違ってるような気がしたりしてきました。

それからいろいろ考えていくうちに「だったら今回のシューティングは1ステージでOK!そのかわり死ぬほど連射させてやる!!」という案になりました。

やりすぎてスマホで処理落ち

とにかく敵をいっぱい出して破壊しまくる!!というコンセプトで作ってみたらスマホでまともに動かない(´;ω;`)

敵の数もそうだけど実はあれこれ欲張りに余計なものが実装されていて(パーティクルとか)スマホでは負荷がかかりすぎて処理落ちしてしまいました。。

仕方が無いのでパーティクルとマップの下階層はスマホでは表示しないようにしました。

ただ、たぶんマップのプログラムを大幅修正すれば処理速度が改善できそうな気がするので今後試してみたいと思ってます(修正した!マップの処理変えたらめっちゃかるくなった!)。

やりたかったことの2割

実は今回はやりたかったことの2割程度くらいしかできてません。

他のシューティングゲームで見るような多関節キャラとか巨大戦艦とかかっこいい多重スクロールとかレーザーとかまだまだやってみたいことはあるんですが、今の自分にはそれらに挑戦する元気が足りないです。

それらのやり残しは今後一つずつ挑戦しながらミニゲームを作っていこうかと考えています。

そんな感じです

なんか今回はいつも以上にまとまってないですが、まぁこんな感じでゲーム作りました。

作ってから言うのもなんですが、レトロなシューティングなんて結局どんだけ頑張っても一般的にはたぶん「あ~はいはい、よくあるやつね」っていう評価しか受けないとは思います。

でもそんなことよりも2年前から確実にレベルが上がってることが実感できたのでもう他人の評価とかどうでもいいです。わからん人にはわからんのですよ。

ステージの全貌公開してます

ステージの全貌が見れます。敵の配置も分かります。

inwan78.fanbox.cc

シンプルなソートパズルゲーム作りました

ブロックを同じ色の場所に番号順に並べるだけのシンプルなルールのパズルゲームです。

上に表示されている画像がゲームなのでこのブログ上で遊べます(クリックしてみて)。

タイムアタックはばらばらに混ぜられたブロックを奇麗にするまでの時間を競うモードです。

Google検索で出ないので遊びに来て!

こんな感じでブラウザで遊べるゲームを作ってるんですがGoogle検索ではほぼ出てきません。ゲーム関係のキーワードは個人ではもうどうにもならない次元です。

こうやって埋め込みで遊んでもらう方法もあるんですが、しかし個人ではGoogle広告(アプリみたいにゲーム内に入れる奴のブラウザゲーム版)が使えず収入になりません。結局サイトに来てもらえないと一円にもなりません(ほんと1円稼ぐのも必死ですよ)。

ぜひ私のゲームサイトに遊びに来てください(´;ω;`)

wgc-cosmo.com

やっぱ脳トレゲームがベストなのか

話は変わって、久しぶりにパズルゲームを作ったんですが、やっぱブラウザゲームはパズルゲームや脳トレゲームが向いているのかなぁ。

こういうゲームの方が好きな人はリピートするし滞在時間も長くなる。アクションゲームやシューティングゲームは好き嫌いあるだろうし、一回遊ぶとそれで終わりでリピートも少ない。

作るのは圧倒的にアクションゲームの方が大変なのにね。。(今回のゲームと比べたら2倍3倍とかじゃなく本当に桁が違うレベルでマジで大変)

だから収入を得にくいブラウザゲームはコストの低い簡易なゲームが多いんだろうね。

もうちょっとパズルゲームも作っていこうかなぁ。

でもアクションゲームの方が好きなんだよなぁ。。

f:id:inwan:20210905204622p:plain

ブラウザゲームはすごいんだぞ!!

f:id:inwan:20210806162506p:plain

私は一人でブラウザゲームを作って公開しているんですが全然アクセスが無い(´;ω;`)

 

ひょっとしてみなさんはブラウザゲームは「無料ゲーム」で検索したら一番に出てくるyahooかんたんゲームズみたいなゲームを想像してませんか?

 

しかし、技術は日々進化しているのです。ブラウザゲームも進化してるのです。

 

もうブラウザゲームだってスマホアプリに負けないくらいのゲームが遊べるんです!

カジュアルゲームだけじゃなくてアクションもシューティングも遊べるんです!!

コントローラーでも操作できるんです!!

ブラウザでも複数タッチで操作できるんです!!

スマホアプリとの差も縮まってきてるんです!!

スマホのブラウザでも60FPSでゲームできるんです!!

 

だからみんなブラウザゲーム遊んでよ。゚(゚´Д`゚)゚。

 

※ちなみにブラウザゲームはブラウザ上で動くためかなり制約があり、直接本体の機能をフルに使えるスマホアプリと圧倒的な処理能力の差があります。しかし現在はブラウザにwebGLという高速に描画できる機能がついたり、スマホ自体がパワーアップしてブラウザゲームの処理速度も上がってきてます。そこをさらに製作者がプログラムを工夫して負荷を減らしたりして普通に遊べるように頑張って作っているのです!!

 

 こんなゲーム作ってますねん

 これは2019年にenchant.jsで作ったゲームです。

クソ遅いと評判の時代遅れゲームエンジンスマホのブラウザで60FPSのシューティング作りましたのよ。

周りが「unity!unity!」言うてるなか、作りましたのよ。

www.youtube.com

PLAY ▷ 王道シューティングゲーム「コスモファイター」

 

 

これは2020年にpixi.jsってやつに乗り換えてわからないなか試行錯誤して作ったアクションゲームです。

pixi.jsのマルチタッチがiPhoneではうまくいかなかったりほんまにいろいろ苦労しながら作ったんですよ。

ゲームとしては操作方法にクセがありますがシンプルで楽しいアクションゲームで個人的にけっこう気に入ってます。

www.youtube.comPLAY ▷ 仲間を救出するアクションゲーム「コスモレスキュー」

 

そしてこいつが最新作!!

ブラウン管テレビで遊ぶファミコンのようなレトロ感を再現!!

ドット絵は良い感じにぼやけてこそドット絵!!(自分のドット絵がもっと上手ければもっとファミコン感出せるのに!!)

キーボードでもコントローラーでもバーチャルパッド(スマホ)でも操作できるのだ!!

ゲーム機買ってもらえなくてもゲームできる!!(ファミコン買ってもらえなかった恨みは一生もの)

www.youtube.comPLAY ▷ アクションシューティング「おしっこ忍者」

 

 という感じでいろいろゲームを作っております。

なのでマジで本当に遊んでくださいm(__)m

wgc-cosmo.com

おしっこ忍者の開発を振り返って

7月17日に「おしっこ忍者」という赤ふん一丁&おしっこで戦う忍者のアクションゲームを公開しました。

wgc-cosmo.com

その開発のことを振り返って適当にたらたら書いておきます。

最初のアイデア

ゲーム制作に入るときに最初にtweetしたのがこちら。

実はこういう感じに放物線を描くような武器で戦うゲームは前から作ろうと思ってて、その時は石とか何かを投げながら戦うみたいなのを考えていました。

ただね、そうすると「石ってどこから出てくるの?」という疑問がずっとあって、別にゲームだからそんなことはどうだっていいはずなんですが気になって仕方なくて「なんかないかなぁ・・?」と考えているとおしっこに行きつきました。

「おしっこなら自然じゃね?」

なんて思った43歳はたぶん頭おかしい。。

pixi.jsチュートリアルをちょっと勉強した

このころ開発しようにもモチベーションが低くてなかなかやる気が出てこない日々が続いていたので何となくpixi.jsの勉強をすることにしたんですよ。

私はpixi.jsでゲーム作ってるくせに実は全然ちゃんと調べてなくて(;^ω^)なのでちょっとpixi.jsのホームページにあるチュートリアルを勉強しようと思って見てみたらランゲーのステージの作り方の解説だったので「おお!こいつはちょうどいい!」ってことでやってみたんですよ。

そしたらね、けっこう内容の濃い解説で「スプライトプール」という技術を初めて知ったりしました。

このスプライトプールってのはスプライトという画像を表示する要素を先に作っておいてこいつを使いまわすというテクニックです。スプライトを新たに生成するのはけっこうコンピューターに負担になるので処理の遅いブラウザゲームにとっては処理をスムーズに行わせるために使うべき技術なわけです。

もちろん私もスプライトの生成が負担になることは知っていたので先に配列を作ってフラグで対応するようには作っていたんですがスプライトプールはそれの進化版みたいな感じですね。これと次のことを組み合わせてより便利になりました。

キャラクターは一つの配列で管理すると楽

実は5月・6月はpico-8というゲームエンジンの使い方をちょっと勉強してました。で、この時に「jelpi」というサンプルゲームのプログラムを勉強してたんですよ。

で、このjelpiでは動くキャラクターたちはすべて一つの配列に入れて管理していたんですよ。全キャラクターを同じクラスで作って(正確にはクラスじゃないけど)、それらをactorという一つの配列に入れたり出したりするようにして管理してました。そうするとわかりやすいしプログラムを書く量も少ないんですよね。

私は今まで敵キャラや弾などを別々の配列で作って管理していたんでけっこうあちこちに処理を書いて面倒だったんですよね。

ただね、pico-8と私が作ってる環境とはまた違うので同じように作るには私の知識に何かが欠けてたんですよね。

ドッキング!!

欠けてたものはもうわかると思いますが「スプライトプール」だったわけです。

pixi.jsチュートリアルで学んだスプライトプールの使い方を改造して全キャラクターを一つの配列でうまく管理する方法を作りました。

さらっと書いてますがけっこう面倒でした(;^ω^)

パーティクル!

jelpiでもう一つ学んだことはパーティクルがあります。

パーティクルとは欠片や粒子という意味で最近のゲームでは何かしらキラキラしたものが飛び散って画面を派手に見せてます。

jelpiではこれをうまく作っててシンプルなのにすごくうまくキレイに演出してるんですよね。

で、それを真似ようと試して作ったのがこちらです。

今回星型は使ってませんが星型も使えるように作っておきました。

敵キャラを倒したときに出るパーティクルはこれをベースに作っています。

リファクタリングをずっとしてました

今回、実はけっこうプログラムを奇麗に整理しました(リファクタリングっていうらしい)。

過去に作った部分を役割をもっとはっきりさせて分割したりクラス化したりしてより独立して再利用しやすい形に修正しました。

ゲーム作りながら「ここもっときれいにできるんじゃね?」って感じでやってたのでなかなか制作が進まなかったです(^^;)

レトロな画面について

今までも低解像度でゲームを作ってきましたが、今回はファミコンと同じ幅256ドットです。

ただし、pixi.jsで解像度を256ドットにすると超ボケます。文字なんかはもっとボケます。なので実はこのゲームの画面は幅512ドットで作っています。ただしゲームが描画される画面は256ドットになっていてそれを2倍に拡大させています。そしてなぜか普通に256ドットで表示させるより拡大した方がボケが少し軽くなります(理由は知りません)。文字は512ドットの画面に書いてます。

ただ、これだとなんか「ぼやぁ~」っとボケただけの画面なんですよね。テレビっぽいぼけ具合だけどなんかちょっと違うんですよね。これは前の「トイレへの道」でもちょっと思ってたんですよね。

なので走査線を足してみたらそこそこいい感じではあったんですがなんか物足りないんです。

で、試しに走査線を上下に動かしてみたら「(゚∀゚)キタコレ!!」ってなりました。

今回はちゃんとボスがいる

途中モチベーションが切れてきて「もうこれでいいかな?」なんて思って公開しようかとも思ったんですが、やっぱボスはつけようと思い作りました。

何パターンか動きを作ろうかと思ったんですが一つ目だけで十分難しかったので「もういいや」ってなりました(^^;)

ただ、さっくり出来ちゃったので代わりに目ん玉が動くようにしたり、ダメージ具合が分かるようにしました。

シンプルだけど良い感じになったんではないかと思ってます。

和風な世界観

今回一番悩んだのは音楽でした。

ずっと音無しで作っててある程度できたときに入れたんですが、この時に曲や効果音を選ぶのに「ちがうんだよなぁ」「こうじゃないんだよなぁ」ってずっと決められずにけっこう悩みました。

いくつかのフリー音源サイトを見た後「こうなったら魔王魂のサイバー曲しかない!」と思って魔王魂のサイバー曲を聴いてたら三味線ぽい曲があって。「なるほど、三味線か」となって三味線で検索すると伊藤ケイスケさんの曲が見つかりました。

で、三味線に確定したことで「和風」をもっと強調しようと思いタイトル画面やゲームオーバー画面の「死」などが決まっていきました。

ところでタイトル画面は日本昔話風に作ったんですがみなさん気づいてますよね?

まぁそんな感じかな

今回の「おしっこ忍者」はこんな感じに作りました。

おしっこで戦うふざけたゲームですが作る方はけっこう大変なんですよ(´・ω・`)

「トイレへの道」開発を振り返って

1月から作っていたアクションゲーム「トイレへの道」をようやく今日公開しました。

wgc-cosmo.com

1月末公開の予定にしてたけど、延びに延びて今日(2021年2月20日)になりました(-_-;)

ということでその辺の言い訳なども含め開発を振り返ってみたいと思います(‘ω’)ノ

1月19日から開発が始まった

twitterのこの投稿が今回のゲーム開発の一番最初の投稿。

とりあえずお絵かきをしながらどんなアクションゲームを作るかイメージを固めます。

ちなみに、実はこのころ開発していたパズルゲームがあったんだけどとん挫しました(-_-;)

そこで「やっぱり自分が好きなものを作らなきゃ!」ってことでアクションゲームを開発することに決めました。

で、お絵かきはGimpでやってるんだけど「16ドットでグリッド表示させとけば目安に書けるし後で切り取るのも楽やん!」ということに気づいて非常に効率があがりました。

あと画像で分かる人もいると思うけど今回のゲームはコナミのドラキュラをイメージしてました。

最初はまぁまぁ順調だった

バイト先が休業となり時間もたっぷりあるので最初は余裕をもって開発できました。

ここではハシゴの開発が思いのほかバグが発生しててこずったけど、これは余計なこと(梯子から出るとことかの動き)にこだわったせいでもあるのでしゃーない。

本当はドラキュラみたいな階段も作りたかったんだけどハシゴが思ったより面倒臭かったせいで「これと同じくらい面倒なことをもう一回やるのか」と思うとかなり萎えたのでやめました(^^;)

敵のプログラムの基本部分は「コスモレスキュー」のをコピペ。過去のプログラムは自分の財産なのでどんどん使いまわしていく。もちろん使いまわすごとに修正が入るのでより良いものになっていきます。

敵のプログラムはマリオやドラキュラ、ロックマンなどを参考にとりあえず簡単にできそうなものから作りました。

マップの作製あたりからモチベが下がり始めた

実はステージ作成は倒臭くて楽しくない(-_-;)

最初はまだいいけどやってるとだんだん嫌になってくる。この辺からちょっとずつモチベが下がり始めました。

で、あとこの時にゲームの結末をどうするかということも悩み始めた。

特に何も決めていなかったし「ドラキュラっぽい簡単なアクションミニゲーム」の予定だったのでどうまとめるかこまってきた。

トイレの札のドット絵を描いたのでなんとなく「トイレを探すゲーム」というのをネタとして考えたりしてました。

どうするか悩むうちに勢いが消えていった

「ドラキュラみたいなアクションゲーム」というふわっとしたイメージしかなかったため悩むうちに開発ペースが落ち始めた。

それにプラスして細かいバグの修正やあれこれ追加しなきゃいけないものも多く悩みの種が増え始めた。

また追加したいものを入れるにはプログラムの修正が必要なものもありいろいろ想像すると億劫になってきた。

そんなときに何となく「コスモタウン」に気持ちがそれた。ええ、ここで一度完全気持ちが抜けました(-_-;)

がっつり作るにはプログラムの修正が必要

なにが一番悩んで開発が止まったかと言うと「このままがっつり作るか?作れるのか?」ということです。

せっかく良い感じで出来上がってきたのでボスなんかも入れてけっこう本格的に作り上げたいという気持ちがあり「時間かけてでも作るべき!」という感情と「いや、このままのプログラムじゃ無理よ。修正が必要!」っていう冷静な自分が頭の中をぐるぐるするわけです。

一般的に使われているゲームエンジンを使わず全部自作なうえ、ゲーム開発素人で知識が無いのでなんでも「作ってみないとわからない」わけで作ってから「う~ん(-_-)」なんてことはしばしばあるわけです。

しかし作り直すと時間がかかるしモチベーションも高くないときついわけで、アクセスの少ない自分のサイトの状況を思うと今は本格的ゲームを時間をかけて作り上げるよりもそこそこのミニゲームを速く投入したいのです。

こういう悩みがまたどんどん自分を追い込んでいくわけですよ。

無駄に時が流れていく

やらなければいけないことから目をそらし他のことをし始める。もちろん他のことも大事なんだけどもさ。

また、ゲームサイトのアクセス数がさらに悪化してモチベの低下にとどめを刺してきました。ほんとグーグルは一体なにを見て判断してるんだ?

実はこのアクセス数アップのためには大きなゲームメディアにプレスリリースを送って載せてもらうというのが一番確実な方法なんだけどそのためにはそれなりに本格的なゲームを作らなきゃ載せてもらえるわけないのでこの辺も「本格的に作るべきか?」という悩みに拍車をかけるわけです(-_-;)

突然割り切る

ボーっとした時間を過ごしていた中、突如「もういいや!」と開き直った。

余計な欲は捨ててとりあえず完成させる!!完成はすべてに勝る!!

ということで欲をすて半分ネタとして考えてた「トイレ案」を採用。ここから迷わず開発を進め完成させました。

いつか必ず大作を作る!

以上のような感じで完成し本日公開されました。
まぁ大作はいつかそのうちつくりますよ。
それまでミニゲームを作りながらプログラムに磨きをかけていきますよ(‘ω’)ノ

ステージ全貌公開してます

「トイレへの道」と「トイレへの道2」のステージ全貌を公開してます。

inwan78.fanbox.cc

inwan78.fanbox.cc

「走れ!ギャボリン!」の開発を振り返って

昨日公開した新作ゲーム「走れ!ギャボリン!」の開発についてあれこれ書いておきます。

wgc-cosmo.com

毎回開発時に進捗を書いていこうとは思っているんですが結局開発が終わってからまとめて書いてしまう。。

まぁ開発してるときは作ることで精いっぱいだし、やる気なくなってるときは記事なんて書きたくないし仕方ないね!(^^;)

ランゲーを作ることにした理由

毎回ゲームを作り始める前は「なに作ろかなぁ。。」といろいろ考えています。今回も当然あれこれ案を練っていたんですがその時にこの前作った「コスモレスキュー」がiPhoneでうまく動いていないことに気が付いてそれの対処をするほどのやる気が無いので(やんなきゃダメだけどさ)、しばらくはマルチタッチ入力しない単純なポチポチするだけのゲームを作ろうと考え始めました。

それでランゲーにしようかな、なんてちょっと考え始めたわけです。ただ、一般的な直線に走ってジャンプするだけのランゲーではクソつまらないし作る気も起きないのでちょっと考えました。

というかコスモレスキューがどうしてあんな風な作りにしたのかというのがランゲーにも適用できると思ったのでそのアイデアをそのまま使うことに。

そのアイデアとは「スマホを横にするのが嫌なので縦移動を多くして縦長画面であることをうまく使う」ということ。

コスモレスキューではレスキューのために上から下に降りていくような感じになってましたが、ランゲーでは基本横移動になるけど縦にも長く作って縦にもスクロールさせればいくつかの道にわかれるようになってプレイヤーが選べるようになって単調じゃなくなって面白いかな?と思ったんです。

で、コインの多い道や少ない道、簡単な道や難しい道など作れば面白いかな、って考え始めて、そしたらワープとかもしてルートが複雑になればもっと面白いんじゃない?とかじゃやっぱ隠しルートとかも欲しい!なんてことになってきたわけです。この辺は考えてるときは最高に楽しいですね(実際に作り始めるまでは楽しいのよ。。)。

やりこみ要素とは何か考えた

で、今回ランゲーの構想を練ってて気づいたことに「やりこみ要素」というのがあります。

やりこみ要素とは名前の通りゲームをやりこませるための要素なんですが、たいていの場合ヘビーユーザー向けというか、なにか条件を満たすことで出現するような面倒なものが多くて個人的には好きじゃないです。RPGのマルチエンディングなんてあんな長いゲームをもう一度やって別のストーリーが見たいとは思はないし、マルチエンディングにするくらいなら一本道のストーリーを徹底的に磨き上げてくれた方が嬉しいです。

と個人的にはあんまりいい印象のなかったやりこみ要素なんですが、今回のゲームで隠しルートのことなどを考えていてふと「スーパーマリオの面白い要素ってやりこみ要素じゃない?」って思ったんです。

スーパーマリオって初めてプレイするとどの土管に入れるかわからないし、隠しアイテムブロックはあるし、隠しルートもある。そういうのを一つ一つ探して「こういけば近道」とか「ここに1upある」とか「ここにワープある」とか何回もプレイするうちに覚えて気づかないうちにやりこんでいるわけです。

そしてこういうやりこみ要素なら初めてプレイしたときでも見つける可能性があるわけです。出現条件が無いから見つけさえすればいつでも起こるわけです。だからたまたま発見して「おお!なんか見つけた!」という喜びがあったりもするわけです。

今回のランゲーで上下に広くして道を選べるようにすればルートによってとれるコイン数が変わってくるし、どこでワープするかや隠しルートなどでも取れるコイン数が変わってくる。これならやりこみ要素になるに違いないと感じました。

ようやく自分が面白いと思うゲームの形が分かってきた気がします。

2段ジャンプについて考えた

前回作ったコスモレスキューのプログラムをそのままコピーして開発を始めたので基本的な部分は割とあっさり完成しました。

ただプレイしていてシンプルなランゲーなので普通のジャンプだけじゃどうしてもつまらない気がしました。やはり2段ジャンプが必要なのかちょっと考えました。

というかそもそも2段ジャンプって何なのか?なんで空中でジャンプできるのか?「ゲームだからいいじゃん」と開き直ってもいいけど正直個人的に2段ジャンプのあるゲームはあんまり面白い気がしない。アクションゲームとしての操作感が何か違うんですよね。

とはいえ今回作るランゲーで2段ジャンプはどうしても必要だと感じてどうしようかと悩みました。悩んだ末たどり着いたのが「昭和アニメ風に泳いで上昇する」でした。昔のアニメではよく落下時に泳ぐ動作でちょっとだけ上昇するような表現が見られました(でも結局落ちるんだけどね)。それを使って2段ジャンプっぽくすることにしました(ただドット絵で泳ぐような動きを作るのは大変だったのでもがくような感じになりましたけど)。

で、泳ぐんだから2段ジャンプでよくあるような「ジャンプの頂点付近でタイミング良く押す」みたいなことは必要ないし、なんなら普通に落ちたときもできなきゃおかしくない?って思っていつでもできるようにしました。

しかしそうなると今度は「何回でも出来てしまう」という問題が出てきたので「1回やったら疲れてできない」という設定にしました。

そんな感じでできた「泳ぐ2段ジャンプ」ですが完成度はいまいち(-_-;)。プレイヤーの思わぬところで発生してしまう(着地したと思ってもう一回ジャンプしたつもりがちょっと早くて2段ジャンプになっちゃったとか)のでその辺をもう少し改善したかったんだけど当たり判定の所をいろいろいじる必要があってそんなプログラムをする気力は無いので諦めました(^^;)

今回はドット絵を頑張った

今回は過去一番なくらいドット絵を頑張りました。とはいえそんなに数は多くないしすごくシンプルに描いてるんですけどね。ただ「キレイに見える」ようにちょっと自分なりに試行錯誤してみました。

ファミコンの「スーパーマリオ3」を参考にして線画を単色で塗るような感じにして色のグラデーションを無理につけないようにしてみました。そうすることでシンプルで見やすく可愛らしいドット絵になったと思います。

ちなみに今回の背景に使った画像はこれだけです。たったこれだけでもあれだけの世界観を出してくれるんですね(^^;)

ステージ制作は楽しかったけどやっぱりつらい

毎回ステージを作るのは苦労します。正直苦痛です(-_-;)

今回も最初の予定では15個のマップを作る予定でしたが結局6個が限界でした。でも今回は今までのステージ制作の中では一番楽しかったです。

「どういう風に作ろうかなぁ」とけっこうワクワクしながら想像したりしてつくりました。作りながら「ここはこっちにワープして、こっちは短いルートになって・・」みたいに考えてるときは楽しいんですよ。でもね。時間がかかるんですよ(-_-;)

時間がかかるとやっぱモチベーションが落ちてくるわけで。仕事で疲れたりしていると取り組む気力が湧いてこなくてなかなかできなかったり。進まなくなるんですよね。。

15個というのは正直とんでもない作業量で「とてもじゃないけど無理!」ということで6個になりました。

もし15個マップがあったらゴールが3つ以上あってゴールによってボーナスポイントが変わるようにしてワープでの移動をもっと複雑にする予定でした。

理想を実現するのはやはりなかなか難しいですね(-_-)

リザルト画面は面倒だが大事

話が変わりますが現在このサイトで一番人気のゲームは「さめがめ」です。

ゲーム自体はどこにでもある定番の「さめがめ」そのまんまなんですがこれが一番人気なんですよ。どうして人気あるのか?というとたぶんリザルト画面が要因の一つなんじゃないかと思うんです。

さめがめではリザルト画面で減点やボーナス加点があり、最後にオンラインランキングの順位が表示されます。結果が「バンッ!」と一度に表示されるんじゃなくて一つ一つ順番にちょっとずつ出てきます。こういうのもワクワクする要素なんじゃないかと思うんです。

で、それを今回も取り入れました。

移動距離、コインの数、スターの数をポイントに変換して最終的なスコアを出すようにしてみました。もちろん表示は一つずつ順番に。

さらに今回は自己記録更新した場合に更新したことを表示されるようにして新記録を出した嬉しさを感じられるようにしてみました。

そしてさらにオンラインランキングの順位をもったいつけて表示するようにしてみました。そこそこ良いスコアが出たときはかなりワクワクするんじゃないかと思います。

どうしてちょっと和風な感じになったのか

鳥居があったり地蔵があったり電柱があったりリザルト画面の効果音だったり、ちょこちょこ和風な感じのものが使われていますが実はもともとはまったく和風なテイストを入れるつもりはなかったです。そんなこと考えもしてなかったです。

発端は鳥居でした。ただ単純に「マリオの土管のようなワープ」を考えたときに「源平討魔伝の鳥居」が浮かんだだけです。

で、鳥居でワープするようにしたときに何となく「出口にも何か欲しい」と思って道にポツンとあってもおかしくないお地蔵さんを思いついたわけです。鳥居とお地蔵さんなら何か不思議な力でつながっていても不思議じゃないですしね(^^;)

そうやって作ってると「じゃ、灯籠も置いてみよう」とか「雲も和風っぽくしよう」とか「じゃあ電柱も置いちゃえ!」みたいになったわけです(^^;)

で、最終的にリザルト画面の効果音も和風でいっちゃえ!ってことであんな効果音になりました(^^;)

ダラダラ長く作ったけど最終的には良かった

このゲームを作り始めたのはtwitterの投稿では9月19日のようです。出来上がるのに2か月近くかかってしまいました。

モチベーションが低くてなかなか進まなくてつらかったですが途中で「どんだけ時間かかってもいいや」という開き直りがあったおかげでゆっくりでしたが完成することができました。

ただ、ものすごく開発期間が長かっただけあってクオリティはけっこう高くなったと思います。

というのも自分でプレイしながら「こうじゃないんだよねー」みたいなことを何度もやっていてちょびっとずつあちこち変えたりしていたのでクオリティが段々と上がっていきました。

一番面倒臭くてしんどいリザルト画面すら「こうじゃないんだよねー」といってけっこう時間かけてつくりました。

以前の自分は勢いだけで開発してモチベーションが尽きてきたら無理やりまとめて完成!みたいにしていたのでそのせいでクオリティがいまいちなゲームが多かったです。

今回のようにダラダラだけど見直す時間をたっぷり使うっていうのも開発方法としては良いのかもしれない。ひょっとしたらこっちの方が自分に合ってるのかもしれない、と思ったりしています。

という感じにつくったわけですよ

思い出しながら書いたので話が飛んだりしてるかもですが、まぁだいたいこんな感じでゲーム作りました。

ゲーム作るのって大変だし辛く感じることもあるけどやっぱり自分は作るのが好きなんだろうね。ゲームに限らず。

「ああしようかな?こうしようかな?」って考えてそれを実際に作るのってやっぱり楽しいし満足感あるんですよね。しんどいけど。

開発の勢いはなくなったけどのんびり作っても完成まで持っていけることが分かったのでこれからもゲーム作っていくぜ!!(*´▽`*)

ステージの全貌を公開

隠し通路もばっちりなステージの全貌を公開してます。

眺めるだけでもワクワクするよ!

inwan78.fanbox.cc

「コスモレスキュー」の制作を振り返って

昨日公開したゲーム「コスモレスキュー」の制作について書きます。

wgc-cosmo.com

ゲームの元ネタ

今回のゲーム開発の元ネタというかきっかけになったのがこのゲームです。

www.youtube.com

私はけっこうYouTubeレトロゲームの動画を見ていて面白いと思ったアイデアを自分のゲームに取り入れるようにしています(ゲーム黎明期は面白いアイデアのものが結構あります)。

この「ルナレスキュー」をもとにアイデアを膨らましたのが今開発中のゲームです。

操作はバルーンファイトっぽく

とりあえず最初にプレイヤーの操作部分を作ってみました。

最初は操作についてあまり考えていなかったんですが作ってみて物足りなさを感じてあれこれ改造して試してるうちにファミコンの「バルーンファイト」っぽい感じになってきたので途中からバルーンファイトを意識して作りました(あとでバルーンファイトやってみたら全然違ったけど)。

基本的にプレイヤーは左右で船を動かすだけです。左右の動きは慣性がかなり働くようになってるのですぐに方向転換できません。またジェット噴射で上昇するけど噴射をやめると重力で下降するのでコントロールが難しくなっています。

スクロールを追加

最初は1画面だけのゲームのつもりだったけどキャラの大きさやマップタイルのサイズなどを考えると1画面では狭すぎると思ったのでスクロールさせてもうちょっと大きなマップで遊べるようにすることにしました。

マップスクロールのプログラムは「爆弾野郎」の時に作ったプログラムをコピーしてこのゲーム用に少し改造して使っています。

一応このマップスクロールのことで一つ書いておくと「キャラクターの進行方向の表示が広くなる」ようになってます。右に移動するとプレイヤーの右側部分が広く表示されます。反対に左側は左部分が広く見えます。

縦の移動はそのやり方に適していなかった(動きすぎて酔う)ので逆に真ん中あたりに余裕があるようになっています。言われないと気づかないことだと思うけどこういうところも遊びやすさに影響するのでちゃんと作ってるんですよ(・∀・)

細かいことをちょこちょこと

ミス時の演出

このゲームはミスは一発アウトになるんですがその時の演出をどうしようかちょっと悩んだすえ「宇宙船だしロックマン風に爆発させよう」ってことでそう作りました。
まぁまぁロックマンぽくできてると思います。

セリフ

「かわいく作る」というのをこれからのゲーム開発のテーマにしたのでそのための一つのアイデアとしてセリフを入れてます。
ちょっと生意気な感じのセリフにして個性を出せたらと思ってます。

ワームホールを移動できる設定

このエイリアン達はワームホールを使って自由に移動できる設定になってます。なのでワームホールから現れてワームホールに戻るという設定にしました。

助けるエイリアンにも当たり判定

助けるエイリアンにも当たり判定を付けました。着陸に失敗してエイリアンをはねてしまうとアウトです。人身事故(エイリアン身事故?)はダメですからね。

障害となる敵(?)を作る

敵といっていいのかわからないですが、一応この星にいる生物的なもので宇宙船の障害になる生き物などを作りました。

最初のイメージではいろんな生物(蛇みたいなのとか)や自然現象(噴火とか)考えていたんですが、そういうイメージを実際に画像を用意してプログラムで動かすとなるとなかなかの気合が必要なんですよ(^^;)

想像するのは簡単なんですが実際作るのはモチベーションとの闘いなので。。

というわけで実際に作った敵(?)はたったの3種という。。

一番大変なステージ制作

ゲーム開発は大詰めとなり後はいろいろ配置してステージを作ります。

もうここまでくると「マリオメーカー」と同じです(やったことないけど)。

私の開発環境では「Tiled Map Editor」というフリーのマップエディターに対応できるように作ってあるのでそれを使って作っていきます。

まぁ本当にマリオメーカーみたいに配置していくだけなんですよ。

やっぱバランスとか楽しさとか考えて配置していくのでけっこう大変なんですよ。

今回は15ステージ作ったんですが正直15ステージ作るとかなり疲れます。

YouTubeでたまにマリオメーカーの実況動画とか見ますがあんなすごいステージ作れる人雇って作ってもらいたいです(そんな金はないけど)。

今回は音楽も自分で作ったんだぜ

今回は効果音とBGMも自分で作りました。
「Retro Music Editor」というファミコンみたいな音で音楽を作れるフリーソフトでつくりました。

このソフトはファミコンみたいな音が鳴るんですが音を自分で調整して自分が欲しいファミコン音を作らないといけないのでそれが難しいです。

ある程度あちこち調整していると何となくわかってきますがそれでもなかなか思い通りのサウンドを作るのは難しいです。とはいえ「ああ、こんな音あったわ!」っていう懐かしいファミコン音を作れた時はけっこう嬉しいです。

作曲に関する知識は無いですが一応ギターはそこそこ弾けるので一度ギターで「こんな感じ?」みたいなのを弾いてからその音を入力して作りました。

自分としてはまぁまぁ良い感じにできたと思っています。
soundcloudで公開しているのでゆっくり聞きたい人はどうぞ('ω')ノ

soundcloud.com

オープニング・エンディング

ゲームに入れたオープニング・エンディングはかなり簡素ですが実はちょっとしたストーリー的なものを入れるつもりでした。ええ、もちろんモチベーションが無くて削られたわけです(-_-;)

とはいえどんなものを考えていたかというアイデアをせっかくなので公開しておこうと思います。

最初はこんな感じの紙芝居的なものを入れようかと考えてました。しかし画像を描くのが面倒なのでドット絵にしてもうちょっと楽にしようかと考えて

こんな感じのも考えたんですが、結局さらに省略されワームホールに入るところだけにされてしまったという。。

ちなみにイカみたいなのは「イカリアン隊長」です。口癖は「ダメだこりゃ」と「次いってみよー」です。

タコみたいな主人公は「タコリアン」です。好物はタコライスです。

一応こんな感じにキャラの設定もあるんですよ。いつかこの設定も使われる日が来ると良いんですけどね。。

あと、エンディングはスタッフロールでエイリアン達をドット絵でダンスさせるというアイデアもあったんだけど当然ながら面倒臭いので却下となっています(^^;)

まぁこんな感じで作ってるんですよ

今回はけっこう開発の裏事情まで書いたつもりですがいかがだったでしょうか?

正直アイデアはいくらでも膨らませるんですよ。ただね、実際作るとなると。。っていうね。

こういう妥協を繰り返して人は大人になっていくんですよ。。(そうなのか?)

ステージの全貌を公開

全ステージの全景画像公開してます(ステージ8だけ無いけど。。)

inwan78.fanbox.cc

「フリック&チェイン」の制作を振り返って

新作ゲーム「フリック&チェイン」の開発について書きます。

puzzle78.com

ていうか、けっこう日数かかったんで出来上がってから記事書くよりちょこちょこと開発日記を書いておけばよかったと後悔しております(^^;)

最初のアイデア

最初の基本アイデアスーファミミニに入っていた「パネルでポン」です。

友達がスーファミミニを買ってちょこっとやらせてもらったときにこの「パネルでポン」はスマホに向いてるんじゃないかと感じました。ブロックの入れ替えをフリックでやればそのまま同じものが作れるんじゃないかと考えたわけです。

で、ここ最近の落ちものパズルゲーム開発はすべてこの「パネルでポン」風パズルゲームを作るための段階的実験だったわけです。

フリック操作と連鎖を作る

プログラムは「さめがめ」の時のものをそのまま流用して始めました。

まず、フリック操作で隣のブロックとの入れ替え処理をいれました。

次に入れ替えたらマッチをチェックします。このマッチチェックは「さめがめ」と同じでそのまま使っています。で、上にブロックがあったら落下させて着地と同時にまたチェックを入れます。連鎖が続く限りこれを繰り返します。

ここまではそんなに難しくなかったです。

ただ、入れ替え時に瞬時に入れ替えずに数フレーム移動しているように演出を入れたり、消滅時、落下時の演出を変えたりしていくとそれらの処理時にフリック操作を行うとバグるようになってきました。

処理手順をどうするかが難しかった

今回の開発で一番難しかったのがこの処理手順です。

どういう順番で処理を行うかということをちゃんと考えないとバグだらけになります(てかなってた)。そんなわけで今回は珍しくちゃんと流れ図を作成し処理手順をしっかり決めました。

それにより一応は出来上がったんですよ。ただね。。

パネルでポン」と違う!!

残念ながらスーファミミニを持っていない私は気づいていなかったんですが「パネルでポン」の操作は単純に順番に処理してるものではなかったんです。

実は「パネルでポン」はいくつかの処理が同時に行われるという非常にややこしい技術で作られており私の考えていたものとは全く違う作り方がされていたのです!(私のプログラムでは動かす→マッチ確認→消滅処理→落下→マッチ確認のような感じで順番に処理されていますが、パネルでポンはこれらの処理が同時に動いています)

何度もYouTubeで動画を見てみたんですがこれを実現するのは相当難しいと判断。というかゲームをしっかりやりこまないと何が起こってるのか全く分からないレベル(-_-;)

できないことはないだろうけどかなりの試行錯誤が必要になることは間違いないのでここはきっぱり諦めることに。。(;´Д`)クヤチー!

とはいいつつ、最後まで「少しはそれっぽくできないか?」とちょっと処理手順を変えたりしてバグと闘ってました(^^;)

ゲームボーイテトリスを目指す

最初は「パネルでポン」を目指していたのでゲームの雰囲気もかわいい感じにしようと思っていて「へのへのもへピ」のキャラを使おうと考えていました。

しかし残念ながら「パネルでポン」とは違うゲームになることを理解した私は違う方向を探し始めました。そして画面構成を考えているときに浮かんできたのがゲームボーイテトリスです。

ゲームボーイテトリスはシンプルで分かりやすいデザインだったのでよく覚えていました。

方向が決まってからブロックの画像に少し手を加えテトリス風に。ついでにレンガも書き直して色を変えてみたら深緑的な色がものすごくグッときて一気に画面構成のイメージがまとまってきました。

また画面横に情報を表示するのをテトリスのように右ではなく左にしました。理由は「右手でフリック操作する」からです。右利きであればほぼ間違いなく右手でフリックすることを想像すると画面右側にある情報は見づらいのでは?っと思ったわけです。ついでにブロックが左端から離れればフリックでiPhoneのブラウザのページバックが起こる心配もなくなる(マジであの機能なんなの?)。これは名案でした。

妖しい感じになっちゃった

開発も終盤入ってきたのでそろそろ音を入れていこうとなって音楽や効果音を探しはじめました。

BGMはゲームボーイテトリスのようにロシア民謡とまではいかなくても独特な雰囲気にしようと考えていたので魔王魂様でオーケストラ風の曲をいくつかチョイスしました。

最初はエジプト風の曲にしていたんですがゲームオーバーのジングルに合うものが無く、ならばということでジングルと違和感が少ない曲を選びました。

また効果音は最初はちょっとかわいい系の音にしていたんですが、BGMと画像のイメージからもっとナチュラルな効果音にすべきだろうということになり変更しました。

おかげでなんか妖しい洋ゲー風になってしまいました(^^;)

最初は「パネルでポン」が作りたかったとはまったく感じられないですよね(^^;)

タイトルが最後まで決まらなかった

開発最後で一番困ったのがタイトルでした。

何一つアイデアが浮かんでこない(-_-;)。

テトリス風に「○○リス」とか考えても何も出てこない。

テトリスのように何か2つの言葉をくっつけて新しい言葉を作ろうと考えてもしっくりくる組み合わせが一つもない。

ていうか二つの言葉をくっつけてもすでにそんな言葉があったり、もしくは英語だから自分の知らない意味があったりするんじゃないかと思うと正直怖気づいてしまいます(^^;)

で、どうしようかなどうしようかなって考えて出した結論が「そのままでええんちゃう」ってことでした。

FLICK(フリック操作) と CHAIN(連鎖)

これ以上のアイデアはたぶん浮かばないだろうということで決定しました。

出来上がっての感想

パネルでポン」を作れなかったのは悔しいですが、おかげで全く違うオリジナルなゲームができたので満足しています(´∀`)

また途中からスマホアプリ化も考えていたので全体的なクオリティも今までのゲーム制作の中では一番といっていいくらい高く出来上がりました。タイトル画面、ポーズ画面、ゲームオーバー画面などゲーム以外の部分もきっちりちゃんと作りました。

また難易度を3種類と練習モードもしっかり作ったのは自分でも「本当に作るとは思ってなかった」です。だいたいこういうことはいつは「入れた方がいいんだけど・・」で終わってたんですが今回はちゃんとやりました。びっくりです(^^;)

今後もこのクオリティで作っていけるように頑張りたいですね(´∀`)

「さめがめ」の制作を振り返って

今回は今日完成&公開した定番パズルゲーム「さめがめ」の制作について書いておきます。

puzzle78.com

落ちものパズルを作りたい

しばらく定番ゲームを作っていこうという考えになってから定番ゲームについていろいろ調べたり考えたりしてたんですが、そのなかで自分が遊んで楽しい&作りたいと思うものの一番が落ちものパズルゲームでした。

落ちものパズルゲームは「テトリス」や「ぷよぷよ」が有名ですが3マッチゲームの類やツムツム的なものなどかなり多くのゲームが存在します。

そして落ちものパズルはだいたい面白い。

で、ちょっと考えて気づいたんですが

「基本的な落ちものパズルのテンプレートさえ作ってしまえば量産可能じゃね?」

そう。定番ゲームをたくさん作るならたくさん作れるジャンルを攻めていくのが勝利への近道じゃないのか!?

ということで落ちものパズルゲームの中で最も開発難易度の低そうな「さめがめ」から着手することにしたわけです。

さめがめ開発初日

「さめがめ」は落ちもの系ではありますが、後から追加されるブロックが無いのでそこを意識しなくてすみます。また、タッチしたものと繋がっている同色のブロックが一度に消えるだけで連鎖なんかも無いので考えることが少なく、やはり落ちもの系としては開発難度が一番低いと感じました。

同色のブロックが消える処理については前回作った「マインスイーパー」のタイルを消す処理と同じです。いろいろ作っていくと以前に経験してたりすることが多くなり作業時間が短縮されていきますね。

ただ、今回は自分の中で「スーファミクオリティを目指したい!」っていうのがあって、90年代多くの落ちものゲームが発売されましたがそれらのクオリティにできるだけ近づけたいっていうのが目標としてありました。

なので消えるときや落ちるときなんかに何かしら小さな演出を入れようと考えていました。

今回は消えるときはフェードアウトだけにしましたが(画像作るのがきついので)、落下の着地時に弾む感じは想像通りに良い感じにできました。

これは単純に着地時に縮小させて戻すときにちょっとだけ元より大きくさせて元に戻すって感じにしてみたら良い感じにできました。自分の想定通りにできると自分は天才なんじゃないかと思ってしまいますね(プログラマあるあるかな?)

ちょっと手間取ったのが一列が空になったときに左に寄せる処理。本当はこれも数フレームかけて移動するようにしたかったんですが、そうするとあちこちに影響が出そうなので諦めました。自分の想定する落ちものゲームでこの処理があるのが「さめがめ」だけなので無理する必要は無いと思い打ち切りました。

開発二日目

二日目は得点計算やゲーム終了判定処理などを作りました。
このゲームは一度にたくさんのブロックを消した方が高得点になります。

その式をどうしようかと思ったんですが数学の知識が無いのでそこはまぁそれっぽくなるような感じに適当に作りました(^^;)

なので頑張っていっぱいくっつけて一度に消すとかなりの高得点が出ます。

そのためバランスとして全消しできたらボーナスとして30000点、逆に残ったらブロック一つにつき500点マイナスするようにしました。

高得点を狙うために一度にたくさん消すことばかり考えて全消しできないと最終的に高得点にならない感じです。

終了判定はちょっと苦労しました。判定自体は同色で隣り合っているブロックが無いことをチェックするだけなんですが、プログラムの処理の流れの中にバグがあってそれを見つけるまでにけっこう手間取りました。

細かい演出を入れるようになるとそれらの処理がきちんと終わってから行わないとおかしなことになるので今後より演出を足したりしていくとこういうバグが増えそうで怖いですね。。

開発三日目(最終日)

三日目、つまり今日なんですが、今日は結果画面を作りました。

ボーナスや減点があるのでただ結果だけを表示するわけにもいかないのでちょっと演出的なものを入れる必要があると思い少し悩みました。

あまり複雑なものにすると時間がかかるのでとりあえず順番に表示するようにだけしました。それでもけっこう面倒くさかったです(-_-;)

これだけ簡素でもこんだけ面倒なんで市販ゲームはやっぱすごいですよね。こういうい面倒な部分もきっちりつくってますもんね。

まぁ自分がこういう地味な作業が嫌いってのもあるんですけど(^^;)

あと最後にランキング機能をつけたんですがこの時にエラーが出て。

このランキング機能は自分で作ったものをコピーして使ってるんですが、以前は全くエラーなんて出なかったんですよね。

それが突然エラーが出たから「なんで?」って感じで原因を突き止めるのがなかなか大変でした。

原因はわかりましたがそれでも以前は大丈夫だったのに不思議なんですよね。。

それとも今までたまたま気づかなかっただけなんでしょうかね。

あとがき

今回は2日もあれば余裕でできると思ってたんですが1日延びちゃいました。

ただ、延びたぶん想像していたクオリティより良い出来になったのでむしろ良かったです。

実際、自分のなかで「さめがめってそんなに面白いゲームではない」って思ってたのでここまで良くできたのは本当にまったく想像してなかったです。

たまにこういうことがあるから「何かを作る」っていう作業は楽しいんですよね!

「爆弾野郎」の開発を振り返って

自作ゲームエンジンの試運転として今は亡きハドソンの名作「ボンバーマン」風のゲームを作ってみました。

wgc-cosmo.com

どうしてボンバーマンにしたかというとタイルマップとスプライトのテストとしてトップビューのアクションゲームを作りたかったというのがありました。そのためにはレトロゲームのコピーがやることが明確でわかりやすく楽しいからです。

開発時のことを順に書いていきます。

マップの当たり判定の肝を作る

まず今回トップビューのゲームを作るにあたって絶対に作らないといけないものがありました。

それがこのツイートで紹介している当たり判定です。

 

このツイートのGIFのようにトップビューのゲームではキャラクターが角をスルッと滑るように動くように作っておく必要があります。

これが無いと角で引っかかって操作性が悪くてイライラしてゲームが台無しになります。

どうやって作るのかちょっと悩みましたが何度か試行錯誤してるうちに「そうか!」と分かったのでできました。

やり方が分かってしまえばそんなに難しいものではなかったです。中学校数学でできます。

気になる方は解説記事をどうぞ ▷ 記事を見る

マップの生成

今回はステージが進むごとにマップが広くなっていきます。それと破壊可能ブロックの位置はランダムで毎回変わるようにします。

ということでプログラムでマップを作るようにしなくてはいけない。

なのでまずボンバーマンのマップがどんなんだったかを調べました。

ボンバーマンのマップはまず周囲を破壊不能ブロックで囲んであります。そして一つ飛びに破壊不能ブロックが並んでいます。

そして空いているところにランダムに破壊可能ブロックを置いていくだけ。大して難しくない。

後はプレイヤーの場所だけは必ず空いているようにしておけばOKです。

ゲームは爆発だ!

ここからいよいよボンバーマンの最重要部分である爆弾についてのプログラムに取り掛かります。

まずは爆弾の設置。これはプレイヤーキャラのタイルマップ上の位置におけばOKなので難しくない。

一定時間後に爆発するようにしてここで爆発用スプライトを作るようにしようと思ったら問題発生!!

自作ゲームエンジンでは各オブジェクトを毎フレーム更新処理を行えるようにするにはシーンに更新オブジェクトを登録しないといけないんですが、これだと他のクラス内から登録を行うことができません。なんてこった(´Д`)

やむなくマップクラスに同じ機能をつけてとりあえず対処したわけですが、今後のことを考えるとpixi.jsの表示に関するクラスはすべて更新メソッドを持っておいた方が良いのかもしれない。ということでこれは今後修正する予定です。

で、爆発のアニメーションを作ってみたんですがなんか違う(^^;)

原因は一マスずつアニメーションのタイミングで追加していくようにしていたからです。これはこれで良いような気もするんですけどね(^^;)

なので爆発時にすべての爆発用のスプライトを表示するように変更しました。

で、その際に破壊可能ブロックがある位置ではブロックを燃えるアニメーションに切り替えるようにしました。

敵を配置する

次は爆弾で倒す敵キャラが必要です。

とりあえず細かいことは考えず、適当にマップに配置するように作りました。

そして壁などに当たるとランダムで方向を変えるように作りました。

当たり判定などは特に難しいことも無いのでちゃちゃっとつけて終わりです。

ただ、敵を消すときにちょっとした問題がありました。

enchant.jsの時は最初に敵の配列を用意していて出現/倒すでフラグを切り替えて管理していたんですが、今回はその時に敵クラスを生成し配列にpushするようにしていたので消す際に「どれだ?」ということになってくるのでちょっと困りました。

とりあえずIDをつけて管理するようにしてみたんですが、もっといい方法とかあるんですかね?ちょっと気になります。

アイテムを配置

ブロックを破壊したらたまにアイテムが出現します。

ブロックを破壊したらランダムで出現するのか、それとも最初からブロックの下に用意しておいた方が良いのかちょっと悩んだんですが、最初から下に置いておいた方が楽だろうということでそっちにしようとしたら自作ゲームエンジンの問題が発覚して困りました。

レイヤーで管理してるつもりがちゃんとなってなくて。。

修正はそんなに大変ではなかったですけど「そういやちゃんとテストしてなかったわ(;´∀`)」と、ちょっと自分のいい加減ぶりにイラっとしました。

細かいところを詰めていく作業

ゲームの基本部分はできたのでここからはよりゲームらしくなるように細かいところを詰めていく作業になります。

アイテムをとったらパワーアップするし、得点表示もいるし、残機表示とかげゲームオーバーとか、効果音とか、ステージ進行とか、そういうところを作っていくことになるんですが、これが結構しんどい(;^ω^)

地味だし、自分の作り方が悪いとあちこち修正が必要になったりもしてくるので正直ここからはかなり苦痛の作業になります。でもゲームとしては当たり前に必要なことなのでやらないわけにはいかないんですよね。。

モチベが尽きました

そういう細かな作業をしているうちにモチベーションが削られて行って制作を打ち切りました(^^;)

まぁプライベートで辛いことがあったのでモチベーションに関してはむしろもった方だと言いたい!よく耐えた!俺!。゚(゚´Д`゚)゚。

というわけで、中途半端ながら公開しました。

自作ゲームエンジンのテストとして作ったのでボンバーマンもどき以外のことは何も考えていなかったので完成イメージが無かったのも中途半端になってしまった要因ではあります。

まぁ気が向いたら改良しようかとおもいます。