Game Logic

유기태·2022년 10월 13일
0

1. TimeMgr

모든 컴퓨터의 성능이 같을 수 없으니 각각의 컴퓨터의 성능에 따라 frame에 걸리는 시간을 구하기 위해 사용하는 manager

1-1. FPS

Frame Per Seconds
1초 당 몇 프레임으로 나누어지는지를 나타내는 지표
즉, 1초 당 프로그램이 몇번 실행되는지를 나타내는 지표
ex) 10FPS
-> 1초를 10프레임으로 나누는 것을 의미
즉, 한 캐릭터가 1초에 100Pixel을 이동해야하면 10FPS일 경우 1프레임에 10Pixel을 이동하게 된다.

1-2. DT

Delta Time
FPS에 역수로 1프레임이 실행되는 실제 시간을 나타냄

void init()
{	
	// 프레임과 프레임사이의 카운팅 수를 세기 위해 사용
	QueryPerformanceCounter(&m_llPrevCount);
	// 1초에 10^7만큼 카운팅함
	QueryPerformanceFrequency(&m_llFrequency);
}
void update()
{
	QueryPerformanceCoutner(&m_llCurCount);
    // 1프레임 동안 몇번 카운팅이 됬는지를 구한 후
    //m_llFrequency는 1초에 10^7만큼 카운팅이니 즉, 1카운팅은 1/10^7초라는 것이되고
    // 1프레임에 카운팅 된수에 1/10^7 만큼 곱하면 1프레임에 실제 실행시간이 나오게됩니다.
    // 즉 deltatime을 구하게 됨
    m_dDt = (double)(m_llCurCount-m_llPrevCount)/(double)m_llFrequency;
}
void render()
{
	// 좀 더 정확하게 fps를 제기 위해서
	++m_iCallCount;
	m_Acc+=m_dDT;
    // dt가 1초 쌓여다는것은 즉, 1초에 몇프레임이 지나갔는지 fps를 구할 수 있는데
    // m_iCallCount에 render 함수가 1초동안 실행하게 된 횟수를 저장(모든 프로그램)
    if(m_Acc>=1.f)
    {	
    	// 현재 프로그램의 컴퓨터에 따른 FPS
    	m_iFps=m_iCallCount;
    	m_iCallCount=0;
      	m_Acc=0;
	}
}

2.

F=MA

V=V0+A*T

profile
게임프로그래머 지망!

0개의 댓글