せらぴんブログ

サークル「せらぴん」のうのはな透です。やっぱり眼鏡っ娘が好き!!

なんかゲーム作った

この記事はDXRubyAdventCalendar2015、8日目の記事です。

www.adventar.org

昨日は土井ヴぃさんの「画像素材を用意せずにいきなり始めるゲーム開発~PIZZA COOKER解説~」でした。
いや~、数学って大事ですね!!
実際PIZZA COOKERはとてもおもしろいので皆やるべき

さて本日は「なんかゲーム作った」という、全く具体性も発展性もない記事になります。ゆるして!!

作ったもの

今回はなんと豪華三本立てだぞ!!
ほぼ使いまわしだけど

ac2015_1.zip

1本目

障害物ゲームです。

f:id:yuphiel:20151208173736j:plain

降ってくる青いバーにぶつからないように自機(白い■)を左右キーで操作してください。それだけ。

雑感

私恥ずかしながら、今日初めてSpriteクラスなるものを使ってみました。
これすっごい便利ですね!!!!!
自機とバーの移動はそれぞれのSpriteオブジェクトのupdateメソッドですればいいし、
自機とバーの衝突判定はSprite.checkメソッドで一発だし。
今までいちいち「バーの座標を指定して……」とか考えていたのがまるで嘘みたいです。
これがオブジェクト指向なんだなぁ……

2本目

1本目と同じく障害物ゲームですが、レーンが直線状から曲線状になりました。

f:id:yuphiel:20151208174429j:plain

なんか走ってる感がアップしたように感じる!!

雑感

ゲームの根幹は1本目と同じなので割愛。
vivit_jcさんに触発されて三角関数を使って座標を計算するようにしました。
1本目と比べて、ロジックよりもパラメータの調整が面倒でした。すぐ画面外にバーが飛んで行くねんな……。
「楕円を描こうとするとき、まず小さい半径で試す」という気づきを得ました(小並感)

3本目

障害物ゲームって、見方を変えれば音ゲーですよね……?
というわけで音ゲーに流用してみました。

f:id:yuphiel:20151208174845j:plain

赤いバーと青いバーが重なった時に、Z,X,Cボタンを押す!!!
――だけなんですが、判定のロジックの調整が不十分で、判定が辛すぎというか、むしろ押しても反応してない可能性もあります。ゆるして!!!
あと音ゲーと題しているのに音が全く流れないことに突っ込んではいけない
音は君が入れるんだ!!

雑感

障害物の動きは2本目で調整しきったので、今度はいままでの自機(今回で言う赤いバー)の部分に手を入れるだけです。
ここでは対応するボタンを押した直後のフレームだけ、自機の衝突判定をONにすることで音ゲーっぽさを実現しました。
判定の甘辛具合については、自機の衝突範囲を広げたり狭めたりすることで調整してます。
今回はGODD or BADの2元的判定ですが、Sprite#hitメソッドを工夫することで、多元的な判定ができるようになるのではないでしょうか。
それにしてもSpriteクラスは本当に便利だった。

全体的に感想

今回障害物ゲームからはじまって簡易音ゲーまで作ってみたのですが、
障害物ゲームは制限された(弾が撃てない)STGみたいなもので、おそらくゲーム作りの中でも一番実装が楽な部類なんだなぁ、と感じました。
だからこそ雑に作っても許される!!

しかし、たかが障害物されど障害物。
レーンの形を変えてみたり、スピードを調節してみたりすることで、ゲームの印象が結構変わってくるのではないでしょうか。
……変わってくるよね? ね??

あと、今回みたいに一つのゲームから派生物を作っていくという試みはちょっと楽しかったり。
機会があればまたやりたいですね。

というわけで「隗より始めよ」的に意識低い例を提示いたしました。皆ゲーム作ろう!

明日はaoitakuさんの「EdgeとAsepriteとDXRubyと私」です。
Edgeってあれですかね?ドットエディタかな(多分違う)。お楽しみに!