플랫폼 간 독립 개발


34

몇 년 전에 C와 C ++의 일부를 작성하고 충분한 수의 플랫폼 추상화를 사용하면 (SDL 등을 통해) 인디가 얻을 수있는 모든 플랫폼에서 실행할 수 있습니다-Linux, Windows, 다양한 버전의 Mac OS , BeOS와 같은 모호한 것들, GP2X 및 사후 드림 캐스트와 같은 개방형 콘솔. 어느 시점에서 폐쇄 플랫폼에 대한 계약을 체결 한 경우 "최소"코드 변경으로 해당 플랫폼으로 게임을 이식 할 수 있습니다.

오늘날 인디 개발자는 XNA를 사용하여 Xbox 360 (및 곧 출시 될 Windows 전화)을 사용해야합니다. XNA를 사용하여 Windows 이외의 다른 곳에서 작업해야합니다. 최근까지 Android에서 Java를 사용해야했습니다. 휴대 전화에서 플래시가 실행되지 않고 IE에서 HTML5가 작동하지 않습니다. 예를 들어 DirectX vs. OpenGL 또는 Windows vs. Unix와 달리, 이것은 코드를 작성하는 핵심 언어에 대한 변경 사항이며 기본적으로 컴파일러를 작성하지 않고서는 문서화 할 수 없습니다. 일부 게임 로직을 스크립트로 옮기고 인터프리터를 포함시킬 수 있습니다. iPhone SDK에서 허용하지 않기 때문에 할 수없는 경우를 제외하고 JIT를 허용하지 않기 때문에 성능이 저하됩니다.

따라서 실제로 크로스 플랫폼 휴대용 게임을 원하거나 엔진 및 로직 코드의 상당 부분을 원한다면 어떻게 할 수 있습니까?

플랫폼이 근본적으로 분기 되었기 때문에 이것이 문제가되지 않습니까? 그러한 게임이 나빠서 공유 코드를 사용하여 iPhone과 Xbox 360을 모두 대상으로 지정하는 것은 가치가 없습니다. (이것은 매우 드 find니다. Windows Mobile 전화와 Android 또는 Xbox 360과 iPad간에 게임을 공유하고 싶어하는 것을 쉽게 볼 수 있습니다.) 이제 이식 시간이 무시할 정도로 인터페이스가 너무 높습니까? (비즈니스 응용 프로그램에는 적합하지만 성능 요구 사항이 엄격한 게임에는 해당되지 않을 수 있습니다.)

앞으로 더 두드러 질 것입니까? 스플릿은 다소 비열한 방식으로 여전히 벤더 라인을 낮추는가? 플랫폼 또는 플랫폼 간 작업을 수행하기 위해 Flash 또는 Unity와 같은 고급 미들웨어에 의존할까요?

tl; dr-문제를 포팅하고 있습니까? 앞으로 더 큰 문제가 될 것입니까? 그렇다면 어떻게 해결할 수 있습니까?


2
iPhone Developer Program 사용권 계약의 섹션 3.3.2에서는 게임 스크립팅이 가능하지만 여전히 약간 복잡합니다. - "위의 내용에도 불구하고, Apple의 사전 서면 동의에 따라 응용 프로그램의 의도 된 광고 목적과 일치하는 사소한 특징 또는 기능을 제공하기위한 용도로만 응용 프로그램이 포함 된 해석 코드를 제한적으로 사용할 수 있습니다."
Bachus

3
애플은 어제 라이선스 계약을 다시 바꾸었고 게임 스크립팅은 이제 완전히 괜찮습니다. - "해석 된 코드는 모든 스크립트, 코드 및 인터프리터가 응용 프로그램에 패키지되어 있고 다운로드되지 않은 경우에만 응용 프로그램에서 사용될 수 있습니다. 전술 한 예외는 Apple의 내장 WebKit 프레임 워크에서 다운로드하여 실행하는 스크립트 및 코드입니다."
Bachus

모바일 장치, 콘솔, PC 웹 기반 게임에 속하지 않는 많은 것들을 함께 묶었다고 말하고 싶습니다 . 콘솔과 PC는 약간의 조정으로 코드베이스를 공유 할 수 있어야합니다. 모바일 장치는 전용 컴퓨팅 하드웨어 (원시 그래픽 성능, 스토리지, 스레드 등) 측면에서 기능이 크게 다르므로 실제로 동일한 솔루션을 사용할 수도 없습니다. 그리고 웹 게임은 웹 페이지 입니다. 무엇을 원하세요? 여기서 조각화는 단순한 컴퓨팅 아키텍처가 아니라 장치 패러다임에 걸친 것입니다.
ChrisE

사실 나는 웹 게임에 대해 아무 말도하지 않았다. 입력 매핑 또는 추상 그래픽 API, 엔터티 시스템, 파일 구문 분석, 네트워킹 등 모든 장치에서 동일한 코드를 실행하는 것이 합리적이라고 생각합니다. 이것은 플랫폼에 관계없이 모두 동일한 기본 패러다임입니다. 그러나이 질문은 또한 8 개월이되었으며 NDK가 안드로이드에 대한 더 많은 지원을 모으고 애플이 바보 같은 정책을 중단 한 이후로 많이 적용되지 않는 우려에서 비롯되었습니다.

