Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Myven Client

Myven Client の開発用モノレポです。
この README は、Myven Client 本体(主に 1.8 ワークスペース)の実装方針、軽量化技術、独自レンダリング方式、ClickGUI の設計、ビルド/起動手順をまとめています。

開発者向けの詳細メモ(実装ポイント、調査索引、運用上の注意、変更履歴メモ)は
eaglercraft-1_8-workspace/MYVEN_BUILD_MEMO.txt を参照してください。
この README よりさらに深く確認したい時は、まずそこを見る運用を推奨します。

Open Source にした背景と感謝

Myven Client は、長年の大規模運営を前提に始まったプロジェクトではなく、
「Eaglercraftを遊んでいるときに、欲しい機能を自分で実装したい」という動機から始まりました。

開発方針の原点として、公式Discordで共有したメッセージの一部をここに引用します。

「Eaglercraftを遊んでいるときに『こんな機能があったらいいな』と思ったことがきっかけで作り始めました。」

「日本人ユーザーの意見を反映できるEaglercraftクライアントとしてMyven Clientを作ってきました。」

「もし開発を終了する場合、GitHubのprivateになっているMyven Clientのリポジトリをpublicにします。」

「コミュニティの誰かがこのプロジェクトをベースに開発を続けてくれるのであれば、それもとても嬉しく思います。」

また、Resent / Astra / Pixel をはじめ、先行するクライアントや開発者コミュニティから得た学びに感謝しています。
Myven Clientを使ってくれたすべてのユーザーと、フィードバックをくれたコミュニティにも感謝します。

このクライアントを Open Source にする理由

  • 日本語圏ユーザーの要望を反映した実装を、将来も継続可能にするため
  • 開発終了後も、コミュニティが保守・改良・派生開発を続けられるようにするため
  • 軽量化や描画最適化など、実装知見を共有してEaglercraft系全体に還元するため

コミュニティ Discord(開発終了後の案内)

Myven Client 本体の公式開発は終了予定ですが、このDiscordでは今後、 公式の後継という形ではなく、Forkベースで更新が続く可能性があります。

また、クライアント本体だけでなく、便利系のプラグインや周辺ツールの共有が行われる場合があります。
最新の動きや配布情報を追いたい場合は、参加しておくと便利です。

  • Discord Invite: https://discord.gg/3mWvyxh6qQ

このクライアントの使い道

  • 学習用途
    • Eaglercraftクライアント構造
    • Java -> TeaVM -> JavaScript / WASM-GC のビルド導線
    • GUI描画・レンダリング最適化の実装例
  • 改造用途
    • モジュール追加、HUD拡張、ClickGUI改造
    • Block Overlay / Hitbox / AntiSnipe などの挙動調整
  • 派生開発用途
    • Forkして独自クライアントを作成
    • プロジェクトをベースに新規クライアント開発

リポジトリ構成

  • メイン開発対象: eaglercraft-1_8-workspace
  • 開発詳細メモ: eaglercraft-1_8-workspace/MYVEN_BUILD_MEMO.txt
  • 1.12 系: eagercraft-1.12-workspace
  • Wispcraft: wispcraft, wispcraft-latest
  • ローカル静的配信: serve.ps1

必要環境

  • Java 17 以上
  • Windows + PowerShell(本READMEのコマンド例)
  • Wispcraft を触る場合: Node.js + npm

Myven Client の技術的な特徴

1) 軽量化の基本方針

Myven Client は「必要な時だけ処理を走らせる」方針で設計されています。

  • モジュール有効時のみ処理を適用
    • 例: MyvenModules.isEnabled(...) による早期分岐
  • HUD 描画は有効モジュールのみループ
    • HudManager.renderAll(...) は enabled && hud != null の要素だけ描画
  • Overlay/Hitbox も機能ごとに個別分岐
    • RenderGlobal と RenderManager 側で ON 時のみ拡張描画
  • FBO 再利用で無駄な再作成を抑制
    • GameOverlayFramebuffer は遅延作成し、解像度変更時だけ再確保
  • ClickGUI 側で可視カードのみ描画
    • スクロール範囲外カードは visible 判定で描画スキップ

2) 独自レンダリング方式(通常UI以上の表現)

Myven では、標準のテクスチャ貼りUIだけでなく、独自の描画経路を複数使っています。

  • 角丸UIを頂点描画で直接生成
    • GuiButton は丸角を Tessellator + TRIANGLE_FAN で描画
    • ボタンごとに radius/hover/alpha を制御
  • SDFベースの角丸シェーダUI
    • ShaderUtil.drawRoundedRect(...) で角丸矩形をシェーダ描画
    • border/shadow/gradient/innerGlow/glass をスタイル指定
  • オフスクリーンAA合成
    • GuiMyvenClick / GuiMyvenModuleSettings は CLICKGUI_AA=2 のFBO描画
    • FBO結果を本画面に線形補間で合成してジャギーを軽減
  • Overlayの拡張レンダリング
    • Block Overlay: fill/outline/throughWalls/pulse/rainbow
    • Hitbox: fill/outline/filter(Players/Mobs/Self)/eyeLine/lookLine
    • Particle Overlay: 攻撃時の粒子種類・量・速度倍率制御

