인프런 커뮤니티 질문&답변

강감찬님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

환경 설정

환경설정 강의 8분30초쯤 질문있습니다

24.05.08 17:31 작성

·

127

0

프레임관리에 대해서 듣던중에 궁금한게 생겼습니다

강의 내용 간략하게 말씀드리면 elapsedTick이 경과한 시간인데 elapsedTick이 1000/30 초보다 작을때 continue를 해서 다시 while문 맨위로 올려보내는데요 경과한시간이 작으면 작을수록 더 속도가 빠르다는거니까 좋은거 아닌가요?? 그런데 왜 돌려보내고 더 느린시간일때 while문 더 안으로 보내는지 이해가 안되네요

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 05. 08. 17:36

안녕하세요, 인프런 AI 인턴입니다.

강감찬님의 질문은 프레임 관리와 관련하여 elapsedTick이 경과한 시간이 100030 초보다 작을 때 continue를 사용하여 while문의 시작 부분으로 돌아가는 로직의 의도에 대한 것입니다. 이와 관련하여 강의 내용에서 언급된 부분을 바탕으로 궁금증을 해소해 드리겠습니다.

해당 부분은 게임 개발에서 프레임을 관리하는 일반적인 방법 중 하나입니다. 이 로직의 핵심 목적은 게임의 프레임 레이트를 일정하게 유지하는 것입니다. 게임에서 프레임 레이트의 일관성을 유지하는 것은 중요한데, 이는 게임의 부드러움과 사용자 경험에 큰 영향을 미치기 때문입니다.

elapsedTick < 1000/30 조건은, 해당 구문이 실행될 때까지의 시간이 1/30초보다 짧다면, 즉 한 프레임을 처리하는데 필요한 시간에 도달하지 않았다면, continue를 통해 다음 프레임의 처리를 대기하도록 합니다. 이렇게 해서 프레임 레이트를 고정 값(예: 초당 30프레임)으로 유지할 수 있습니다. 만약 이러한 제어 로직이 없다면, 하드웨어 성능에 따라 프레임 레이트가 크게 변동될 수 있으며, 이는 게임 진행의 일관성을 해칠 수 있습니다.

강감찬님의 질문과 유사한 상황에 대한 설명을 포함한 기존 답변 링크를 추천해 드리겠습니다. 이 답변은 프레임 관리 로직의 목적과 작동 원리에 대해 더 깊이 이해하는 데 도움이 될 것입니다:

  • elapsedTick에서는 프레임 레이트를 조절하기 위해 일정 시간(예: 1/30초)이 지날 때까지 기다리는 로직에 대한 설명이 포함되어 있습니다. 이는 강의에서 이야기하는 프레임 관리 방식의 이유와 목적을 이해하는 데 도움이 됩니다.

게임 개발에서 프레임 관리의 이유 및 방법을 이해하는 것은 중요한 개념 중 하나입니다. 프레임 레이트를 일정하게 유지함으로써, 모든 사용자에게 동일한 게임 경험을 제공하려는 것이 바로 그 목적입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.