게임 루프 (2023.02.16)
게임 루프란?
간단하게 게임을 시작하고 끝낼 때까지의 한 일련의 과정이라고 생각하면 된다.
요리에 비유해보자. 우리가 음식점을 만들고 장사를 하기 위해서는 우선 장사를 할 공간, 장사를 실제로 진행할 요리사, 그리고 판매할 요리와 이에 대한 레시피 등이 있을 것이다. 이때 공간, 요리사, 레시피, 재료와 같이 실제 요리라는 과정 이전에 선행되어야하는 작업들을 초기화라고 부르도록 하자. 이 과정을 게임으로 치면 창 생성, Direct3D 초기화, 3D 리소스 로딩, 음악 로딩, 셰이더 로딩 및 컴파일 등의 과정일 것이다.
이제 장사할 공간도 있고, 사람도 고용 했고, 재료도 사왔으니, 실제 장사를 시작을 해야 한다. 손님이 오면 어떻게 맞이 하고, 어떻게 주문을 받고, 어떤 프로세스와 우선순위로 주문을 처리하는지에 대한 반복적인 규칙이 필요하게 된다. 이것이 바로 루프loop가 된다. 루프의 시작은 언제나 입력을 받는 것이다. 손님이라는 입력, 주문이라는 입력 등을 바탕으로 주방 내부의 상태가 바뀔 것이다. 예를 들어 한가할 때 손님이 들어오게 된다면 여유롭게 해도 금방 음식이 나올 것이다. 하지만 만약 손님이 많은 상태라면 단순히 주문이 들어온 순서대로 요리를 하는 것보다는, 당장 한 방에 처리할 양이 많은 것들을 먼저 요리해서 처리하고, 그 다음에 나머지를 처리하는게 더 빠를 수도 있다. 이렇듯 여러 가지 규칙과 상태가 존재할 것이다. 이후에 요리가 완성되면, 해당 요리를 손님에게 서빙을 해주어야 한다.
최종적으로 장사가 끝나게 되면, 퇴근하기 전에 정리를 해줘야 한다. 재료도 다시 냉장고에 넣고, 식탁 닦고 요리 기구랑 식기 설거지하고… 이러한 과정을 종료 과정이라고 한다.
위의 과정을 그림으로 이해해보자: