2014-03-27 6 views
0

PNaCl 게임에서 시간을 추적하기 위해 "tick time"을 사용하려고합니다. 사용자가 시스템 시간을 조정하면 게임 시간에 영향을주지 않아야합니다.pp :: Core :: GetTimeTicks() 시스템 잠자기시 pp :: InputEvent :: GetTimeStamp()와 동기화되지 않음

pp::Core::GetTimeTicks()pp::InputEvent::GetTimeStamp()을 모두 사용하여 게임 시뮬레이션을 실행하고 싶습니다. 논리는 다음과 같습니다. 입력 이벤트가 발생하면 게임 시간이 해당 이벤트의 pp::InputEvent::GetTimeStamp()과 일치 할 때까지 시뮬레이션을 실행합니다. 렌더링 완료 콜백이 발생하면 게임 시간이 pp::Core::GetTimeTicks()과 일치 할 때까지 시뮬레이션을 실행하십시오.

이 시작 잘 작동하고,이 유스 케이스는 pp::Core::GetTimeTicks()에서, 지금까지의 내가 문서를 이해할 수로 지원 될 것으로 보인다 다음에 몇 가지 이벤트 시간을 전달할 때

이 시계는 브라우저에 의해 사용됩니다 모듈 (예 : PP_InputEvent :: time_stamp_seconds 필드 사용). 내가 잠을 다시 열려면 컴퓨터를 넣을 때


그러나,이 두 시계는 컴퓨터가 자고있는 시간의 양에 의해 동기화 될 것으로 보인다. pp::InputEvent::GetTimeStamp()이 실행 된 것 같으면 시스템이 대기 상태 일 때 pp::Core::GetTimeTicks()이 실행을 중지 한 것처럼 보입니다. 입력 이벤트는 시스템이 대기 상태에 있었던 시간만큼 코어 클럭보다 앞서 타임 스탬프 처리됩니다.

이 두 시계를 사용하여 시간을 절약합니다. 해결 방법은 입력 이벤트에 대한 응답으로 시뮬레이션을 실행할 때 코어 클럭을 사용하는 것이지만 키 누름과 화면에서의 동작 사이에 대기 시간이 길어질 수 있습니다. 또 다른 해결 방법은 단순히 입력 이벤트에 대한 응답으로 시뮬레이션을 실행하지 않는 것입니다. 그럼에도 불구하고, 나는이 수수께끼의 바닥에 가고 싶습니다.

구현시 버그입니까? 이 시간은 동기화되어야한다고 말하는 것 같은 문서의 버그입니까? 또는 설명서를 잘못 읽었습니까?


Linux 용 Chrome 33.0.1750.152 (공식 빌드 256984)에서이 현상이 발생합니다.

답변

1

버그처럼 보입니다. InputEvent는 PP_TimeTicks를 반환합니다. 타임 틱에는 Core :: GetTimeTicks()를 통해 표시되는 동작이 있어야합니다.

하지만 입력 이벤트로 월별 시계 시간이 반환됩니다. 이것은 고추 입력 이벤트가 DOM 이벤트와 일치해야하고 DOM 입력 이벤트가 1970 년 (벽시계 시간) 이후의 시간으로 지정되므로 실제로 실제로 정확합니다.

동작이 올바르지 만 GetTimeStamp의 반환 형식은 PP_Time이어야합니다. 나는 이것을 제출할 것이다.