1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第25回ぷちコン参加振り返り

1
Posted at

はじめに

historia様主催の第25回UE5ぷちコン(テーマ「とう」)に参加したので振り返りです。
応募した作品の動画は以下になります。

使用バージョン:UE5.7

テーマの検討

今回はゲームとして困らないテーマでしたが、出てくるアイデアは多いものの、検討時点でピンとくるものが無かったので、「塔」そのものにフォーカスして開始しました。

20260509_ぷちコン25テーマ検討_サムネイル.png

今回やったこと

とにかく試作

とりあえず思いつくものを作ってみましたが、感触は今一つ。
物理を絡めて通路のブロックを積み上げるなどやってはみたものの、通路がうまくつながらず断念したり、タワーディフェンス風の試作をしたもののレベルの構成がイメージとかみ合わないし、アクション系が作りたいと思ったりと方向が定まらないまま3月も半分近く過ぎたので、サイドビューのアクションゲームを作る方向に舵を切りました。

塔の試作

最初は2Dサイドビューで、足場を上に登っていくゲームを考えていました。
左右移動とジャンプのシンプルなアクションで、横方向は左右が繋がっている無限スクロールを想定。ファミコン世代なので十分ゲームっぽい感じがしました。

ただ、ゲーム画面としては古くて説得力が無かったので踏み込んで考えていたら、試作段階で試していた螺旋階段とサイドビューが重なり、塔の内側に階段を設置して上がっていくというレベル構成が決まりました。

手前だけではなく奥側も同時に見えることを活かした仕掛けや、ルートの分岐などもこの段階で決まりました。

20260418_塔の試作.png

塔の壁は、法線を内向きにした円筒メッシュにテクスチャを貼っただけのシンプルな構造です。
メッシュで詳細に作りこむとゴミが出そうなのでそうしたのですが、今思うと面法線の度合いで透過具合を調整しても良かったかもしれません。

20260503_塔の壁.png

プレイヤーの移動範囲は塔の外壁に沿った場所に限定しつつ、操作をシンプルにするため左右移動のみに絞っています。
CharacterMovementの移動処理を活用するため、AddMovementInputを使用して移動。

20250418_プレイヤーの移動.png

塔の中央とプレイヤーを結ぶ線の接線方向に移動するようにしています。
そのままだと塔の外壁にぶつかるので、内側に引っ張るための移動量も加えて円軌道を維持しています。
この移動処理は、トラップの岩が転がる処理にも流用しています。

20260418_プレイヤーの移動方向の算出.png

カメラは常に塔の中央を注視するようにしているため、プレイヤーが円軌道上を移動すると、サイドビューを維持して追従するようになっています。

20260418_プレイヤーの移動とカメラ.png

感触としては2Dのゲームと大差ないプレイヤー操作ができるようになりました。
奥行きがあって広がりを感じるし、高低差も良い感じに認識できて、いつもとは違う空間の表現ができたと思います。

敵にぶつかったりすると塔の内側に押し込まれて道から外れる場合もありましたが、プレイアブルではないので割り切ってカットしました。
ちなみに一番下のフロアーでも外壁に沿った移動しかできません。2Dの操作に限定しています。

ライティングは平行光源の色や角度を調整して、松明などの光源を設置することで良い感じの雰囲気になりました。
Lumenの良さを改めて実感です。
20260509_Lumenでのライティング.png

攻撃方法の選定と挙動の作成

トラップを避けてゴールを目指すだけではなく、何らかのアクションもあるとゲームっぽさが増すので、プレイヤーの攻撃方法を検討しました。

  • 塔の奥行きがあるので、それを活かすために飛び道具が適切
  • 「魔法使いの塔に挑む」というストーリーを考えていたので、魔法ではない何か
  • アセットの中に弓を使うキャラがいる

上記から弓で攻撃をすることに決定。ついでにプレイヤーが操作するキャラも決まりました。

弓を選択したものの、狙いをつけたところに攻撃を当てるには計算が必要そうなので、Copilotに聞くと以下の式を提示してくれました。

20260419_Projectileの射出角度計算式.png

矢の軌道は2D平面で計算していますが、射出位置と対象物の二点は必ず同一の平面上に並ぶので、平面の式をそのまま使えます。
これを元に実装してProjectileで射出すると当たる!
改めてAIの便利さを実感しました。

20260419_当たるProjectile.gif

振り返りを書き出すときに調べなおしてみたら、UE5にはProjectileの射出角度・速度を計算するノードがありました…
UE5での実装を前提に含めてAIに聞いたら、以下のノードのことも教えてくれました。

20260419_対象に当たるProjectile射出ベクトルを計算するノード.png

AIを使うにも技術が必要ですね。
とりあえず勉強になったのでヨシ

軌道の計算も済んだので実際にキャラに矢を撃たせてみました。
狙いをつけるためモーションを途中で止めているのですが、立ち止まった状態のモーションなので、移動しながらだと足が止まっているのが目立ちます。

20260509_弓を引くモーションだけ再生.gif

上半身と下半身のモーションを別々に再生する方法があるので試してみました。
弓を引くモーションは上半身だけにして、下半身は移動のモーションを再生しています。

20260419_矢を打つ時は下半身と上半身を別にアニメーション.png

弓を構えながら歩くこともできました。

20260419_上半身と下半身で別のアニメーションを再生.gif

