Java版マイクラでメカアクションゲームを作ってる話

Minecraftの自作・他作Modを組み合わせて
ポスアポ廃墟探索・オープンフィールド・Mechクラフト・アクションゲームを開発しています!

当初の企画から差分が出てきた&部分的にリリースできたものも
結構あるので、最新版の記事を起こしましたー

最新の進捗はXにて2日ごとに投稿しているので、そちらも是非ご参照ください!

https://x.com/grc_mcs

背景

コンセプトティザー

この動画でほぼ全部語れてる気がしてきたw

浪漫ポイント

  • ポストアポカリプスで美しい世界/廃墟の旅
  • ストーリー上のいろんな謎
  • 超でかつよボスとのかっこいいメカアクション
  • ロボ君の育成(探検+マイン+クラフト)

各ゲーム要素の開発中動画

無限ランダム自動生成の廃墟マップ

Mechカスタム機能

パーツクラフト機能

鬼つよ巨大ボス達

章構成

  • Episode 1:地上編
    • Chapter 1: 旅立ち(ほぼ完成)
      • 拠点のシェルター周辺でチュートリアル風のクエストをやる
      • 自分のメカを入手して、最低限の装備を整え
      • 最初のボスと拠点防衛戦をクリア
      • その後、世界の各遺跡に旅立つ
    • Chapter 2:廃墟ぶらり旅(作成中)
      • バイオームごとに異なる各遺跡を探索してMechを強化していく
      • 各遺跡には担当のボスがいて、倒すと強化用素材を入手
      • 遺跡①メガソーラー:近接型ボス(PMB04)
      • 遺跡②工場:スタンダード型ボス(PMB01mk2)
      • 遺跡③採掘場:採掘型ボス(PMB07)
      • 遺跡④港:レーザー型ボス(PMB05)
      • 遺跡⑤軍事拠点(PMB06)
    • Chapter 3:海はいいぞ(未着手)
      • Chapter 2で入手したフローティングユニットを装備して海に出る
      • 洋上プラットフォームや船の廃墟をめぐり、更にMechを強化していく
    • Chapter 4:最終ボス
      • マップ型超巨大ボス
  • Episode 2:宇宙編
    • 地球近辺の宇宙ステーション、スペースコロニー、宇宙戦艦の遺跡を
      ベースに進行するエピソード
    • 一応ここで一通りの区切りをつける

現在の進捗@2025/12/29

個別の要素は結構できたきたので、それらを統合して、サバイバルモードで遊べるようにする作業をやっています!大分いい感じにできてきてます!

現時点で遊べるもの

ゲームの各要素を個別に公開しています。
現時点ではクリエイティブモード前提になります。

注意:現時点の試遊版のリリース物では、
 モンスターの自然沸きとか、クラフトレシピ、素材入手手段、がないので、
 クリエイティブタブからMechとか敵を払い出してきて遊んでみる形になります

カスタム可能なMechのMod

無限生成される廃墟マップ

おまけ:本編とは関係ないけど、18m級の巨大ロボのMod

予定動作環境



Java版マイクラのMODでゲームを作ってみたい話:メモ帳

やりたい事の全体像

これまで作ったもの

  • 戦闘回りの超プロトタイプ
    • ロボ君、Mob君、Boss君
  • 脱線:PVP用でかいロボ
    • 本編に出てくるのかこれは…w
  • 1章最終ステージのマップ

少なくとも1章リリースまでに作りたいもの

  • MOD:ロボ君の消耗/メンテ/成長機能
  • デタパ
    • 上記の材料をクラフトするレシピ
    • Pomkots固有素材のドロップテーブル
  • MOD:Mob君とBoss君の種類を増やす
  • MOD:ミッション機能(ありものがあれば…)
    • ミッション発動条件のアイデア
      • 宝箱を開ける
      • 特定の地点に到達する
      • 何かのフラグがONになる
    • ミッション内容のアイデア
      • 殲滅戦:特定範囲内の特定の敵を全部倒すとクリア
      • 防衛戦:指定時間、防衛対象を守り切るとクリア
      • 移動/退却戦:特定の地点にたどり着くとクリア
  • MOD:ムービーシーン機能(ありものがあれば…)
  • 中マップ:イベントがあるマップ
    • はじまりの炭鉱町 
    • 廃工場
    • 洞窟に埋もれた廃墟
    • 最終ステージ手前の村
  • 小マップ:マップに点在している小さい建造物
    • 廃墟飛行機
    • 廃墟宇宙船
    • 廃墟ビル
    • 廃墟巨大ロボ
  • MOD:マップ自動生成
    • 静的マップで行くのか動的マップで行くのか決めきれず…
    • ReTerraforgedが復活、あるいはそれ相当の地形生成MODがあればなぁ…

