Platformlar arası bağımsız gelişim


34

Birkaç yıl önce, C ve bazı C ++ alt kümeleri yazdıysanız ve yeterli sayıda platform soyutlaması kullandıysanız (SDL veya her neyse), bir indieğin bulabileceği her platformda çalışabilirsiniz - Linux, Windows, Mac OS, çeşitli sürümlerde , BeOS gibi karanlık şeyleri ve GP2X ve ölüm sonrası Dreamcast gibi açık konsolları. Bir noktada kapalı bir platform için bir sözleşmeniz varsa, “minimum” kod değişikliği ile oyununuzu o platforma taşıyabilirsiniz.

Bugün, bağımsız geliştiriciler, Xbox 360'a (ve yaklaşmakta olan Windows telefonuna) erişmek için XNA'yı kullanmalıdır; Windows dışında başka bir yerde çalışmak için XNA kullanmamalısınız; yakın zamana kadar Java'yı Android'de kullanmak zorunda kaldı; Flash telefonlarda çalışmıyor, HTML5 IE'de çalışmıyor. Örneğin DirectX - OpenGL veya Windows vs. Unix'ten farklı olarak, bunlar kodunuzu yazdığınız ana dilde yapılan değişikliklerdir ve temelde bir derleyici yazmadan kağıtlara alınamaz. Bazı oyun mantıklarını komut dosyalarına taşıyabilir ve tercüman içerebilir - yapamadığınız durumlar hariç, çünkü iPhone SDK buna izin vermiyor ve hiç kimse JIT'ye izin vermediğinden performans düşüyor.

Peki, gerçekten platformlar arası bir taşınabilir oyun veya sadece önemli bir motor ve mantık kodu gövdesi istiyorsanız ne yapabilirsiniz?

Bu bir sorun değil mi çünkü platformlar temelde birbirinden ayrıldı - böyle bir oyun kötü olacağından, hem iPhone hem de Xbox 360'ı paylaşılan bir kodla hedeflemeye çalışmanın faydası yoktur. (Bunu çok düşük bir ihtimal buluyorum. Bir oyunun Windows Mobile telefonu ve Android veya Xbox 360 ve iPad arasında paylaşılmasını istediğini kolayca görebiliyorum.) Arabirim süresi artık bu kadar yüksek değil mi? (İş uygulamaları için buna inanabilirim, ancak sıkı performans gereksinimleri olan oyunlar için değil.)

Bu gelecekte daha belirgin hale gelecek mi? Bölünme, biraz kısıtlayıcı bir şekilde hala satıcı çizgisinde mi olacak? Çapraz platformda herhangi bir şey yapmak için Flash veya Unity gibi üst düzey katman yazılımlarına güvenebilir miyiz?

tl; dr - Bir problemi taşımak mı, gelecekte daha büyük bir problem mi olacak ve eğer öyleyse bunu nasıl çözeceğiz?


2
İPhone Geliştirici Programı Lisans Anlaşmasının 3.3.2 Bölümü, hala biraz karmaşık olmasına rağmen, şimdi oyun komut dosyası için izin verir. - "Yukarıdakilere bakılmaksızın, Apple'ın önceden yazılı izni ile birlikte, bir Uygulama, yalnızca Uygulama’nın amaçlanan ve ilan edilen amacı ile tutarlı olan küçük özellikler veya işlevler sağlamak için sınırlı bir şekilde gömülü yorumlanmış kod kullanabilir."
Bachus

3
Apple dün lisans sözleşmesini tekrar değiştirdi ve oyun komut dosyası artık tamamen sorun değil. - "Yorumlanan kod yalnızca bir Uygulamada tüm komut dosyaları, kodlar ve tercümanlar Uygulamada paketlenir ve indirilmezse kullanılabilir. Yukarıda belirtilenlerin tek istisnası, Apple'ın yerleşik WebKit çerçevesi tarafından indirilen ve çalıştırılan komut dosyaları ve koddur."
Bachus 07:

Mobil cihazlara, konsollara, PC'lere ve web tabanlı oyunlara ait olmayan bir sürü şeyi birlikte topladığınızı söyleyebilirim. Konsollar ve PC'ler, kesinlikle, bazı düzenlemelerle bir kod temeli paylaşabilmelidir. Mobil cihazlar özel bilgi işlem donanımlarından (ham grafik gücü, depolama, geçirgenlik vb.) Büyük ölçüde farklıdır ve bu nedenle aynı çözümleri kullanamayacaksınızdır. Ve web oyunları bilirsin, web sayfalarıdır . Ne istiyorsun? Buradaki parçalanma, yalnızca hesaplama mimarileri değil, cihaz paradigmaları arasındadır.
ChrisE

Aslında web oyunları hakkında hiçbir şey söylemedim. Tüm cihazlarda aynı kodun bir kısmını çalıştırmak istediğinizi düşünüyorum - giriş eşlemesi veya soyutlanmış bir grafik API veya varlık sistemi, dosya ayrıştırma, ağ oluşturma - bunların hepsi platformdan bağımsız olarak aynı temel paradigmalardır. Ancak soru da 8 aylık ve NDK Android üzerinde daha fazla destek topladığından ve Apple aptalca politikalarını durdurduğundan beri geçerli olmayan endişelerden kaynaklandı.

