Game - 시뮬레이션과 렌더링
3D 시뮬레이션은 어떻게 동작할 것인지 예측하는 것이고 렌더링은 예측한 결과를 직접 그려주는 것이다.
게임을 구동하면 시작을 나타내는 엔트리 포인트 메인 함수가 있다.
메인 함수는 Initialize()
초기화 함수가 동작하고 실시간 구동을 위한 while(true) {}
감싸서 동작한다. 반복문으로 인해 종료되지 않고 프로그램은 계속 동작한다.
무한반복 내부에는 사용자 입력을 기다리는 Input()
함수가 있을 수 있으며, 서비스 처리에 필요한 Process()
또는 Logic()
함수로 동작한다. 마지막으로 처리 결과를 실시간 화면을 표시해주는 Rendering()
함수가 있다.
Main 동작 흐름
Initialize()
while(true)
Input()
Process()
Redering()
각 함수별 상세 처리
- Intiailize()
- 가상 월드의 레벨로 배경 오브젝트 NPC 등등 미리 생성을 진행하는 단계이다.
- Input()
- 사용자의 입력 단계로 키보드, 마우스, 조이스틱에서 발생한 하드웨어의 신호를 받는다.
- Process()
- 입력 단계에서 받은 신호에 따라 시뮬레이션으로 플레이어의 행동, 스킬, 이동 및 공격 판정을 수행한다.
- 언리얼 엔진은 Gameplay Logic 등 굉장히 많은 함수가 있다.
- 애니메이션을 연산하는 함수
- 코스메틱 로직으로 연출과 관련한 UI 연산 처리 및 행동에 따른 이펙트 연산
- Rendering()
- Process() 함수 등등 발생한 연산이 모두 완료한 경우 렌더링에 들어가게 된다.
- 처리한 완료한 연산들은 사용자에게 디스플레이로 표시 해주는 것이 렌더링이다.
렌더링을 한번 거치면 프레임 단위로 한 장면만 찍힌다. 그리고 다음 루프를 돌아 다음 프레임으로 넘어가는 방식으로 함수가 처리된다.
게임이 구동하는 원리는 무한루프로 계속 연출하는 모습으로 보여주는 원리이다.
💡
Frames Per Seconds 초당 몇개의 정지화면을 보여주는 용어이다.