문서 기타

자주 묻는 질문

핵인가요? 어떤 버전을 지원하나요? AI는 무엇을 보고 무엇을 할 수 있나요? 프로그래밍을 몰라도 쓸 수 있나요?……

핵인가요?

아닙니다. AI 연구와 오락을 위한 개발 인터페이스로, 여러분이 합법적으로 소유한 클라이언트에서만 사용하며 로컬, LAN, 직접 만든 게임에서 컴퓨터나 다른 AI와 대전하는 용도입니다. Battle.net이나 안티치트가 있는 어떤 서버에서도 사용할 수 없으며, 사람 간 대전을 겨냥한 기능도 전혀 제공하지 않습니다. 자세한 내용은 이용 범위를 참고하세요.

어떤 게임 버전을 지원하나요?

현재는 워크래프트 III 1.27(프로즌 쓰론)만 지원합니다. 1.24 ~ 1.28은 같은 엔진 구조이며, 다중 버전 지원(버전별 심볼 테이블 선택, 시그니처 스캔 폴백, 시작 시 자가 점검으로 기능 목록 생성)은 로드맵의 P4 단계에 있습니다. 1.29 이후 버전과 리포지드는 다른 엔진이라 별도 지원이 필요하며, 현재는 약속하지 않습니다.

게임 파일을 수정하나요?

아닙니다. 런타임은 게임 실행 중에 주입되며, 디스크의 Game.dll이나 어떤 게임 파일도 수정하지 않습니다. 여러 개를 띄울 때도 원본 War3.exe 런처를 그대로 복사해 이름만 바꿉니다. 게임 데이터(유닛 테이블 등)는 여러분의 게임에서 추출하며, 코드와 함께 배포하지 않습니다.

AI는 무엇을 볼 수 있나요?

기본적으로 프로 선수가 알고 싶어 하는 모든 것이며, 50 ms마다 갱신됩니다.

  • 모든 플레이어의 금, 목재, 식량. 모든 유닛의 위치, 체력/마나, 현재 오더, 현재 공격 대상, 레벨과 경험치
  • 영웅과 유닛의 스킬 레벨과 남은 쿨다운, 걸려 있는 버프, 인벤토리
  • 건물마다 무엇을 훈련 / 연구 / 건설 / 업그레이드하고 있는지, 진행률, 식량 때문에 막혔는지
  • 바닥의 아이템, 나무, 맵의 이동 가능 / 건설 가능 그리드, 시작 위치, 게임 내 시각(낮과 밤)
  • 이벤트 스트림: 유닛 등장과 사망, 피해 한 번 한 번(누가 공격했는지, 공격 유형, 방어력 적용 전 피해), 처치, 생산 완료, 영웅 레벨 업……
  • 엔진에 직접 물어볼 수도 있습니다. 어떤 일을 지금 할 수 있는지, 왜 안 되는지, 어떤 기술이 몇 레벨인지, 어떤 지점이 보이는지, 금광에 금이 얼마나 남았는지, 컴퓨터 상대가 병력을 이끌고 어디를 치려는지.

그 위에 SDK가 전투 속성(상성, 방어력, 공격/방어 업그레이드), “처치까지 몇 초 걸리는지”, 지상 경로 탐색까지 계산해 둡니다. 전체 API는 API 카탈로그에서 볼 수 있습니다.

AI는 무엇을 할 수 있나요?

플레이어가 할 수 있는 조작은 거의 모두 가능합니다. 이동, 공격 이동, 지정 대상 공격, 정지, 위치 사수, 순찰, 지면 공격, 채집, 수리, 건설(위치 자동 탐색 가능), 훈련 / 연구 / 업그레이드, 취소, 스킬 습득, 시전(유닛 대상 / 지점 대상 / 대상 없음), 집결 지점, 영웅 부활, 아이템 줍기 / 사용 / 버리기 / 건네기 / 팔기, 구매, Call to Arms. Shift 대기열, 경유점 행군, 일꾼 한 명이 여러 채를 연속으로 짓기도 됩니다. 게임 속도, 일시 정지, 머리 위 말풍선도 있습니다. 모든 명령에는 회신이 있습니다.

플레이어의 조작 외에도, 게임 화면 위에 나만의 패널과 표시를 그리거나(캔버스), 싱글플레이 게임에서 맵 제작자가 쓸 수 있는 JASS 함수 1291개를 호출할 수 있습니다(JASS 채널).

RPG / 커스텀 맵에서도 쓸 수 있나요?

