2010-06-08 4 views
16

Xbox 360, PS3 및 Windows PC에서 새 게임이 출시되는 경우가 종종 있습니다.게임 회사는 여러 플랫폼에 대한 프로그래밍을 어떻게 처리합니까?

도박 회사는 어떻게합니까? 그것은 다른 컴파일러를 사용하여 컴파일 된 일반적인 소스 코드입니까? 실제 다른 소스 코드가 필요합니까? 이 발표

예를 들어 뉴스 기사 : http://www.gameranx.com/updates/id/502/article/dungeon-siege-3-announced-to-be-developed-by-obsidian/

+0

하드웨어 특정 레이어 위에 공통 코드를 사용하기를 기대합니다. 따라서 XBox에서는 DirectX를 사용할 수 있기 때문에 해당 레이어의 라이브러리가있을 수 있지만 Linux의 OpenGL 레이어와 동일한 인터페이스를 사용하므로 스왑해야합니다 그래픽/오디오/IO 라이브러리를 하나의 플랫폼에서 다른 플랫폼으로 이동하십시오. –

+0

XNA는 제임스 블랙 (James Black)이 말한 것 중 합리적으로 좋은 예입니다. 적어도 이론적으로 Windows와 Xbox를 동시에 개발하려는 노력은 크게 줄었습니다. –

답변

14

일반적으로 멀티 플랫폼 "트리플 A"타이틀의 대부분은 언리얼, 소스 또는 기타 소형 엔진과 같은 엔진 위에 구현됩니다. 이러한 각 엔진은 각 플랫폼별로 맞춤 구현되고 최적화되며 DirectX/OpenGL과 같은 하위 API를 사용하여 콘솔을 사용합니다. 이 엔진들 각각은 하드웨어의 공식 드라이버 또는 API와 상호 작용하는 플랫폼 특정 물건 (예 : 모션 컨트롤)을위한 플러그인도 가지고 있습니다.

많은 엔진이 자체 스크립팅 언어 또는 여러 가지 기능을 지원하므로 한 번 작성됩니다.

예를 들어, 언리얼 엔진에서 살펴 : 가장 큰 엔진의 대부분, 언리얼 같은 http://www.unrealtechnology.com/technology.php

들은 개발자가 게임의 모든 종류를 작성할 수 있도록 유연하고 강력한입니다. 예를 들어 Unreal 엔진은 저격수뿐만 아니라 Mass Effect와 같은 슈팅 RPG에도 사용되었습니다.

게임을 만드는 데있어 인력의 대부분은 그래픽, 세트 디자이너, 오디오 디자인, 레벨 디자인 등에 전념하고 있으며 그 모든 것에 대한 사용자 정의 편집기가 있습니다. 세트 조각의 대부분은 대개 스크립팅 언어를 통해 프로그래밍됩니다. 도박 회사 사람들 중 일부만이 C와 같은 저급 언어로 코드를 작성합니다.

3

많은 장소가 다른 버전에 대한 책임을 별도의 팀이있을 것이다. 그래서 당신은 항상 작은 차이점을 보게됩니다. 그러나 휴대용 언어가 선택되면이 팀은 코드를 교환 할 수 있습니다.

회사에서 게임 엔진을 제작 한 경우 개발자는 엔진을 교차 플랫폼 사양을 처리하도록 남겨두고 개발할 수 있습니다.

저는 예술/미디어 부서가 모든 플랫폼에서 동일하다고 생각합니다.

2

종종 시간이 중요하지 않은 게임 메 커닉을 처리하는 가상 시스템과 시간이 중요하지만 플랫폼 별 작업을 위해 추상화 레이어로 수행됩니다.

특정 방법은 매우 독점적이며 비밀이며 게임 제작자의 가장 소중한 자산입니다.

1

콘솔 게임을 만드는 회사에서는 작동하지 않기 때문에 이것은 모두 추측입니다.하지만 소프트웨어 개발자로서의 경험으로 말하면 많은 시간이 걸리는 것은 외부 라이브러리가 작성된 소스 코드에 대해 사용된다는 것입니다 공통 언어 (예 : C++)로 구문이 플랫폼에서 라이브러리와 동일하기 때문에 많은 게임 코드 (게임 루프, 물리학 도구 등)를 사용할 수 있습니다.

그러나 플랫폼에 고유 한 상당한 수준의 코드가 작성 (테스트)되어야합니다. 예를 들어, 대부분의 그래픽 카드 관련 코드가 Xbox 360과 PS3에서 다르게 표시되어야합니다.

