fix: 실패한 타일 제외

This commit is contained in:
21in7
2026-03-25 21:20:20 +09:00
parent bc7bb4d1e6
commit c99ca1e43c
9 changed files with 36 additions and 8 deletions

24
docs/plan.md Normal file
View File

@@ -0,0 +1,24 @@
## 채굴 실패 시 제외 좌표 반복 버그 수정 계획
### 문제 재현/관찰
- `mine_resource`에서 실패한 타일을 `failed_positions`에 추가한 뒤 Lua에 `exclude` 테이블로 전달하지만,
다음 시도에서도 동일 좌표(예: `388,2`)로 다시 이동하는 로그가 발생합니다.
### 원인 후보
- Lua에서 제외 판정에 쓰는 좌표 키가 `string.format("%.0f,%.0f", ...)` 기반인 반면,
Python에서 `exclude["{fx:.0f},{fy:.0f}"]`를 만들 때 반올림/절삭 방식이 Lua와 1:1로 일치하지 않는 케이스가 있을 수 있습니다.
- 이 경우 `exclude[key]`가 항상 false가 되어, Lua가 “가장 가까운 광석”을 계속 같은 엔티티로 반환할 수 있습니다.
### 변경 목표
1. `failed_positions`를 “Lua 키 생성과 동일한 정수 타일 좌표(tx, ty)”로만 저장합니다.
2. Lua에서 후보 광석 엔티티를 검사할 때도 정수 타일 좌표를 계산해 키/반환/마이닝 좌표에 일관되게 사용합니다.
3. 그 결과, 제외한 좌표는 다음 루프에서 절대로 다시 선택되지 않도록 보장합니다.
### 구현 범위
- `action_executor.py`
- `mine_resource` 내부에서 좌표 처리 로직을 정수 타일 기반으로 통일
- Lua 반환값을 `tx,ty` 정수 문자열로 변경하고 Python 파싱을 이에 맞춤
### README 업데이트 계획
- 채굴 제외(exclude) 로직이 “정수 타일 키 기반으로 통일”되도록 README의 기술/동작 설명(또는 체크리스트)을 업데이트합니다.