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) : 렌더링 과정을 늘어놓고 그 과정대로 따라가는 것