3) 「本来そのままでは難しい部分」への実装アプローチ

  • AntiSnipe の見た目差し替え
    • Skin/Cape/FOV/表示名を描画時に差し替え
    • Tab/Scoreboard/Chat の自己名置換も実施
  • Web向けWisp統合の自動注入
    • Offline HTML へ wispcraft/index.js を Base64 埋め込み + 実行
    • 設定UIレイアウトを MutationObserver で後適用
  • WASM-GCオフライン単体化
    • classes.wasm, runtime, assets をBase64埋め込み
    • 実行時に Blob URL 化して1ファイル起動

ClickGUI / 設定UI の設計

ClickGUI 本体 (GuiMyvenClick)

  • タブ構成: ALL / FPS / PVP / GUI / MISC / PROFILE
  • カードUI:
    • モジュールごとに Enable トグルと Settings ボタン
    • hover / bounce / glow / gradient アニメーション
  • 検索・スクロール:
    • 検索文字列でフィルタ
    • スクロール位置を再オープン時に復元
  • プロファイル連携:
    • 保存・読込・削除
    • UIテーマやカード背景、言語設定も統合

モジュール詳細 (GuiMyvenModuleSettings)

  • General/HUD/Color のタブ分離
  • 設定行コンポーネント:
    • トグル、スライダー、色、テキスト入力
  • ColorPicker:
    • HSV/Alpha 操作 + ドラッグ移動対応
  • こちらもFBO AA + SDF角丸で統一描画

HUD Editor (GuiMyvenHudEditor)

  • HUD のドラッグ移動・拡大縮小
  • 組み込みHUD(Scoreboard/Hotbar/Tab)もオフセット調整可能
  • レイアウトは ProfileManager 経由で保存

モジュール / フックの主な実装ポイント

  • ToggleSprint
    • EntityPlayerSP の sprint 判定を拡張
  • Fullbright
    • EntityRenderer.updateLightmap(...) で gamma を引き上げ
  • No Hurt Cam / No Dynamic FOV
    • EntityRenderer.hurtCameraEffect(...) と AbstractClientPlayer.getFovModifier() を分岐
  • Block Overlay
    • RenderGlobal.drawSelectionBox(...) 拡張
  • Hitbox
    • RenderManager.renderDebugBoundingBox(...) 拡張
  • Particle Overlay
    • EntityPlayer 攻撃ヒット時の粒子生成追加
  • AntiSnipe
    • AbstractClientPlayer, GuiIngame, GuiPlayerTabOverlay, NetHandlerPlayClient などで描画/表示名置換

ビルド方法(Myven 1.8)

作業ディレクトリ:

cd .\eaglercraft-1_8-workspace

JavaScript オフライン版

.\gradlew target_teavm_javascript:makeMainOfflineDownload

または:

.\target_teavm_javascript\MakeOfflineDownload.bat

主な出力:

  • target_teavm_javascript/javascript/EaglercraftX_1.8_Offline_en_US.html
  • target_teavm_javascript/javascript/classes.js
  • target_teavm_javascript/javascript/assets.epk

WASM-GC オフライン版

.\gradlew target_teavm_wasm_gc:makeMainWasmClientBundle

または:

.\target_teavm_wasm_gc\MakeWASMClientBundle.bat

主な出力:

  • target_teavm_wasm_gc/javascript_dist/MyvenClient_WASMGC_Offline.html
  • target_teavm_wasm_gc/javascript_dist/classes.wasm
  • target_teavm_wasm_gc/javascript_dist/eagruntime.js
  • target_teavm_wasm_gc/javascript_dist/wispcraft/index.js

Desktop 配布 zip

.\gradlew target_lwjgl_desktop:packageDesktopDistribution

出力:

  • dist/MyvenClient-Desktop.zip

起動方法

Desktop 実行(開発デバッグ)

cd .\eaglercraft-1_8-workspace
.\gradlew :target_lwjgl_desktop:eaglercraftDebugRuntime

または:

.\target_lwjgl_desktop\StartDesktopRuntime.bat

Browser 実行(ローカル静的配信)

リポジトリルートで:

.\serve.ps1 -Port 8080 -DocRoot .\eaglercraft-1_8-workspace\target_teavm_javascript\javascript

WASM-GC を配信する場合:

.\serve.ps1 -Port 8081 -DocRoot .\eaglercraft-1_8-workspace\target_teavm_wasm_gc\javascript_dist

困ったとき

詳細は MYVEN_BUILD_MEMO.txt にあります。ここでは要点のみ。

  • ビルド失敗時
    • Java 17+ を最初に確認
    • PowerShell ではコマンドを1行ずつ実行
    • 不正文字エラー時は該当 Java ファイルの先頭崩れを確認
  • UI修正が反映されない時
    • 生成物HTMLを直編集しない
    • target_teavm_javascript/build.gradle.kts / target_teavm_wasm_gc/build.gradle.kts を修正
  • 大容量ファイルで push 失敗
    • GitHub 100MB制限あり
    • 必要なら Git LFS を利用

参考ドキュメント

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages