방문자

오늘
—
어제
—
누적
—

불러오는 중

게임 개발 · 기술 동향 · 팀 블로그MIRO
헤드라인

Factorio · 게임 설계

로봇에게 가까운 일만 주면 충분할까

Factorio 개발 일지 374의 로봇에게 가까운 일만 주면 충분할까 관련 화면
Wube Software의 Factorio 개발 일지 #374 본문 이미지입니다. · 이미지 출처

가까운 유휴 로봇의 한계

2023년 9월 1일의 Factorio 개발 기록 #374는 물류 로봇의 작업 배정 방식을 설명합니다. 기존 방식은 작업 지점에서 가장 가까운 유휴 로봇을 선택했습니다. 많은 운반 작업을 한꺼번에 배정하면 가까운 로봇이 모두 사용 중이 되고, 나머지는 멀리 있는 로봇에 넘어갔습니다. 먼저 도착한 로봇이 일을 마쳐도 남은 작업은 이미 다른 로봇의 몫이었습니다.

개선안은 작업 중인 로봇도 후보로 삼고, 로봇 하나가 여러 작업을 큐에 보관하도록 바꾸는 것이었습니다. 선택 기준도 현재 거리에서 새 작업 지점에 도착할 예상 시각으로 옮겼습니다. 지금 바쁘더라도 가까이에서 곧 일을 마칠 로봇이 더 나은 후보가 될 수 있습니다.

예상 위치를 공간에 등록합니다

원문에 따르면 바쁜 로봇은 큐가 바뀔 때 마지막 작업의 종료 위치와 시각을 추정합니다. 그 예상 위치가 속한 청크에 로봇을 등록하고, 새 작업을 배정할 때는 작업 지점의 청크에서 바깥쪽으로 나선형 탐색을 진행합니다. 모든 바쁜 로봇을 매번 순회하는 비용을 줄이기 위한 구조입니다.

여기서 도착 시각은 정확한 미래 예측이 아닙니다. 개발진은 충전 시간의 영향을 단순화했다고 명시했습니다. 따라서 이 방식을 항상 최적의 배정을 찾는 알고리즘이라고 소개하면 과장입니다. 원문은 특정한 탐색 종료 조건이나 내부 자료구조 전체까지 공개하지 않습니다.

실제 사용 규칙도 함께 봐야 합니다

Factorio 위키의 물류 로봇 변경 이력에는 2.0.7에서 여러 작업을 배정하는 동작과 충전소 선택 개선이 기록돼 있습니다. 로봇 설명에는 이동 중 전력을 사용하고 충전이 필요하다는 조건도 나옵니다. 이는 작업 큐만 보고 운반 시간을 계산하면 놓칠 수 있는 요소입니다. 위키는 사용 동작을 보충하며 엔진 소스 검증을 대신하지 않습니다.

다른 게임에 옮긴다면 예상 위치는 고정 좌표가 아니라 작업 큐에서 유도되는 값으로 다루는 편이 자연스럽습니다. 작업 취소나 목적지 변경 때 공간 등록을 갱신하지 않으면 이미 바뀐 경로를 기준으로 후보를 찾게 됩니다. 이 부분은 공개 설명에서 도출한 설계 검토 사항입니다.

작은 운반 실험으로 비교하기

실험은 아직 실행하지 않았습니다. 같은 속도의 작업자, 가까운 창고, 먼 창고를 놓고 작업을 한꺼번에 발생시키는 테스트를 제안합니다. 유휴 작업자만 고르는 버전과 종료 예상 시각을 사용하는 버전의 마지막 배송 완료 시간을 비교합니다.

총 이동 거리뿐 아니라 배정에 사용한 CPU 시간, 큐 길이, 충전 대기, 작업 취소 뒤 재배정 횟수를 함께 기록하면 좋습니다. 작업이 적을 때는 단순한 방식이 충분할 수 있으므로 규모를 늘려 차이가 나타나는 지점도 확인해야 합니다. 이 글은 공개 설계 사례를 정리한 것이며 특정 성능 향상률을 재현했다고 주장하지 않습니다.

출처

댓글

이 글에 대한 생각을 남겨 주세요.

댓글 삭제

헤드라인

같은 카테고리의 글

게임 기술 전체 보기 ↗