내 말은, 당신은 HTML5에 대해 언급 했었습니다. 그것은 웹 게임을위한 것입니다. 맞습니까?
ChrisE

답변:


14

유니티 엔진은 당신에게 엄청난 길을 열어줍니다. 한 번 작성하면 Mac / Windows 독립형 및 웹 플레이어 기반이 있습니다. 입력을 조정하고 그리기 호출을 염두에두고 iOS / Android에 있습니다.


12

자금 / 시간이 제한된 소규모 인디 개발자의 경우 (그리고 '수익을 창출하는 것'보다 '멋진 것을 만드는 것'에 더 중점을 두는 경우가 많음) 처음부터 크로스 플랫폼을 사용하는 것은 비생산적 일 수 있습니다. 보다 창의적인 게임 개발에 소비 할 수있는 견고한 크로스 플랫폼 도구 및 기술 (다른 그래픽 API, 엔디안, 입력 장치 등)을 엔지니어링하려면 많은 노력이 필요합니다.

그러나 가능한 한 많은 플랫폼으로 게임을하는 것에 대해 너무 걱정하기 전에 하나의 플랫폼에서 실제로 잘 작동하는 멋진 게임을 만들고 싶을 것입니다! 게임이 플롭이라면 멀티 플랫폼 플롭으로 만드는 데 시간과 노력이 낭비되지 않습니다.

대부분 처음부터 C / C ++로 코딩하는 경우 코드를 상당히 모듈화하고 데이터 형식과 미들웨어 / 라이브러리에 대해 현명한 결정을 내린다면 나중에 다른 플랫폼을 지원하는 것이 너무 고통스럽지 않아야합니다.

타사 크로스 플랫폼 기술 / 도구 (예 : Unity)가 프로젝트의 옵션이라면 반드시 고려해 볼 가치가 있습니다.

