Apa keuntungan yang diberikan OpenGL tanpa kerangka / mesin untuk pengembang kecil? [Tutup]


16

Saya telah memperhatikan tren pengembang indie menjauh dari kerangka dan mesin, dan bergerak ke arah menggunakan OpenGL telanjang, atau menggunakannya dikombinasikan dengan SDL / SFML2. Sebagai pengembang indie, saya tidak bisa melihat apa yang dapat ditawarkan OpenGL tingkat rendah di atas engine atau kerangka kerja terpisah.

Sebagian besar mesin dan kerangka kerja yang baik memberikan fungsionalitas yang Anda butuhkan, dan tidak pernah menghalangi Anda. Mereka mungkin juga membuka opsi untuk berurusan dengan OpenGL secara langsung. Beberapa bahkan menawarkan fungsionalitas untuk mengkompilasi lintas-platform!

Saya mengerti aspirasi untuk mempelajari apa yang terjadi di bawah tenda, tetapi saya tidak bisa melihat kelebihan apa pun yang mungkin ditawarkan OpenGL kepada pengembang indie melalui mesin atau kerangka kerja.

Bisakah Anda menjelaskan alasan di balik membuat game dari awal menggunakan OpenGL?


Sebagai seorang mahasiswa pascasarjana dalam pemrograman game dan grafik, saya dapat membuktikan kompleksitas belajar OpenGL dari awal. Jika saya membuat game indy hari ini, saya benar-benar akan menggunakan SDL atau perpustakaan lain. Tetapi saya juga memahami lebih banyak tentang grafik hari ini daripada yang saya lakukan ketika saya memulai studi saya, belajar API membantu saya dengan sedikit memahami bagaimana GPU bekerja secara umum, dan bagaimana perangkat keras dan perangkat lunak berinteraksi. Tetapi untuk membuat produk komersial, saya benar-benar akan menggunakan perpustakaan pihak ke-3 pada saat ini.
Philip

Jawaban:


23

Ini sebagian besar adalah pertanyaan / jawaban berdasarkan pendapat, jadi sebenarnya tidak selalu ideal untuk platform ini, tetapi bagaimanapun:

Kenapa tidak ada framework / engine sebagai indie? Inilah dua sen saya:

  • Kurangnya anggaran: Ini mungkin poin terbesar bagi kebanyakan pengembang kecil / indie. Banyak kerangka kerja atau mesin tidak akan memungkinkan Anda untuk mempublikasikan produk Anda tanpa membeli versi yang lebih mahal (dengan asumsi ada versi murah atau gratis tersedia sama sekali) dan / atau membayar royalti, sesuatu yang selalu harus Anda pertimbangkan untuk proyek kecil. Terkadang Anda bahkan harus membayar sekali per platform juga.
  • Kompleksitas: Sebagian besar mesin atau kerangka kerja jatuh ke dalam salah satu dari dua kategori:
    • Mereka sangat terbatas untuk satu genre khusus ( RPG Maker menjadi contoh khas).
    • Atau mereka terlalu generik dengan banyak hal yang kemungkinan besar tidak akan Anda gunakan (seperti Unity ).
  • Kode kepemilikan: Sebagian besar mesin tidak open source dan untuk mendapatkan sumber yang sebenarnya Anda harus membayar lebih banyak lagi (jika bahkan tersedia). Tanpa kode sumber aktual porting ke platform lain bisa sulit atau bahkan tidak mungkin (sekali lagi, RPG Maker akan menjadi contoh sempurna).
  • Clunkyness: Ini adalah pendapat pribadi saya, tetapi setidaknya bagi saya ini sering kali merupakan kekecewaan besar mengingat mesin dan kerangka kerja premade, terutama ketika Anda sedang membangun sebuah game kecil. Siapa yang ingin memainkan game istirahat kecil yang berukuran 200 KB tetapi membawa runtime 50 MB?
  • Pilihan bahasa: Beberapa mesin dan kerangka kerja tidak menyediakan perpustakaan untuk digunakan dalam kode Anda sendiri. Sebagai gantinya mereka menyediakan kerangka kerja atau runtime yang akan menggunakan bahasa scripting sendiri atau beberapa bahasa tertentu (seperti Javascript atau C #). Jika Anda menulis mesin khusus sendiri, Anda bebas menggunakan bahasa apa pun yang Anda pilih.
  • Perlindungan pekerjaan Anda: Jika Anda menggunakan mesin premade atau bingkai, kemungkinan besar orang lain mungkin memiliki waktu yang jauh lebih mudah untuk mengubah atau mendekompilasi kode atau aset Anda, sesuatu yang mungkin ingin Anda hindari (bahkan jika itu hanya untuk mempertahankan skor tertinggi Anda) bersih). Kode kustom dan penanganan aset menambah rintangan yang jauh lebih besar untuk diambil, terutama ketika dikompilasi ke dalam kode asli.
  • Branding: Ini mungkin kecil untuk banyak orang, tetapi beberapa mesin dan kerangka kerja memaksa Anda untuk menunjukkan logo mereka atau bahkan iklan, pada dasarnya mengambil kebebasan Anda untuk memilih siapa / apa yang akan dipromosikan. Tentu saja, ini sering tergantung pada lisensi aktual, biaya lisensi, dll.
  • Ketidakcocokan dengan lisensi: Ini adalah sesuatu yang banyak orang bahkan tidak mempertimbangkan ketika memilih mesin, tetapi tergantung pada apa yang ingin Anda lakukan, ini mungkin menjadi faktor utama. Bahkan jika Anda membeli beberapa mesin, Anda mungkin dilarang mengungkapkan sumber atau materi terkait. Sesuatu seperti ini mungkin membuat modding tidak mungkin, bahkan jika Anda ingin agar pengguna dapat melakukannya. Ambil mesin Sumber Valve ( Half-Life 2 , Team Fortress 2 , dll.) Sebagai contoh: Mereka mengizinkan modder untuk menggunakan mesin mereka untuk proyek mereka sendiri. Jika game-game ini akan didasarkan pada (misalnya) Unreal Engine, ini tidak akan mungkin, karena keterbatasan yang dinyatakan oleh ketentuan lisensi.

11
ditambah satu hal lagi: Setelah Anda belajar openGL, Anda tahu itu. Anda tidak perlu mempelajari kembali dalam setiap bahasa atau mempelajari bagaimana kerangka kerja / mesin tertentu ingin Anda menerapkannya untuk setiap kerangka kerja / mesin baru. Ini juga mengarah ke portabilitas yang lebih besar
wes

Bukan masalah yang paling umum, ada kemungkinan bahwa di mesin atau kerangka ide tidak mungkin untuk membuat atau akan terlalu rumit untuk (mis: minecraft)
akaltar

@akaltar: Benar, tetapi pada saat yang sama saya mengharapkan seseorang untuk memilih mesin yang sesuai dengan tujuan yang dimaksudkan. Misalnya jangan menggunakan mesin 3D untuk game 2D dan sebaliknya.
Mario

9

Sebagian besar mesin dan kerangka kerja yang baik memberikan fungsionalitas yang Anda butuhkan, dan tidak pernah menghalangi Anda.

Apakah mereka? Itu agak tergantung pada apa yang Anda lakukan, secara grafis.

Untuk banyak jenis permainan, ada jawaban standar untuk pertanyaan grafis. Game 2D rata-rata misalnya dapat ditangani dengan baik dengan kecakapan 2D, misalnya, XNA / MonoGame. Hanya saja sprite, yang bisa datang berkelompok untuk medan, bisa diputar, dan sebagainya.

Tetapi bagaimana jika game Anda dulunya adalah game 2D rata-rata, maka Anda membaca tentang beberapa teknik keren, seperti menggunakan peta ketinggian untuk membangun penipu yang memiliki penampilan kedalaman relatif terhadap layar. Dan Anda ingin melakukan itu.