이렇게하면 핵심 기능에서 이식성을 크게 높일 수 있으며 UI 관련 항목 및 그래픽 관련 내용은 플랫폼에 따라 다릅니다 (UI에는 항상 해당하지 않음).

또한 대형 게임 회사는 프로젝트에 참여한 100 명의 개발자가 있으므로 일부 인디 개발자보다 훨씬 많은 리소스를 보유하고 있습니다.

절대 완벽하지 않습니다. 항상 일부 코드를 포팅해야합니다. Adobe AIR를 사용하지 않고 콘솔 용 게임 (실제 게임을 개발하는 데 Adobe AIR를 사용하는 사용자)이 아닌 경우

+0

큰 게임 프로젝트에 수백 명의 개발자가 있다는 것을 나는 심각하게 의심합니다. 개발자는 비용이 많이 들며 대규모 개발자 팀은 추가 비용이 들며 추가 관리 오버 헤드가 추가됩니다. 대부분의 상점에서는 개발자가 적고 기존 엔진을 재사용 한 다음 프로젝트 예산을 콘텐츠 (예술 자산, 레벨, 이야기 등)에 투자하는 것을 선호합니다. –

+1

많은 게임에 수백 명의 사람들이 참여하고 있지만 대부분의 사람들은 예술가입니다 . 나는 실제 소프트웨어 개발자가 얼마나 많은 새로운 개발이 게임에 들어가는가에 따라 10-30 범위에 있다고 생각한다. –

3

실제로 여러 플랫폼에서 실행할 수있는 프레임 워크가 있습니다. 예를 들어

:

  • XNA Framework 거의 같은 코드 기반으로 윈도우, 엑스 박스 및 윈도우 폰에서 실행할 수 있습니다. (약 90 %의 동일한 C# 코드가 모든 플랫폼에서 실행될 수 있습니다.)
  • Unity 3D은 PC, MAC, 브라우저, iPhone, Wii를 지원하며 곧 Android도 지원할 예정입니다.

다른 프레임 워크가 있습니다.

또한 인기있는 게임 엔진 (예 : Unreal 등)의 대부분은 여러 플랫폼에 포팅됩니다.

+0

Unity3D (http : // unity3d.com /)은 PC, MAC, 브라우저, iPhone, Wii, sson Android를 지원합니다. – bertelmonster2k

+0

@ bertelmonster2k - 감사합니다. 또한 좋은 예입니다. 나는 당신이 상관 없다면 그것을 나의 대답에 덧붙였다. :) – Venemo

+0

iOS 4.0을 고려할 때 unity3d가 곧 iPhone을 더 이상 지원하지 않을 것이라고 확신합니다. http://arstechnica.com/apple/news/2010/04/steve-jobs-weighs-on-iphone-os-dev-controversy.ars하지만 누가 압니다. 애플은 변덕 스럽다. – NotMe

5

엔진은 플랫폼 독립 레이어를 제공하여이를 처리합니다. 인스턴스 그래픽 라이브러리의 플랫폼에 따라 다릅니다. 스레딩, 시계 및 파일 시스템 등. 게임 엔진의 각 플랫폼에 대해 구현됩니다.

엔진을 호출하여 삼각형으로 구성된 3D 모델을 렌더링 할 수 있습니다. 엔진은 현재 사용중인 플랫폼에 대한 구현을 사용하는 플랫폼 독립성 계층을 호출하여이 모델을 렌더링합니다.

4

두 가지 방법으로 게임 회사가이 작업을 수행 할 수 있습니다 :

1) 작성/게임을 포팅 멀티 플랫폼 엔진 2)을 사용하여

플랫폼 별 행동에 대한 추상화 (윈도우를 만드는 기능을한다 멀티 플랫폼 엔진 API 호출, DirectX vs OpenGL 렌더링 등)을 사용하여 모든 작업을 한 번 수행 한 다음 두 시스템에 모두 사용할 수 있습니다. 일반적으로 Direct3D 호출과 같은 것에 대한 간단한 래퍼 메서드를 작성하는 문제입니다. 대부분의 최신 게임 엔진은 멀티 플랫폼을 지원하여 처음부터 구축되고 있습니다. 다른 업체들은 다중 플랫폼 지원을 추가하고 있습니다.

