This document is about: QUANTUM 2
SWITCH TO

시뮬레이션 컨텍스트

SimulationContext단일 Quantum 시뮬레이션 인스턴스와 관련된 모든 정보를 포함하는 컨테이너입니다. 또한 시뮬레이션 상태 위에서 작동하거나 시뮬레이션에 바인딩 된 SimulationContextService 인스턴스 목록도 포함되어 있습니다. 그 목적은 동시에 실행되는 여러 시뮬레이션과 모든 종속성을 엄격히 분리하는 것입니다.

이 분리는 리플레이와 같은 기능을 구현하는 데 핵심적입니다.

씬 서비스에 대한 노트

모든 씬 서비스(예: SceneUI 그리고 SceneCamera)들은 SimulationContext 스위칭을 위해 준비되었습니다. 이들은 단일 SimulationContext 인스턴스를 수락하고 해당 인스턴스와 동기화한 다음 모든 중요한 이벤트를 자식에게 전달합니다.

기본적으로 SimulationContext는 모든 씬 서비스에 등록됩니다. 각 서비스는 자신에게 제공된 정보의 사용 및/또는 전달 여부를 스스로 결정합니다. SceneUI는 시뮬레이션 컨텍스트 인스턴스를 자식 UIView에 전달하지만 사용자 지정 SimulationContext 를 특정 뷰에 등록하여 재정의할 수 있습니다.

fps template - handling of different simulation contexts by scene services
뷰의 씬 서비스별로 다른 시뮬레이션 컨텍스트를 처리.

컨텍스트 스위칭 패턴 - 리플레이 예제

리플레이는 특정 시간 오프셋에 스냅샷에서 시뮬레이션을 시작하고 기록된 입력을 적용하는 동일한 데이터를 포함하는 SimulationContext의 또 다른 인스턴스일 뿐입니다. 즉, 리플레이를 사용하는 게임은 다음과 같이 컨텍스트 전환 패턴을 적용합니다:

  1. 게임 시작 시 메인 SimulationContext는 게임 시작 시 모든 씬 서비스에 등록됩니다.
  2. 리플레이가 시작되면 새 리플레이 SimulationContext가 생성되어 모든 씬 서비스에 등록됩니다. 주의: 메인 SimulationContext는 씬의 뒤에서 계속 살아있는 상태입니다.
  3. 리플레이가 완료되면 메인 SimulationContext 가 씬 서비스로 다시 스왑 되고 리플레이 SimulationContext가 삭제됩니다.
fps template replay context switch
리플레이 목적의 시뮬레이션 컨텍스트 스위칭 예제.
Back to top