直近で作ってみたいもの

  • MOD:ロボ君の成長/カスタム/消耗/メンテ機能
  • マップ作成:廃工場
  • 脱線:飛行ロボ君
  • 脱線:Extension Pack的なものを作る参考になるサイトとか

メモ:ロボ君の成長/カスタム要素

  • パラメタチューニング(AC6のOSTみたいな機構)
    • 正直これが一番簡単に作れそうw 
    • 一定の上限ポイント内でパラメタを割り振る。上限は何かの素材で拡張可能
    • 移動速度とか
    • ダッシュ速度とか
    • 火力とか
    • ジャンプ力とか
    • ブースト消費とか
  • 武器
    • 色んな武器を載せ替え可能にする
    • 威力とか消費、リロード、クールタイムをパラメタ式にして
    • 同じ武器でもランダムで性能が変わったらハクスラみが出て面白いかも
  • 装甲の形状/性能
    • パラメタ的には重量と防御力ぐらい?
    • 正直、見た目だけ変われば自分的にはOKw
    • AC並みに各パーツに固有性能を持たせるのもいずれはやりたいが…
      • (腕が集弾性能に影響するみたいな)
  • インナー/拡張パーツ的なもの
    • ジェネレーター
    • ブースター
    • 飛行ユニット
    • 水上ユニット
    • などなど
  • 配色
    • テクスチャの特定の色だけ好きに変えられる
  • 皆が好きな武器とか装甲をデタパ/リソパで追加できる機能
    • これは難易度高すぎる…

メモ:ロボ君の消耗/メンテ要素

やりすぎるとめんどくさいだけになるのでバランスがむずい…

ただ、マイン&クラフト的な楽しさとか、ロボ君に愛着が沸く、という意味ではやりたいところ

  • 燃料
  • 弾薬
  • 装甲

Java版マイクラのMODでロボバトルを作ってみてるよ:リリースに向けた細かい調整

いざ「リリースしてみよう!」って思うと、色々直したいポイントがボロボロ出てきてめっちゃ調整しているなうです!

調整①サウンドエフェクトつけてみた

これ調整っていうのか謎だけどw(今までずっと気づいてなかったのは内緒…。ずっと無音でコソコソ作業してたから…)

効果音はすべて、効果音ラボさんのアセットを使わせていただいています。品揃えも品質もすごい!!さらにサイトのUIが神!!効果音の選定が超やりやすい…。

調整②銃器MODのTACZに合わせてHP/ダメージのスケールを調整

自分のロボMODの世界に閉じてる話なら、既に調整済!で問題なかったんですが、
やっぱMODとして公開するなら、色々なMODと組み合わせて
作者が想像もしない遊び方を生み出して欲しいじゃないですか!!

ということで、一番組み合わせる可能性が高そうな、銃器MODに合わせて調整してみました。

敵が動いちゃうとソロではほぼ無理ゲーだけど、複数人で誰かがタゲとったり、遮蔽物をうまく使えばなんとかなる…と信じたい

ちなみに当初はこの辺の調整も、一切なんも考えてなかったんですよね…。

ふと思い立って軽くネザライト剣でつついたら、ボス君も簡単に倒せちゃって「これはあかん!!」ってなって調整しました…w

調整③ずっと気になってたモーションの一部を修正

どこ直したか分かる人います…?w

残作業

  • ロボ君/モブ君/ボス君のスポーンエッグ追加
  • マルチ最終テスト
  • 各MOD提供サイトのリリース作業

あたりかなぁ。大分リリースが近づいてきて超ドキドキしてます…。なんもかんも初めてすぎる…。優しく教えてくれる指導者募集中…。

 

Java版マイクラのMODでロボバトルを作ってみてるよ:ボス戦でござい!!

火事と喧嘩は江戸の華、ボスと戦闘はロボの華です!ここ1か月の戦闘シリーズの集大成になります。かなりいい感じになったので是非みてくださいー!

作ったもの

くわああああああ、熱い!!かっこいい!!!

実装した機能と工夫点

モデリング

従来と同様、BlockBench + GeckoLibプラグインで作成です

モーション

これもGeckoLibのプラグインで作成。Ease Curveが超便利です。キーフレームを割と粗目に置いて、あとはEase Curveで調整ってやるとかなり楽でした。

テクスチャ

これは前作ったPBRテクスチャをそのまま流用しています

UVは超適当ですw

陰影の処理を影MODに全委任出来るので、テクスチャに陰影を描く必要がなくなります。ってなると、テクスチャには質感と色だけ定義できればよく、ラフにUVペタペタしてもそこまで違和感ない感じです。

というか、マイクラの解像度、ロボMODの距離感/速度だと、一瞬でディテールが見えなくなるので多少アレでも問題なしw

MOD実装

近距離攻撃:ジャンプして地面をたたいて地割れを起こす技

  • エフェクトをBlockBenchのエンティティとして作っています
  • ゲーム内にはProjectileとして実装してます
  • なんか派手なエフェクトの弾が速度0で、ぺって配置されるイメージです

近距離攻撃:地面をかちあげて岩を連続して隆起させる技

  • これもエフェクトをBlockBenchのエンティティとして作っています
  • ちょっと違うのが、ちょっとずつタイミングをずらして連続して何個も生成させてます
  • Projectile#tickで、自分が生成後、N tickたったら次の岩を隣におく、って感じです
  • 再帰処理的に書いてます
  • 注意点:再帰の上限値を決めとかないと無限に遠くまで作られそうw

近距離攻撃:なんか光の柱が円状にすっ飛んでくやつ

  • 急にファンタジー感出てきちゃうやつですが、派手なのと、よける操作が楽しいので気に入っていますw
  • これは普通に光の柱をProjectileとして実装して周囲にバラまくだけになります

遠距離攻撃:ガトリンググレネード

  • グレネードを凄い勢いでばらまいてきますw
  • 基本はロボ君のガトリングガンと一緒で、弾丸をグレネードにしただけです

遠距離攻撃:超巨大グレネード

  • これもレンダリングサイズを二倍にして威力を上げただけ
  • あとはパーティクルの代わりに、MOBの爆発用に作ったエンティティのエフェクトを置いています

遠距離攻撃:ホーミングミサイルx8同時発射

  • これは板野サーカスをやった時の実装をむらびてうすさんから移植

遠距離攻撃:超巨大ホーミングミサイル

  • これもサイズ大きくして威力と爆発エフェクトの差し替えのみ

GeckoLibアニメーション、Goal、クールタイム管理の連動

  • これはちょっと工夫しました。要件がかなり欲張りモードになっちゃって
    • 実行時間が長いアクションが複数ある
    • アニメーションはサーバ側から発火したい
    • アクションはそれぞれクールタイムを管理したい
    • MinecraftのAIのGoal周りの機構を使いたい
    • でも後でプレイヤーが搭乗できるように、Goalとは疎に作っておきたい
  • っていうのを頑張って実現しました
  • ざっくりいうと
    • アクション管理は自前のクラスに集約してサーバで保持
    • クールタイム、アクション中のTick数も管理
    • 上記が司令塔となって、GoalやGeckoLibに色々指示する
  • という感じでやりました

部位別当たり判定

  • 構造の部位破壊をするために導入しました
    • ボス本体の当たり判定は超細くて小さく
    • 部位ごとの当たり判定は、別のエンティティとして生成
    • 当たり判定エンティティの位置をボスの位置と同期する
    • 攻撃が当たり判定エンティティに当たった場合、hurtを本体にdelegateする
    • その際、部位破壊判定やダメージ軽減などの処理を間に挟む
  • という感じでやりました
  • ほんとは本体のPassengerとして持たせたかったんですが、位置情報がぐだぐだになりそうだったのでやめときました
    • Passengerにしとけばサーバとクライアントの同期がとれるのと、状態が保存される
    • ただ、Passengerにしちゃうと当たり判定の位置を自由に変えるのが厳しそう
  • 1.20.4以降だと、Passengerのアタッチメント位置をかなり自由に指定できるので、VerUp後に正しい状態で再実装かなぁ