Demek istediğim, HTML5'ten bahsettiniz, bu web oyunları için tasarlanmış bir şey değil mi?
ChrisE

Yanıtlar:


14

Birlik motoru size oradaki yolun çok büyük bir bölümünü verir. Bir kez yazın ve Mac / Windows Bağımsız ve web oynatıcı tabanlı. Girişlerinizi düzenleyin ve beraberlik aramalarına dikkat edin ve iOS / Android'desiniz.


12

Sınırlı fon / zamana sahip küçük bir bağımsız geliştirici için (ve belki de 'karlı bir şey yapmaktan daha' bir şeyleri 'yapmaya odaklanmaya odaklanın), başlangıçtan itibaren platformlar arası geçmeye çalışmak verimsiz olabilir. Oyun geliştirmenin daha yaratıcı tarafına harcanabilecek zamana kadar, sağlam çapraz platform araçlarını ve teknolojisini (farklı grafik API'leri, endianness, giriş aygıtları ve daha fazlası) geliştirmek için çok çaba harcıyor.

Fakat muhtemelen, mümkün olduğu kadar çok platforma çıkmadan endişelenmeden önce tek bir platformda gerçekten iyi çalışan harika bir oyunun olduğundan emin olmak istersiniz! Oyun bir flopsa, çok platformlu bir flop yapmak için zaman ve çaba harcamanın bir anlamı yoktur, değil mi?

C / C ++ 'da kodlama yapıyorsanız, çoğunlukla sıfırdan kod yazıyorsanız, kodu oldukça modüler tuttuğunuz ve veri formatları ve ara katman yazılımı / kütüphaneleri hakkında makul kararlar aldığınız sürece, daha sonra diğer platformları desteklemek çok acı verici olmamalıdır.

Üçüncü taraf platformlar arası teknoloji / araçlar (örneğin Birlik) projeniz için bir seçenekse, o zaman kesinlikle düşünmeye değer.

