Kapan Anda harus memutar mesin game Anda sendiri? [Tutup]

20

Saya telah menjadi pengembang perangkat lunak selama 5 tahun, sekarang, dan saya ingin memasuki pengembangan game iOS. Saya telah bermain-main dengan SDK iOS selama sekitar 2 tahun, menghadiri pertemuan cocoaheads, dan saya merasa saya memiliki pemahaman yang baik tentang tujuan-c, kakao dan bahkan c dan c ++.

Saya punya ide permainan, dan tahu bahwa saya akan menggunakan Box2D, tapi saya ingin tahu apakah saya harus menggunakan cocos2D atau tidak. Alasan utamanya adalah:

  1. Saya mungkin ingin melakukan hal-hal, secara grafis, yang tidak tersedia di cocos2d.
  2. Jika saya memutar mesin game saya sendiri, saya akan memiliki kontrol lebih.

Tentu saja, alasan utama untuk menggunakan mesin game yang sudah ada adalah waktu yang dihemat, dan itu membuat hal-hal sulit lebih mudah; tetapi bagi seseorang yang memiliki daging teknik untuk menggulungnya sendiri, apakah itu masuk akal?

Joey Green
sumber
7
Jika Anda mengatakan "C / C ++", kemungkinan besar Anda tidak memiliki pemahaman yang baik tentang setidaknya satu dari mereka, dan mungkin keduanya.
DeadMG
10
Saya mengerti bahwa beberapa orang membingungkan keduanya dan saya mungkin seharusnya mengatakan C / C ++ / Objective-C untuk menegaskan bahwa saya mengerti bahasa utama yang dapat Anda gunakan untuk program pada platform iOS. Saya tidak merasa ingin mengatakan C / C ++ akan secara otomatis berarti bahwa saya membingungkan keduanya sebagai satu.
Joey Green
Saya memang suka pertanyaan ini karena membuat perubahan selamat datang dari yang biasa "bagaimana saya membuat mesin sendiri?" pertanyaan. +1 untuk Anda, tuan.
Ray Dey
1
@DeadMG Saya mengatakan sesuatu "C / C ++" dan memiliki pemahaman yang sangat baik dari keduanya.
Ciaran
Saya akan mengatakan itu bahkan yang melakukannya
bobobobo

Jawaban:

38

Sebagian besar posting lain akan "membuat game bukan mesin", tapi saya akan berasumsi bahwa Anda memiliki game tertentu yang ingin Anda buat dan ingin tahu kapan ide yang baik untuk memulai dengan kode orang lain dasar atau mulai dari awal.

Anda tidak harus menggulung teknologi Anda sendiri kecuali Anda tahu Anda harus menggulung teknologi Anda sendiri . Itu mungkin terdengar kurang ajar, tetapi itu satu-satunya jawaban yang benar. Seperti kebanyakan keputusan, ada pengorbanan. Hanya Anda yang dapat menentukan untuk situasi khusus Anda analisis biaya / manfaat.

Anda harus memiliki pemahaman tentang hal-hal berikut (daftar ini hampir tidak termasuk semua).

  • Apa middleware sudah ada di luar sana yang bisa Anda gunakan ("mesin" atau sebaliknya)
  • Apa yang dibawa middleware ke meja, fitur bijak.
  • Seberapa matang / terbukti middleware ini, terutama jika Anda peduli dengan dukungan multi platform
  • Alat apa yang disediakan, atau tidak disediakan oleh middleware, untuk membantu mempercepat pengembangan (jangan diskon alat dengan teknologi Anda sendiri)
  • Apa keterbatasan yang dimiliki middleware (sebagai contoh sederhana, Unity 3.x tidak melakukan bayangan waktu nyata dari lampu dinamis di iOS)
  • Fitur khusus apa yang dimiliki gim khusus Anda .
  • Apa tenggat waktu Anda, dan berapa banyak waktu yang harus Anda keluarkan untuk mencapai titik di mana middleware akan membuat Anda vs. berapa biaya middleware.
  • Seberapa diperluas middleware itu (misalnya, Anda dapat mengatasi masalah bayangan di iOS di Unity dengan menggunakan blob shadows. Atau mungkin projection shadows.)

(Perhatikan bahwa saya secara khusus tidak menempatkan "lebih banyak kontrol" di sana. Itu frasa yang dimuat dapat berkisar dari "Saya tidak suka kode yang tidak saya tulis" hingga "Saya harus bisa melihat, mengerti, dan tweak semua variabel dalam mesin fisika untuk mencapai efek khusus ini. "Yang pertama tidak benar-benar pertimbangan yang valid, tetapi yang kedua adalah.)

Secara pribadi, saya menemukan bahwa menggulung teknologi Anda sendiri untuk permainan berbiaya rendah hampir tidak pernah sepadan dengan usaha. Jumlah daya yang Anda dapatkan dari mesin murah saat ini sangat tidak masuk akal. Anda tidak berada pada titik di mana Anda memutuskan untuk lisensi mesin triple A jutaan dolar atau tidak. Anda tidak akan bisa mengalahkan apa, katakanlah, Unity menawarkan kepada Anda untuk $ 3k. Atau Cocos2d untuk apa pun biayanya (bukan gratis?).

