비디오 게임 프로그래머

게임 프로그래머()는 주로 비디오 게임이나 게임 개발 도구와 같은 관련 소프트웨어를 위한 코드베이스를 개발하는 소프트웨어 엔지니어, 프로그래머 또는 컴퓨터 과학자이다. 게임 프로그래밍에는 많은 전문 분야가 있으며, 이들 모두 "게임 프로그래머"라는 포괄적인 용어 아래에 속한다.Bates 2004, pp. 165-171Moore, Novak 2010, pp. 78-84 게임 프로그래머를 게임 디자인을 담당하는 게임 디자이너와 혼동해서는 안 된다.Moore, Novak 2010, pp. 74-75

 역사 

섬네일|애플 II 시리즈는 초기 가정용 컴퓨터 시대에 인기 있는 비디오 게임 플랫폼이었다. 이후에 나온 시스템들에 비해 성능이 뒤처졌음에도 불구하고 1990년대 초반까지 인기를 유지했다.

비디오 게임의 초기 시절(1970년대 초반에서 1980년대 중반)에는 게임 프로그래머가 디자이너와 아티스트의 역할도 겸했다. 이는 일반적으로 초기 컴퓨터의 성능이 매우 제한적이어서 각 기능별로 전문 인력을 두는 것이 불필요했기 때문이다. 게임 컨셉은 대체로 가벼웠고 게임은 한 번에 몇 분 동안만 플레이하도록 의도되었지만, 더 중요한 것은 아트 콘텐츠와 게임플레이의 변화가 컴퓨터의 제한된 성능에 의해 제약받았다는 점이다.

나중에 전문적인 아케이드 게임 하드웨어와 가정용 시스템의 성능이 향상되면서, 게임 개발자들은 더 깊이 있는 스토리라인을 개발하고 고해상도 및 풀 컬러 그래픽, 물리학, 고급 인공지능 및 디지털 사운드와 같은 기능을 포함할 수 있게 되었다. 기술은 현대 게임이 전문 그래픽 아티스트들이 개발한 에셋을 사용하여 3D 그래픽과 풀 모션 비디오를 자랑할 수 있을 정도로 크게 발전했다. 오늘날 "프로그래머 아트"라는 경멸적인 용어는 초기 비디오 게임의 전형이었던 밝은 색상과 투박한 디자인을 의미하게 되었다.

게임에 더 많은 깊이와 에셋을 추가하려는 욕구는 분업을 필요로 했다. 처음에는 아트 제작이 전업 아티스트에게 맡겨졌다. 다음으로 게임 프로그래밍은 게임 디자인과 분리된 학문이 되었다. 이제는 비주얼드와 같은 퍼즐 게임처럼 일부 게임만이 한 명의 전업 프로그래머만 필요로 할 정도로 단순하다. 그러나 이러한 분업에도 불구하고 대부분의 게임 개발자(아티스트, 프로그래머, 심지어 게임 프로듀서)는 현대 게임의 최종 디자인에 어느 정도 의견을 낸다.

 분야 

현대 비디오 게임은 고급 물리학, 인공지능, 3D 그래픽, 디지털화된 사운드, 독창적인 악보, 복잡한 전략을 포함할 수 있으며, 여러 입력 장치(마우스, 컴퓨터 자판, 게임패드, 조이스틱 등)를 사용할 수 있고 인터넷이나 LAN을 통해 다른 사람들과 대결할 수 있다. 게임의 각 측면은 한 명의 프로그래머의 시간을 모두 소비할 수 있으며, 많은 경우 여러 명의 프로그래머가 필요하다. 일부 프로그래머는 게임 프로그래밍의 한 분야에 전문화될 수 있지만, 많은 이들이 여러 측면에 익숙하다. 각 기능에 필요한 프로그래머의 수는 프로그래머의 기술에 따라 어느 정도 달라지지만, 대부분 개발 중인 게임의 유형에 따라 결정된다.

 게임 엔진 프로그래머 

