비디오 게임 프로그래밍
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
비디오 게임 프로그래밍은 게임 디자인을 바탕으로 게임을 제작하는 과정을 의미한다. 게임 개발은 프로토타이핑, 게임 디자인, 프로덕션, 테스팅, 완성, 유지보수 단계를 거치며, 1년에서 3년 정도의 기간이 소요된다. 게임 프로그래머는 소스 코드 작성, 게임 개발 도구 제작, 버그 수정 등을 담당하며, 게임의 종류에 따라 다양한 분야의 프로그래머가 존재한다. 게임 개발에는 다양한 프로그래밍 언어, API, 라이브러리, 게임 엔진 등이 사용되며, 개인 개발자들은 안드로이드, iOS, 윈도우, 맥, 리눅스 등에서 게임을 개발하기도 한다.
더 읽어볼만한 페이지
비디오 게임 프로그래밍 | |
---|---|
개요 | |
분야 | 소프트웨어 개발, 비디오 게임 개발 |
유형 | 소프트웨어 공학 |
관련 주제 | 컴퓨터 과학 소프트웨어 디자인 수학 물리학 |
특징 | |
설명 | 비디오 게임 프로그래밍은 비디오 게임 개발의 소프트웨어 개발 프로세스이다. |
기술 | |
프로그래밍 언어 | C++ C# Java 어셈블리어 Lua Python 유니티스크립트 비주얼 베이직 Delphi JavaScript |
게임 엔진 | Unity Unreal Engine Godot CryEngine GameMaker: Studio |
API | OpenGL DirectX Vulkan |
개념 | 인공지능 컴퓨터 그래픽스 컴퓨터 네트워크 물리 엔진 사운드 프로그래밍 게임플레이 프로그래밍 사용자 인터페이스 디자인 메모리 관리 병렬 처리 쉐이더 프로그래밍 최적화 디버깅 |
게임 프로그래밍 | |
필요 기술 | 언어:C++、C#、Java 등 기술:DirectX、OpenGL、Unity、Unreal Engine 등 |
같이 보기 | |
관련 항목 | 게임 개발 게임 프로그래머 게임 엔진 미들웨어 데모신 |
2. 개발 과정
전문적인 게임 개발은 다양한 아이디어에서 출발하는 게임 디자인 단계로부터 시작된다.[1] 때로는 명확한 디자인 없이 실험을 통해 개발이 시작되기도 한다. 게임 디자이너 윌 라이트는 프로그래머들에게 여러 아이디어를 실험하게 하여 심즈 개발을 시작한 것이 그 예이다.[1]
프로그래머는 게임 디자인 문서를 따르지만, 게임 개발 과정에서 프로그래밍 제약이나 새로운 기능이 발견되면 디자인 문서가 변경되기도 한다.[1] 게임 디자이너는 프로듀서, 아트, 프로그래밍 리드 등에게 의견을 구하며, 카피라이터나 다른 프로그래머, 아티스트 등도 디자인에 기여할 수 있다.[1]
2. 1. 프로토타이핑
프로그래머는 종종 게임 플레이 아이디어와 기능의 프로토타입을 제작하여 아이디어를 빠르게 테스트하고 검증해야 한다. 상당한 양의 프로토타입 제작은 디자인 문서가 완성되기 전 프리 프로덕션 단계에서 이루어질 수 있으며, 디자인이 어떤 기능을 명시할지 결정하는 데 도움이 될 수 있다.[1]프로토타입은 사전 디자인에 시간을 거의 들이지 않고 빠르게 개발되며, 주로 개념 증명 역할 또는 아이디어를 테스트하는 데 사용된다. 완벽하게 작동할 것으로 기대되지는 않지만, 새롭고 때로는 기발한 아이디어를 시도하기 위해 개발된다.[1]
2. 2. 게임 디자인
전문적인 게임 개발은 보통 여러 가지 기원을 가진 게임 디자인으로 시작한다. 때로는 게임 개발 과정이 명확한 디자인 없이 일련의 실험으로 시작되기도 한다. 예를 들어, 게임 디자이너 윌 라이트는 프로그래머들에게 여러 아이디어를 실험하게 함으로써 ''심즈''의 개발을 시작했다.[1]프로그래머의 주된 역할은 게임 디자인을 개발하는 것이 아니지만, 종종 게임 아티스트와 마찬가지로 디자인에 기여한다. 게임 디자이너는 게임 디자인에 대한 아이디어와 전략을 위해 프로듀서, 아트, 프로그래밍 리드로부터 의견을 구한다. 종종 카피라이터와 다른 프로그래머, 아티스트와 같은 리더가 아닌 사람들도 기여한다.[1]
프로그래머는 게임 디자인 문서를 면밀히 따르며, 게임 개발이 진행됨에 따라 프로그래밍 제한 사항과 새로운 기능이 발견되고 활용됨에 따라 디자인 문서가 변경된다.[1]
2. 3. 프로덕션
제작 과정에서 프로그래머는 게임의 디자인 문서에 설명된 게임을 만들기 위해 방대한 양의 소스 코드를 생성할 수 있다. 그 과정에서 디자인 문서는 제약 사항을 충족시키기 위해 수정되거나 새로운 기능을 활용하기 위해 확장된다. 디자인 문서는 매우 "살아있는 문서"이며, 그 생명의 대부분은 프로그래머의 일정, 재능 및 창의력에 의해 결정된다.[1]많은 프로그래머가 게임 내용에 대해 의견을 제시하지만, 대부분의 게임 프로듀서는 게임 프로그래밍 개발 현황에 대해 수석 프로그래머의 의견을 구한다. 수석 프로그래머는 게임 프로그래밍의 모든 측면의 현황을 파악하고 제약 사항을 지적해야 할 책임이 있다. 수석 프로그래머는 또한 프로그래머들이 구현하고 싶은 가능한 기능에 대한 제안을 전달할 수도 있다.[1]
오늘날의 시각적으로 풍부한 콘텐츠를 통해 프로그래머는 종종 아트 스태프와 상호 작용해야 한다. 물론 이는 프로그래머의 역할에 따라 크게 달라진다. 예를 들어, 3D 그래픽스 프로그래머는 게임의 3D 모델러와 함께 전략 및 설계 고려 사항을 논의해야 할 수 있지만, AI 프로그래머는 아트 스태프와 거의 또는 전혀 상호 작용할 필요가 없을 수 있다. 아티스트와 레벨 디자이너의 작업을 돕기 위해 프로그래머는 도구 및 유틸리티를 자발적으로 개발하거나 요청받을 수 있다.[1][2] 이러한 도구 중 다수는 특정 목적으로 사용될 수 있으며, 시간 제약(이러한 도구 개발 시간은 종종 게임 일정에 포함되지 않음) 및 어차피 사내에서만 사용되기 때문에 버그가 있을 수 있다. 많은 게임 도구는 개발 속도를 높이기 위해 RAD 언어로 개발되며 게임 완성 후 폐기될 수 있다.[1]
2. 4. 테스팅
전문 게임 테스터가 수행하는 공식적인 품질 보증 테스트 과정은 게임 개발이 상당히 진행된 후에 시작된다. 예산이 많은 게임은 최초로 플레이 가능한 알파 테스트 단계에서 테스트를 시작할 수 있으며, 예산이 적은 캐주얼 게임은 릴리스 후보가 준비될 때까지 테스트에 들어가지 않을 수 있다. 프로그래머는 QA팀에서 발견한 오류와 버그를 수정한다.[3]2. 5. 완성 단계
프로그래머는 테스트 마지막 단계에서 발생할 수 있는 사소한 버그에서 치명적인 버그까지 수정하는 등 게임을 다듬는다.[1]게임 개발자마다 베타 테스트 기간에 대한 정의는 다르지만, 보통 베타 테스트는 게임의 모든 기능을 포함하면서도 몇 가지 버그나 불완전한 콘텐츠가 남아있는 상태를 의미한다.[1] 예를 들어, 게임 서버의 스트레스 허용 오차를 측정하기 위해 소수의 게임에 공개 베타 기간이 주어지기도 한다.[1]
게임이 완료된 것으로 간주되면 "골드" 상태가 되었다고 하며, 퍼블리셔에게 배송된다.[1] 상황에 따라 퍼블리셔는 자체 품질 보증을 거치거나, 골드 마스터에서 바로 게임 제작을 시작할 수 있다.[1]
2. 6. 유지보수
게임이 출시되면 비디오 게임의 유지보수 단계가 시작된다. 프로그래머는 가능한 많은 버그 보고서를 받기 위해 일정 기간 기다린다. 개발자가 충분한 피드백을 얻었다고 생각하면, 프로그래머는 패치 작업에 착수한다. 패치는 개발하는 데 몇 주 또는 몇 달이 걸릴 수 있지만, 게임의 대부분의 버그와 문제를 해결하기 위한 것이다. 때때로 패치는 추가 기능이나 콘텐츠를 포함하거나 게임 플레이를 변경하기도 한다.2. 7. 개발 기간
대부분의 현대 게임은 완성하는 데 1년에서 3년이 걸린다.[1] 개발 기간은 여러 요인에 따라 다르지만, 프로그래밍은 게임 디자인의 초기 단계를 제외한 모든 개발 단계에서 필요하다.[1]3. 도구
프로그래머는 게임 프로듀서와 협력하여 게임의 디자인을 구현하고, 도구를 활용하여 개발 효율성을 높인다.
프로그래머는 종종 게임 플레이 아이디어와 기능의 프로토타입을 제작한다. 상당한 양의 프로토타입 제작은 디자인 문서가 완성되기 전 프리 프로덕션 단계에서 이루어질 수 있으며, 디자인이 어떤 기능을 명시할지 결정하는 데 도움이 될 수 있다.
프로토타입은 사전 디자인에 시간을 거의 들이지 않고 빠르게 개발되며, 주로 개념 증명의 역할 또는 아이디어를 테스트하는 데 사용된다. 제작 과정에서 프로그래머는 게임의 디자인 문서에 설명된 게임을 만들기 위해 방대한 양의 소스 코드를 생성하며, 그 과정에서 디자인 문서는 제약 사항을 충족시키기 위해 수정되거나 새로운 기능을 활용하기 위해 확장된다.
많은 프로그래머가 게임 내용에 대해 의견을 제시하지만, 대부분의 게임 프로듀서는 게임 프로그래밍 개발 현황에 대해 수석 프로그래머의 의견을 구한다.
오늘날 시각적으로 풍부한 콘텐츠를 통해 프로그래머는 종종 아트 스태프와 상호 작용해야 한다. 예를 들어, 3D 그래픽스 프로그래머는 게임의 3D 모델러와 함께 전략 및 설계 고려 사항을 논의해야 할 수 있다. 아티스트와 레벨 디자이너의 작업을 돕기 위해 프로그래머는 도구 및 유틸리티를 개발할 수 있다.[1][2] 이러한 도구는 특정 목적으로 사용될 수 있으며, 시간 제약 및 사내에서만 사용되기 때문에 버그가 있을 수 있다. 많은 게임 도구는 개발 속도를 높이기 위해 RAD 언어로 개발되며 게임 완성 후 폐기될 수 있다.
IDE 외에도 많은 게임 개발 회사는 자체적으로 사용할 수 있도록 개발된 맞춤형 도구를 만든다. 이러한 도구에는 프로토타입 및 에셋 변환 도구 (예: 아트워크를 게임의 사용자 지정 형식으로 변경하는 프로그램)가 포함된다. 일부 맞춤형 도구는 레벨 에디터와 같이 게임과 함께 제공될 수도 있다.
게임 개발 회사는 프로그래머가 최고의 도구로 잘 갖춰지도록 하기 위해 많은 노력을 기울인다.
3. 1. 프로그래밍 언어
게임 개발에는 다양한 프로그래밍 언어가 사용되며, 각 언어는 고유한 특징과 장점을 가지고 있다. 초기에는 어셈블리어나 C 등이 주로 사용되었으나, 현대에는 C++, C#, 자바 등이 널리 사용된다.언어 | 특징 |
---|---|
어셈블리 | 잠재적으로 최소한의 CPU 오버헤드 |
C | 널리 알려져 있고, 이식성이 뛰어나며, 수많은 API를 가지고 있으며, 기계어로 컴파일된다. |
C++ | 객체 지향, 널리 알려져 있고, 수많은 API를 가지고 있으며, 기계어로 컴파일된다. |
자바 | 객체 지향, 가비지 컬렉션, 널리 이식 가능(가상 머신을 통해) |
C#, Visual Basic .NET 등 | 객체 지향, 가비지 컬렉션, 마이크로소프트 제품과 인터페이스 |
Objective-C, 스위프트 | 객체 지향, 애플 제품과 인터페이스 |
Lua, 파이썬, 자바스크립트, Tcl 등 | 친숙한 구문, 위에 언급된 언어에 쉽게 포함될 수 있으며, 종종 스크립팅에 사용된다. |
Lisp, 파스칼, 펄, 스몰토크 등 | 주변적인 게임 언어이지만, 인기 있는 라이브러리에 대한 바인딩이 일반적이다. |
스크립트 언어 (\[\[Lua (프로그래밍 언어)|Lua]], 파이썬, 자바스크립트 등)는 게임 로직 구현 및 확장 기능 개발에 활용된다. 특히, Lua는 ANSI C로 작성된 API를 가지고 있고 다른 애플리케이션에 포함되도록 설계되었기 때문에 많이 사용된다.[9][16]
게임의 초기 설계가 합의되면 개발 언어를 결정해야 한다. 이 선택은 프로그래밍 인력의 언어 숙련도, 대상 플랫폼, 실행 속도 요구 사항, 사용 중인 게임 엔진, API 또는 라이브러리의 언어 등 많은 요소에 따라 달라진다.
개인용 컴퓨터의 경우, SDL 및 알레그로와 같은 인기 있는 라이브러리에 대한 언어 바인딩이 널리 퍼져 있다.[4][5]
콘솔의 경우, 과거에는 어셈블리로 작성되었으나,[13] 기술이 발전함에 따라 닌텐도, 마이크로소프트, 소니는 각각 Wii U, 닌텐도 스위치, Xbox One, 플레이스테이션 4 콘솔에 대한 다양한 SDK를 제공하고 있다.
많은 개발자가 id 소프트웨어의 QuakeC 및 에픽 게임즈의 언리얼 스크립트와 같이 게임을 위해 완전히 사용자 정의된 언어를 만들기도 했다.
한국에서는 특히 C++가 게임 개발에 널리 사용되며, 유니티[21][22]나 언리얼 엔진[23] 등의 게임 엔진을 이용한 개발이 주류가 되면서 C#의 사용도 늘고 있다. 그 외에도, 윈도우용 GUI 프로그램을 간편하게 만들 수 있는 HSP 등이 이용되기도 한다.
3. 1. 1. 어셈블리어
어셈블리어는 CPU 오버헤드를 최소화할 수 있는 언어이다.3. 1. 2. C
C는 널리 알려져 있고, 이식성이 뛰어나며, 수많은 API를 가지고 있고, 기계어로 컴파일된다는 특징이 있다.[8] C언어는 습득이 용이하고 정밀한 메모리 관리가 가능하다는 장점도 있어 게임 개발에 사용되기도 한다.3. 1. 3. C++
객체 지향적이며, 널리 알려져 있고, 수많은 API를 가지고 있으며, 기계어로 컴파일된다.[8][9] C++는 다양한 OS에서 사용할 수 있기 때문에, 게임 개발에 널리 보급되고 있다.3. 1. 4. 자바
자바는 객체 지향 언어이며, 가비지 컬렉션을 지원하고, 가상 머신을 통해 널리 이식 가능하다.[10]언어 | 특징 |
---|---|
자바 | 객체 지향, 가비지 컬렉션, 널리 이식 가능(가상 머신을 통해) |
3. 1. 5. C#, 비주얼 베이직 닷넷 등
C#, Visual Basic .NET 등은 객체 지향적이며, 가비지 컬렉션을 지원하고, 마이크로소프트 제품과 인터페이스된다.[4]3. 1. 6. 오브젝티브-C, 스위프트
오브젝티브-C와 스위프트는 객체 지향 언어이며, 애플 제품과 인터페이스된다.[4][5][6][7][8][9][10][11][12][13][14][15][16]3. 1. 7. 루아, 파이썬, 자바스크립트, Tcl 등
루아, 파이썬, 자바스크립트, Tcl 등은 친숙한 구문을 가지고 있으며, 위에 언급된 언어에 쉽게 포함될 수 있고, 종종 스크립팅에 사용된다.[9][16]3. 1. 8. 리스프, 파스칼, 펄, 스몰토크 등
리스프, 파스칼, 펄, 스몰토크 등은 주류 게임 언어는 아니지만, 인기 있는 라이브러리에 대한 바인딩이 일반적이다.[4][5]3. 2. API 및 라이브러리
오늘날 게임 프로그래밍의 주요 작업을 처리하는 수많은 라이브러리가 존재한다. 일부 라이브러리는 사운드 처리, 입력 및 그래픽 렌더링을 처리할 수 있으며, 경로 찾기와 같은 일부 AI 작업도 처리할 수 있다. 또한 게임 프로그래밍의 대부분의 작업을 처리하고 게임 로직 코딩만 필요한 게임 엔진도 있다.[1][2]어떤 API와 라이브러리를 선택할지는 대상 플랫폼에 따라 크게 달라진다. 예를 들어, 플레이스테이션 2 개발용 라이브러리는 마이크로소프트 윈도우에서 사용할 수 없을 수 있으며, 그 반대의 경우도 마찬가지이다. 그러나 Wii, 플레이스테이션 3, Xbox 360, PSP 및 마이크로소프트 윈도우와 같은 여러 플랫폼에서 게임을 실행할 수 있도록 프로그래머가 단일 언어로 게임을 프로그래밍할 수 있게 해주는 게임 프레임워크도 있다.
프로그래밍 언어 중에는 언어 자체만으로는 입출력 처리를 지원하지 않는 것도 있다. 예를 들어, C 언어는 표준 라이브러리나 유닉스의 시스템 콜이 없이는 화면에 문자를 출력하는 것조차 할 수 없다. 즉, 기술한 로직을 출력 장치에 전달하거나, 반대로 입력 장치로부터 데이터를 받는 메커니즘이 필요하다. 그것이 API이다. 게임에 특화된 API로 유명한 것으로 마이크로소프트의 DirectX가 있다. 게임에 특화된 것은 아니지만, 3D 그래픽스를 지원하는 OpenGL도 자주 이용된다. 그 외, OS나 콘솔 게임기 고유의 사양에 따라 게임을 구성하게 된다. 최근에는 Unity[21][22]나 언리얼 엔진[23] 등의 게임 엔진을 이용한 개발이 주류가 되고 있다.
3. 2. 1. 그래픽 API
3D 그래픽 처리를 위한 API로는 DirectX, OpenGL, 벌칸, 메탈 등이 있다. 운영체제별로 지원하는 그래픽 API가 다르다.OS | Vulkan | Direct X | GNMX | Metal |
---|---|---|---|---|
Windows 10 | 예 | 예 | 아니요 | 아니요 |
Mac | MoltenVK | 아니요 | 아니요 | 예 |
Linux | 예 | 아니요 | 아니요 | 아니요 |
Android | 예 | 예 | 예 | 아니요 |
iOS | MoltenVK | 예 | 예 | 예 |
Tizen | 개발 중 | 아니요 | 아니요 | 아니요 |
Sailfish | 개발 중 | 아니요 | 아니요 | 아니요 |
Xbox One | 아니요 | 예 | 아니요 | 아니요 |
Orbis OS (PS4) | 아니요 | 아니요 | 예 | 아니요 |
닌텐도 스위치 | 예 | 아니요 | 아니요 | 아니요 |
마이크로소프트 윈도우에서 가장 인기 있는 두 가지 3D 그래픽 API는 Direct3D와 OpenGL이다. 각 API의 장점과 단점에 대해 Windows 게임 프로그래머들 사이에서 뜨거운 논쟁이 벌어지고 있다.[18]
DirectX는 게임 API 모음이며, Direct3D는 DirectX의 3D API이다. Direct3D는 마이크로소프트에서 무료로 사용할 수 있으며, 나머지 DirectX API도 마찬가지이다. Microsoft는 게임 프로그래머를 위해 DirectX를 개발했으며 API에 기능을 계속 추가하고 있다. DirectX 사양은 개방형 중재 위원회에서 관리하지 않으며 Microsoft는 기능을 자유롭게 추가, 제거 또는 변경할 수 있다. Direct3D는 이식성이 없다. Microsoft Windows용으로 특별히 설계되었으며 다른 플랫폼에서는 사용할 수 없다(Direct3D 형태는 Microsoft의 Xbox, Windows Phone 7.5 스마트폰 및 Pocket PC 운영 체제를 실행하는 모바일 장치에서 사용된다).
OpenGL은 이식 가능한 API 사양이다. OpenGL로 작성된 코드는 호환되는 구현이 있는 플랫폼 간에 쉽게 이식된다. 예를 들어, OpenGL을 사용하는 ''퀘이크 II''는 Windows에서 Linux로 게임 팬이 이식했다. OpenGL은 OpenGL 아키텍처 검토 위원회(ARB)에서 관리하는 표준이다. ARB는 최신 3D 하드웨어의 기능을 지원하기 위해 표준을 업데이트하기 위해 정기적으로 회의를 개최한다. 또한 닌텐도 게임큐브, 닌텐도 DS, PSP와 같은 일부 비디오 게임 콘솔 제조업체에서 제공하는 개발 도구는 OpenGL과 유사한 그래픽 API를 사용한다. OpenGL은 영구적인 개발 팀이 없고 표준이 게시된 후에 구현 개발을 시작해야 하므로 기능 업데이트가 종종 늦어진다. 이를 사용하기로 선택한 프로그래머는 일부 하드웨어의 최신 3D 기능에 액세스할 수 있지만 표준화되지 않은 확장을 통해서만 가능하다. OpenGL 아키텍처 검토 위원회(ARB)가 이러한 문제를 해결하기 위해 사양 제어를 Khronos Group에 넘겨주면서 상황이 바뀔 수 있다.[18]
3. 2. 2. 기타 API
마이크로소프트 윈도우에서 개발할 때, 입력, 음향 효과, 음악, 네트워킹, 비디오 재생에 다양한 DirectX API를 사용할 수 있다.[1] 이러한 작업을 수행하기 위해 여러 상용 라이브러리를 사용할 수 있지만, DirectX는 무료이므로 가장 널리 사용된다.4. 게임 구조
모든 게임의 중심 구성 요소는 프로그래밍 관점에서 보면 ''게임 루프''이다. 게임 루프는 사용자의 입력 유무에 관계없이 게임이 원활하게 실행되도록 한다.[19]
대부분의 기존 소프트웨어 프로그램은 사용자의 입력에 응답하며, 입력이 없으면 아무것도 하지 않는다. 예를 들어, 워드 프로세서는 사용자가 텍스트를 입력하면 단어와 텍스트를 서식화한다. 사용자가 아무것도 입력하지 않으면 워드 프로세서는 아무것도 하지 않는다. 일부 기능은 완료하는 데 오랜 시간이 걸릴 수 있지만, 모두 사용자가 프로그램에 무언가를 하도록 지시함으로써 시작된다.[19]
반면에 게임은 사용자의 입력 ''유무에 관계없이'' 계속 작동해야 한다. 게임 루프가 이를 가능하게 한다. 매우 단순화된 게임 루프는 의사 코드로 다음과 같이 나타낼 수 있다.[19]
'''while''' (사용자가 종료하지 않음)
사용자 입력 확인
AI 실행
적 이동
충돌 해결
그래픽 그리기
소리 재생
'''end while'''
루프는 게임 개발이 진행됨에 따라 개선되고 수정될 수 있지만, 대부분의 게임은 이 기본적인 아이디어를 기반으로 한다.[19]
게임 루프는 개발되는 플랫폼에 따라 다르다. 예를 들어, 도스 및 많은 콘솔용으로 작성된 게임은 제한 없이 사용 가능한 처리 리소스를 독점하고 활용할 수 있다. 그러나 마이크로소프트 윈도우와 같은 최신 PC 운영 체제용 게임은 프로세스 스케줄러의 제약 내에서 작동해야 한다. 일부 최신 게임은 여러 개의 스레드를 실행하여, 예를 들어 캐릭터 AI 계산을 게임 내 부드러운 모션 생성으로부터 분리할 수 있다. 이는 (약간의) 오버헤드 증가라는 단점이 있지만, 하이퍼스레딩 또는 멀티코어 프로세서 및 멀티프로세서 플랫폼에서 게임이 더 부드럽고 효율적으로 실행될 수 있다. 컴퓨터 업계가 더 많은 스레드를 실행할 수 있는 더 많은 코어를 가진 CPU에 집중함에 따라, 이는 점점 더 중요해지고 있다. Xbox 360 및 플레이스테이션 3와 같은 콘솔은 이미 프로세서당 코어가 여러 개 있으며, 코어당 여러 개의 스레드를 실행한다.[19]
5. 게임 프로그래머의 종류 (일본 문서 기반)
게임 프로그래머는 비디오 게임 개발에 참여하는 사람을 가리키지만, 게임 기술이 발전하면서 전문 분야가 다양해졌다. 시스템 프로그래머, 클라이언트 프로그래머, UI 프로그래머, 이펙트 프로그래머, AI 프로그래머, 서버 프로그래머, 툴 개발 프로그래머 등 여러 종류의 게임 프로그래머가 있다. 엔진이나 라이브러리를 전문으로 하는 프로그래머, 게임의 기믹(Gimmick) 전용 프로그래머, 콘텐츠에 특화된 게임 프로그래머도 존재한다.
6. 취미 개발자
일반 소비자용 운영 체제인 안드로이드, iOS, 윈도우, 맥, 리눅스 등은 취미 개발자가 프로그래밍할 수 있는 플랫폼이다. 게임 콘솔 개발에는 수천 달러에 달하는 특수한 개발 시스템이 필요하고, 이러한 시스템은 콘솔 제조업체로부터 얻어야 하며 전문 게임 개발 스튜디오에만 판매되거나 임대되는 경우가 많기 때문이다. 하지만, 마이크로소프트는 마이크로소프트 윈도우와 Xbox 360에서 모두 실행되는 게임 개발 프레임워크인 XNA를 배포했었다. XNA는 단종되었지만, MonoGame 및 SharpDX와 같은 다른 프로젝트는 게임 코딩에 동일한 접근성을 제공하려 노력하고 있다. 최근에는 모바일 개발자들에게 안드로이드가 가장 인기 있는 취미 개발 플랫폼이다.[20] 일부 취미 개발자는 특히 휴대용 시스템이나 개조된 콘솔을 위해 홈브류 게임을 개발하기도 한다.
일부 소프트웨어 엔지니어링 학생들은 프로그래밍 언어나 운영 체제를 배우기 위한 연습으로 게임을 프로그래밍하기도 한다.
일부 취미 개발자는 어도비 애니메이트(Adobe Animate), 유니티(Unity), 안드로이드 스튜디오(Android Studio), pygame, 어드벤처 게임 스튜디오(Adventure Game Studio), 로블록스 스튜디오(Roblox Studio), 게임메이커 스튜디오(GameMaker Studio), 고도(Godot), 언리얼 엔진(Unreal Engine), 픽셀 게임 메이커 MV(Pixel Game Maker MV) 또는 컨스트럭트(Construct)와 같은 게임 개발에 도움이 되는 소프트웨어 패키지를 사용할 수 있다.
참조
[1]
간행물
A procedure for generation of three-dimensional half-toned computer graphics presentations
1970-09
[2]
서적
AI for Games
http://dx.doi.org/10[...]
2019-03-18
[3]
웹사이트
Cogex: A logic prover for question answering
https://www.datasaku[...]
2016-12-12
[4]
웹사이트
SDL Language Bindings
https://www.libsdl.o[...]
2015-11-08
[5]
웹사이트
Allegro - Language bindings
http://liballeg.org/[...]
2015-11-08
[6]
웹사이트
Programming language benchmarks
http://dan.corlan.ne[...]
2015-11-08
[7]
웹사이트
Programming Languages Benchmarks
https://attractivech[...]
2015-11-08
[8]
웹사이트
Game Programming in C and C++
http://www.cprogramm[...]
2015-11-08
[9]
웹사이트
The Engine Survey: General results
http://www.satori.or[...]
2015-11-08
[10]
웹사이트
LWJGL - Projects
http://legacy.lwjgl.[...]
2015-11-08
[11]
웹사이트
Chapter V(b) from "Development&Deployment of MMOG"
http://ithare.com/ch[...]
2015-11-30
[12]
웹사이트
Game Programming in C and C++
https://www.datasaku[...]
2011
[13]
서적
Using 6502 Assembly Language
[14]
인터뷰
Game developers, start your Unity 3D engines
https://venturebeat.[...]
VentureBeat
2014-07-13
[15]
웹사이트
"[Phoronix] Why Sony Is Using LLVM/Clang On The PlayStation 4"
https://www.phoronix[...]
Phoronix.com
2014-11-17
[16]
웹사이트
Lua: Uses
http://www.lua.org/u[...]
2015-11-08
[17]
웹사이트
Why Are Most Indie Games 2D Instead of 3D?
http://rampantgames.[...]
Rampant Games
2017-01-01
[18]
웹사이트
Khronos Places OpenGL and OpenGL ES Conformance Tests into Open Source
http://www.khronos.o[...]
Khronos Group Press Release
[19]
서적
Programming Linux Games, Chapter 1
https://archive.org/[...]
Linux Journal Press
[20]
웹사이트
Report: 79% Of Mobile Developers Prefer To Build For Android
https://arc.applause[...]
2016-08-29
[21]
웹사이트
Unity のリアルタイム開発プラットフォーム | 2D/3D、VR/AR エンジン
https://unity.com/ja
Unity社
2023-12-28
[22]
웹사이트
ゲームの作り方 Unity入門の森 Unity初心者向けゲームプログラミングサイト
https://feynman.co.j[...]
Unity入門の森
2023-12-28
[23]
웹사이트
最も強力なリアルタイム 3D 制作プラットフォーム - Unreal Engine
https://www.unrealen[...]
Unreal Engine社
2023-12-28
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com