로딩 순서
이 문서는 Cataclysm: Bright Nights가 JSON 파일을 로드하는 순서를 설명합니다.
로딩 단계
게임은 다음 순서로 JSON을 로드합니다:
1. 코어 데이터
data/json/
├── damage_type.json # 먼저 로드되어야 함
├── materials.json # 기본 재질
├── flags.json # 플래그 정의
└── ...
2. 기본 정의
data/json/
├── items/ # 아이템 정의
├── monsters/ # 몬스터
├── furniture_terrain/ # 가구와 지형
└── ...
3. 복잡한 시스템
data/json/
├── mapgen/ # 맵 생성
├── recipes/ # 제작법
├── requirements/ # 제작 요구사항
└── ...
4. 모드
data/mods/
├── mod1/
├── mod2/
└── ...
모드는 modinfo.json의 종속성 순서에 따라 로드됩니다.
종속성
타입 종속성
일부 타입은 다른 타입에 의존합니다:
materials → items → recipes
damage_types → monsters
terrain → mapgen
필드 종속성
일부 필드는 다른 정의를 참조합니다:
{
"type": "recipe",
"result": "item_id", // items에서 존재해야 함
"using": ["requirement_id"] // requirements에서 존재해야 함
}
모드 종속성
모드는 modinfo.json에서 종속성을 선언할 수 있습니다:
{
"type": "MOD_INFO",
"id": "my_mod",
"name": "My Mod",
"dependencies": ["dda", "other_mod"]
}
로딩 순서:
- 기본 게임 (
dda) other_modmy_mod
오버라이드
나중에 로드된 정의가 이전 정의를 오버라이드합니다:
복사-출처 (Copy-From)
{
"type": "item",
"id": "my_variant",
"copy-from": "base_item",
"name": "My Variant"
}
확장 (Extend)
{
"type": "item",
"id": "existing_item",
"extend": { "flags": ["NEW_FLAG"] }
}
삭제 (Delete)
{
"type": "item",
"id": "existing_item",
"delete": { "flags": ["OLD_FLAG"] }
}
로딩 오류
일반적인 문제
- 누락된 종속성
ERROR: item "my_item" references unknown material "nonexistent"
수정: 재질을 먼저 정의하거나 올바른 ID 사용
- 순환 종속성
ERROR: circular dependency detected: item_a -> item_b -> item_a
수정: 종속성 체인 재구성
- 모드 순서 문제
ERROR: mod "my_mod" depends on "other_mod" which is not loaded
수정: modinfo.json에 종속성 추가
디버깅
로딩 문제를 디버깅하려면:
디버그 모드 활성화
./cataclysm-tiles --debug
로그 확인
config/debug.log
특정 타입 검사
게임 내 디버그 메뉴 사용:
~- 디버그 메뉴 열기- "Show JSON errors" 선택
모범 사례
- 올바른 순서로 정의: 종속성을 먼저 정의
- 명시적 종속성: 모드에서 명확한 종속성 선언
- 상위 호환성 테스트: 모드를 다양한 순서로 테스트
- 로그 확인: 항상 로딩 오류 확인
- 문서화: 복잡한 종속성 문서화