팩토리오 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        ← 행동 로그 (자동 생성)

설치

# 외부 라이브러리 불필요! Python 표준 라이브러리만 사용

팩토리오 RCON 설정

방법 1: 싱글플레이

  1. 팩토리오 실행
  2. 게임 시작 후 콘솔 열기 (` 키 또는 ~)
  3. 아래 입력:
    /rcon-port 25575
    /rcon-password factorio_ai
    

방법 2: 서버 모드 (권장)

# 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

실행

# 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 목표 변경

planner.set_goal(
    "전력 인프라 구축: offshore-pump → boiler → steam-engine → 전선 연결"
)

주의사항

  • 순수 플레이이므로 걷기, 채굴, 제작에 실제 시간이 소요됩니다
  • AI가 "move 먼저 → 작업" 패턴을 학습하도록 프롬프트가 설계되어 있습니다
  • agent_log.jsonl에 모든 행동과 타임스탬프가 기록됩니다
  • mine_resource에서 실패한 채굴 타일 제외(exclude)는 Lua와 Python 양쪽에서 정수 타일 좌표(tx, ty) 키로 통일해, 제외한 좌표가 반복 선택되지 않도록 합니다.
Description
팩토리오 완전 자율 AI 에이전트
Readme 1.2 MiB
Languages
Python 100%