README 순수 플레이 모드 설명으로 전체 업데이트
This commit is contained in:
86
README.md
86
README.md
@@ -1,7 +1,19 @@
|
|||||||
# 팩토리오 AI 에이전트
|
# 팩토리오 AI 에이전트 (순수 플레이)
|
||||||
|
|
||||||
Claude API를 이용해 팩토리오를 자율적으로 플레이하는 에이전트입니다.
|
AI가 팩토리오를 **치트 없이** 자율적으로 플레이하는 에이전트입니다.
|
||||||
캐릭터 이동, 채굴기 배치, 제련소 건설, 벨트 연결까지 AI가 직접 판단하고 실행합니다.
|
실제 걷기, 실제 채굴, 실제 제작, 건설 거리 제한 등 모든 게임 메커닉을 준수합니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 순수 플레이 모드란?
|
||||||
|
|
||||||
|
| 항목 | 치트 모드 | 순수 모드 (현재) |
|
||||||
|
|------|----------|-----------------|
|
||||||
|
| 이동 | 텔레포트 | 실제 걷기 (walking_state) |
|
||||||
|
| 채굴 | 인벤토리 직접 삽입 | 자원 패치에서 실제 채굴 (mining_state) |
|
||||||
|
| 제작 | 무조건 지급 | 재료 소모 실제 제작 (begin_crafting) |
|
||||||
|
| 건설 | 어디서든 create_entity | 건설 거리 내에서 build_from_cursor |
|
||||||
|
| 삽입 | 무한 아이템 | 플레이어 인벤토리에서 차감 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -12,8 +24,9 @@ factorio_ai/
|
|||||||
├── main.py ← 메인 루프 (여기서 실행)
|
├── main.py ← 메인 루프 (여기서 실행)
|
||||||
├── factorio_rcon.py ← RCON 연결 (게임과 통신)
|
├── factorio_rcon.py ← RCON 연결 (게임과 통신)
|
||||||
├── state_reader.py ← 게임 상태 읽기 (자원, 인벤토리, 건물)
|
├── state_reader.py ← 게임 상태 읽기 (자원, 인벤토리, 건물)
|
||||||
├── ai_planner.py ← Claude AI 행동 계획
|
├── context_compressor.py ← 중반 이후 상태 압축
|
||||||
├── action_executor.py ← 실제 게임 조작 (이동, 건설, 채굴)
|
├── ai_planner.py ← AI 행동 계획 (순수 플레이 제약 반영)
|
||||||
|
├── action_executor.py ← 실제 게임 조작 (순수 메커닉)
|
||||||
└── agent_log.jsonl ← 행동 로그 (자동 생성)
|
└── agent_log.jsonl ← 행동 로그 (자동 생성)
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -29,7 +42,7 @@ factorio_ai/
|
|||||||
|
|
||||||
## 팩토리오 RCON 설정
|
## 팩토리오 RCON 설정
|
||||||
|
|
||||||
### 방법 1: 싱글플레이 (가장 간단)
|
### 방법 1: 싱글플레이
|
||||||
1. 팩토리오 실행
|
1. 팩토리오 실행
|
||||||
2. 게임 시작 후 콘솔 열기 (` 키 또는 ~)
|
2. 게임 시작 후 콘솔 열기 (` 키 또는 ~)
|
||||||
3. 아래 입력:
|
3. 아래 입력:
|
||||||
@@ -38,7 +51,7 @@ factorio_ai/
|
|||||||
/rcon-password factorio_ai
|
/rcon-password factorio_ai
|
||||||
```
|
```
|
||||||
|
|
||||||
### 방법 2: 서버 모드 실행 (권장)
|
### 방법 2: 서버 모드 (권장)
|
||||||
```bash
|
```bash
|
||||||
# Windows
|
# Windows
|
||||||
factorio.exe --start-server saves/mysave.zip --rcon-port 25575 --rcon-password factorio_ai
|
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
|
```bash
|
||||||
# Z.ai API 키 설정 (https://z.ai 에서 Coding Plan 구독 후 발급)
|
# Z.ai API 키 설정
|
||||||
export ZAI_API_KEY="your-key-here"
|
export ZAI_API_KEY="your-key-here"
|
||||||
|
|
||||||
# 기본 실행
|
# 기본 실행
|
||||||
python main.py
|
python main.py
|
||||||
|
|
||||||
# 커스텀 서버 연결
|
# 커스텀 서버
|
||||||
FACTORIO_HOST=192.168.1.10 FACTORIO_PORT=25575 FACTORIO_PASSWORD=mypass 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
|
```python
|
||||||
planner.set_goal(
|
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()` 함수를 텔레포트 대신 실제 걷기로 교체
|
- AI가 "move 먼저 → 작업" 패턴을 학습하도록 프롬프트가 설계되어 있습니다
|
||||||
- `agent_log.jsonl`에 모든 행동이 기록됩니다
|
- `agent_log.jsonl`에 모든 행동과 타임스탬프가 기록됩니다
|
||||||
- Claude API 비용: 스텝당 약 $0.001 (Sonnet 기준)
|
|
||||||
- 하루 8시간 실행 시 약 $14 수준
|
|
||||||
|
|||||||
Reference in New Issue
Block a user