Sekarang Anda menggunakan pemetaan normal dan bahkan pemetaan paralaks. Semua dalam konteks yang sama "rendering sprite", tetapi membutuhkan lebih dari banyak mesin 2D murni dapat menangani. Secara khusus, ini membutuhkan multitextured "sprite blitting", yang bukan sesuatu yang dapat dilakukan oleh banyak mesin 2D.

Apa yang Anda lakukan jika mesin Anda tidak dapat beradaptasi dengan Anda? Jadi itu berarti Anda harus melakukan beberapa lintasan, satu untuk warna dan satu untuk penerangan melalui peta normal. Tapi itu tidak berhasil, karena Anda membutuhkan bidang ketinggian peta normal untuk menggunakan pemetaan paralaks ke pencarian warna. Jadi ... sekarang bagaimana? Anda perlu alpha untuk melakukan transparansi, sehingga Anda tidak bisa mencuri alpha. Dan mesinnya tidak mendukung multitextures.

Jadi, Anda harus memilih salah satu dari yang berikut:

  1. Tinggalkan idenya. Ini berarti game Anda secara fungsional dibatasi oleh mesin Anda.
  2. Retas mesin untuk melakukan multitexture. Dengan asumsi Anda memiliki akses ke kode sumber, Anda sekarang mengambil sendiri untuk menyodok kode orang lain. Ini juga berarti Anda harus memeliharanya dan tidak mematahkannya dengan tersandung.
  3. Lakukan yang terbaik yang Anda bisa, dalam keterbatasan mesin. Jadi Anda bisa mendapatkan paralaks pada peta normal, tetapi tidak pada warna. Mungkin tidak persis seperti yang Anda inginkan, tetapi lebih baik daripada tidak sama sekali.

Sebagai contoh, ambil Geometry Wars. Kebanyakan mesin 2D akan menyedot visual semacam ini, karena kebanyakan dari mereka dibangun di sekitar menggambar sprite, bukan garis. Itu adalah permainan yang membutuhkan penyaji yang sangat terspesialisasi.

Pada akhirnya, Anda harus bertanggung jawab atas unsur-unsur permainan Anda yang penting bagi kebutuhan permainan Anda. Jika tampilan visual gim Anda terutama dikembangkan oleh gaya seni gambar dan model yang Anda gunakan, daripada efek spesifik, maka menggunakan solusi pra-paket tidak masalah. Tetapi jika gaya visual game Anda didefinisikan secara signifikan oleh kode rendering khusus, kemungkinan besar mesin standar bisa menjadi batasan serius jika Anda memutuskan untuk melakukan hal-hal yang berada di luar kotak.

Selain itu, ada masalah yang sangat praktis: tidak semua mesin game sama portabelnya.

Dengan meningkatnya platform mobile baru-baru ini, pasar untuk game tersebar di berbagai perangkat OS dan antarmuka pengguna. Tidak semua mesin bekerja di semua perangkat. Dan jika mesin Anda tidak bekerja pada platform, Anda tentu tidak akan meluangkan waktu untuk membuatnya bekerja pada platform . Bagaimanapun, itu sebabnya Anda menggunakan mesin di tempat pertama, kan?

Jika penting bagi Anda bahwa permainan Anda berfungsi pada platform tertentu, maka Anda lagi harus bertanggung jawab untuk itu. Dan cara "termudah" untuk memastikan kesuksesan dengan ini adalah melakukannya sendiri. Untuk membangun mesin yang dapat bekerja di berbagai platform, mungkin menggunakan kerangka kerja spesifik platform yang lebih sederhana di mana diperlukan untuk menangani beberapa detail tingkat rendah. Dengan begitu, jika rusak, itu adalah kode Anda; Anda adalah orang terbaik untuk memperbaikinya.


Saya suka jawaban Anda, tetapi saya merasa sangat aneh bahwa Anda memilih XNA sebagai contoh Anda. Itu tidak menderita dari salah satu kelemahan yang Anda sebutkan, kecuali kemungkinan portabilitas.
Seth Battin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.