Coding Feature.

SFML 게임 제작 공부 #3. Game Loop. 본문

Game Development/SFML 게임 제작 공부

SFML 게임 제작 공부 #3. Game Loop.

codingfeature 2023. 9. 5. 16:35

출처 - SFML Game Development By Example By Raimondas Pupius

 

우선 게임을 개발하기 위해, 게임이 실행되는 동안 어떤 Flow를 거쳐가는지 공부해보기로 했다.

위 Flow Chart는 보통 게임이 가지는 Game Loop Structure라고 한다.

 

1. Initialization

2. Loading Content

위 두 단계에서는 게임이 본격적으로 플레이 되기 이전 초기 설정을 하고 필요한 리소스들을 게임에 사용하기 위해 불러오는 단계라고 이해했다. 사용자가 플레이할 환경(윈도우 사이즈, 프레임 속도 등)이나 게임 환경(텍스쳐, 엔티티 등 불러오기)에 대해서 설정하게 되는 것 같다.

 

그리고 사용자가 화면을 끄지 않는 동안 다음 세 단계가 반복된다.

3. Process Input

4. Update Game World

5. Draw Game World

 

먼저 Process Input은 사용자가 마우스, 키보드, 게임 패드 등으로 입력하는 행위를 (마우스 왼쪽 클릭, 엔터 등) 이해하고 처리하는 단계라고 이해했다. 이 단계를 위해서 Input Manager와 같은 요소가 필요할 것이다.

 

그 다음 Update Game World는 앞서 사용자로부터 입력받은 값에 대해서(ex. 사용자가 점프를 하기 위해 스페이스 바를 눌렀다), 또는 게임 속 요소 간의 규칙, 관계 등에 대해서 (ex. 공이 떨어지는 물리 법칙) 등 게임 요소를 업데이트 하는 단계라고 이해했다.

 

마지막으로 Draw Game World는 위 단계에서 처리한 게임 요소들을 사용자 화면에 그리는 과정으로 이해했다.

 

위 세 단계는 사용자의 컴퓨터 성능에 따라 같은 시간동안 반복해서 수행되는 횟수가 다를 것이다. 예를 들어 A 컴퓨터는 1초당 5번 Update를 하고 B 컴퓨터는 1초당 10번 Update를 한다고 하면 당연히 B 컴퓨터가 더 많은 연산을 수행하므로 게임이 더 빠르게 움직일 것이다.

 

이런 문제를 해결하기 위해 프레임 속도를 똑같이 설정하거나, delta_Time을 사용하는데 이는 나중에 더 자세히 공부해보도록 한다.

 

만약 사용자가 창끄기를 한다면

6. Unloading Game : 게임 종료 이전 처리가 필요한 요소들에 대해서 알맞게 처리. (Texture 언로드, 게임 상황 저장 등)

7. Closing The Game : 게임 프로그램 종료.

단계를 수행하면서 완전히 게임이 종료하게 되는 것이다.

 

다음에는 게임 화면, 창에 대한 설정을 담당하는 Window 클래스에 대해서 공부해볼것이다.