게임 엔진 프로그래머는 시뮬레이션된 물리학 및 그래픽 분야를 포함하여 게임의 기본 엔진을 제작한다.Moore, Novak 2010, p. 79 점점 더 많은 비디오 게임이 상용, 오픈 소스 또는 무료로 제공되는 기존 게임 엔진을 사용하고 있다. 이들은 종종 특정 게임에 맞춰 커스터마이징되며, 이 프로그래머들이 이러한 수정을 담당한다.

 물리 엔진 프로그래머 

게임의 물리 프로그래머는 게임에서 사용할 물리학을 개발하는 데 전념한다.Moore, Novak 2010, p. 80 일반적으로 게임은 실제 물리 세계의 몇 가지 측면만을 시뮬레이션한다. 예를 들어, 우주 게임은 시뮬레이션된 중력이 필요할 수 있지만 물의 점성도를 시뮬레이션할 필요는 없다.

처리 사이클은 항상 귀중하기 때문에 물리 프로그래머는 계산 비용은 저렴하지만 해당 게임에 "충분히 좋아" 보이고 작동하는 "지름길"을 사용할 수 있다. 다른 경우에는 더 쉬운 게임플레이나 극적인 효과를 위해 비현실적인 물리학이 사용된다. 때로는 특정 상황의 하위 집합이 지정되고 그러한 상황의 물리적 결과가 일종의 기록에 저장되어 실행 시간에 전혀 계산되지 않기도 한다.

일부 물리 프로그래머는 인버스 키네마틱스 및 게임 캐릭터의 기타 움직임과 같은 어려운 작업에 몰두하기도 하지만, 복잡한 계산으로 CPU에 과부하를 주지 않기 위해 이러한 움직임은 점점 더 모션 캡처 라이브러리를 통해 할당되고 있다.

 그래픽 엔진 프로그래머 

역사적으로 이 직함은 대개 블리터 알고리즘과 2D 그래픽을 위한 영리한 최적화를 개발한 프로그래머의 몫이었다. 그러나 오늘날에는 거의 전적으로 복잡한 3D 그래픽 렌더러를 개발하고 수정하는 데 특화된 프로그래머에게 적용된다. 하지만 최근 새로운 세대의 휴대 전화 및 휴대용 콘솔 게임기용 게임을 개발하기 위해 일부 2D 그래픽 기술이 다시 유용해졌다.

3D 그래픽 프로그래머는 벡터 및 행렬 수학, 사원수 및 선형대수학과 같은 고급 수학 개념을 확고하게 이해하고 있어야 한다.

이러한 비디오 게임 개발 분야를 전문으로 하는 숙련된 프로그래머는 높은 임금을 요구할 수 있으며 대개 희귀한 자원이다. 이들의 기술은 모든 컴퓨팅 플랫폼의 비디오 게임에 사용될 수 있다.

 인공지능 프로그래머 

AI 프로그래머는 적과 상대방의 지능을 시뮬레이션하기 위한 로직을 개발한다.Moore, Novak 2010, pp. 80-81 과거에는 이러한 작업이 다른 분야를 전문으로 하는 프로그래머들에 의해 구현되었으나, 최근에는 전문 분야로 진화했다. AI 프로그래머는 경로 탐색, 전략 및 적의 전술 시스템을 프로그래밍할 수 있다. 이는 게임 프로그래밍에서 가장 도전적인 측면 중 하나이며 그 정교함이 빠르게 발전하고 있다. 현대 게임은 프로그래밍 인력의 약 10~20%를 AI에 할당한다.

문명 III와 같은 전략 게임이나 엘더 스크롤 IV: 오블리비언과 같은 롤플레잉 비디오 게임은 AI를 많이 사용하는 반면, 퍼즐 게임과 같은 다른 게임들은 AI를 거의 또는 전혀 사용하지 않는다. 많은 게임 개발자들은 스크립트 언어를 통해 게임을 위한 자체 AI를 프로그래밍하는 데 사용할 수 있는 전체 프로그래밍 언어를 만들었다. 이러한 언어는 일반적으로 게임을 구현하는 데 사용되는 언어보다 덜 기술적이며, 종종 게임이나 레벨 디자이너가 게임의 세계를 구현하는 데 사용된다. 많은 스튜디오는 또한 게임의 스크립팅을 플레이어에게 공개하며, 이는 제3자 모드 개발자들에 의해 광범위하게 사용된다.

