# 팩토리오 AI 에이전트 (순수 플레이) AI가 팩토리오를 **치트 없이** 자율적으로 플레이하는 에이전트입니다. 실제 걷기, 실제 채굴, 실제 제작, 건설 거리 제한 등 모든 게임 메커닉을 준수합니다. --- ## 순수 플레이 모드란? | 항목 | 치트 모드 | 순수 모드 (현재) | |------|----------|-----------------| | 이동 | 텔레포트 | 실제 걷기 (walking_state) | | 채굴 | 인벤토리 직접 삽입 | 자원 패치에서 실제 채굴 (mining_state) | | 제작 | 무조건 지급 | 재료 소모 실제 제작 (begin_crafting) | | 건설 | 어디서든 create_entity | 건설 거리 내에서 build_from_cursor | | 삽입 | 무한 아이템 | 플레이어 인벤토리에서 차감 | --- ## 파일 구조 ``` factorio_ai/ ├── main.py ← 메인 루프 (여기서 실행) ├── factorio_rcon.py ← RCON 연결 (게임과 통신) ├── state_reader.py ← 게임 상태 읽기 (자원, 인벤토리, 건물) ├── context_compressor.py ← 중반 이후 상태 압축 ├── ai_planner.py ← AI 행동 계획 (순수 플레이 제약 반영) ├── action_executor.py ← 실제 게임 조작 (순수 메커닉) └── agent_log.jsonl ← 행동 로그 (자동 생성) ``` --- ## 설치 ```bash # 외부 라이브러리 불필요! Python 표준 라이브러리만 사용 ``` --- ## 팩토리오 RCON 설정 ### 방법 1: 싱글플레이 1. 팩토리오 실행 2. 게임 시작 후 콘솔 열기 (` 키 또는 ~) 3. 아래 입력: ``` /rcon-port 25575 /rcon-password factorio_ai ``` ### 방법 2: 서버 모드 (권장) ```bash # Windows factorio.exe --start-server saves/mysave.zip --rcon-port 25575 --rcon-password factorio_ai # Linux/Mac ./factorio --start-server saves/mysave.zip --rcon-port 25575 --rcon-password factorio_ai ``` --- ## 실행 ```bash # 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 ``` --- ## 동작 원리 ``` 1. RCON → 팩토리오에서 현재 상태 읽기 (플레이어 위치, 인벤토리, 자원 패치, 건물 목록) 2. 상태 → AI API로 전송 "다음에 뭘 해야 하나요?" (순수 플레이 제약 포함) 3. AI → JSON 행동 시퀀스 반환 [move → mine_resource → craft_item → place_entity ...] 4. RCON → 팩토리오에서 실제 게임 메커닉으로 실행 - 캐릭터가 실제로 걸어감 - 실제로 곡괭이질해서 채굴 - 재료를 소모해서 제작 - 건설 거리 내에서만 배치 ``` --- ## AI 목표 변경 ```python planner.set_goal( "전력 인프라 구축: offshore-pump → boiler → steam-engine → 전선 연결" ) ``` --- ## 주의사항 - 순수 플레이이므로 **걷기, 채굴, 제작에 실제 시간이 소요**됩니다 - AI가 "move 먼저 → 작업" 패턴을 학습하도록 프롬프트가 설계되어 있습니다 - `agent_log.jsonl`에 모든 행동과 타임스탬프가 기록됩니다