知っていることを実際に試す機会として、ぷちコンは最適ですね。

Meshyを使ったテクスチャ生成

今回のレベルの素材はBlenderでシンプルに作成しています。

20260419_階段などはBlederで作成.png

これに色を付けただけだとシンプルすぎるので、今回は勉強を兼ねてMeshyのテクスチャ生成を試してみました。
無料のクレジットが付与されるので、課金する前に感触をつかめるのはありがたいです。

プレーンな色だけとは違い、それっぽいような感じの質感です。
模様的には微妙な気もしましたが、あまり見えない部分になるので、いったんこんな感じで。

20260419_階段のテクスチャ.png

テクスチャ生成でそれっぽい雰囲気は出たので、使ってよかったです。
ツールを使い慣れていないとテクスチャやメッシュを調整することができないので、目立つくところに使う時は厳しいと思います。ツールの習熟は必要だと感じました。

プロンプトを書いて一発で良いものができないことも多いので、AIを使ったなりの苦労はありますが、手作業よりは手間が減らせそうではあります。
Meshy6と5でも出力に違いがありましたが、初期のクレジットの範囲で収まって良かったです。
たまに意図から外れすぎたものも出力されます…

メッセージ

Pub/Subパターンを実装できるAsync Message Systemがあったので、今回は勉強としてスコアの対応に使用してみました。
現在はExperimentalですが、ぷちコンなら全然問題なし。

実装の流れとしてはシンプルで、以下だけになります。

  • スコアが発生する個所でメッセージを送信
  • スコアを加算する箇所でメッセージを受信

お互いに依存することなく対応ができるため、個別に実装が進められます。
メッセージをタグで扱えるのも良いです。

20260429_スコア加算_メッセージ送信.png
20260429_スコア加算_メッセージ受信.png

また、単純に「スコアが発生」することを通知しているだけなので、「スコアが特定の数値に達したら実績を解除」などのような対応を後から楽に追加することもできます。

乱用すると、どこで何をやっているのか分からなくなるので、事前の設計は必要になります。

ヒットストップ

今までヒットストップを実装していなかったのですが、せっかくなので今回導入してみました。
やってみたら手ごたえが凄く良かったので今後も積極的に入れていきたいです。
一応、放射ブラーも入れています。

20260429_ヒットストップ.gif

足場をジャンプ中でも操作が一瞬中断されたりもするので、実装個所は少し考えた方が良いかもしれませんが、ぷちコンはプレイアブルではないので、まずは見ていて楽しいものになることを優先したいです。

StateTree

提出一週間前に、形だけでもボスを入れたくなったので、ついでにStateTreeも試してみました。
簡単に流れを制御するだけに留まりましたが、データ主導で流れを制御できるのは良いかもしれなません。

20260429_ボスのステートツリー.png

5.3の頃はエディタークラッシュが頻発して使うのを断念しましたが、今回は一度もエディタークラッシュはしなかったのはありがたかったです。

振り返り

Keep

  • ぷちコンへの参加

Problem

  • 敵の動きにもう少しバリエーションをつけたい
  • BlenderでSkeletalMeshを気軽に作れない
  • アセットを置く場所がバラバラで後半はアセットの場所がすぐに分からない

Try

  • ちょっとした小物など、アニメーション可能なメッシュを作る練習をする
    • ゲームの世界観に合ったアセットなどを作れるようにしたい
  • エフェクトの練習
    • こちらも同様、見栄えがぐっと良くなる
  • 盛る
    • 見て楽しいものにするため、意図的に色々盛っていきたい

おわりに

いつも通り普通にゲームを作っていましたが、いつもとは違うレベル構成とライティング表現ができたのは良かったです。
過去に試したことや作っていたものが役に立ったりしたので、積み重ねは大事だなと思いました。

あまり使いこなせたとは言い難いですが、AIを使って作業を効率よく進められた感じはあります。
プロンプトを生成したり、何かに着手する前の情報の整理や絞り込みに重宝しました。また、関数名を考えるときにいつも悩むのですが、AIがとても役に立ちました。
2022年頃にはMidjournyの画像生成で遊ぶくらいだったので、ここ数年のAIの進歩の速さを実感しています。

振り返ってみると、常にいろいろ触っておくことが必要だと改めて感じました。
このような機会を得られるコンテストを開催いただいているhistoria様に感謝をしつつ、次回も参加したいと思います。

使用したアセット

アセット 使用箇所
Landon
プレイヤーキャラクター
Skeleton Crew Bundle - Hand Painted Series
塔内の敵
Luos's Eight elements
敵が使う攻撃魔法とヒット時の爆発
Stylized Rocks
トラップ発動時の転がる岩
Medieval Stylized Dungeon Pack
通路を塞ぐドア
Stylized Modular Crystal Mine
先に進むために必要なクリスタル
Low Poly Style Deluxe 2: Tropical Environment
スコアアイテムの宝石
Treasures VOL.1 - Ancient Treasures
タイトルとクリア時の宝の山
Footstep Sound Effects PRO
プレイヤーと敵の足音
Pro Sound Collection
SE全般

その他

リンク 使用箇所 種類
ミステリアスなシンセサイザーサウンド ステージ BGM
疾走感あるミステリアスなダークテクノ ボス BGM
トガリテ ゲーム全般 フォント
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?