게임 프로그래밍에 사용되는 AI 기술을 학술적인 AI 프로그래밍 및 연구와 혼동해서는 안 된다. 두 분야 모두 서로에게서 아이디어를 빌려오기는 하지만, 예외는 있지만 일반적으로 별개의 분야로 간주된다. 예를 들어, 라이언헤드 스튜디오의 2001년 게임 블랙 & 화이트는 학습을 사용하여 게임 플레이 중 행동을 모델링하는 사용자 제어 크리처에 대한 독특한 AI 접근 방식을 보여준다.Evans 2002, Chapter 11.2: Varieties of Learning, pp.567-578 최근 몇 년 동안 유망한 AI 연구 분야와 게임 AI 프로그래밍을 결합하려는 노력이 더 많이 기울어지고 있다.

 사운드 프로그래머 

항상 별도의 분야는 아니었지만, 사운드 프로그래밍은 퐁 시절부터 게임 프로그래밍의 핵심이었다. 대부분의 게임은 오디오를 사용하며, 많은 게임이 전체 악보를 갖추고 있다. 컴퓨터 오디오 게임은 그래픽을 완전히 배제하고 사운드를 주요 피드백 메커니즘으로 사용한다.Moore, Novak 2010, p. 83

많은 게임이 3D 위치 사운드와 같은 고급 기술을 사용하여 오디오 프로그래밍을 사소하지 않은 문제로 만든다. 이러한 게임의 경우 한두 명의 프로그래머가 게임의 사운드 엔진을 구축하고 개선하는 데 모든 시간을 할애할 수 있으며, 사운드 프로그래머는 디지털 신호 처리에 대한 교육을 받았거나 공식적인 배경 지식을 가지고 있을 수 있다.

사운드 디자이너가 사용할 수 있도록 사운드 프로그래머가 스크립팅 도구를 만들거나 유지 관리하기도 한다. 이러한 도구를 통해 디자이너는 사운드를 캐릭터, 동작, 사물 및 이벤트와 연결하는 동시에 게임 환경(레벨 또는 구역)에 음악이나 분위기 사운드를 할당하고 잔향과 같은 환경 변수를 설정할 수 있다.

 게임플레이 프로그래머 

모든 프로그래머가 게임이 제공하는 콘텐츠와 경험에 기여하지만, 게임플레이 프로그래머는 게임의 전략, 게임의 메커니즘 및 로직 구현, 그리고 게임의 "느낌"에 더 집중한다. 이는 대개 별도의 분야가 아닌데, 이 프로그래머가 하는 일은 대개 게임마다 다르며 필연적으로 그래픽이나 사운드와 같은 게임 개발의 더 전문적인 분야에 관여하게 되기 때문이다.

이 프로그래머는 전략 테이블을 구현하거나, 입력 코드를 미세 조정하거나, 게임을 변경하는 다른 요소를 조정할 수 있다. 그러나 이러한 측면 중 많은 부분은 해당 분야를 전문으로 하는 프로그래머에 의해 변경될 수 있다(예를 들어, 전략 테이블은 AI 프로그래머에 의해 구현될 수 있다).

 스크립터 

초기 비디오 게임에서 게임플레이 프로그래머는 게임의 모든 콘텐츠를 생성하기 위한 코드를 작성했다. 만약 플레이어가 특정 적을 쏘아야 하고, 화면에 텍스트와 함께 빨간 열쇠가 나타나야 한다면, 이 기능은 모두 게임플레이 프로그래머에 의해 C 또는 어셈블리어로 핵심 프로그램의 일부로 작성되었다.

오늘날에는 핵심 게임 엔진이 대개 게임플레이 프로그래밍과 분리되어 있다. 이는 몇 가지 개발상의 이점이 있다. 게임 엔진은 그래픽 렌더링, 사운드, 물리학 등을 처리하는 반면, 스크립트 언어는 시네마틱 이벤트, 적의 행동 및 게임 목표와 같은 것들을 처리한다. 대규모 게임 프로젝트에는 이러한 종류의 게임 콘텐츠를 구현하기 위한 스크립터 팀이 있을 수 있다.

