일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Pong
- 게임
- 정처기
- Unity #Unity2D #Portal
- 1인 게임 제작
- Unity
- 1인 개발
- Vampire Survivors
- FPS
- 게임제작
- 유니티 3D
- 프로그래머스 #최소힙 #우선순위 큐
- 자바스크립트 게임
- 유니티3d
- 합격
- 정처기 필기
- unity3d
- 3회차
- 정보처리기사
- 토이 프로젝트
- 게임 개발
- 1인 게임 개발
- 1인 게임
- 유니티
- 게임 제작
- Unity2D
- 퐁
- portal
- 필기
- 자바스크립트
- Today
- Total
Coding Feature.
SFML 게임 제작 공부 #3. Game Loop. 본문
우선 게임을 개발하기 위해, 게임이 실행되는 동안 어떤 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 클래스에 대해서 공부해볼것이다.
'Game Development > SFML 게임 제작 공부' 카테고리의 다른 글
SFML 게임 제작 공부 #6. Input, Event 처리 (Event Manager). (0) | 2023.09.10 |
---|---|
SFML 게임 제작 공부 #5. Game 클래스, 시간 처리. (0) | 2023.09.07 |
SFML 게임 제작 공부 #4. Window 클래스. (0) | 2023.09.05 |
SFML 게임 제작 공부 #2. SFML 라이브러리 개발 환경 구축하기. (0) | 2023.09.02 |
SFML 게임 제작 공부 #1. 시작, SFML에 대해서. (0) | 2023.09.02 |