-
Notifications
You must be signed in to change notification settings - Fork 0
Data Structure
めいびぃ edited this page Apr 20, 2026
·
18 revisions
このページでは、JSON データの構造について解説します。
- JSON駆動:UIはデータに依存し、コード修正なしでキャラや敵を追加可能
- 拡張性:新しいデータを追加しても既存構造を壊さない
- 国際化:多言語対応を前提に設計 (i18n)
📂 root/
└─ 📁 assets/
└─ 📂 data/
├── 📁 languages/ # 言語データ
│ ├─ en.json
│ └─ jp.json
├── 📁 tables/
│ ├─ attributes.json # 属性テーブル
│ ├─ match.json # 属性相性補正テーブル
│ ├─ miasma-buff.json # ミアズマシールド補正テーブル
│ └─ range.json # 距離減衰補正テーブル
├─ agents.json # エージェント情報
├─ enemies.json # エネミー情報
├─ helpTexts.json # ヘルプテキスト群
└─ languages.json # 言語の表記リスト
- エージェント情報
- エージェント選択時に読み込まれるエージェント情報
{
"anby": {
"factionId": "cunning_hares",
"specialtyId": "stun",
"attributeId": "electric",
"image": "anby.webp",
"rank": "a",
"link": "2"
},
}- anby (name):エージェント名。識別IDとして使用。
- factionId:陣営
- specialtyId:役割
- attributeId:属性
- image:アイコン画像のファイル名 (webp形式)
- rank:エージェントのランク
- link:HoYoWikiのページURLの末番
- エネミー情報
- エネミー選択時に読み込まれるエネミー情報
{
"tyrfing": {
"weakAttrId": ["ether", "ice"],
"resistAttrId": ["none"],
"image": "tyrfing.webp",
"material": "none",
"link": "460"
},
"newborn_dead_end_butcher": {
"weakAttrId": ["ether", "ice"],
"resistAttrId": ["none"],
"image": "newborn_dead_end_butcher.webp",
"material": "ferocious_grip",
"link": "417"
},
}- tryfing (name):エネミー名。識別IDとして使用。
- attrWeakId:弱点属性
- attrResistId:耐性属性
- image:アイコン画像のファイル名 (webp形式)
- material:ドロップする強化素材の画像 (gif形式)
- link:HoYoWikiのページURLの末番
- (?)アイコンをクリックした時に読み込むテキスト群
- ポップアップが表示される時に読み込まれる。
{
"data-key": {
"text": [
"Text1",
"Text2"
]
},
}-
data-key:識別ID。
- HTMLのタグ内に記載された
data-keyの値と連携している。<span class="info-circle info-btn" data-key="result">?</span>
- HTMLのタグ内に記載された
-
Text1, Text2:ヘルプテキストとして表示されるテキスト。
-
,で区切ることにより改行 <br>することが可能。 - HTMLタグやタグよるCSS装飾も利用可能でテキストに直接書き込むことで適用される。
-
- 選択フィールドと連携している言語リスト
- 選択フィールド生成時に読み込まれる。
{
"jp": {
"labelShort": "JP",
"labelLong": "Japanese"
},
"en": {
"labelShort": "EN",
"labelLong": "English"
}
}- jp (lang):識別ID
-
labelShort:言語の省略表記。
langSelectのディスプレイに表示される。 -
labelLong:言語の正規表記。
langSelectのプルダウンリストに表示される。
- ラベルを置換するための言語データ
- 言語選択時に読み込まれる。
{
"data-i18n": "Text"
}記入例
// jp.json
{
"headerTitle": "ゼンレスゾーンゼロ ダメージ計算ツール",
"atk": "最終攻撃力 [N]",
"agent.anby": "アンビー・デマラ",
"faction.cunning_hares": "邪兎屋",
"specialty.stun": "撃破",
"attribute.electric": "電気",
"enemy.tyrfing": "ティルヴィング"
}
// en.json
{
"headerTitle": "Zenless Zone Zero Damage Calculate",
"atk": "Attack [N]",
"agent.anby": "Anby Demara",
"faction.cunning_hares": "Cunning Hares",
"specialty.stun": "Stun",
"attribute.electric": "Electric",
"enemy.tyrfing": "Tyrfing"
}-
data-i18n:識別ID。
- HTMLのタグ内に記載された
data-i18nの値と連携している。<label for="atk" class="form__label" data-i18n="atk">最終攻撃力 [N]</label>
- Javascript上では
agents.jsonやenemies.jsonの情報と連携する形で運用しており、関連するIDはカンマ区切りでカテゴライズしている。 - 命名の仕方は基本的に英語表記を採用しており、小文字表記にし、スペースはアンダーバーに置換している。
- HTMLのタグ内に記載された
- Text:言語ごとに置換させたいテキスト。
- 属性ごとのダメージ倍率をまとめたテーブル
- 選択フィールド生成時や、状態異常ダメージ倍率へ補完する際に読み込まれる。
{
"physical": {
"anomalyCorr": 713,
"label": "attribute.physical"
},
"electric": {
"anomalyCorr": 1250,
"label": "attribute.electric"
}
}- physical (attribute):識別ID
- anomalyCorr:状態異常ダメージ倍率。入力フィールドに自動補完される。
- label:国際化 (i18n) 用で使用。
- 属性相性の倍率テーブル
- 選択フィールド生成時や、自動補完されるときに読み込まれる。
{
"none": {
"value": 0,
"label": "nonCorr"
},
"weak": {
"value": -20,
"label": "weakAttr"
},
"resist": {
"value": 20,
"label": "resistAttr"
}
}- none (match):識別ID
- value:属性相性補正。入力フィールドに自動補完される。
- label:国際化 (i18n) 用で使用。
- 特定のエネミーのみ倍率が違うミアズマシールドの補正をまとめたテーブル
- 計算処理時に読み込まれる。
{
"wandering_hunter": {
"defUp": 100,
"dmgCut": 25
},
"primordial_nightmare_the_creator": {
"defUp": 10,
"dmgCut": 50
}
}- wandering_hunter (name):エネミー名。識別IDとして使用。
- defUp:防御力UP率
- dmgCut:ダメージカット率
- 距離減衰補正をまとめたテーブル
- 選択フィールドの生成や、自動補完される時に読み込まれる。
{
"0-15": 100,
"15-20": 75,
"20-25": 50,
"25-": 25
}- 0-15 (range):識別ID
- 100 (value):距離減衰補正率。入力フィールドに自動補完される。