inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘

프레임

해결된 질문

202

wlfansdl

작성한 질문수 32

0

int main()
{
	::srand(static_cast<unsigned>(time(nullptr)));

	board.Init(25, &player);
	player.Init(&board);

	uint64 lastTick = 0;
	while (true)
	{
#pragma region 프레임 관리
		const uint64 currentTick = ::GetTickCount64();
		const uint64 deltaTick = currentTick - lastTick;
		lastTick = currentTick;
#pragma endregion

		// 입력

		// 로직
		player.Update(deltaTick);

		// 렌더링
		board.Render();
	}
}

 

안녕하세요 초반 환경설정을 듣다가 궁금한 점이 있습니다.

1. 일단 1초동안 이 while문을 몇번 돌릴지가 프레임이라고 하셨는데. 저 코드에서 어떻게 while문 반복횟수를 결정할 수있나요 ? player.Update(deltaTick) 부분을 말하신거면 만약에 while문 루프를 조정하고싶으면 sleep 같은걸 써서 조정하나요 ?

2. 1초에 60프레임으로 고정하고싶으면 어떻게 코드를 수정해야하는지 궁금합니다.

기술면접

답변 1

0

Rookiss

1.
저 부분은 고정 프레임이 아니라 컴퓨터 성능이 좋을수록 무한이 늘어납니다.


2.
1초에 60프레임으로 맞추고 싶다면,
러프하게 1/60초 마다 통과시켜주고 그게 아니라면 continue를 시키면 됩니다.
구현 방법이야 다양하게 있겠지만
가령 deltaTick을 합산해서 별도로 카운팅하는 것이 가장 쉬운 방법이겠죠.
(누적된 deltaTick이 1/60초를 넘기면 통과시키고 리셋하고 ..)

0

wlfansdl

정말 빠른 답변 감사합니다. 근데 말씀하신대로 while문 루프는 컴퓨터 성능마다 다르고 tick은 출력해보니깐 0 0 0 15 16 이런식으로 일정한 숫자가 엄청 빠르게 출력되는데요. 

그럼 이 tick들이 합산되는 속도는 while문에 따라 다르니깐 컴퓨터마다 달라질수 있는거 아닌가요 ? 어떻게 정확한 시간을 통제할수있는지 잘 이해가 안갑니다 ㅠ

0

Rookiss

네 뭐 GetTickCount 가 10~16ms 정밀도인가 그랬던 것으로 기억하는데
그거보다 훨씬 더 정밀하게 측정할 수 있는 QueryPerformanceCounter 등도 있습니다.
가령 그런 함수들로 Update마다 1ms씩 누적된다면
그걸 16개 모으는 16ms (1000/60)이 될 때 한번 통과시키고
누적된 카운터를 다시 0으로 리셋하면 되겠죠.

0

wlfansdl

아하 이해했습니다 제가 잘못생각했네요

헤더파일에 관한 질문

0

441

1

이진 탐색 트리 삭제 질문

0

704

1

해당 문제 유형을 수학적으로 표현 가능할까요?

0

511

1

vs2022 미로 줄간격

0

1595

2

pos 구조체 초기화 문제

0

502

0

맵이 이상하게 나오는데 무슨 문제인가요?

0

520

1

자동완성 기능 질문

1

527

2

push_back emplace_back 질문있습니다.

0

402

1

Container, Predicate 질문입니다.

0

400

1

_size - 2 질문

0

422

1

Disjoint Set 질문있습니다

0

436

1

우선순위 큐 구현 연습 intellisense 질문

0

406

1

int32 관련 질문

0

282

1

c++에서 처음 보는 문법

0

389

1

학습에 크게 지장이 있는건 아니지만 단순 궁금해서 질문드립니다

0

327

1

힙 정렬과 병합 정렬

0

431

1

resize 질문

0

266

1

처음 보는 for문 문법

0

392

1

환경 설정.. 궁금점

0

393

1

이 비교 연산자를 넣어주는 이유가 있나요?

0

292

1

소멸자 관련 질문

0

255

1

&의 차이

0

295

1

프레임 관리 질문입니다.

0

337

1

연산자 오버로딩 관련 질문입니다.

1

209

1