Pengembangan independen lintas platform

34

Beberapa tahun yang lalu, jika Anda menulis dalam C dan beberapa himpunan bagian dari C ++ dan menggunakan cukup banyak abstraksi platform (melalui SDL atau apa pun), Anda dapat berjalan di setiap platform yang bisa dicapai oleh indie - Linux, Windows, Mac OS dari berbagai versi , hal-hal yang tidak jelas seperti BeOS, dan konsol terbuka seperti GP2X dan Dreamcast paska kematian. Jika Anda mendapat kontrak untuk platform tertutup di beberapa titik, Anda dapat mem-port game Anda ke platform itu dengan perubahan kode "minimal" juga.

Hari ini, pengembang indie harus menggunakan XNA untuk masuk ke Xbox 360 (dan telepon Windows yang akan datang); tidak boleh menggunakan XNA untuk bekerja di tempat lain selain Windows; sampai saat ini harus menggunakan Java di Android; Flash tidak berjalan di ponsel, HTML5 tidak berfungsi di IE. Tidak seperti misalnya DirectX vs OpenGL atau Windows vs. Unix, ini adalah perubahan pada bahasa inti tempat Anda menulis kode dan tidak dapat ditulis tanpa, pada dasarnya, menulis kompiler. Anda dapat memindahkan beberapa logika permainan ke dalam skrip dan menyertakan juru bahasa - kecuali jika Anda tidak bisa, karena iPhone SDK tidak mengizinkannya, dan kinerjanya akan menurun karena tidak ada yang mengizinkan JIT.

Jadi apa yang dapat Anda lakukan jika Anda menginginkan game portabel yang benar-benar cross-platform, atau bahkan hanya mesin dan kode logika yang signifikan?

Apakah ini bukan masalah karena platform secara fundamental menyimpang - hanya saja tidak ada gunanya mencoba menargetkan iPhone dan Xbox 360 dengan kode bersama apa pun karena permainan seperti itu akan buruk? (Saya menemukan ini sangat tidak mungkin. Saya dapat dengan mudah melihat ingin berbagi permainan antara ponsel Windows Mobile dan Android, atau Xbox 360 dan iPad.) Apakah antarmuka sangat tinggi sekarang sehingga waktu porting dapat diabaikan? (Saya mungkin percaya ini untuk aplikasi bisnis, tetapi tidak untuk game dengan persyaratan kinerja yang ketat.)

Apakah ini akan menjadi lebih menonjol di masa depan? Apakah perpecahan akan menjadi, agak serampangan, masih di jalur vendor? Akankah kita semua bergantung pada middleware tingkat tinggi seperti Flash atau Unity untuk menyelesaikan semua cross-platform?

tl; dr - Apakah porting masalah, apakah itu akan menjadi masalah yang lebih besar di masa depan, dan jika demikian bagaimana kita menyelesaikannya?

pengguna744
sumber
2
Bagian 3.3.2 dari Perjanjian Lisensi Program Pengembang iPhone memungkinkan untuk scripting game sekarang, meskipun masih sedikit berbelit-belit. - "Terlepas dari apa yang disebutkan sebelumnya, dengan persetujuan tertulis Apple sebelumnya, suatu Aplikasi dapat menggunakan kode yang ditafsirkan secara terbatas jika penggunaan tersebut semata-mata untuk menyediakan fitur atau fungsionalitas kecil yang konsisten dengan tujuan Aplikasi yang dimaksudkan dan diiklankan."
Bachus
3
Apple mengubah perjanjian lisensi lagi kemarin, dan scripting game sekarang benar-benar oke. - "Kode yang diinterpretasikan hanya dapat digunakan dalam Aplikasi jika semua skrip, kode, dan juru bahasa dikemas dalam Aplikasi dan tidak diunduh. Satu-satunya pengecualian di atas adalah skrip dan kode yang diunduh dan dijalankan oleh kerangka kerja WebKit bawaan Apple."
Bachus
Saya akan mengatakan bahwa Anda telah menyatukan banyak hal yang bukan miliknya - perangkat seluler, konsol, PC, dan game berbasis web? Konsol dan PC, tentu saja, harus dapat berbagi basis kode dengan beberapa penyesuaian. Perangkat seluler memiliki kemampuan yang sangat berbeda dari perangkat keras komputer khusus (dalam hal daya grafis, penyimpanan, pengurutan, dll.), Sehingga Anda bahkan tidak dapat menggunakan solusi yang sama. Dan permainan web, Anda tahu, halaman web . Apa yang kamu inginkan? Fragmentasi di sini adalah lintas paradigma perangkat, bukan hanya arsitektur komputasi.
ChrisE
Sebenarnya saya tidak mengatakan apa-apa tentang game web. Saya pikir masuk akal untuk menjalankan beberapa kode yang sama pada semua perangkat - pemetaan input, atau grafik API abstrak, atau sistem entitas, penguraian file, jaringan - semua ini adalah paradigma dasar yang sama tanpa memandang platform. Tapi pertanyaannya juga 8 bulan, dan muncul dari kekhawatiran yang tidak berlaku banyak sejak NDK mengumpulkan lebih banyak dukungan di Android dan Apple menghentikan kebijakan bodoh mereka.
Maksud saya, Anda menyebutkan HTML5 ... semacam itu dimaksudkan untuk permainan web, bukan?
ChrisE

