-
Notifications
You must be signed in to change notification settings - Fork 0
戦国オンライン・マップエンジン 開発タスク一覧 #1
Description
hex-shogun-map / Issue Backlog
戦国オンライン・マップエンジン 開発タスク一覧
Phase 1 — 基盤データ整備
hex-shogun-map 単独で進められる作業
#1 · feat/geo-data|68令制国の地理JSONデータ整備
優先度: 🔴 高
sengoku_hex_data_v2 を全68国分に拡充する。
各国の hex_id・terrain_type・elevation_m・is_river フィールドを統一フォーマットで定義。現状の伊豆・壱岐データをベースに標準化する。
Labels: geo-data, data
#2 · feat/meta-index|全国メタインデックスサーバーの構造定義
優先度: 🔴 高
68国のL2チェーン情報(chain_id, rpc_url, province_name, hex_data_url)を束ねるメタインデックスJSONのスキーマ設計と初期データ作成。L2間の接続トリガー条件もここで管理する。
Labels: architecture, multi-server
#03 · feat/land-nft-schema|領地NFTのオンチェーンデータ構造定義
優先度: 🔴 高
スマートコントラクトに記録する LandDNA 構造体の設計。
struct LandDNA {
string hex_id; // ヘックスID(例: "izuno_001")
address owner; // 所有者
uint256 pop_score; // 人口スコア
uint256 eco_score; // 経済スコア
uint256 mil_score; // 軍事スコア
uint256 tech_score; // 技術スコア
uint256 season_id; // シーズン番号
uint256 last_updated; // 最終更新タイムスタンプ
}CharacterDNA(USL側)との接続を考慮したフィールド設計を行う。
Labels: NFT, architecture, USL連携
Phase 2 — USL連携インターフェース
Universal-Soul-Logic との接続部分
#04 · feat/action-event-interface|キャラクター行動イベントの受信スキーマ定義
優先度: 🔴 高
USL(soul-engine.js)が発行する行動イベントの受信インターフェースを定義する。
以下の形式をJSONスキーマとして確定し、両リポジトリで共有できるドキュメントにまとめる。
{
"actor": {
"token_id": "USL-0042",
"occupation": "samurai",
"ap_modifiers": { "military_train": 0.7 }
},
"action": "military_train",
"ap_spent": 50,
"hex_id": "izuno_001",
"province": "伊豆",
"timestamp": 1742300000
}Labels: interface, USL連携
#05 · feat/score-mapping|行動 → 複合スコア変換ロジックの実装
優先度: 🟡 中
受け取った行動イベントを複合スコア(人口・経済・軍事・技術)の増減値に変換する score-mapping.json とエンジン実装。職業・AP消費量を係数として反映する。
変換例:
| action | 人口 | 経済 | 軍事 | 技術 |
|---|---|---|---|---|
cultivate |
+2 | +1 | — | — |
military_train |
— | — | +3 | — |
trade_buy |
— | +2 | — | — |
education |
+1 | — | — | +2 |
Labels: score, USL連携, logic
#06 · feat/server-connection-trigger|複合スコア閾値によるL2間接続トリガーの実装
優先度: 🟡 中
隣接する令制国サーバー間で、複合スコアが一定閾値を超えた際にL2チェーン間の接続(ブリッジ)を自動生成するロジック。地理的隣接データ(adjacency_map)の整備も含む。
Labels: L2, multi-server, trigger
Phase 3 — シーズン制・描画拡張
ロードマップ記載分の具体化
#07 · feat/season-snapshot|シーズン終了時の領地スナップショット機能
優先度: 🟡 中
シーズン終了時に各領地NFTの複合スコアと所有者を静的JSONとしてIPFS等に保存する凍結処理。tokenURI を動的APIから静的URLへ切り替えるメカニズムも実装する。武将カード発行(USL側)との同期タイミングを設計書に明記する。
Labels: season, NFT, USL連携
#08 · feat/3d-diorama-skin|Three.js 対応 ThreeDioramaSkin の追加
優先度: 🟢 低
現在の2D描画に加え、Three.js(r128)を使った3Dジオラマ表示用Skinを実装する。標高データを高さに変換し、地形・建物・部隊をヘックス上に3Dオブジェクトとして配置。Skin差し替えインターフェースの互換性を保つ。
Labels: rendering, Three.js, enhancement
#09 · feat/evm-l2-connector|各地方L2チェーン(EVM互換)との接続インターフェース実装
優先度: 🟢 低
ethers.js 等を用いて各L2のRPCエンドポイントに接続し、領地NFTの所有者・スコアをリアルタイム取得する仕組みを実装。ウォレット接続(MetaMask等)とトランザクション発行フローも含む。
Labels: blockchain, EVM, L2
サマリー
| # | タイトル | フェーズ | 優先度 | USL連携 |
|---|---|---|---|---|
| #1 | 68令制国の地理JSONデータ整備 | Phase 1 | 🔴 高 | — |
| #2 | 全国メタインデックスサーバーの構造定義 | Phase 1 | 🔴 高 | — |
| #03 | 領地NFTのオンチェーンデータ構造定義 | Phase 1 | 🔴 高 | ✅ |
| #04 | キャラクター行動イベントの受信スキーマ定義 | Phase 2 | 🔴 高 | ✅ |
| #05 | 行動 → 複合スコア変換ロジックの実装 | Phase 2 | 🟡 中 | ✅ |
| #06 | 複合スコア閾値によるL2間接続トリガー | Phase 2 | 🟡 中 | — |
| #07 | シーズン終了時の領地スナップショット機能 | Phase 3 | 🟡 中 | ✅ |
| #08 | Three.js 対応 ThreeDioramaSkin の追加 | Phase 3 | 🟢 低 | — |
| #09 | EVM互換L2チェーンとの接続インターフェース | Phase 3 | 🟢 低 | — |