部位破壊

  • 実装した部位
    • 胸部破壊→胸部破壊すると、コアが露出してダメージ増加
    • 脚部破壊→脚部破壊するとひざまずいて一定時間胸部が地面に近づく
  • これは上記の部位別当たり判定エンティティで破壊状態を管理しています
  • また、破壊時のリアクションは前述のアクションクラス管理に集約しています
  • これにより、AIが勝手に動いてゴチャゴチャならんようにしました

クルクルスピン問題

  • PathFinderMobの当たり判定のサイズを大きくすると、謎にクルクルスピンしまくります…
  • 本体のPathNavigationあたりが怪しい気配がしてるんですが、ちょっと深追いする気になれないコードでした…
  • ワークアラウンドとして
    • 移動速度を下げる
    • 本体の当たり判定は細く長く(主たる当たり判定は前述の部位ごとのやつでやる)
  • という逃げ手で軽減しています…。もし対処方法知ってる方がいたら超教えてほしいです…

所感

楽しかった…。鬼楽しかった…。なんならロボ君作ってる時より楽しかった…。

やっぱでかいロボをド派手に動かすのは最高です…。

いずれマクロス級の超ボス「都庁ロボ'24」を開発する予定です。

今後の予定

とりあえずロボ君とモブ君達、ボス君が揃ったので、彼ら一式を先行して単体のMODとしてリリースしたいな、と思ってます。

そのために必要な残バックログは

  • ドロップテーブル、レシピの実装
  • マルチ対応(主にロボ君。NPCのみんなはおそらく大丈夫)

になります。この辺をゆっくり進めていこうかな、と。

ただ、地味でストレスフルな作業になるのが目に見えているので、飴タスクである港湾都市以外のマップ作製と並行してやっていこうかなー、っとか考えています!

Java版マイクラのMODでロボバトルを作ってみてるよ:#2 第二回戦闘試験結果レポート

前回の戦闘試験の結果を踏まえて各種の機能追加を行い、第二回試験を実施しました!

これまでのあらすじ

前回試験の様子

試験結果を踏まえて追加した機能

第二回戦闘試験の様子

結果まとめ

いい…とてもいい…。なかなかゲームっぽくなってきたんじゃないでしょうか!!

やっぱり爆発とかヒットエフェクトあると映えるなぁ。

ターゲットアシストについては、

  • Weak Lock(クロスヘアが敵の近くにいると弾が当たる)が大活躍
  • Strong Lockは使ってる暇なし…。ボスとか高機動な相手が出てきたら使う感じかなぁ。
  • Multi Lockはかなり使いで良かった!やっぱミサイルの対象選べるといいなぁ

HUDについては

正 直 見 る 余 裕 な い で す

役に立ったのは敵のHP表示ぐらいかなw

今後の方針

対Mob殲滅戦はこんくらいでいいかなーって思いました!

なので次は戦闘システムの華、ボス戦を作っていこうと思います!!

ちょっとだけ先出し

実はもうモデルと歩きモーションは昨日作ったんですが、中々熱くなりそうですw

Java版マイクラのMODでゲームを作ってみたい話:現時点のMOD構成

制作中のMinecraftのゲームのMOD構成をメモっとこうと思います。いいの見つけたら随時更新予定です。

参考:↓のゲームに搭載予定のMOD一覧です

あと、依存MODまで書いてくと大変なので、エントリポイントだけ…

Minecraft

Minecraft: 1.20.1

Loader

Fabric: 0.92.2+1.20.1

※そこまで深いとこまで使ってないので、Forge対応もすぐできそう。
 他のMODもFabric/Forge両対応のものしか選んでない感じです。

必須MOD

geckolib-4.4.9: エンティティのアニメーションに使用

figura-0.1.4: 主人公ちゃんのモデル表示に使用(BBで作ったモデルそのまま使える)

leawind_third_person-v2.1.0: 神TPSカメラ。マジ必須。これないと全然違うゲーム

modmenu-7.2.2: MODの設定をできる

必須じゃないけど絶対入れた方がいいMOD(機能面)

iris-1.7.2: 影MOD。シェーダーはBSLOriginal_v8.3

DistantHorizons-2.1.2-a: LODで超遠距離をそこそこの負荷で表示

Controlify-2.0.0-beta.13: コントローラー使えるようにする

必須じゃないけど絶対入れた方がいいMOD(性能面)