Hintliler için ana 'sorun platformları' Xbox360 Bağımsız Oyunlarında (yalnızca C #, sınırlı ağ erişimi, vb.) Ve muhtemelen Android'de (cihaz performansı / ekran boyutu / giriş cihazlarındaki büyük farklılıklar) gözüküyor. Bunları desteklemeye kararlıysanız, daha büyük bir taşıma işi bekleyin veya yalnızca bunlara odaklanmayı planlayın.


Evet, Unity3D kayalar. www.unity3D.com
BerggreenDK

@Bluescrn ile aynı fikirdeyim - neredeyse hiçbir şey hakkında neredeyse her şeyi bilmek, neredeyse her şey hakkında hiçbir şey bilmemek daha iyidir: Her özellikten Jack, hiç kimsenin efendisi.
rodrigo-silveira

3

Platformlar arası bağımsız bir gelişme diyorsunuz . O zaman en büyük engel, kaynaklardır ve bu, çoğu zaman zaman eksikliği anlamına gelir, ancak aynı zamanda teknik bilgi birikimi ve muhtemelen finansman (lisans ücretleri, aygıt satın alma vb.) Anlamına gelir.

Bağımsız ya da değil, en büyük engel aslında tasarım. Söylediğiniz gibi, Xbox360 ve iPad'de çalışan bir oyun işe yarayabilir, ancak tasarım açısından da temelde farklı olmaları gerekir. 360 bir kontrolör, bir dokunmatik ekran iPad var. Ayrıca, 360 için geliştirme, C # dili kullanılarak Windows'ta yapılır; iPad yalnızca Mac OS bilgisayarlarında hedeflenebilir ve C, C ++ veya Objective-C kullanılarak yapılabilir. Veya tercih ederseniz, Javascript. Bazı şeyler ne yaparsan yap, onu iyi karıştırmaz.

Farklı platformlar hakkında söyledikleriniz bugün geçerli. C / C ++ ve SDL'yi kullanın ve program çapraz platformunuzu PC benzeri makinelere, muhtemelen yıllar öncesinden çok daha sorunsuz bir şekilde yazabilirsiniz. Ancak bu her zaman bir sorundur ve oyunları bilgisayardan konsola ve mobil cihazlara taşımak her zaman bir problem olmaya devam edecektir. Son yıllarda, Indie geliştiricilerinin konsollar (veya homebrew oyunları oluşturmak için erişime izin veren geliştiriciler) için program yapmalarına izin vermek ve oyunları çalıştırmak için yeterince güçlü mobil cihazların yükselişi ile daha belirgin hale geldi.

Taşıma, şimdiye kadar sahip olduğu problemlerle aynıdır, ancak taşınması gereken daha fazla cihaz vardır. Ve bazı limanlar oyunun çekirdeğini yeniden tasarlamadan anlamsız geliyor. Bu çözülebilecek bir problem değil, ilk kod satırınızı yazmadan önce bile baştan düşünmeniz gereken bir problem. O zaman yönetilebilir olacak, daha fazla olmayacak, daha az olmayacak.


Aslında, limana gitme zamanının, bağımsız bir geliştirici / grubun yayıncı tarafından yönetilen büyük bir stüdyodan daha muhtemel bir şey olduğunu söyleyebilirim.

Tüm platformlarda anlamlı olan birçok oyun tasarımı vardır - örneğin, sıra tabanlı sanal tahta oyunları sürekli olarak tüm platformlarda etkilidir. Pek çok düşen / eşleşen blok bulmaca oyunları vardır. Bunlar artık geleneksel anlamda “gösterilemez” - örneğin bir oyunu örneğin XBLIG'ten iPhone'a taşımak, tüm kodların garantili bir tekrarıdır.

3

Sanırım basit, taşınabilir ve açık bir arayüz çerçevesi gerçekten gerekli. Bazı musings:

Şu anda dört yaygın oyun giriş yöntemi türü görünmektedir: Klavyeler, Fareler, Denetleyiciler ve Çoklu Dokunma Yüzeyleri. (Nihayetinde ele alınması gerektiğine rağmen, örneğin gamepadler ve joystick'ler arasındaki farklı yetenekler konularına değineceğim.)

İdeal olarak, geliştiricimiz genel olarak, oyun türünün yazılmasında anlamlı olan birkaç farklı kullanıcı arayüzü tanımlayabilecektir. (Keyfi bir örnek olarak Klavye ve Fare Kullanıcı Arabirimi, Yalnızca Fare Kullanıcı Arabirimi ve Çoklu Dokunma Arayüzü sağlamaya karar verebilirler.)

Çerçeve daha sonra platform ve oyun kodu arasında IO aracılığından sorumludur, QT ve GTK gibi platformlar arası GUI çerçevelerinin nasıl işlediğine benzer.

Böyle bir çerçeveye sahip olmak, uyumsuz dil gereksinimleri problemini çözmez, ancak en azından dil portresini daha kolay hale getirmesi gereken sisteme özgü tüm çağrıları ortak bir API'nin arkasına yerleştirir.

Pekala, şimdi hepsini yazdım: Bunun gibi bir çerçeve var mı bilen var mı?


3

MonoTouch ve XNATouch gibi projelerle, XNA'nın sizi biraz platforma çevirme ile çoğu platformda tutabileceği görünüyordu. Ne yazık ki Apple, hangi dilleri kullanabileceğinizi kısıtlamak için Şartlar ve Koşullarını değiştirdiklerinde torpido kullandı. Birlik şu anda hemen hemen her şeye rastlıyor, ancak XBOX'ta sizi XBLA'ya getirecek, ancak XBLIG'i almayacak, bu nedenle daha küçük indies'ler için bir seçenek değil.

Bir yaklaşım, birden fazla dilde / platformda aynı kuralları kullanan bir çerçeve oluşturmak olabilir, o zaman oyun oynamak için sözdizimi sadece ince bir meseledir. Oyununuzu hızlı bir şekilde geliştirilebilecek ve geniş bir kitleye ulaşacak olan Flash'ta başlatmak isteyebilirsiniz, daha sonra iPhone, XNA vb.


programlama dillerini kısıtlayan aptal elma! KİM?!?!
Fresh Junay

2

Bunun ekonomik bir problem olduğunu düşünüyorum, teknik bir problem değil. Xbox360 gibi platformlar, dışlayıcı olma konusunda güçlü bir teşvik oluşturuyor, çünkü kullanıcıların başka bir platform yerine platformlarını seçmelerini sağlamaya çalışıyorlar. "Bu harika özel oyunlarımız var", "herkesin sahip olduğu bu oyunları da oynayabiliriz" den çok daha ilginç. Ekosisteme donanım üreticileri hakimdir.

Sosyal ağlarla oynanan bir oyun olgunlaştıkça bunun değişeceğinden şüpheliyim, çünkü herkesi aynı sosyal oyun sistemine sokmada potansiyel olarak FPS ile-seksi-grafiklerle yapmaktan çok daha fazla para var.


2

Az önce Haxe ve NME'yi keşfettim . Tüm büyük masaüstlerini ve mobil aygıtları destekleyen bir çapraz platform uygulaması ve tek bir kod tabanından Flash olduğunu iddia ediyor . Bakmaya değer.


1

O kadar yeni olan bir platformlar arası geliştirme aracı mutlaka önermiyorum ki http://www.monkeycoder.co.nz/

Bahsettiğiniz her platforma vuruyor.

Gerçekten yargılamak için çok yeni olsa da, harika bir soyağacı var: daha önce indie oyun geliştiricileri için harika geliştirme araçları olan Blitz3D ve BlitzMax'i yarattı.


0

Airplay SDK konusunda şansım yaver gitti - en azından x86'da ve görünüşe göre iPhone'u iyi hedefliyor (yine de henüz bir iPhone'a henüz bir uygulama koymam gerekmedi).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.