문서 레퍼런스
데이터 출처
데이터 종류별 출처와 정밀도입니다. "뭔가 이상해 보이는" 일이 생기면 이 페이지부터 확인하세요.
| 데이터 | 출처 | 정밀도 |
|---|---|---|
| 유닛, 자원, 오더, 스킬, 버프, 인벤토리 | 런타임이 50 ms마다 푸시하는 월드 블록 | 발행 주기(16 ms까지 조정 가능) |
| 피해, 처치 이벤트 | 런타임이 게임 스레드에서 즉시 기록, 타격마다 | 즉시 |
| 기타 이벤트(등장, 사망, 오더 변경, 레벨 업……) | 인접한 두 발행을 비교 | 발행 주기 |
| 생산 테이블(훈련 / 연구 / 건설 / 업그레이드) | 엔진 생산 스킬의 타이머 필드 + 런타임이 누적한 경과 시간 | 약 ±0.2게임초 |
| 전투 속성, 상성표 | 게임 자체 데이터 테이블(여러분의 게임에서 추출) | 아이템, 오라, 버프 보정은 미포함 |
| 경로 탐색 | 엔진의 지형 이동 가능성(128 단위 한 칸) + 나무 + 건물 점유 영역, SDK 측 A* | 한 칸. 한 칸보다 좁은 틈은 막힌 것으로 판정 |
| 게임 내 시각 | JASS GetFloatGameState(GAME_STATE_TIME_OF_DAY) | 발행 주기 |
| 가시성 | 런타임이 유닛마다 플레이어별로 계산한 가시성 마스크 | 발행 주기 |
| 기술 카운트, 실행 가능성, 금광 잔량 | 고속 레인 조회로 엔진에 직접 질의 | 즉시 |
게임 데이터는 코드와 함께 배포하지 않습니다
유닛 테이블, 스킬, 아이템, 영웅, 버프, 피해 상성표 등은 블리자드의 게임 파일에서 나오며 저장소에 포함되지 않습니다. Farsight “컨트롤 센터”에서 게임 디렉터리를 설정하면 여러분의 게임에서 자동으로 추출하며, 직접 실행할 수도 있습니다:
python data/tools/extract_game_data.py
추출 결과는 data/game/(git에 포함되지 않음)에 저장됩니다. 원본 .slk / .txt, 그리고 정리된 units.json, names.json, skills.json, items.json, heroes.json, buffs.json입니다.
몇 가지 구체적인 수치
| 항목 | 값 |
|---|---|
| 하루 | 480게임초(낮, 밤 각 240초), 1시간 = 20게임초. 게임은 오전 8시에 시작 |
| 낮 | 6:00 ~ 18:00 |
| 방어력 계수 | 0.06(게임 데이터 테이블 기준) |
| 월드 블록 용량 | 플레이어 16명, 유닛 1024개, 유닛 세부 정보 256개, 바닥 아이템 256개, 생산 128건 |
| 나무 | 파괴 가능한 오브젝트 최대 4096개, 2초마다 갱신 |
| 이벤트 링 | 8192건. 너무 느리게 읽으면 유실(SDK가 감지 가능) |
| 맵 그리드 | 한 칸 = 게임 단위 128, 최대 256 × 256 |
실측으로 보정한 예
- 생산 시간: 일꾼 14.9, 농장 34.9, Iron Forged Swords 59.9게임초로, 런타임이 푸시한 값과 일치합니다(오차 0.2초 미만).
- 전투 속성을 게임 패널과 대조: 팔라딘 체력 650, 마나 255, 방어력 3.9, 공격력 24 ~ 34. 공격 업그레이드 1단계 보병 13 ~ 15.
- 엔진 피해 이벤트의 방어력 적용 전 피해(14 / 15 / 15)가
stats()로 계산한 범위 안에 들어갑니다. - 경로 탐색: Echo Isles 116 × 88칸, 상대 본진 건물까지 지상 거리 10642(직선 9856), 그리드 생성 18 ms, A* 1회 약 1 ms.