인디언의 주요 '문제 플랫폼'은 Xbox360 인디 게임 (C # 전용, 제한된 네트워크 액세스 등) 및 안드로이드 (장치 성능 / 화면 크기 / 입력 장치의 큰 차이) 인 것 같습니다. 이를 지원하기로 결정했다면 더 큰 규모의 포팅 작업을 기대하거나 독점적으로 초점을 맞출 계획입니다.


예, Unity3D가 흔들립니다. www.unity3D.com
BerggreenDK

나는 @bluescrn에 동의합니다-거의 모든 것에 대해 거의 아는 것보다 거의 모든 것에 대해 거의 아는 것이 좋습니다. 모든 특성의 잭, 없음의 주인.
rodrigo-silveira 2016 년

3

크로스 플랫폼 독립 개발이라고합니다. 가장 큰 장애물은 리소스이며, 이는 대부분 시간이 부족하다는 것을 의미하지만 노하우와 재정이 부족할 수도 있습니다 (라이센스 비용, 장치 구매 등).

인디 여부에 관계없이 가장 큰 장애물은 실제로 디자인입니다. 당신이 말했듯이, Xbox360 및 iPad에서 실행되는 게임은 작동 할 수 있지만 디자인 측면에서 근본적으로 달라야합니다. 360에는 컨트롤러, iPad, 터치 스크린이 있습니다. 또한 360의 개발은 C #을 언어로 사용하여 Windows에서 수행되며, iPad는 Mac OS 컴퓨터 및 C, C ++ 또는 Objective-C 만 대상으로 할 수 있습니다. 또는 원하는 경우 Javascript. 어떤 것은 당신이 무엇을 하든지 잘 섞지 않습니다.

다른 플랫폼에 대해 말한 것은 오늘날에도 마찬가지입니다. C / C ++ 및 SDL을 사용하면 PC와 비슷한 머신에서 크로스 플랫폼으로 프로그램을 작성할 수 있습니다. 그러나 항상 문제였으며 PC에서 콘솔, 모바일로 게임을 이식하거나 그 반대의 경우에도 항상 문제가됩니다. 최근 인디 개발자들이 콘솔을위한 프로그램 (혹은 홈 브루 게임을 만들기 위해 액세스를 해킹하는 개발자)을 허용하고 게임을 실행할만큼 강력한 모바일 장치의 등장으로 인해 더욱 두드러졌습니다.

포팅은 이전과 같은 문제가 있지만 포팅 할 디바이스가 더 있습니다. 그리고 일부 포트는 게임의 핵심을 다시 디자인하지 않으면 의미가 없습니다. 이것은 해결할 수있는 문제가 아니며, 첫 번째 코드 줄을 작성하기 전에 처음부터 고려해야 할 문제입니다. 그러면 관리가 가능해집니다.


실제로, 포트 투 타임은 독립적 인 개발자 / 그룹이 대형 퍼블리셔 중심 스튜디오보다 가질 가능성이 높은 것입니다.

턴 기반 가상 보드 게임은 모든 플랫폼에 적합한 게임 디자인이 많이 있습니다. 예를 들어 턴 기반 가상 보드 게임은 모든 플랫폼에서 지속적으로 인기를 얻고 있습니다. 많은 낙하 / 매칭 블록 퍼즐 게임도 있습니다. 이것들은 더 이상 전통적인 의미로 "포팅"될 수 없습니다. 예를 들어 XBLIG에서 iPhone으로 게임을 옮기는 것은 모든 코드의 재 작성을 보장합니다.

3

간단하고 이식 가능하며 개방 된 인터페이스 프레임 워크가 실제로 필요하다고 생각합니다. 몇 가지 생각 :

키보드, 마우스, 컨트롤러 및 멀티 터치 표면의 네 가지 일반적인 게임 입력 방법이 있습니다. (지금은 게임 패드와 조이스틱의 기능 차이에 대한 문제를 다룰 것입니다. 결국에는 해결해야합니다.)

이상적으로 개발자는 작성중인 게임 종류에 적합한 몇 가지 다른 UI를 일반적인 방식으로 지정할 수 있습니다. (임의의 예로서 키보드 및 마우스 UI, 마우스 전용 UI 및 멀티 터치 UI를 제공하기로 결정할 수 있습니다.)

그런 다음 QT 및 GTK와 같은 플랫폼 간 GUI 프레임 워크가 작동하는 방식과 유사하게 프레임 워크는 플랫폼과 게임 코드 사이의 IO를 중재합니다.

이러한 프레임 워크를 사용하면 호환되지 않는 언어 요구 사항 문제를 해결할 수는 없지만 적어도 공통 API 뒤에 모든 시스템 별 호출을 캡슐화하므로 언어 ​​포팅이 훨씬 간단 해집니다.

글쎄, 이제 나는 그 모든 것을 썼다 : 그런 프레임 워크가 이미 존재하는지 아는 사람이 있습니까?


3

MonoTouch 및 XNATouch와 같은 프로젝트를 사용하면 XNA가 약간의 조정만으로 대부분의 플랫폼에서 사용할 수있는 것처럼 보였습니다. 불행히도 Apple은 어휘가 사용 가능한 언어를 제한하기 위해 이용 약관을 변경했을 때 어뢰를 일으켰습니다. Unity는 XBOX에서 XBLLA는 아니지만 XBLIG는 아니지만 작은 인디언을위한 옵션은 아니지만 지금은 거의 모든 것을 가로 지 릅니다.

한 가지 방법은 여러 언어 / 플랫폼에서 동일한 규칙을 사용하는 프레임 워크를 만드는 것입니다. 게임을 이식하기 위해 구문을 조정하면됩니다. Flash에서 게임을 시작하여 빠르게 개발할 수 있고 많은 청중에게 도달 할 수 있습니다. 그런 다음 iPhone, XNA 등으로 성공적으로 포트를 연결하는 경우이 방법을 사용하면 과도하게 커밋하기 전에 재미있는 게임을 할 수 있습니다.


프로그래밍 언어를 제한하는 어리석은 사과! 누구?!?!
FreshJays

2

나는 이것이 기술적 문제가 아니라 경제적 인 문제라고 생각한다. xbox360과 같은 플랫폼은 사용자가 다른 플랫폼 대신 플랫폼을 선택하도록 유도하기 때문에 배타적 인센티브가 있습니다. "우리는이 멋진 독점 게임을 가지고 있습니다"는 "우리는 또한 다른 사람이 가진이 게임을 할 수 있습니다"보다 더 흥미 롭습니다. 생태계는 하드웨어 제조업체가 지배합니다.

소셜 네트워크 게임 플레이가 성숙 할 때 이것이 바뀔 것이라고 생각합니다. 왜냐하면 아직 다른 FPS와 섹시한 그래픽을 만드는 것보다 모든 사람을 동일한 소셜 게임 시스템으로 만드는 데 더 많은 돈이 있기 때문입니다.


2

방금 Haxe와 NME를 발견했습니다 . 그것은 하나의 코드베이스에서 모든 주요 데스크탑 및 모바일 장치 플래시 를 지원하는 크로스 플랫폼 앱이라고 주장합니다 . 한번 볼 가치가 있습니다.


1

너무 새로운 크로스 플랫폼 개발 도구는 반드시 권장하지는 않습니다 http://www.monkeycoder.co.nz/

언급 한 모든 플랫폼에 적용됩니다.

실제로 판단하기에는 너무 새롭지 만 훌륭한 가계도를 가지고 있습니다. 제작자는 이전에 인디 게임 개발자를위한 훌륭한 개발 도구 인 Blitz3D와 BlitzMax를 만들었습니다.


0

나는 적어도 x86에서 에어 플레이 SDK를 사용하여 운이 좋았으며 분명히 iPhone을 대상으로합니다 (아직도 아직 iPhone에 앱을 넣지 않았음에도 불구하고).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.