
이 튜토리얼은 간단한 JEV 통합을 안내합니다. NPC은 간단한 Game State을 수신하고 하나의 허용된 행동를 선택한 다음 일반 게임 코드를 통해 해당 조치를 실행합니다. 이 예는 의도적으로 겸손합니다. 신뢰할 수 있는 3가지 동작 NPC은 상태, 권한 및 대체 정책 행동이 불분명한 대규모 에이전트보다 더 많은 것을 가르칩니다.
API 이름과 SDK 세부정보는 통합에 따라 달라질 수 있습니다. 아키텍처 계약은 동일하게 유지됩니다. 게임은 진실을 소유하고, JEV은 허용된 선택지에서 선택하고, 집행자는 세상을 바꾸기 전에 Choice을 검증합니다.
가장 작은 유용한 통합
권한 있는 Game State, 상태 예측, 허용된 행동 작성기, JEV 클라이언트 및 조치 실행기의 다섯 부분을 사용하십시오. 상태 투영은 관련 없는 세부정보를 제거합니다. 작업 빌더는 현재 전제 조건을 첨부합니다. 클라이언트가 결정 요청을 보냅니다. 실행자는 응답이 여전히 유효한지 확인하고 이를 이동, 능력 또는 애니메이션 명령으로 변환합니다.
game state -> state projection -> JEV decision -> validation -> executor -> game state
Unity에서 이러한 부분은 MonoBehaviour, 게임 플레이 서비스 및 명령 구성 요소에 걸쳐 존재할 수 있습니다. Unreal에서는 액터나 대용량 프로세서, 하위 시스템, 게임플레이 기능 또는 동작 트리 작업에 매핑될 수 있습니다. 이름은 다르지만 소유권 경계는 명시적으로 유지되어야 합니다.
1단계: 컴팩트한 디자인 Game State
다음 결정을 바꿀 수 있는 사실부터 시작하세요. 전투 NPC의 경우 역할, 체력 비율, 눈에 보이는 적, 가장 가까운 엄폐물, 아군 체력, 목표 상태, 탄약, 재사용 대기시간, 현재 동작 및 단조로운 상태 버전이 될 수 있습니다. 원시 엔진 개체나 전체 세계를 보내지 마세요. 압축된 스키마는 검사, 전송 및 재생이 더 쉽습니다.
{ agentId: 'guard-07', role: 'defender', healthRatio: 0.42, objectiveUnderThreat: true, visibleThreats: 1, ammo: 3, healReady: true, stateVersion: 1842 }
NPC이 알 수 있는 정보만 포함합니다. 이는 잠입 및 경쟁 게임에 특히 중요합니다. 단지 서버에 숨겨진 적 위치가 있다는 이유만으로 결정 모델이 숨겨진 적 위치를 받아서는 안 됩니다.
2단계: Legal Actions
정의작업에는 안정적인 이름, 명시적 매개변수, 전제 조건 및 실행 경로가 있어야 합니다. 예를 들어 NPC의 경우 세트는 holdPosition, takeCover, 공격 및 후퇴. 탄약이 0이면 attack을 보내면 안 됩니다. 안전 커버가 없는 경우 takeCover
[ { name: 'takeCover', coverId: 'wall-a' }, { name: 'attack', targetId: 'raider-02' }, { name: 'holdPosition', locationId: 'relay' } ]
[ { name: 'takeCover', coverId: 'wall-a' }, { name: 'attack', targetId: 'raider-02' }, { name: 'holdPosition', locationId: 'relay' } ]
처음에는 동작 어휘를 작게 유지하세요. 목표는 모든 버튼 누름을 인코딩하는 것이 아닙니다. 목표는 의미 있는 전술적 Choice을 노출하고 낮은 수준의 실행을 엔진에 맡기는 것입니다.
3단계: JEV
const decision = await jev.decide({ agent: npc, gameState: projectState(state), legalActions: buildLegalActions(state), objective: 'Protect the relay', stateVersion: state.version });
요청에는 상태 예측, Legal Actions, NPC 목표, 결정 기한 또는 요청 식별자가 포함되어야 합니다. 응답은 선택한 작업을 식별해야 하며 매개변수, 신뢰도 또는 근거 필드(지원되는 경우), 관찰된 상태 버전을 포함할 수 있습니다.
const decision = await jev.decide({ agent: npc, gameState: projectState(state), legalActions: buildLegalActions(state), objective: 'Protect the relay', stateVersion: state.version });
늦은 응답을 맹목적으로 적용하지 마십시오. 요청이 진행되는 동안 세상이 바뀌었을 수도 있습니다. 응답의 상태 버전을 현재 버전과 비교한 다음 선택한 작업을 다시 검증합니다.
const action = legalActions.find(candidate => candidate.name === decision.name);
if (!action || !matchesParameters(action, decision)) return fallback(state);
return executor.run(action);
유언집행자가 최종 권한을 갖습니다. 현재 허용된 행동 세트에 조치가 존재하는지, 해당 대상이 여전히 존재하는지, NPC이 조치를 취할 수 있는지, 상태 버전이 해당 조치에 비해 너무 오래되지 않았는지 확인합니다. 그런 다음 정상적인 움직임, 능력 또는 행동 트리 코드를 호출합니다.
const action = legalActions.find(candidate => candidate.name === decision.name); if (!action || !matchesParameters(action, decision)) return 대체 정책(state); return executor.run(action);
서비스를 신뢰할 수 있는 경우에도 유효성 검사가 수행되어야 합니다. 오래된 상태, 경쟁 조건, 스키마 드리프트 및 게임 계약과 일치하지 않는 우발적인 모델 출력으로부터 보호합니다.
5단계: 결정 빈도 설정
렌더 루프가 아닌 결정에 따라 케이던스를 선택하세요. 턴 기반 NPC은 턴 시작 시 결정할 수 있습니다. 실시간 전투원은 현재 의도가 완료되는 시기, 위협이 인식되는 시기 또는 수백 밀리초마다 할당된 타이머를 결정할 수 있습니다. 시스템에서 명시적으로 취소 및 주문을 지원하지 않는 한 동일한 에이전트에 대한 중복 요청을 피하세요.
충돌 전 정지 또는 서버 측 기절 존중 등 기다릴 수 없는 즉각적인 반응을 위해 로컬로 작성된 정책을 사용합니다. JEV은 모든 안전 확인이 아닌 의미 있는 전술적 Choice을 처리해야 합니다.
- 6단계: 대기 시간, 시간 초과 및 대체 정책 처리
- 모든 요청에는 마감일이 필요합니다. 기한이 만료되면 NPC을 안전한 현재 작업으로 유지하거나 결정적 대체 정책을 사용하세요. 대체 정책은 위치 유지, 엄폐물로 이동, 마지막 유효한 의도 따르기 또는 작성된 동작 트리 실행만큼 간단할 수 있습니다. 역할과 상황에 따라 선택하세요.Timeout:
- 요청을 취소하거나 무시하고 대체 정책.잘못된 작업:
- 계약 실패를 기록하고 상태를 다시 빌드하고 금고를 사용합니다. 정책.부실 상태:
- 결과를 삭제하거나 남은 작업만 재검증합니다. 안전합니다.서비스 실패:
게임을 차단하지 않고 로컬 동작으로 저하됩니다. loop.
반복되는 실패:
매번 재시도하는 대신 백오프 및 표면 원격 측정을 적용합니다. 프레임.
7단계: 결정 레이어 테스트
- 상태 예측, Legal Actions, 응답, 검증 결과, 실행 결과, 대기 시간 및 대체 정책 이유를 기록합니다. 낮은 체력, 탄약 없음, 다양한 위협, 표적 상실, 작업 중단, 탐색 불가 등에 대한 재생 사례를 구축하세요. 디자이너가 예상치 못한 Choice.
- 을 생성한 정확한 상황을 재생할 수 있을 때 의사결정 시스템의 균형을 맞추는 것이 훨씬 쉬워집니다.
- Unity 및 Unreal 통합의 경우 엔진 어댑터를 얇게 유지하세요. 어댑터는 엔진 상태를 JEV 계약으로 변환하고 검증된 작업을 다시 기존 명령 또는 능력 시스템으로 변환해야 합니다. 이를 통해 전체 레벨을 로드하지 않고도 핵심 결정 테스트를 실행할 수 있습니다.
- 생산 체크리스트
- Game State에는 관련되고 허용된 정보만 포함되어 있습니다.
- 모든 허용된 행동에는 전제 조건과 실행 가능한 소유자가 있습니다. it.
- 응답은 현재 신뢰할 수 있는 상태에 대해 검증됩니다.
요청에는 마감일, 취소 또는 부실 규칙이 있으며, backoff.대체 정책 동작은 각 NPC에 대해 설계되었습니다. 역할.재생 로그를 통해 잘못된 결정을 재현할 수 있습니다.지연 시간, 유효성, 작업 품질 및 대체 정책 비율은 별도로 모니터링됩니다.기본 개념을 보려면