스크립터는 대개 게임 디자이너이기도 하다. C++를 마스터한 유능한 게임 디자이너를 찾는 것보다 스크립트 언어를 배울 수 있는 유능한 게임 디자이너를 찾는 것이 종종 더 쉽다.

 UI 프로그래머 

이 프로그래머는 게임을 위한 사용자 인터페이스(UI) 프로그래밍을 전문으로 한다.Moore, Novak 2010, p. 81 일부 게임은 맞춤형 사용자 인터페이스를 갖추고 있지만, 이 프로그래머는 여러 프로젝트에서 사용할 수 있는 라이브러리를 개발할 가능성이 더 높다. 대부분의 UI는 2D로 보이지만, 현대의 UI는 대개 게임의 나머지 부분과 동일한 3D 기술을 사용하므로 이 역할에는 3D 수학 및 시스템에 대한 지식이 도움이 된다. 고급 UI 시스템은 컨트롤을 위한 투명도, 애니메이션 또는 파티클 효과와 같은 스크립팅 및 특수 효과를 허용할 수 있다.

 입력 프로그래머 

섬네일|250px|조이스틱은 1980년대 게임의 주요 입력 장치였다. 이제 게임 프로그래머는 광범위한 입력 장치를 고려해야 하지만, 조이스틱은 오늘날 상대적으로 적은 수의 게임에서 지원되며, 여전히 비행 시뮬레이터에서는 지배적이다.

입력 프로그래밍은 대개 직함이나 특정 게임 프로젝트의 전업 직책은 아니지만 여전히 중요한 작업이다. 이 프로그래머는 키보드, 마우스 또는 조이스틱과 같은 입력 장치가 게임에 어떤 영향을 미치는지 지정하는 코드를 작성한다. 이러한 루틴은 일반적으로 제작 초기에 개발되며 개발 기간 내내 지속적으로 미세 조정된다. 보통 한 명의 프로그래머가 이러한 시스템 개발에 모든 시간을 쏟을 필요는 없다. Wii 리모컨이나 키넥트와 같은 장치를 활용하는 실시간 모션 제어 게임은 매우 복잡하고 지연 시간이 짧은 입력 시스템이 필요할 수 있는 반면, 히어로즈 오브 마이트 앤 매직과 같은 마우스 기반 턴제 전략 게임의 HID 요구 사항은 구현하기가 훨씬 간단하다.

 네트워크 프로그래머 

이 프로그래머는 플레이어들이 LAN이나 인터넷(또는 드물게 모뎀을 통해 직접 연결)을 통해 연결되어 경쟁하거나 협력할 수 있게 해주는 코드를 작성한다.Moore, Novak 2010, p. 82 이러한 게임 기능을 구현하는 프로그래머는 이 하나의 역할에 모든 시간을 보낼 수 있으며, 이는 종종 기술적으로 가장 도전적인 업무 중 하나로 간주된다. 네트워크 지연 시간, 패킷 압축, 연결 끊김 또는 중단 등은 고려해야 할 사항 중 일부에 불과하다. 멀티플레이어 기능은 전체 제작 기간을 소비할 수 있고 다른 엔진 시스템이 네트워킹을 염두에 두고 설계되어야 함에도 불구하고, 네트워크 시스템은 종종 개발 마지막 몇 달 전까지 미뤄져 이 역할에 추가적인 어려움을 더한다. 일부 타이틀은 관리 부족, 설계상의 선견지명 부족, 확장성 문제 등으로 인해 출시를 몇 달 앞두고 온라인 기능(종종 핵심 게임플레이보다 우선순위가 낮은 것으로 간주됨)이 삭제되기도 했다. PS3용 버추어 파이터 5가 이러한 경향의 주목할 만한 예이다.TVG: AM2: Virtua Fighter 5 PS3 Could Be Updated For Online News 

 게임 도구 프로그래머 

