自作ゲーム紹介:UmbreRumble
- hensati11
- 4月2日
- 読了時間: 5分

今回は「UmbreRumble」を紹介、解説します。私の6作品目で、九州学生ゲーム大祭2025とCEDEC+KYUSHU2025に出展したゲームです。
制作をしてたらいつの間にか新年度になっちゃてて、今急いでゲームの紹介ブログ書いていきます~。とりあえず授業が始まるまでに紹介してないやつ全部紹介します!
①概要
ゲーム性は傘同士でぶつかり、HPが0にならないよう相手を落として生き残るパーティーアクションゲームです。パーティーゲームなので最大4人まで同時に遊べます。 ちなみに通信は一切できないですう....そこまで勉強するのはさすがに無謀だと思ってやりませんでした。内定取ったらちょっと勉強してみたいですね。
制作環境はいつも通りのDxLibとC++です。
作ろうと思ったきっかけはDxLibで3Dの勉強をしつつ、九州学生ゲーム大祭2025に出したかったからと、ゲームの企画を考えていた時に「Motos」ってゲームを遊んで、キャラがぶつかったときの反発感が面白くてそういうゲーム性のゲームを作りたいと思ったからです。
ちなみになんでキャラを傘にしたのって聞かれることがよくあるんですが、理由は全然大したことないです。
とある雨の日に風がめっちゃ強くて、風に抗いながら歩いてたんですけど、傘が逆さまになっちゃて(自分の地域ではラッパ傘っていうんですけどこれ方言らしいですね。知らなくてゲームを人に説明するときにめっちゃ使っちゃったからミスった...)
この時ひらめいたんですよ。傘をさす時に、風に引っ張られないように傘の方向を調整のをゲームに取り入れられないかなって、
でミスったらラッパ傘になってゲームオーバーになっちゃうと。
最初はおもろそうと思ったんですけど、ゲームにこの仕様をうまく落とし込めなかったですね。ミスりました...
開発時期は2025年6~8月、11月で主に制作しました。 主にというのは元々九州学生ゲーム大祭に出展するために作ったので、CEDEC+KYUSHU2025に出展が決まってからちょくちょくブラッシュアップしてたので主にって書いてます。
②ゲームルール

・傘同士がぶつかると反発する
・最後の一人になったら勝利
・ステージのから落ちると扇風機になって相手を風で妨害できる
・風で相手を落とすと復活できる
・タックルでHPを消費して強力な攻撃ができる
・HPが0になるとステータスが永続的に下がり、扇風機になる
・ステージは時間経過で小さくなる
③技術的に頑張ったこと
ふっふっふ...実はなんと、今回は技術的アピールポイントがあります!!頑張った買いがありました(しみじみ)。それがこいつらだーーーーー!!
1.背景透過動画再生関数

DxLibでもっとゲームの演出の幅を広げたいなと思ったんですけど、シェーダー勉強するのは時間足りないし、かと言って既存の2D画像のアニメーションと3Dエフェクトだけだと限界あるなーと思い、 じゃあyoutubeとかで使われてる動画素材使えばいいんじゃね? と思ったのが始まりです。 早速使ってみたのですが、透過出来なくて使いたい動画素材が使えない困った。 DxLibでは動画を透過させる機能がなく、ほな作るかと思い作りました。

処理の流れを簡単に説明すると
1.スクリーンを動画を描画する専用の別スクリーンに切り替える。
2.動画を再生、描画して元のスクリーンに戻す。
3.動画を描画したスクリーン全体を輝度を参照して、黒または白の部分のアルファ値を0(透過)にする。
4.透過処理を行ったスクリーンを画像として描画を行う。
って感じでやってます。
2.ヘックスA*アルゴリズム

見たらわかる通り、ステージの形が六角形のタイルなので通常のA*でやると敵が変な方向に動いたり、自滅したりするので作成しました。

処理を全部紹介すると長くなるので超ざっくり説明すると
隣接マスの方向を表す数値をヘックス専用にして、
隣接マスの方向を計算する際に、今のマスが奇数か偶数かで隣接マスの方向に補正をかけること以外は通常のA*アルゴリズムと一緒です。
④こだわったとこ、面白いと思うとこ
・復活システム
パーティーゲームを作る上で個人的に大事だと思ってることが、
「参加プレイヤー全員が最後まで楽しめる」ことだと思ってるので、ボンバーマンの
みそぼんを参考に復活システムを実装しました。
・ヒット感
「Motos」の反発感がどきどきや焦りを生み、面白さにつながってると思ったので出来るだけ再現できるようにこだわりました。
その他にも、ぶつかったときにヒットストップを実装したり、コントローラーを振動させたり、エフェクトを出したりして、ヒット感が出るようにこだわりました。
⑤改善点
・背景透過動画再生関数 先ほどの解説を読んだ方は薄々感じたかもしれませんが、
輝度を参照して透過を行ってるのでグリーンバックの動画は背景を透過できません。
一応、カラーコードでグリーンバックを透過しようと試したんですが、 透過精度がすごく悪くて使い物にならなかったので諦めました。無念...
・ゴミ設計

全体的に設計がゴミです。はい。代表例を載せてみました。 これはですね、CharaBaseのupdate()なんですけど、CharaBaseを継承したCPUだけで、 Routineの情報とStageの情報が欲しかったのでCharaBaseのupdateに渡してます。
当然CharabBaseで必要ない情報を渡してるくそコードですね。よくないね。 こういう無駄がたくさんあるので今後は改善していきたいです。



コメント