작업 할당 프로세스
- 작업 수집: 모든 작업 제공자(ChoreProvider)에서 사용 가능한 작업들을 수집합니다.
- 전제조건 검사: 각 복제인간이 해당 작업을 수행할 수 있는지 전제조건을 검사합니다.
- 우선순위 계산: 각 작업-복제인간 조합에 대해 우선순위를 계산합니다.
- 정렬: 계산된 우선순위 순서로 작업들을 정렬합니다.
- 선택: 가장 높은 우선순위의 작업을 선택합니다.
- 실행: 선택된 작업을 ChoreDriver가 실행합니다.
우선순위 결정 요소 (우선순위 높은 순서)
- 전제조건 통과 여부: 전제조건을 통과한 작업이 우선 선택됩니다.
- 마스터 우선순위 클래스: 긴급(topPriority) > 높음(highPriority) > 기본(basic) 순서입니다.
- 개인 우선순위: 각 복제인간이 작업 유형별로 설정한 우선순위 (0-5, 높을수록 우선).
- 마스터 우선순위 값: 같은 클래스 내에서의 세부 우선순위 (1-9, 높을수록 우선).
- 작업 타입 우선순위: 작업 타입 자체의 기본 우선순위입니다.
- 우선순위 수정자: 작업별 추가 우선순위 보정값입니다.
- 소비자 우선순위: 특정 복제인간에 대한 우선순위 보정입니다.
- 비용 (거리): 이동 거리나 시간이 낮을수록 우선 선택됩니다.
- 작업 ID: 동일한 우선순위일 경우 결정론적으로 결정됩니다.
우선순위 설정
개인 우선순위 (Personal Priority)
- 범위: 0 (비활성화) ~ 5 (매우 높음)
- 기본값: 3 (보통)
- 각 복제인간이 작업 그룹별로 개별 설정 가능
- 우선순위 관리 화면에서 설정
마스터 우선순위 (Master Priority)
- PriorityClass: 긴급(topPriority), 높음(highPriority), 기본(basic)
- PriorityValue: 클래스 내 세부 값 (1-9)
- 건물이나 작업에 직접 설정하는 우선순위
작업 전제조건 (Preconditions)
작업이 선택되기 전에 반드시 통과해야 하는 조건들:
- IsNotTransferArm: Transfer Arm이 아님
- IsNotRedAlert: 경보 상태가 아님
- IsScheduledTime: 작업 시간대에 해당
- CanMoveTo: 작업 위치에 이동 가능
- IsOperational: 건물이 작동 중
- IsNotMarkedForDeconstruction: 철거 예정이 아님
- IsNotMarkedForDisable: 비활성화 예정이 아님
- IsAssignedtoMe: 건물이 나에게 할당됨
- HasSkillPerk: 필요한 스킬 보유
- IsMinion: 복제인간임 (로봇 아님)
특수 케이스
1. 건물 할당 (Building Assignment)
건물에 특정 복제인간이 할당되어 있으면, 그 복제인간만 해당 작업을 수행할 수 있습니다.
2. 스킬 요구사항
특정 스킬이 필요한 작업은 해당 스킬을 보유한 복제인간만 수행할 수 있습니다.
3. 작업 중단 (Interruption)
현재 작업 중일 때, 더 높은 우선순위의 작업이 오면 현재 작업을 중단하고 새 작업을 시작할 수 있습니다. 단, 현재 작업의 중단 제외 태그와 겹치지 않아야 합니다.
4. 작업 선점 (Preemption)
다른 복제인간이 이미 작업 중일 때, 더 가까운 복제인간이 선점할 수 있는 조건:
- 현재 작업자가 이동 중이고 (이동 비용 >= 4)
- 새 작업자가 2배 이상 가까워야 함
- 작업이 완료 직전 상태가 아니어야 함
근접 활성화 (Proximity Enable)
위치: 우선순위 관리 화면(Jobs Screen)의 토글 버튼
근접 활성화 켜짐:
- 작업 타입의 명시적 우선순위(explicitPriority)를 사용
- 복제인간이 가장 가까운, 가장 긴급한 작업을 항상 선택
- 이동 시간을 줄이는 데 유용
- 많은 높은 우선순위 작업이 있는 지역에서 유용
- 큰 식민지에 유용
근접 활성화 꺼짐:
- 작업 타입의 기본 우선순위(priority)를 사용
- 복제인간이 두 개의 높은 우선순위 작업 중에서 숨겨진 우선순위 계층에 따라 선택
- 작업 타입 간의 고정된 우선순위 관계를 따름
리셋 동작:
- 근접 활성화 켜짐: 각 작업 그룹의 기본 개인 우선순위를 적용 (높음에서 낮음으로 조정)
- 근접 활성화 꺼짐: 모든 우선순위를 중립(3)으로 리셋
주요 특징
- 거리 기반 최적화: 같은 우선순위면 가까운 복제인간이 선택됩니다.
- 개인 우선순위: 각 복제인간이 작업 유형별로 개별 우선순위 설정 가능합니다.
- 건물 할당: 특정 건물에 할당된 복제인간만 해당 작업을 수행합니다.
- 스킬 요구사항: 필요한 스킬을 보유한 복제인간만 작업을 수행합니다.
- 작업 중단: 더 높은 우선순위 작업이 오면 현재 작업을 중단할 수 있습니다.
- 작업 선점: 더 가까운 복제인간이 이동 중인 작업을 선점할 수 있습니다.
작업 선택 시나리오
시나리오 1: 현재 작업 없음
- 정렬된 작업 목록에서 가장 우선순위가 높은 작업을 선택합니다.
시나리오 2: 현재 작업 있음
- 새 작업의 중단 우선순위(interruptPriority)가 현재 작업보다 높아야 합니다.
- 현재 작업의 중단 제외 태그와 겹치지 않아야 합니다.
- 조건을 만족하면 현재 작업을 중단하고 새 작업을 시작합니다.
시나리오 3: 여러 복제인간이 같은 작업 가능
- 각 복제인간에 대해 우선순위를 계산합니다.
- 가장 높은 우선순위를 가진 복제인간이 작업을 수행합니다.
- 우선순위가 같으면 거리가 가까운 복제인간이 선택됩니다.
댓글 0
댓글을 작성하려면 로그인해주세요.