Battlefield Data
Overview
Section titled “Overview”BattleFieldData.xml defines PvP battlefields: instanced player-versus-player arenas with team composition rules, scheduling windows, reward structures, war point scoring, and mode-specific game logic (strongholds, gates, rounds, etc.).
Version support
Section titled “Version support”| Version | Status |
|---|---|
| v92 | Full |
| v90 | - |
| v86 | - |
DSL support
Section titled “DSL support”Entity: battleFields
Operations: create, update, delete, upsert
Quick recipes
Section titled “Quick recipes”Create
Section titled “Create”spec: version: "1.0"
battleFields: create: - battleFieldId: 9001 type: "CaptureTheFlag" name: 700001 guideText: 700002 commonData: minTeamMember: 10 maxTeamMember: 15 minLevel: 65 maxLevel: 70 preCombatSec: 30 desertionAbnormalityId: 44440001 maxBattleMin: 20 forceExitSec: 60 continentId: 8001 bgm: enter: "Music_PVP_Enter" start: "Music_PVP_Start" fadeTime: 1.5 enableTimes: - day: "Mon" openHour: 18 closeHour: 22 competitionPointReward: true warPoint: finalBlowWP: 50 finalBlowHelperWP: 25 minWarPointForRank: 100 reward: minWarPointForReward: 50 rankingData: - rank: 1 rewardId: 80001 rewardAmount: 10 availableItems: items: - id: 60001 combatItemTypes: - id: "potion" specificData: autoReviveSec: 10 score: victoryScore: 5000Update
Section titled “Update”Partial updates modify only specified attributes and children. Keyed children (enableTimes, rewardData, commanderSkillLists) are matched by their natural key on update — unmentioned entries are preserved.
spec: version: "1.0"
battleFields: update: - battleFieldId: 9001 changes: commonData: maxBattleMin: 25 warPoint: finalBlowWP: 60 enableTimes: - day: "Mon" openHour: 19 closeHour: 23Only Monday’s schedule changes. Other days (Tue–Sun) remain as they were.
Incremental item changes
Section titled “Incremental item changes”Use addItems and removeItems to modify the item list without restating all existing items:
spec: version: "1.0"
battleFields: update: - battleFieldId: 9001 changes: addItems: - id: 60003 - id: 60004 removeItems: - id: 60001addItems is idempotent — adding an ID that already exists is a no-op. removeItems ignores IDs not present. These cannot be combined with availableItems in the same update (error E551).
Delete
Section titled “Delete”spec: version: "1.0"
battleFields: delete: - battleFieldId: 9001Upsert
Section titled “Upsert”Creates the battlefield if it does not exist, or replaces its children if it does. Applying the same upsert twice produces identical output.
spec: version: "1.0"
battleFields: upsert: - battleFieldId: 9002 type: "DeathMatch" name: 700010 commonData: minTeamMember: 5 maxTeamMember: 5 minLevel: 65 maxLevel: 70 preCombatSec: 15 desertionAbnormalityId: 44440002 maxBattleMin: 15 forceExitSec: 30 continentId: 8002 bgm: enter: "Music_DM_Enter" start: "Music_DM_Start" fadeTime: 2.0 enableTimes: - day: "Sat" openHour: 14 closeHour: 22 competitionPointReward: false warPoint: finalBlowWP: 30 minWarPointForRank: 50 reward: minWarPointForReward: 30 availableItems: items: - id: 60002 specificData: autoReviveSec: 5Properties reference
Section titled “Properties reference”BattleField (root element)
Section titled “BattleField (root element)”| Property | Type | Since | Required | Description |
|---|---|---|---|---|
battleFieldId | int | v92 | Yes | Unique battlefield identifier (mapped from XSD id) |
type | string | v92 | Yes | Battlefield mode type (e.g. CaptureTheFlag, DeathMatch) |
name | int | v92 | Yes | String table ID for display name |
guideText | int | v92 | No | String table ID for guide description |
helpDataId | int | v92 | No | Help system reference |
blueTeamName | int | v92 | No | String table ID for blue team name |
redTeamName | int | v92 | No | String table ID for red team name |
enterLimitCount | int | v92 | No | Maximum daily entries |
coolTimeMin | int | v92 | No | Re-entry cooldown in minutes |
banRule | string | v92 | No | Ban rule identifier |
listHide | bool | v92 | No | Hide from matchmaking list |
isNotOff | bool | v92 | No | Prevent disabling |
commonData | CommonData | v92 | No | Match rules, team spawns, level limits |
bgm | BGM | v92 | No | Background music tracks |
reward | Reward | v92 | No | Reward configuration |
enableTimes | list[EnableTime] | v92 | No | Weekly schedule windows |
warPoint | WarPoint | v92 | No | War point scoring rules |
availableItems | AvailableItems | v92 | No | Allowed items and combat item types |
addItems | list[AvailableItem] | v92 | No | Add items to AvailableItems without removing existing (update only) |
removeItems | list[AvailableItem] | v92 | No | Remove items from AvailableItems by ID (update only) |
specificData | SpecificData | v92 | No | Mode-specific game logic |
buffUIData | BuffUIData | v92 | No | Buff display configuration |
commanderSkillLists | list[CommanderSkillList] | v92 | No | Commander skill sets per team |
commonUIData | CommonUIData | v92 | No | UI display settings |
competitionPoint | CompetitionPoint | v92 | No | Competition point rewards |
overrideSkillSet | OverrideSkillSet | v92 | No | Skill set override |
rankAroundUIData | RankAroundUIData | v92 | No | Ranking UI point weights |
rankingCompetition | RankingCompetition | v92 | No | Ranking competition class |
resource | Resource | v92 | No | Visual resource packages |
resultComment | ResultComment | v92 | No | Result screen messages |
revision | Revision | v92 | No | Level revision settings |
rivive | Rivive | v92 | No | Revive position overrides |
ruleData | RuleData | v92 | No | Rule reference |
strongholdEffect | StrongholdEffect | v92 | No | Stronghold capture effects |
winCondition | WinCondition | v92 | No | Win condition parameters |
CommonData
Section titled “CommonData”Match rules, team spawn positions, and level restrictions.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
minTeamMember | int | v92 | No | Minimum players per team |
maxTeamMember | int | v92 | No | Maximum players per team |
minLevel | int | v92 | No | Minimum character level |
maxLevel | int | v92 | No | Maximum character level |
preCombatSec | int | v92 | No | Pre-combat countdown seconds |
desertionAbnormalityId | int | v92 | No | Abnormality applied on desertion |
realTimeRevive | bool | v92 | No | Allow real-time revive |
maxBattleMin | int | v92 | No | Maximum match duration in minutes |
forceExitSec | int | v92 | No | Seconds before force exit after match end |
banSec | int | v92 | No | Ban duration in seconds for desertion |
continentId | int | v92 | No | Map continent reference |
blueTeamSpawnPos | string | v92 | No | Blue team spawn coordinates |
redTeamSpawnPos | string | v92 | No | Red team spawn coordinates |
blueTeamSpawnDir | int | v92 | No | Blue team spawn facing direction |
redTeamSpawnDir | int | v92 | No | Red team spawn facing direction |
blueTeamDoorId | int | v92 | No | Blue team entry door ID |
redTeamDoorId | int | v92 | No | Red team entry door ID |
initCoolTimeSec | int | v92 | No | Initial cooldown seconds |
blueTeamStringId | int | v92 | No | Blue team string table ID |
redTeamStringId | int | v92 | No | Red team string table ID |
despawnTerritoryIdsAfterCombatStart | string | v92 | No | Territory IDs to despawn when combat starts |
useObserverMode | bool | v92 | No | Enable observer mode |
observerViewDistance | float | v92 | No | Observer camera distance |
isMultiKillBattleField | bool | v92 | No | Track multi-kill statistics |
minChatbanEnableMemberCount | int | v92 | No | Minimum members to enable chat ban |
countOfMinFinalBlow | int | v92 | No | Minimum final blows threshold |
teams | list[Team] | v92 | No | Team definitions (multi-team modes) |
Per-team configuration within CommonData.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
id | int | v92 | No | Team identifier |
spawnPos | string | v92 | No | Spawn coordinates |
bfTeamNamePlateColorId | int | v92 | No | Nameplate color ID |
stringId | int | v92 | No | Team name string table ID |
teamColorSet | string | v92 | No | Color set identifier |
teamMarkerImagePath | string | v92 | No | Marker image path |
Background music configuration.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
fadeTime | float | v92 | No | Fade transition time in seconds |
enter | string | v92 | No | Music track on entering the battlefield |
start | string | v92 | No | Music track when combat starts |
finish | string | v92 | No | Music track when combat ends |
EnableTime
Section titled “EnableTime”Weekly scheduling window entries.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
day | string | v92 | No | Day of week (e.g. Mon, Tue, Sat) |
openHour | int | v92 | No | Opening hour (0-23) |
closeHour | int | v92 | No | Closing hour (0-23) |
competitionPointReward | bool | v92 | No | Award competition points during this window |
Reward
Section titled “Reward”Reward configuration with ranking and team reward sub-elements.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
minWarPointForReward | int | v92 | No | Minimum war points to qualify for rewards |
expRewardGuildId | int | v92 | No | Guild ID for experience reward |
expRewardMultiple | int | v92 | No | Experience reward multiplier |
rankingData | list[RankingData] | v92 | No | Per-rank reward entries |
rewardData | list[RewardData] | v92 | No | Contribution-based reward tiers |
teamRewardData | TeamRewardData | v92 | No | Team win/lose item rewards |
RankingData
Section titled “RankingData”Per-rank reward entry within Reward.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
rank | int | v92 | No | Ranking position |
rewardId | int | v92 | No | Reward item ID |
rewardAmount | int | v92 | No | Reward quantity |
RewardData
Section titled “RewardData”Contribution-based reward tier within Reward.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
maxContributeLimit | int | v92 | No | Maximum contribution cap |
winPoint | int | v92 | No | Points awarded on win |
losePoint | int | v92 | No | Points awarded on loss |
bonusPoint | int | v92 | No | Bonus points |
winCaptainPoint | int | v92 | No | Captain bonus on win |
personalPointRate | decimal | v92 | No | Personal contribution rate multiplier |
npcGuildId | int | v92 | No | NPC guild reference for rewards |
winExp | int | v92 | No | Experience on win |
loseExp | int | v92 | No | Experience on loss |
TeamRewardData
Section titled “TeamRewardData”Item rewards mailed to winning/losing team members.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
winTeamRewardItem | int | v92 | No | Item ID for winning team |
winTeamRewardItemCount | int | v92 | No | Item count for winning team |
loseTeamRewardItem | int | v92 | No | Item ID for losing team |
loseTeamRewardItemCount | int | v92 | No | Item count for losing team |
senderId | string | v92 | No | Mail sender identifier |
title | string | v92 | No | Mail title |
text | string | v92 | No | Mail body text |
WarPoint
Section titled “WarPoint”War point scoring rules for kills, assists, and objectives.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
finalBlowWP | int | v92 | No | Points for landing the killing blow |
finalBlowHelperWP | int | v92 | No | Points for assisting the killing blow |
minWarPointForRank | int | v92 | No | Minimum war points to appear on rankings |
killPoint | int | v92 | No | Points per kill |
assistPoint | int | v92 | No | Points per assist |
helperRange | int | v92 | No | Range to qualify as assist |
winWP | int | v92 | No | Bonus points for winning |
loseWP | int | v92 | No | Points for losing |
addWP | int | v92 | No | Additional war points |
perScore | int | v92 | No | Points per score increment |
capturePoint | int | v92 | No | Points for capturing an objective |
destroyedPoint | int | v92 | No | Points for destroying a structure |
damageOnTarget | int | v92 | No | Points for damage on objective target |
attackStrongholdWP | int | v92 | No | Points for attacking a stronghold |
defenceStrongholdWP | int | v92 | No | Points for defending a stronghold |
captureStongholdWP | int | v92 | No | Points for capturing a stronghold |
AvailableItems
Section titled “AvailableItems”Items and combat item types allowed in the battlefield.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
items | list[AvailableItem] | v92 | No | Allowed item references |
combatItemTypes | list[CombatItemType] | v92 | No | Allowed combat item type categories |
AvailableItem
Section titled “AvailableItem”| Property | Type | Since | Required | Description |
|---|---|---|---|---|
id | int | v92 | No | Item template ID |
CombatItemType
Section titled “CombatItemType”| Property | Type | Since | Required | Description |
|---|---|---|---|---|
id | string | v92 | No | Combat item type identifier |
SpecificData
Section titled “SpecificData”Mode-specific game logic. Properties and sub-elements vary by battlefield type. Only relevant sub-elements need to be specified for a given mode.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
autoReviveSec | int | v92 | No | Auto-revive cooldown seconds |
baseAttackShowInterval | float | v92 | No | Base attack UI show interval |
baseAttackShowSec | float | v92 | No | Base attack UI display duration |
shareAlarmSec | float | v92 | No | Share alarm duration |
toAttackSec | int | v92 | No | Time to begin attack phase |
attackSocialMotionId | int | v92 | No | Social motion ID for attack action |
toCaptureSec | int | v92 | No | Time to complete capture |
autoRestoreGauge | int | v92 | No | Auto-restore gauge rate |
baseStepGauge | int | v92 | No | Base step gauge value |
captureTryLimitUser | int | v92 | No | Max concurrent capture attempts |
oneUserCaptureGaugePerSec | int | v92 | No | Capture gauge rate per player |
plusCaptureGaugePerAddUser | int | v92 | No | Extra gauge per additional player |
toAutoRestoreChangeSec | int | v92 | No | Seconds before auto-restore activates |
round | Round | v92 | No | Round-based mode settings |
score | Score | v92 | No | Score-based mode settings |
strongholds | list[Stronghold] | v92 | No | Stronghold definitions |
nodePoints | list[NodePoint] | v92 | No | Node point positions |
gates | list[Gate] | v92 | No | Gate definitions |
Additional optional sub-elements available: aeroData, airShipRespawns, bfTreasureOfKumas, castleDoor, guardTower, guardTowerList, irregularRound, pveSkillList, systemMessage.
Round-based mode configuration.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
maxRound | int | v92 | No | Total number of rounds |
victoryRound | int | v92 | No | Rounds needed to win |
roundMinCountDown | int | v92 | No | Round countdown in minutes |
maxBatleFieldRoundMin | int | v92 | No | Maximum round duration in minutes |
resultPrintTime | int | v92 | No | Result display duration |
Score-based mode configuration.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
victoryScore | int | v92 | No | Score needed to win |
tensionScore | int | v92 | No | Score threshold for tension state |
blueTeamStartScore | int | v92 | No | Blue team starting score |
redTeamStartScore | int | v92 | No | Red team starting score |
Stronghold
Section titled “Stronghold”Capturable stronghold position within SpecificData.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
id | int | v92 | No | Stronghold identifier |
name | int | v92 | No | String table ID for stronghold name |
pos | string | v92 | No | Position coordinates |
posDir | int | v92 | No | Facing direction |
tombPos | string | v92 | No | Tombstone position coordinates |
tombDir | int | v92 | No | Tombstone facing direction |
guideEffectId | int | v92 | No | Guide effect reference |
reviveSelectable | bool | v92 | No | Allow selecting this stronghold as revive point |
Destructible gate within SpecificData.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
id | int | v92 | No | Gate identifier |
continentId | int | v92 | No | Map continent reference |
pos | string | v92 | No | Position coordinates |
posDir | int | v92 | No | Facing direction |
templateId | int | v92 | No | NPC template reference |
alarmCoolTime | float | v92 | No | Alarm cooldown time |
alarmWhenHpBelow | string | v92 | No | HP threshold for alarm trigger |
NodePoint
Section titled “NodePoint”Capture node position within SpecificData.
| Property | Type | Since | Required | Description |
|---|---|---|---|---|
id | int | v92 | No | Node point identifier |
pos | string | v92 | No | Position coordinates |
XML structure
Section titled “XML structure”BattleFieldData├── BattleField (id, type, name, guideText?, blueTeamName?, redTeamName?, helpDataId?)│ ├── CommonData (minTeamMember, maxTeamMember, minLevel, maxLevel, ...)│ │ └── Team* (id, spawnPos, stringId?, teamColorSet?, ...)│ ├── BGM (enter, start, finish?, fadeTime)│ ├── EnableTimeList│ │ └── EnableTime* (day, openHour, closeHour, competitionPointReward)│ ├── Reward (minWarPointForReward?)│ │ ├── RankingData* (rank, rewardId?, rewardAmount?)│ │ ├── RewardData* (maxContributeLimit, winPoint, losePoint, ...)│ │ └── TeamRewardData? (winTeamRewardItem, loseTeamRewardItem, ...)│ ├── WarPoint (finalBlowWP?, finalBlowHelperWP?, minWarPointForRank?)│ ├── AvailableItems│ │ ├── Item* (id)│ │ └── CombatItemType* (id)│ ├── SpecificData (autoReviveSec?, ...)│ │ ├── Round? (maxRound?, victoryRound?, roundMinCountDown)│ │ ├── Score? (victoryScore, tensionScore?, ...)│ │ ├── StrongholdList?│ │ │ └── Stronghold* (id, name, pos, posDir, ...)│ │ ├── NodePointList?│ │ │ └── NodePoint* (id, pos)│ │ ├── GateList?│ │ │ └── Gate* (id, continentId, pos, posDir, templateId, ...)│ │ └── ... (AeroData, AirShipRespawn, CastleDoor, GuardTower, etc.)│ ├── BuffUIData?│ ├── CommanderSkillList* (team)│ ├── CommonUIData?│ ├── CompetitionPoint?│ ├── OverrideSkillSet?│ ├── RankAroundUIData?│ ├── RankingCompetition?│ ├── Resource?│ ├── ResultComment?│ ├── Revision?│ ├── Rivive?│ ├── RuleData?│ ├── StrongholdEffect?│ └── WinCondition?└── BattleFieldGlobalData (server-only, not modifiable via DSL)- Update semantics for keyed children: On
update,enableTimes(keyed byday),rewardData(keyed bynpcGuildId), andcommanderSkillLists(keyed byteam) use keyed merge — only specified entries are modified; unmentioned entries are preserved. Oncreateandupsert, these children use clear-and-replace as usual. - Incremental item operations:
addItemsandremoveItemsare update-only properties for targeted changes to the item list. They cannot be combined withavailableItemsin the same update (error E551).addItems/removeItemsonly affect<Item>children;<AvailableCombatItemType>entries are untouched. SpecificDatais polymorphic: different battlefieldtypevalues use different subsets of SpecificData sub-elements. Only relevant sub-elements need to be specified.BattleFieldGlobalDatais a separate sibling element in the XML and is not modifiable via the DSL.- The
name,guideText,blueTeamName, andredTeamNameroot attributes are string table IDs (int), not text strings. - The
rivivespelling (not “revive”) matches the original data format and must be used as-is. - Position attributes (e.g.
pos,blueTeamSpawnPos) use a string-encoded coordinate format.