25 lines
1.5 KiB
Markdown
25 lines
1.5 KiB
Markdown
## 채굴 실패 시 제외 좌표 반복 버그 수정 계획
|
|
|
|
### 문제 재현/관찰
|
|
- `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의 기술/동작 설명(또는 체크리스트)을 업데이트합니다.
|
|
|