d라이브러리









[주니어 폴리매스] 게임 디자인 씽킹 : 게임 개발을 더 쉽게! 게임 루프

복잡한 게임 로직을 쉽게 프로그래밍할 수 있는 비법이 있습니다. 바로 ‘게임 루프’인데요, 게임 루프란 무엇이고, 어떻게 활용해야 하는지 알아보겠습니다. 

 

 

게임에서는 수많은 오브젝트가 상호작용합니다. 각각의 오브젝트는 상태 값과 위치, 모양 등을 수시로 바꾸죠. 게임은 이 모든 상호작용을 하나의 반복 루프에서 처리하는데 이것을 ‘게임 루프(Game Loop)’라고 합니다. 게임 루프는 게임 오브젝트의 상태와 화면에 보이는 형태를 도식화해 관리함으로써 복잡한 게임 로직을 쉽게 프로그래밍할 수 있게 만듭니다.

 


그런데 앞의 게임 루프에는 문제가 있습니다. 게임은 실행하는 하드웨어 성능과 무관하게 진행이 일정해야 하는데 앞의 코드에서 사각형의 이동 속도는 실행되는 컴퓨터마다 다를 수 있습니다. 컴퓨터는 하드웨어의 성능에 따라 1초에 30~120번 정도로 모니터에 화면 영상을 다시 나타내는데, 이 화면 재생 빈도가 달라지면서 서로 다른 이동 속도를 만들거든요. 


그래서 실제 게임에서는 오브젝트 이동 속도를 컴퓨터가 달라도 일정하게 유지하도록 ‘델타 타임(Delta Time)’이라는 시간 개념을 게임 루프에 추가합니다. 델타 타임은 이전에 화면을 나타냈을 때부터 현재까지의 흘러간 시간으로 정의하기 때문에 하드웨어의 성능에 상관 없이 1초 동안 모두 더하면 1이 됩니다.

 

델타 타임 = 현재 화면을 나타낼 때 시간 - 바로 이전에 화면을 나타낼 때 시간


델타 타임 개념을 게임 루프에 적용하면 컴퓨터마다 다를 수 있는 게임 오브젝트의 이동 속도를 같게 만들 수 있습니다. 오른쪽 상자는 델타 타임 개념을 적용한 게임 루프를 도식화한 것입니다. 아래 코드는 델타 타임 개념을 적용한 게임 루프를 통해 1초에 200픽셀만큼 사각형을 이동시키는 스크래치 예시 코드입니다. 

 

 

 

 

 

2020년 10월 수학동아 정보

  • 오규환(아주대학교 과학영재교육원 지도교수)
  • 진행

    조가현 기자
  • 디자인

    이하연

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 게임공학
이 기사를 읽은 분이 본
다른 인기기사는?