저는 자동차 경주 게임을하고 있는데 과거 경주를 다시 플레이하기위한 유령 스프라이트를 구현했습니다. 나는 물리 엔진을 사용하고 많은 독서 후에 고스트 데이터를 저장하는 가장 좋은 방법은 예를 들어 https : // gamedev에 설명 된 것처럼 주어진 시점에서 자동차의 위치와 회전을 기록하는 것이라고 결론을 내 렸습니다. stackexchange.com/a/8380/26261 .
그러나 재생 중에 해당 시점을 찾는 좋은 방법은 무엇입니까? 예를 들어이 데이터가있는 레코드가 있습니다.
time: +3.19932 (seconds since race start)
position: 180,40 (position at that time)
rotation: 30.4 (rotation at that time)
그러나 나는 그것에 몇 가지 문제가 있습니다.
다시 재생할 때 3.19932의 정확한 시점에 다시 도달 할 가능성은 거의 없습니다. 아마도 3.1 정도의 시점이 있고 가장 가까운 일치하는 레코드를 찾아야 할 것입니다. 보간 할 때 위와 아래에서 가장 가까운 일치도. 이것은 매우 비효율적이고 시간 소모적 인 것처럼 들립니까?
나중에 재생할 수 있도록 이러한 레코드를 저장할 수있는 목록 구조는 무엇입니까? 배열? 그렇다고 특정 시간과 일치하는 레코드의 검색 시간이 레이스가 길어질수록 증가한다는 것을 의미하지 않습니까?
시점에 어떤 빈도를 사용해야합니까? 각 프레임은 과도하게 추측됩니다. 오히려 모든 n 번째 프레임을 저장하고 그 사이에 보간해야하므로 2의 스토리지 질문이 훨씬 어려워집니다.
이 아이디어는 올바른 접근법일까요? 그렇다면 어떻게 효율적으로 데이터를 저장하고 검색 할 수 있습니까? 나는 일반적으로 위의 데이터 구조를 사용하고 결정적 게임 상태와 사용자 입력 기록 등을 사용하고 싶지 않습니다.
도움을 주셔서 감사합니다!
편집 : 내가 사용하는 환경을 설명해야한다는 것을 알고 있습니다 : iPhone 용 Cocos2D. 방법이 update:(ccTime)delta
있습니다. 이상적으로,이 방법은 1/60 초마다 호출되지만, 보장은 없습니다- delta
마지막 게임 시간 이후 실제 시간이 지났으며 1/60보다 많거나 적을 수 있습니다. 이 방법으로 현재 게임 상태를 저장하고 싶습니다.