도구 프로그래머Moore, Novak 2010, p. 78는 게임을 위한 맞춤형 도구를 작성하여 게임 개발을 지원할 수 있다. 게임 개발 도구에는 스크립트 컴파일, 아트 에셋 가져오기 또는 변환, 레벨 편집과 같은 기능이 포함되는 경우가 많다. 사용되는 일부 도구는 IDE나 그래픽 편집기와 같은 COTS 제품일 수 있지만, 도구 프로그래머는 상용 제품에서는 제공되지 않는 특정 게임에 맞춤화된 특정 기능을 갖춘 도구를 만든다. 예를 들어, 어드벤처 게임 개발자는 분기형 스토리 대화를 위한 편집기가 필요할 수 있고, 스포츠 게임 개발자는 플레이어와 팀 스탯을 관리하기 위한 전용 편집기를 사용할 수 있다. 이러한 도구는 일반적으로 게임을 구매하는 소비자에게는 제공되지 않는다.

 이식 프로그래머 

한 플랫폼에서 다른 플랫폼으로 게임을 이식하는 것은 게임 개발자들에게 항상 중요한 활동이었다. 일부 프로그래머는 한 운영체제의 소스 코드를 다른 운영체제에서 작동하도록 변환하는 이 활동을 전문으로 한다. 때때로 프로그래머는 애플리케이션이 하나의 운영체제뿐만 아니라 휴대 전화와 같은 다양한 기기에서 작동하도록 만들 책임이 있다. 그러나 독점 프로그래밍 언어, 도구 또는 하드웨어로 인해 소스 코드를 변환하는 것이 헛된 노력이 될 수 있으므로, 종종 "이식"은 게임 전체를 처음부터 다시 작성하는 것을 포함할 수 있다.

이 프로그래머는 원본 및 대상 운영체제와 언어 모두에 익숙해야 하며(예를 들어 C++로 작성된 게임을 자바로 변환), 아트워크 및 사운드와 같은 에셋을 변환하거나 메모리가 적은 휴대폰을 위해 코드를 다시 작성해야 한다. 또한 이 프로그래머는 문서화가 거의 없는 버그가 많은 언어 구현을 피하고, 코드를 리팩터링하며, 여러 코드 브랜치를 감독하고, 다양한 화면 크기에 맞춰 코드를 다시 작성하고, 특별한 운영자 가이드를 구현해야 할 수도 있다. 또한 게임의 원본 릴리스에서 발견되지 않은 버그를 수정해야 할 수도 있다.

 기술 프로그래머 

기술 프로그래머는 R&D만을 전담하는 부서가 있는 대규모 개발 스튜디오에서 더 많이 볼 수 있다. 프로그래밍 팀의 다른 구성원과 달리 기술 프로그래머는 대개 특정 프로젝트나 특정 유형의 개발에 장기간 얽매이지 않으며, 일반적으로 게임 프로듀서보다는 CTO나 부서장에게 직접 보고한다. 직함에서 알 수 있듯이 이 직책은 기술적인 관점에서 매우 까다롭고 대상 플랫폼 하드웨어에 대한 깊은 지식이 필요하다. 작업은 연구 논문에 설명된 알고리즘의 실제 구현, 매우 낮은 수준의 어셈블리 최적화, 프로젝트 후반 단계에서 메모리 요구 사항 및 캐싱 문제와 관련된 도전적인 이슈를 해결하는 능력 등 광범위한 주제를 다룬다. 이 직책과 다른 직책, 특히 그래픽 프로그래머 사이에는 상당한 중첩이 존재한다.

 제너럴리스트 

소규모 팀에서는 한 명 이상의 프로그래머가 '제너럴리스트'로 불리며 필요에 따라 다양한 역할을 수행한다. 제너럴리스트는 종종 버그를 추적하고 이를 수정하는 데 어떤 하위 시스템 전문 지식이 필요한지 결정하는 작업에 참여한다.

 리드 게임 프로그래머 

리드 프로그래머는 궁극적으로 게임의 모든 프로그래밍을 책임진다. 게임의 다양한 서브 모듈이 적절하게 구현되고 있는지 확인하고 프로그래밍 관점에서 개발 상황을 추적하는 것이 이들의 업무이다. 이 역할을 맡은 사람은 대개 몇 년간의 경험을 쌓은 후 게임 프로그래밍의 다른 분야에서 이 역할로 전환한다. 직함에도 불구하고 이 사람은 회의에 참석하고 고객이나 게임의 다른 리드들과 소통해야 하기 때문에 프로젝트의 다른 프로그래머들보다 코드를 작성할 시간이 대개 적다. 그러나 리드 프로그래머는 여전히 최소한 어느 정도는 프로그래밍을 할 것으로 기대되며 게임의 대부분의 기술 분야에 정통할 것으로 기대된다. 기술 이사와 리드 프로그래머의 역할에는 공통된 부분이 많아 한 사람이 두 업무를 모두 수행하는 경우도 많다.

 플랫폼 