네. RPG 맵을 고르고 인스턴스에 “동료 예제(buddy)” 스킴을 선택한 뒤 게임을 시작해 직접 플레이하면, 전투를 돕고 체력을 채워 주고 말동무가 되어 주는 AI 동료가 곁을 따라다닙니다. RPG 동료를 참고하세요. g.map_data로 맵의 커스텀 유닛 이름을 읽을 수 있고, JASS 채널로 유닛 생성, 동맹 설정, 패널 띄우기 등을 할 수 있습니다…… 어떻게 놀지는 여러분이 정합니다. 월드를 바꾸는 조작은 싱글플레이 게임에서만 쓸 수 있고(멀티플레이에서는 동기화가 어긋남), 캔버스는 멀티플레이 게임에서도 안전합니다.

프로그래밍을 몰라도 쓸 수 있나요?

네. 빠른 시작에 따라 환경을 설치한 다음 LLM으로 Bot 만들기를 보세요. 여러분이 쉬운 말로 전략을 설명하면 LLM이 코드를 씁니다. 실행해 보고 문제가 있으면 오류 메시지나 게임에서 본 현상을 알려 주고 고치게 하면 됩니다.

Python만 쓸 수 있나요?

SDK는 Python입니다. 런타임과 외부 프로그램 사이에는 공유 메모리 프로토콜(W3P) 하나만 있으므로, Windows 공유 메모리를 읽고 쓸 수 있는 언어라면 무엇이든 연결할 수 있습니다. 더 간단한 방법은 게이트웨이(WebSocket / JSON)입니다. JS, C#, Go, Rust, 브라우저 페이지, 다른 컴퓨터의 프로그램 모두 같은 API를 호출할 수 있고, LLM Agent는 MCP로 바로 연결할 수 있습니다.

어떤 LLM이 가장 좋나요?

코드를 쓸 수 있는 주요 모델이라면 모두 됩니다. 핵심은 모델이 아니라 올바른 자료를 주는 것(매뉴얼 + api.json + 예제 하나)이며, API 카탈로그에 있는 메서드만 쓰도록 요구하는 것입니다. 게임 중 실시간 의사결정(참모, 유닛 대사)은 지연에 민감한데, 로컬 MoE 모델이 좋은 성능을 보입니다. LLM 참모와 말풍선과 로컬 모델을 참고하세요.

게임이 느려지나요?

월드 상태 수집 1회는 게임 스레드에서 중앙값 0.5 ~ 0.9 ms(유닛 100 ~ 120개)이며, 50 ms마다 한 번 수행됩니다. 명령은 게임 스레드에서 건당 몇 마이크로초가 걸리고, 한 번 비울 때 4 ms의 시간 예산이 있어 다 처리하지 못한 것은 다음으로 넘기므로 게임을 붙잡지 않습니다. 게임에 대한 모든 호출에는 예외 보호가 있어서, Bot이 죽어도 그쪽만 멈출 뿐 게임까지 죽지는 않습니다.

여러 게임을 동시에 띄울 수 있나요?

네. runtime/farm.py이 다중 인스턴스 오케스트레이션을 맡으며, 인스턴스마다 번호가 하나씩 붙습니다. Farsight 콘솔에서 시작하고 중지합니다. 여러분의 Bot은 --inst N으로 지정한 인스턴스에 연결합니다.

AI 두 개를 서로 싸우게 할 수 있나요?

같은 게임에서 player 채널을 두 개(--player 0 / --player 1) 열면 AI 대 AI가 됩니다. 로컬 모드에서 공정성은 약속에 의존합니다. 심판, 시야 필터링, 소유권 검증을 갖춘 정식 대전은 아레나(P6 단계)에서 제공합니다.

Mac / Linux를 지원하나요?

현재는 Windows 10 / 11만 지원합니다.

라이선스는 무엇인가요?

라이선스는 정식 버전과 함께 공개합니다. 서드파티 구성 요소는 각자의 라이선스를 유지합니다(예: MinHook은 BSD-2). AMAI는 자체 라이선스이므로 그 파생 데이터는 프로젝트와 함께 배포하지 않으며, 설치할 때 AMAI 공개 저장소에서 받아와 생성합니다.

문제가 생기면 어디에 알리나요?

정식 버전 출시 후 이슈 제보 채널을 열 예정입니다. 제보할 때는 인스턴스 번호, python -m openwar3 status의 출력, 재현 단계를 첨부해 주세요. 먼저 디버깅과 성능으로 해결되는지 확인해 보세요.