Jawaban:

14

Mesin Unity memberi Anda sebagian besar jalan ke sana. Tulis sekali dan Anda dapat Mac / Windows Standalone dan berbasis webplayer. Tweak input Anda, dan ingat panggilan draw Anda dan Anda menggunakan iOS / Android.

JDonavan
sumber
12

Untuk pengembang indie kecil, dengan dana / waktu yang terbatas (dan mungkin lebih fokus pada 'membuat sesuatu yang keren' daripada 'membuat sesuatu yang menguntungkan'), mencoba lintas platform sejak awal bisa menjadi kontraproduktif. Dibutuhkan banyak upaya untuk merekayasa perangkat dan teknologi lintas platform yang solid (API grafik yang berbeda, endianness, perangkat input, dan banyak lagi) - waktu yang dapat dihabiskan di sisi pengembangan game yang lebih kreatif.

Tetapi Anda mungkin ingin memastikan Anda memiliki gim hebat yang bekerja sangat baik pada satu platform sebelum terlalu khawatir untuk memasukkannya ke sebanyak mungkin platform! Jika permainan ini gagal, tidak ada gunanya membuang waktu dan upaya menjadikannya kegagalan multi-platform, bukan?

Jika Anda melakukan pengkodean dalam C / C ++, kebanyakan dari awal, maka selama Anda menjaga kodenya cukup modular dan membuat keputusan yang masuk akal tentang format data dan middleware / libraries, maka mendukung platform lain nantinya tidak boleh terlalu menyakitkan.

Jika teknologi / alat lintas-platform pihak ketiga (mis. Unity) merupakan opsi untuk proyek Anda, maka itu tentu layak dipertimbangkan.