게임 프로그래머는 Wii U나 윈도우와 같은 하나의 플랫폼 또는 다른 플랫폼에 전문화될 수 있다. 따라서 게임 프로그래밍 분야 중 하나를 전문으로 하는 것 외에도 특정 플랫폼에서의 개발을 전문으로 할 수도 있다. 따라서 한 게임 프로그래머의 직함은 "플레이스테이션 3 3D 그래픽 프로그래머"가 될 수 있다. AI와 같은 일부 분야는 다양한 플랫폼으로 이전 가능하며 한 시스템 또는 다른 시스템에 맞출 필요가 없다. 또한 3D 그래픽 프로그래밍 개념, 사운드 엔지니어링 및 사용자 인터페이스 디자인과 같은 일반적인 게임 개발 원칙은 플랫폼 간에 이전 가능하다.

 교육 

특히 정식 교육 없이 취미로 시작하여 재미로 스스로 많은 프로그래밍을 하다가 결국 자신의 적성과 자생적인 경험 덕분에 성공한 게임 프로그래머들이 많다. 그러나 게임 프로그래머를 위한 대부분의 구인 광고는 학사 학위(수학, 물리학, 컴퓨터 과학 "또는 이에 상응하는 경험")를 명시하고 있다.

점점 더 많은 대학에서 게임 프로그래밍 과정과 학위를 제공하기 시작하고 있다. 이러한 학위는 컴퓨터 과학 및 소프트웨어 공학 학위와 상당 부분 겹친다.

 급여 

게임 프로그래머의 급여는 회사와 국가마다 다르다. 그러나 일반적으로 게임 프로그래밍에 대한 보수는 비즈니스 부문의 유사한 직업과 거의 비슷하다. 이는 게임 프로그래밍이 가장 어려운 유형 중 하나이며 일반적으로 주류 프로그래밍보다 더 긴 시간을 필요로 한다는 사실에도 불구하고 그러하다.

미국에서의 2010년 조사 결과에 따르면 게임 프로그래머의 평균 연봉은 $95,300이다. 경력이 3년 미만인 가장 경험이 적은 프로그래머는 평균 $72,000 이상의 연봉을 받는다. 경력이 6년 이상인 가장 경험이 많은 프로그래머는 평균 $124,000 이상의 연봉을 받는다.Top Gaming Studios, Schools & Salaries , Big Fish Games, July 2013

일반적으로 리드 프로그래머가 가장 많은 보상을 받지만, 일부 3D 그래픽 프로그래머가 그들의 급여에 도전하거나 능가할 수도 있다. 위의 동일한 설문 조사에 따르면 리드 프로그래머는 연평균 $127,900를 번다.

 고용 안정성 
출처:

비디오 게임의 판매량이 영화와 같은 다른 형태의 엔터테인먼트와 경쟁하고 있음에도 불구하고, 비디오 게임 산업은 매우 불안정하다. 게임 프로그래머는 고용주가 재정적 어려움을 겪을 때 이러한 불안정성으로부터 격리되지 않는다.

가장 흔한 유형의 비디오 게임 개발자인 제3자 개발사는 비디오 게임 배급사로부터의 꾸준한 자금 유입에 의존한다. 마일스톤이나 마감 기한을 맞추지 못하면(또는 게임이 취소되는 등 여러 다른 이유로), 자금이 부족해질 수 있고 개발사는 직원을 감축하거나 파산을 선언하고 폐업해야 할 수도 있다. 대형 배급사에서 일하는 게임 프로그래머는 이러한 상황에서 어느 정도 안전하지만, 대형 게임 배급사조차도 폐업할 수 있다(Hasbro Interactive가 Infogrames에 매각되어 여러 프로젝트가 취소되었을 때나, 3DO가 2003년에 파산하여 모든 운영을 중단했을 때처럼). 일부 게임 프로그래머의 이력서는 운이 다한 스튜디오에서 다른 스튜디오로 옮겨 다녀야 했기 때문에 1년도 채 되지 않는 짧은 근무 기간들로 구성되기도 한다. 이것이 일부 프로그래머들이 컨설팅을 선호하고 개별 스튜디오의 운명으로부터 어느 정도 보호받으려 하는 이유이다.

 언어 및 도구 