게임 엔진이 멀티 플랫폼이 아닌 경우 대상 플랫폼에서 실행되도록 변환해야합니다. 이것은 대개 두 부분으로 구성된 작업입니다. 먼저 하드웨어와의 모든 API 호출 및 인터페이스를 대상 플랫폼에 다시 적용해야합니다. 두 번째 부분은 성능을 위해 게임을 디버깅하고 최적화하는 작업입니다. 일반적으로 직접 포트는 새 대상 플랫폼에 적용되지 않는 플랫폼 별 최적화가 코드에 적용되므로 성능이 떨어집니다.

포팅 된 게임은 다양한 이유로 시각적 인 물결에도 불구하고 성능 문제가 발생할 수 있습니다. PS3의 오렌지 박스 또는 CoD : Wii의 현대 전쟁이 잘못된 포트의 두 가지 예를 확인하십시오. OB에게는 Valve가 게임을 EA로 포팅하는 작업을 아웃소싱했습니다. 두 번째 사례에서, Activision은 Wii를 최대한 활용할 수 있도록 설계된 새로운 엔진 위에 게임을 제작하는 대신 더 강력한 플랫폼으로 더 강력한 하드웨어를 위해 설계된 엔진에서 게임을 이식하는 것이 더 합리적이라고 판단했습니다.

1

게임 회사는 값이 비싼 RenderWare 같은 상용 미들웨어를 사용합니다. 대부분의 게임 플랫폼은 코드를 컴파일 할 수있는 C++ 환경도 지원합니다. Additionaly, 대부분의 콘솔에는 개발 버전 (Playstations do)이 있으며 대부분의 코드를 테스트하는 시뮬레이터가 있습니다. 이 미들웨어는 현재 EA가 소유하고 있습니다 (EA는 현장의 거대한 선수와 같습니다). 3D 게임을 만드는 것은 단순한 프레임 워크가 아닙니다. 대부분의 게임은 게임 및 게임 플레이의 흐름을 문서화 한 디자인 문서에서 비롯됩니다. 이 작품은 다른 소프트웨어 (예 : Maya 및 Lightwave)와 게임 캐릭터 인 'models'에서 수행됩니다.

코딩 작업에있어 많은 일이 끔찍할 수도 있지만, 그렇게 큰 거래는 아닙니다. 핵심 기능을 작성하는 데 1 주에서 8 주가 소요되며 나머지는 설계 및 계획에 더 많은 시간을 소요합니다. 3D가 전체 게임의 10 %에 불과하다는 것을 기억하십시오. 이것들은 전 게임 개발자로서의 나의 두 센트입니다.

2

나는 인터뷰 (아마도 .plan 파일/블로그였습니다)를 읽은 적이 몇 년 전에 존 카마 크가 전했습니다. 그는 여러 플랫폼에 대한 개발을 논의하고있었습니다. (메모리가 제공된다면 모바일 플랫폼 용 타이틀을 출시 할 무렵이었습니다.) 그가 제공 한 조언은 먼저 지원할 계획이 가장 낮은 시스템 사양으로 플랫폼을 타겟팅하는 것이 었습니다. 그의 추론은 아래로 넘어서기가 훨씬 더 쉽습니다. 최신 하이 엔드 그래픽에 초점을 맞춘다면 하이 엔드에서만 사용할 수있는 기능에 따라 달라질 수 있습니다. 주류와 저급 시스템을 위해 규모를 축소하는 것을 매우 어렵게 만듭니다. 어쨌든, 나는 그것이 꽤 좋은 충고라고 생각했다.

+0

어떤 종류의 개발이라도 꽤 많이 진행됩니다. 그렇지 않습니까? – Rook

0

"주로 그들은하지 않습니다." 모든 돈은 Windows 또는 콘솔에 있으며 많은 콘솔은 독점권을 원합니다. 나는 몇 개의 포트를 보았지만 항상 이전 버전에서 분기 된 별도의 코드베이스입니다.

0

매우 자주 #define (예 : C++ 코드)을 사용하므로 지정된 플랫폼에 대한 컴파일 전에 적절한 코드가 포함되거나 사용됩니다. 더 큰 프로젝트에서 때때로 게임의 부분은 완전히 다른 IDE로 작성되고 다른 (플랫폼 특정) 컴파일러로 컴파일됩니다.

내 경험 사례 : Nintendo Wii 용 게임을 할 때 Torque 게임 엔진을 사용하고있었습니다. 우리는 PC에서 프로그래밍 중이었고 PC 용 코드를 컴파일하고있었습니다. 일부 기능이 준비되었을 때 Metrowerks CodeWarrior (특수 라이브러리 세트 등)를 사용하여 Nintendo Wii 용으로 컴파일 한 다음 devkit으로 보내고 Nintendo Wii 콘솔에서 실행합니다.

관련 문제