軽量化とかマップ先読みとかそういう系

c2me-fabric-mc1.20.1-0.2.0+alpha.11.10

Chunky-1.3.146

indium-1.0.34+mc1.20.1

sodium-fabric-0.5.11+mc1.20.1

実行時にはなくていいけどアセット制作に使ってるMOD

Axiom-4.1.0-for-MC1.20.1: 建築

reterraforged-0.0.7-fabric-1.20.1: 地形の自動生成

 

 

Java版マイクラのMODでロボバトルを作ってみてるよ:ターゲットアシストとHUDとヒットエフェクトを作ってみた

第一回戦闘試験の結果を受けて、タゲアシとHUDを作ってみました!

参考:第一回試験の様子はこちら

作ったもの

ターゲットアシストとかヒットエフェクト、爆発

HUD

作り方

流石に多岐にわたりすぎて、細かく書くと超大作になっちゃうので触りだけ…

ターゲットアシスト

大きく分けて

  • ①ターゲットの選定
  • ②ターゲットの方を向く

の二つが必要になります。②はそこそこすぐできたんですが、①が地獄だった…

色々試したんですが、結局↓みたいな感じになりました

試行①不採用(ただ、うまくやる方法はあるかも)

視線方向のエンティティの3次元座標をスクリーン座標に変換、円形のレティクル範囲内にある場合はターゲットとする

一番精度高く動いたんですが、重すぎて爆沈。後で振り返れば、model/viewMatrixとprojectionMatrixを毎回生成してたのが敗因っぽい。その二つって、レンダリングシステムが絶対もってるはずなので、それを取得するようにすればもっと軽くなるかも

試行②不採用

視点方向にレイキャストを飛ばして当たったエンティティをターゲットとする

マイクラの方でもともとその結果を持ってて、勝った!!超軽い!!と思ったんですが、クリエイティブだと動くんですがサバイバルだと動かず…。どうもサバイバルの場合はレイキャストの距離が短いらしい…。自前でレイキャストを飛ばすのも色々試してみたんですがうまく動かず、気分転換にやってみた試行③が上手くいったので不採用に。

試行③採用!!

カメラのポジションと視線のローテーション、エンティティのポジションから三角関数で視野からの角度が一定内&角度が一番浅いものを検出、ターゲットとする

ローテクofローテクですが、これが一番軽くてそれっぽい挙動でした。

HUD

クロスヘアとかクールタイムゲージ

これは割と簡単。FabricのHudRenderCallbackイベントにフックして普通に二次元画像として描画&テクスチャ貼り付けで出来ました。

デフォルトのHUDを無効化するのがちょっと悩んだけど、GuiクラスにmixinしてrencerXXXXを条件に応じて無効化、でなんとかなりました。

敵のヘルスゲージとかターゲットマーク

これが一番難航しました…。LivingEntityRenderにmxinして3D座標内に描画すればええんや!と思ってコード書いたんですが、どうやっても表示されず…。原因はVertexを描く順番。ポリゴンの向きって、Vertexを描く順番で決まるらしいんですが、これを画面方向に裏側が向くように書いちゃうと、cullingされて表示されないっていう。3Dプログラミング弱者すぎて辛い…。

あと、GeckoLibのエンティティはmodel/viewMatrixの向きが微妙に他のエンティティと違うっぽいので注意が必要…。

爆発とかヒットエフェクト

今回きついのばっかりでしたが、これだけは楽&楽しかったかもしれないです。

爆発についてはパーティクルで派手なのを作るセンスが絶望的に欠けていたので、普通にエンティティとして作りました。発光させればなんとかなる!!

👇はブロックベンチの発光させてない状態のアニメーション

ヒットエフェクトは発光パーティクルを散らす感じでそれっぽく。ただ、距離がちょっと離れると表示されなくなっちゃうんだよな…

所感

きつかった…今回はほんとにきつかった…。

よく考えると今までって、エンティティをいじったりとか、モデルを頑張って作ったりとかしてなかったんだけど、今回初めてゲームシステムにがっつり手を入れた気がする…。

そして3DCGプログラミングの基本がわかってなさ過ぎて色々地雷にはまりました…。やっぱ基本を押さえとかないとダメだなぁ…。

もうちょい詳しく教えなさいよ!!とかありましたら、Xまでお気軽にお問合せくださいー。