From 149e66e9c9df9c578ef8ebacc408ae781b6cdaaa Mon Sep 17 00:00:00 2001 From: gihyeon Date: Wed, 25 Mar 2026 12:49:14 +0900 Subject: [PATCH] =?UTF-8?q?README=20=EC=88=9C=EC=88=98=20=ED=94=8C?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=20=EB=AA=A8=EB=93=9C=20=EC=84=A4=EB=AA=85?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=A0=84=EC=B2=B4=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 94 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 51 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 5c83586..64b404d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,19 @@ -# 팩토리오 AI 에이전트 +# 팩토리오 AI 에이전트 (순수 플레이) -Claude API를 이용해 팩토리오를 자율적으로 플레이하는 에이전트입니다. -캐릭터 이동, 채굴기 배치, 제련소 건설, 벨트 연결까지 AI가 직접 판단하고 실행합니다. +AI가 팩토리오를 **치트 없이** 자율적으로 플레이하는 에이전트입니다. +실제 걷기, 실제 채굴, 실제 제작, 건설 거리 제한 등 모든 게임 메커닉을 준수합니다. + +--- + +## 순수 플레이 모드란? + +| 항목 | 치트 모드 | 순수 모드 (현재) | +|------|----------|-----------------| +| 이동 | 텔레포트 | 실제 걷기 (walking_state) | +| 채굴 | 인벤토리 직접 삽입 | 자원 패치에서 실제 채굴 (mining_state) | +| 제작 | 무조건 지급 | 재료 소모 실제 제작 (begin_crafting) | +| 건설 | 어디서든 create_entity | 건설 거리 내에서 build_from_cursor | +| 삽입 | 무한 아이템 | 플레이어 인벤토리에서 차감 | --- @@ -9,12 +21,13 @@ Claude API를 이용해 팩토리오를 자율적으로 플레이하는 에이 ``` factorio_ai/ -├── main.py ← 메인 루프 (여기서 실행) -├── factorio_rcon.py ← RCON 연결 (게임과 통신) -├── state_reader.py ← 게임 상태 읽기 (자원, 인벤토리, 건물) -├── ai_planner.py ← Claude AI 행동 계획 -├── action_executor.py ← 실제 게임 조작 (이동, 건설, 채굴) -└── agent_log.jsonl ← 행동 로그 (자동 생성) +├── main.py ← 메인 루프 (여기서 실행) +├── factorio_rcon.py ← RCON 연결 (게임과 통신) +├── state_reader.py ← 게임 상태 읽기 (자원, 인벤토리, 건물) +├── context_compressor.py ← 중반 이후 상태 압축 +├── ai_planner.py ← AI 행동 계획 (순수 플레이 제약 반영) +├── action_executor.py ← 실제 게임 조작 (순수 메커닉) +└── agent_log.jsonl ← 행동 로그 (자동 생성) ``` --- @@ -29,7 +42,7 @@ factorio_ai/ ## 팩토리오 RCON 설정 -### 방법 1: 싱글플레이 (가장 간단) +### 방법 1: 싱글플레이 1. 팩토리오 실행 2. 게임 시작 후 콘솔 열기 (` 키 또는 ~) 3. 아래 입력: @@ -38,7 +51,7 @@ factorio_ai/ /rcon-password factorio_ai ``` -### 방법 2: 서버 모드 실행 (권장) +### 방법 2: 서버 모드 (권장) ```bash # Windows factorio.exe --start-server saves/mysave.zip --rcon-port 25575 --rcon-password factorio_ai @@ -52,19 +65,40 @@ factorio.exe --start-server saves/mysave.zip --rcon-port 25575 --rcon-password f ## 실행 ```bash -# Z.ai API 키 설정 (https://z.ai 에서 Coding Plan 구독 후 발급) +# Z.ai API 키 설정 export ZAI_API_KEY="your-key-here" # 기본 실행 python main.py -# 커스텀 서버 연결 +# 커스텀 서버 FACTORIO_HOST=192.168.1.10 FACTORIO_PORT=25575 FACTORIO_PASSWORD=mypass python main.py ``` --- -## AI 목표 변경 (main.py) +## 동작 원리 + +``` +1. RCON → 팩토리오에서 현재 상태 읽기 + (플레이어 위치, 인벤토리, 자원 패치, 건물 목록) + +2. 상태 → AI API로 전송 + "다음에 뭘 해야 하나요?" (순수 플레이 제약 포함) + +3. AI → JSON 행동 시퀀스 반환 + [move → mine_resource → craft_item → place_entity ...] + +4. RCON → 팩토리오에서 실제 게임 메커닉으로 실행 + - 캐릭터가 실제로 걸어감 + - 실제로 곡괭이질해서 채굴 + - 재료를 소모해서 제작 + - 건설 거리 내에서만 배치 +``` + +--- + +## AI 목표 변경 ```python planner.set_goal( @@ -72,36 +106,10 @@ planner.set_goal( ) ``` -다른 목표 예시: -- `"구리 채굴 + 전선 생산 자동화"` -- `"자동화 연구 달성을 위한 빨간 과학팩 생산"` -- `"방어선 구축: 포탑 배치 + 탄약 보급"` - ---- - -## 동작 원리 - -``` -매 2초마다: - 1. RCON → 팩토리오에서 현재 상태 읽기 - (플레이어 위치, 인벤토리, 자원 패치, 건물 목록) - - 2. 상태 → Claude API로 전송 - "다음에 뭘 해야 하나요?" 질문 - - 3. Claude → JSON 행동 반환 - {"action": "place_mining_drill", "params": {"x": 10, "y": 20, ...}} - - 4. RCON → 팩토리오에서 Lua 명령으로 실행 - (실제로 게임 내에서 채굴기가 배치됨) -``` - --- ## 주의사항 -- RCON을 통한 Lua 명령은 **치트 없이는 불가능한 것도 실행 가능** (텔레포트 등) - - 순수 AI 플레이를 원한다면 `move()` 함수를 텔레포트 대신 실제 걷기로 교체 -- `agent_log.jsonl`에 모든 행동이 기록됩니다 -- Claude API 비용: 스텝당 약 $0.001 (Sonnet 기준) - - 하루 8시간 실행 시 약 $14 수준 +- 순수 플레이이므로 **걷기, 채굴, 제작에 실제 시간이 소요**됩니다 +- AI가 "move 먼저 → 작업" 패턴을 학습하도록 프롬프트가 설계되어 있습니다 +- `agent_log.jsonl`에 모든 행동과 타임스탬프가 기록됩니다