대부분의 상용 컴퓨터 및 비디오 게임은 주로 C++, C 및 일부 어셈블리어로 작성된다. 많은 게임, 특히 복잡하고 상호작용적인 게임플레이 메커니즘을 가진 게임들은 하드웨어의 한계까지 몰아붙인다. 따라서 이러한 게임이 수용 가능한 프레임 레이트로 실행되려면 고도로 최적화된 코드가 필요하다. 이 때문에 시각적 렌더링 및 물리 계산과 같이 성능이 중요한 구성 요소에는 일반적으로 컴파일된 코드가 사용된다. 거의 모든 PC 게임은 하드웨어 장치와 인터페이스하기 위해 DirectX, OpenGL API 또는 일부 래퍼 라이브러리를 사용한다.

루비, Lua 및 파이썬과 같은 다양한 스크립트 언어도 게임플레이 및 특히 AI와 같은 콘텐츠 생성에 사용된다. 스크립트는 일반적으로 로드 타임(게임이나 레벨이 메인 메모리에 로드될 때)에 구문 분석된 다음 런타임에 실행된다(로직 분기 또는 기타 메커니즘을 통해). 이들은 일반적으로 훨씬 느린 실행을 초래하는 인터프리터에 의해 실행되지 않는다. 스크립트는 선별적으로 사용되는 경향이 있으며, 종종 AI 및 상위 수준의 게임 로직에 사용된다. 일부 게임은 스크립트에 대한 의존도가 높게 설계되었으며 일부 스크립트는 게임 실행 전에 이진 형식으로 컴파일된다. 개발의 최적화 단계에서는 일부 스크립트 기능이 컴파일된 언어로 다시 작성되기도 한다.

자바는 크로스 플랫폼이고 대개 사용자의 설치가 필요하지 않으며 다운로드한 실행 프로그램에 비해 컴퓨터 보안 위험이 적기 때문에 많은 웹 브라우저 기반 게임에 사용된다. 자바는 또한 휴대 전화 기반 게임에 인기 있는 언어이다. 액션스크립트 언어를 사용하는 어도비 플래시와 자바스크립트는 브라우저 기반 게임의 인기 있는 개발 도구이다.

게임의 규모와 복잡성이 커짐에 따라 업계 내에서 미들웨어가 점점 더 인기를 얻고 있다. 미들웨어는 골격 애니메이션과 같이 DirectX 및 OpenGL과 같은 표준 하위 수준 API보다 더 크고 상위 수준의 기능과 더 큰 기능 세트를 제공한다. 보다 복잡한 기술을 제공하는 것 외에도 일부 미들웨어는 플랫폼 독립적이 되도록 합리적인 시도를 하여, 예를 들어 마이크로소프트 윈도우에서 PS4로의 일반적인 변환을 훨씬 쉽게 만든다. 본질적으로 미들웨어는 개발 주기에서 중복되는 부분을 가능한 한 많이 제거하여(예를 들어 스튜디오가 제작하는 각 게임마다 새로운 애니메이션 시스템을 작성하는 것), 프로그래머가 새로운 콘텐츠에 집중할 수 있도록 하는 것을 목표로 한다.

다른 도구들도 게임 개발자들에게 필수적이다. 2D 및 3D 패키지(예를 들어 블렌더, 김프, 포토샵, 마야 또는 3D 스튜디오 맥스)는 프로그래머가 아티스트나 다른 제작 인력이 생성한 에셋을 보고 수정할 수 있게 해준다. 소스 제어 시스템은 소스 코드를 안전하게 유지하고 병합을 최적화한다. 디버거가 포함된 IDE(비주얼 스튜디오 등)는 코드 작성과 버그 추적을 덜 고통스러운 경험으로 만들어준다.

 같이 보기 
 비디오 게임 개발자

 각주 

 외부 링크 
 Game industry veteran Tom Sloper's advice on game programming