초당 프레임수 fps-정리2(PC 성능에 상관없이 이동)

초당 프레임수의 기본정리는 예전에 정리해놨으니, 밑 링크를 참고
[프로그래밍/프로그래밍일반] - 초당 프레임수 (fps, Frame Per Second) 총정리

추가적으로 정리할 것이 있어서 정리해봅니다.

게임에서 프레임이란?
프레임은 컴퓨터마다 다 다릅니다. 
2D라 할지라도 의례적인 3D 게임이 쓰는 다음 방식으로도 웬만한 케이스는 다 커버된다고 봅니다. 

W(n) = W(n-1) + V * T(n-1) 

W(n-1): 이전 프레임의 게임 월드 상태 
W(n): 현재 프레임의 게임 월드 상태 
V: 1초 동안 월드의 객체가 상태 변화하는 양 
T(n-1): 이전 프레임이 게임 월드 상태 변화 + 랜더링에 소요된 시간

=>
10FPS를 기준으로 게임 월드가 천이하게 만들고, 
10FPS이상 나오는 프레임에 대해서는 lerp(보간)를 하는 방법입니다. 

약간의 부연 설명을 하자면 아래와 같습니다. 
t가 0.1초 미만이 될 때까지 W를 0.1초간 이동시킨다. (이때는 랜더링을 하지 않는다.) 
이제 W(n-1)과 W(n)의 게임 월드 상태를 t*10을 기준으로 보간한다. 
그리고 랜더링한다. 

이 방법은 2D건 3D이건 유용한데, 
2D 게임의 경우 컴마다 FPS의 격차가 클 수도 있는데다(저사양을 노린 마케팅을 고려할 경우) 
2D 게임도 높은 FPS에서는 엄청 부드럽게 보이게 하고 싶을 수도 있죠. 
이때 상기 방법이 효과적일 것입니다.



예시_)
날자고도님의 탄막슈팅의 시간 관리
이동해야할 DeltaTime을 구해서 모든 이동에 곱해준다.
(이렇게 하므로서 모든 이동은 time에 영향을 받는다) 


참고: 자유게시판 - 8. PC성능에 상관없이 이동

이 글을 공유하기

댓글

Designed by JB FACTORY