본문 바로가기

책 읽기/게임 프로그래밍 알고리즘

1장 게임프로그래밍 개요

1. 비디오 게임 프로그래밍의 발전

아티리 시대 1977 ~ 1985
NES(닌텐도 엔터테이먼트 시스템), SNES 시대 1985 ~ 1995
PS, PS2 시대 1995 ~ 2005
Xbox 3660, PS3, 위 시대 2005 ~ 2013
미래  

 

 

2. 게임 루프

: 게임 프로그램의 전체적인 흐름

사용자가 중지하지 않는 한 게임은 일련의 동작을 계속해서 반복수행 하기에 루프형태를 띤다.

보통은 30FPS 또는 60FPSˇ

FPS : Frames Per Second : 초당 프레임

게임 루프는 주로 타깃 하드웨어에 따라 형태가 달라진다.

 

① 전통적인 게임 루프

: < 입력 처리, 게임 세계 업데이트, 출력 생성 > 세 단계로 나누어짐

 

-1. 입력 처리 단계

: 키보드, 마우스, 컨트롤러 기기 등 사용자의 입력을 모두 확인할 뿐만 아니라 기타 외부 입력까지도 모두 처리해야 한다.

ex) 온라인 멀티플레이 게임에서 인터넷을 통해 수신하는 모든 데이터

 

-2. 게임 세계 업데이트 단계

: 게임 내에서 활동 중인 모든 게임 오브젝트를 검토해서 적절하게 업데이트 해야한다.

(수백~수천 개의 오브젝트를 처리 할 수도 있다.)

 

-3. 출력 생성 단계

: 2D·3D 그래픽, (음향효과, 배경음악 같은) 오디오, 포스 피드백ˇ 등의 출력을 말한다.

가장 부하가 큰 것은 그래픽 출력이며, 온라인 멀티플레이 게임에서 인터넷을 통해 다른 플레이어에게 보낼 데이터도 출력에 해당한다.

포스 피드백 : 게임 세계의 상태를 '힘'으로 표현해서 전달하는 출력

ex) 게임 상황에 따른 컨트롤러의 진동 기능, 레이싱 게임시 컨트롤러가 멋대로 돌아가거나 마음대로 돌아가지 않는 것

 

 

멀티스레드 게임 루프

스레드 : 컴퓨터 프로그램 수행시 프로세스 내부에 존재하는 수행경로 = 일련의 실행코드 → '실제 작업자'

멀티스레드 : 하나의 프로세스 내에 다수의 스레드가 동시에 수행되는 것

: 비디오 게임 개발에 널리 쓰이고 있다.

요즘 하드웨어는 여러 개의 코어를 지닌 CPU를 탑재하고 있기 때문에, CPU가 여러 줄의 코드 또는 여러 개의 스레드를 실행할 수 있다.

 

AAA게임ˇ의 그래픽 렌더링은 엄청난 시간을 잡아먹는 연산이다. 렌더링 파이프라인˘은 수많은 단계로 뤄져있으며 처리해야할 데이터의 양도 많다. 프레임당 100만개가 넘는 폴리곤을 렌더링하는 콘솔게임도 있다.

화면 전체 렌더링이 30ms, 게임세계 업데이트는 20ms가 걸리는 게임일 때 스레드 하나로 처리한다면 총 50ms가 걸린다. 하지만 렌더링과 업데이트를 동시에 완료할 수 있다면 30ms밖에 안걸리게 된다.

AAA게임 : ==트리플 에이 게임(Triple-A Game). 많은 제작비를 투여하여 고퀄리티의 게임을 제작한 뒤 높은 판매량을 기대하고 만드는 게임. ex) 언차티드 시리즈, 마리오 시리즈

렌더링 파이프라인(Rendering Pipeline) : 렌더링 과정을 늘어놓고 그 과정대로 따라가는 것