Sekarang, jika gim Anda sebagian besar terfokus pada beberapa jenis teknologi yang tidak dapat disediakan oleh mesin lain, atau tidak dapat menyediakan pada framerate yang wajar, maka mungkin ada baiknya menyelidiki apa yang dapat Anda lakukan. Tapi itu tidak berarti Anda membuang middelware lainnya sepenuhnya. Hanya karena Anda membutuhkan milik Anda sendiri, katakanlah, penyaji, tidak berarti Anda tidak dapat menggunakan middleware lain untuk fisika atau suara atau UI atau apa pun.

Tetrad
sumber
7
Sepakat. Sebagai tldr: Jika Anda harus mengajukan pertanyaan, kemungkinan besar Anda sebaiknya menggunakan mesin yang sudah ada.
Chris Subagio
Catatan Anda dengan berani merangkum pengalaman saya.
Insinyur
1
Komunitas juga penting. Sesuatu dengan komunitas yang kuat, seperti XNA, membuat penyelesaian masalah tertentu yang jauh lebih mudah karena seseorang telah melakukannya sebelumnya atau dapat memberi Anda petunjuk.
ashes999
14

Jangan putar mesin Anda sendiri. Gulung game Anda sendiri. Jika Anda kebetulan menulis mesin pada saat yang sama maka bagus untuk Anda, jika tidak, Anda selalu dapat memperbaiki bagian apa pun yang Anda mungkin ingin menggunakan kembali untuk membuatnya lebih "mesin" seperti.

Orang sering memperkirakan apa yang diperlukan untuk menulis bagian "mesin" dari sebuah game. Jika Anda hanya melakukan apa yang Anda butuhkan, itu tidak akan lama. Bagian yang sulit adalah untuk tidak terjebak menulis infrastruktur dan hanya menulis apa yang Anda benar-benar harus menyelesaikan masalah Anda.

Saya akan menggunakan mesin yang ada saat:

  • Saya memiliki tenggat waktu yang ketat
  • Saya memiliki set fitur tetap yang diketahui sehingga saya dapat memilih mesin untuk itu
kosong
sumber
3

Saya pikir Anda hanya harus menulis permainan Anda, dan mungkin Anda akan berakhir dengan mesin nanti . Menulis mesin grafis (yang sepertinya Anda bicarakan) dari nol menggunakan apa-apa selain OpenGL kemungkinan hanya akan membuang-buang waktu Anda. Ini adalah masalah yang relatif diselesaikan dengan baik sehingga umumnya Anda hanya akan mengubah bentuk API tanpa menambahkan banyak fitur baru yang signifikan dibandingkan dengan solusi pihak ketiga lain yang tersedia di luar sana.

Jika Cocos2D atau lapisan grafis lain memenuhi persyaratan Anda sekarang, maka gunakanlah. Jika kebutuhan Anda berubah selama pengembangan, Anda dapat mengganti rendering back end dengan relatif mudah - jika Anda benar-benar yakin memiliki pengalaman dan kemampuan untuk membuat mesin sendiri, Anda tentu harus memiliki apa yang diperlukan untuk membuat struktur permainan Anda sehingga bertukar ujung rendering adalah operasi yang relatif sepele.

Bangun game Anda, izinkan kebutuhan spesifiknya untuk menggerakkan set fitur kode yang Anda tulis, dan menulis kode dengan usabilitas dan arsitektur yang baik. Anda secara alami akan berakhir dengan "mesin" setelah Anda menyelesaikan beberapa proyek seperti ini, dan Anda akan menyelesaikan proyek-proyek itu lebih cepat karena Anda tidak membiarkan diri Anda terjebak dalam fitur creep tingkat kerangka kerja.


sumber
Jika tujuannya adalah untuk belajar, maka itu bukan buang-buang waktu.
Ciaran
3

Ini sangat sederhana. Apa tujuan utama Anda: belajar atau waktu ke pasar?

Hindari menggunakan perpustakaan jika tujuan utama Anda adalah belajar dari pengalaman menerapkan konsep-konsep yang diselesaikan oleh perpustakaan. Setiap kali saya mengembangkan permainan (paruh waktu), tujuan saya adalah murni belajar. Saya tidak peduli berapa lama, itu sebabnya saya melakukan semuanya dari awal! Sekarang, Anda yang memutuskan.

Ciaran
sumber
0

Anda harus memutar mesin gim Anda sendiri ketika Anda tahu ada kebutuhan untuk itu.

Jadi misalnya, katakan Anda tidak memiliki uang untuk dibelanjakan pada Unity. Atau, Anda lebih suka menghabiskannya di perangkat keras baru. Atau, ada masalah kinerja dengan mesin gratis yang tersedia untuk Anda, atau Anda harus memiliki kontrol lebih banyak pada level rendah.

Jika Anda suka menulis perangkat lunak demi menulis perangkat lunak, maka Anda akan suka menulis mesin permainan. Sebuah perangkap umum dari pemrogram game pemula adalah terjebak menulis mesin sebagai semacam proyek abadi. Sejujurnya saya percaya itulah bagaimana semua mesin game open source ini muncul - programmer game yang sebenarnya tidak

Maka dalam hal itu, tulis mesin Anda sendiri.

bobobobo
sumber