'Platform masalah' utama untuk indie tampaknya adalah Xbox360 Indie Games (khusus C #, akses jaringan terbatas, dll), dan mungkin Android (perbedaan besar dalam kinerja perangkat / ukuran layar / perangkat input). Jika Anda bertekad untuk mendukung ini, mengharapkan pekerjaan porting yang lebih besar, atau berencana untuk fokus pada mereka secara eksklusif.

bluescrn
sumber
Ya, batu Unity3D. www.unity3D.com
BerggreenDK
Saya setuju dengan @bluescrn - lebih baik untuk mengetahui hampir segala sesuatu tentang hampir tidak ada, daripada mengetahui hampir tidak ada tentang segalanya: Jack dari semua sifat, tidak menguasai apa pun.
rodrigo-silveira
3

Anda mengatakan pengembangan independen lintas platform . Rintangan terbesar kemudian adalah sumber daya, dan itu berarti kurangnya waktu sebagian besar waktu, tetapi juga kurangnya pengetahuan dan kemungkinan keuangan (biaya lisensi, membeli perangkat, dll).

Indie atau bukan, rintangan terbesar sebenarnya adalah desain. Seperti yang Anda katakan, gim yang berjalan di Xbox360 dan iPad mungkin berfungsi, tetapi mereka juga harus berbeda secara mendasar dalam hal desain. 360 memiliki pengontrol, iPad layar sentuh. Juga, pengembangan untuk 360 dilakukan di Windows menggunakan bahasa C #, iPad hanya dapat ditargetkan pada komputer Mac OS dan menggunakan C, C ++ atau Objective-C. Atau Javascript, jika Anda mau. Beberapa hal hanya tidak mencampur dengan baik apapun yang Anda lakukan.

Apa yang Anda katakan tentang platform yang berbeda berlaku hari ini. Gunakan C / C ++ dan SDL dan Anda dapat menulis cross-platform program Anda pada mesin mirip PC, mungkin jauh lebih lancar daripada tahun lalu. Namun itu selalu menjadi masalah dan akan selalu menjadi masalah untuk port game dari PC ke konsol ke ponsel, dan sebaliknya. Baru-baru ini menjadi lebih jelas dalam beberapa tahun terakhir dengan memungkinkan pengembang Indie memprogram konsol (atau pengembang meretas akses ke sana untuk membuat game rumahan) dan dengan meningkatnya perangkat seluler yang cukup kuat untuk menjalankan game.

Porting memiliki masalah yang sama dengan sebelumnya, tetapi ada lebih banyak perangkat untuk porting. Dan beberapa port tidak masuk akal tanpa mendesain ulang inti dari game. Ini bukan masalah yang bisa dipecahkan, itu yang harus Anda pertimbangkan sejak awal bahkan sebelum Anda menulis baris kode pertama Anda. Maka itu akan dapat dikelola, tidak lebih, tidak kurang.

LearnCocos2D
sumber
Sebenarnya, saya akan mengatakan waktu untuk port adalah satu hal yang lebih mungkin dimiliki oleh pengembang / grup independen daripada studio besar yang digerakkan oleh penerbit.
Ada banyak desain game yang masuk akal di semua platform - game papan virtual berbasis giliran, misalnya, secara konsisten menjadi hit di semua platform. Begitu juga banyak game puzzle blok jatuh / padanan. Ini bahkan tidak dapat "porting" dalam arti tradisional lagi - memindahkan game dari mis. XBLIG ke iPhone adalah jaminan penulisan ulang semua kode.
3

Kerangka kerja antarmuka yang sederhana, portabel dan terbuka benar-benar diperlukan, saya pikir. Beberapa renungan:

Saat ini tampaknya ada empat jenis metode input gim: Papan Ketik, Tikus, Pengontrol, dan Permukaan Multi-Touch. (Saya akan membahas masalah perbedaan kemampuan antara, misalnya, gamepad dan joystick untuk saat ini, meskipun itu pada akhirnya harus ditangani.)

Idealnya, pengembang kami akan dapat menentukan secara umum beberapa UI berbeda yang masuk akal untuk jenis permainan yang sedang ditulis. (Mereka mungkin memutuskan untuk menyediakan UI Keyboard dan Mouse, UI Hanya Mouse dan UI Multi-Touch, sebagai contoh sewenang-wenang.)

Kerangka kerja ini kemudian bertanggung jawab untuk menengahi IO antara platform dan kode game, mirip dengan bagaimana kerangka kerja GUI lintas platform seperti fungsi QT dan GTK.

Memiliki kerangka kerja seperti itu tidak akan menyelesaikan masalah persyaratan bahasa yang tidak kompatibel, tetapi setidaknya akan merangkum semua panggilan khusus sistem di belakang API umum, yang seharusnya membuat porting bahasa jauh lebih mudah.

Nah, sekarang saya sudah menulis semua itu: Apakah ada yang tahu apakah kerangka kerja seperti itu sudah ada?

Kelapa Mutan Gelatin
sumber
3

Dengan proyek-proyek seperti MonoTouch dan XNATouch, sepertinya XNA dapat membantu Anda pada sebagian besar platform dengan sedikit penyesuaian. Sayangnya, Apple membuat torpedo bahwa ketika mereka mengubah Syarat dan Ketentuan mereka untuk membatasi bahasa yang dapat Anda gunakan. Persatuan melintasi hampir semua hal sekarang, meskipun pada XBOX itu akan membuat Anda menggunakan XBLA tetapi tidak pada XBLIG, jadi bukan pilihan untuk indie yang lebih kecil.

Salah satu pendekatan mungkin untuk membuat kerangka kerja yang menggunakan konvensi yang sama di berbagai bahasa / platform, maka itu hanya masalah mengutak-atik sintaksis ke permainan port. Anda mungkin ingin meluncurkan game Anda di Flash, yang dapat dikembangkan dengan cepat dan menjangkau audiens yang besar, maka jika itu berhasil port ke iPhone, XNA dll. Dengan cara ini Anda tahu Anda memiliki game yang menyenangkan sebelum terlalu banyak berkomitmen.

Iain
sumber
apel bodoh, yang membatasi bahasa pemrograman! SIAPA?!?!
FreshJays
2

Saya pikir ini adalah masalah ekonomi, bukan masalah teknis. Platform seperti xbox360 memiliki insentif kuat untuk menjadi eksklusif, karena mereka berusaha membuat pengguna memilih platform mereka daripada platform lain. "Kami memiliki game eksklusif yang keren ini" jauh lebih menarik daripada "kami juga dapat memainkan game ini yang dimiliki semua orang". Ekosistem didominasi oleh produsen perangkat keras.

Saya menduga ini akan berubah ketika gameplay jejaring sosial matang, karena ada potensi lebih banyak uang untuk memasukkan semua orang ke dalam sistem permainan-sosial yang sama daripada membuat-FPS-lain-dengan-seksi-grafis.

Abu-abu
sumber
2

Saya baru saja menemukan Haxe dan NME . Ia mengklaim sebagai aplikasi lintas platform yang mendukung semua desktop utama dan perangkat seluler, dan Flash, dari satu basis kode. Layak dilihat.

ashes999
sumber
1

Alat pengembangan lintas-platform yang sangat baru, saya tidak selalu merekomendasikannya adalah http://www.monkeycoder.co.nz/

Itu hits setiap platform yang Anda sebutkan.

Meskipun terlalu baru untuk dinilai, ia memiliki silsilah yang hebat: pembuatnya sebelumnya membuat Blitz3D dan BlitzMax, yang merupakan alat pengembangan hebat bagi pengembang game indie.

jhocking
sumber
0

Saya beruntung dengan SDK airplay - setidaknya pada x86 dan tampaknya menargetkan iPhone dengan baik (meskipun saya masih belum menempatkan aplikasi pada iPhone).

pengguna6789
sumber