Java版マイクラのMODでロボを作ってみてるよ まとめ編

MinecraftのMODで製作した乗り物(トロットビークル)について、作ったものや、製作過程の記事をまとめました。

目的とか概要

  • 遠い遠い目標に向けて、マイクラのMOD開発のお勉強をする!
  • そのための第一歩として、まずは乗り物のMODを作ってみる!
  • お題は大好きなゲーム「バンピートロット」のビークル

中長期の目標についてはこちら

minecraft-hourouki.hatenablog.com

製作したもの紹介

基本動作

  • 歩く
  • 緊急回避
  • ブースト
  • 飛行

youtu.be

整地・土木機能

  • ハンマー
  • スコップ

youtu.be

戦闘機能

  • ガトリングガン
  • パイルバンカー
  • 垂直ミサイル(ホーミング付)
  • グレネードキャノン

youtu.be

今回作ったMODの今後について

しばらくは他の事をして遊びながら、ちょいちょい機能追加していこうと思います。

いずれはModrinthとかで公開してみたいんですが、あまりにも初心者コード過ぎて、かなり躊躇しています…。

つきましては下記にご協力いただける方をゆる募いたしますm(_ _)m

  • コードのアドバイスやレビュー
  • ちょっと使ってみたい
  • なんなら一緒に作りたい

ご興味ありましたら👇までご連絡ください!

https://x.com/grc_mcs

製作過程の日記

学んだこと(特に重要なこと)

クラサバどっちで動いてる話?は常に意識する必要がありそう

  • 同じコードがサーバとクライアント両方で動く
  • かつ、世界線によって役割とやれる事が違う
  • ので、常に両方意識しながら書いとかないとドツボにはまる…
  • C言語で初めてforkを使った時の混乱と似たものを感じた…w

Modrinthで類似MODを探してコードを見る、ムーブは有効っぽい

  • やりたい事ははっきりしてるんだけど
  • どっから手を付けていいかわからない、とか
  • 本体/ローダーのどの機能を使えばいいかわからない、みたいな時
  • 偉大なる先行者様のMODのコードを見るのは凄い有効だった
  • コピペするというよりは、とっかかりを探す感じ

線形代数はちゃんと学びなおした方がよさそげ…

  • 移動とか回転とかレイトレースとか、あらゆる事に絡んでくる…
  • 今は適当に数式だけググって凌いでるけど、早晩詰みそう…
  • きちんと勉強しようと思いましたまる

更に詳しくなるためのアイデア

今は雰囲気とかイメージでしか、処理とかデータの流れを把握できてないんだけど、もう一歩先に進むためには、👇をやるとよさそうかなぁ

デバッグモードでステップ実行しながら全体の処理の流れを追う

  • 自分が書いてるエンティティとかイベントハンドラだけ見てると、全体の流れがおえないんですよね…
  • 「今EntityのTick処理書いてるけど、他の処理とどういう関係で呼ばれる…?」的な
  • ステップ実行しながら上位階層の処理を追っていったら理解進みそうかなぁ
  • あるいは一回スタックトレースだけ吐いてみて、そこを起点にしてデコンパイルされたコードを遡上するのもありかもしれない

ヒープ系のプロファイルツールでオブジェクトの保有構造を探る

  • 特に本体のオブジェクトで、誰がなんのデータを持ってるかさっぱりわからんのです…(あるいは探すのにえらい時間かかる)
  • 大枠だけでも、オブジェクトの保有構造を把握したいな、と
  • ただ、クラスのコードだけ見ても、ListとかMapで持ってるケースが多くて、実体に何をもってるかは広範囲にコードを読まないとわからないっていう…
  • jhatとかのプロファイルツールを使えばこの辺を効率的に把握できるかな、と
  • 👇の神サイトに最近の情報がまとまってたので、いずれやってみます
  • jcmd で取得した Heap Dump, Thread Dump を各種ツールで分析する

書いてて思ったんだけど、これまんま、ドキュメント・コードが失われたシステムの保守開発を丸投げされた時のムーブだったw

今後の活動について

👇で一覧化するようにしました!

minecraft-hourouki.hatenablog.com

直近はカメラ周りで面白い事が出来ないか、試してみたいと思います!

  • 2Dアクションゲーム的なカメラ(マリオとか)
  • HD2D的な定点カメラ(オクトラとか)
  • 3Dクォータービューのカメラ(タクティクスオウガとか)
  • 3Dアクションゲームのカメラ(アーマードコアとかモンハンとか)
  • ポストエフェクトの最終段でトラップして強制ドット絵化

みたいな。色々遊べそうで超楽しみです!