SceneGraph mana yang optimal untuk memulai dengan pemrograman game kecil?

8

Saya adalah pengembang aplikasi web Java (kebanyakan sisi server) sejak 7 tahun yang baru-baru ini tertarik pada pengembangan game (saya tidak tahu mengapa, mungkin saya bosan). Hari ini saya mencari kerangka kerja. Saya membaca tentang beberapa grafik adegan dan melihat jMonkeyEngine . Dianjurkan di sini dan di sini .

Tujuan pertama saya adalah membuat bidang sederhana dan bola yang bisa digerakkan menggunakan keyboard. Yah, seperti yang saya sebutkan saya adalah pengembang web dan tidak pernah memprogram apa pun, jadi saya mulai dengan tutorial jMonkey. Tapi saya tidak bisa membuat mereka bekerja. Saya melihat-lihat wiki tetapi saya perhatikan bahwa dokumentasi itu tampaknya sangat buruk, setidaknya dibandingkan dengan apa yang saya terbiasa. Saya kemudian melihat beberapa grafik adegan lain (juga untuk C ++) tetapi mereka juga tampaknya memiliki dokumentasi yang buruk dan tidak lengkap.

Dapatkah seseorang merekomendasikan saya grafik adegan yang didokumentasikan dengan baik dengan sampel yang berfungsi? Atau adakah sesuatu seperti "pedoman pamungkas" untuk masuk ke topik ini? Apakah saya pertama-tama perlu tahu bagaimana mengembangkan grafik adegan saya sendiri untuk membuatnya bekerja atau apakah mungkin untuk hanya memahami prinsip-prinsip abstrak dan menggunakannya dari sudut pandang yang lebih tinggi?

Entah bagaimana saya memiliki perasaan saya perlu memahami bagian dalam grafik adegan untuk menggunakannya dengan baik (seperti halnya alat ORM di web dev, Anda tidak dapat menggunakannya dengan baik jika Anda tidak mengerti database)

Saya minta maaf jika pertanyaan ini terlalu 'noobish', tetapi saya hanya ingin berdiri dan melakukan langkah pertama saya.

Chris
sumber

Jawaban:

5

Grafik adegan adalah alat. Ini sebenarnya bukan alat yang cocok untuk ketika Anda baru memulai pengembangan game.

Saya pikir apa yang Anda cari bukanlah grafik adegan tetapi hanya semacam kerangka kerja.

Biasanya saya akan merekomendasikan XNA karena sangat bagus (kuat, modern, didokumentasikan dengan baik, ramah pemula). Tapi ini C # dan saya bisa lihat kamu orang Jawa. Jika Anda lebih suka menggunakan Java, mungkin tempat yang baik untuk memulai adalah porta Java dari Tutorial OpenGL NeHe lama (ini bukan kerangka kerja - tetapi ini adalah sekumpulan tutorial untuk bagaimana melakukannya (pada level rendah) ) jenis hal yang dilakukan kerangka kerja untuk Anda - memuat dan merender model, memuat tekstur, dll).

Dalam beberapa pelajaran pertama Anda akan belajar tentang matriks transformasi, yang pada dasarnya adalah apa adegan grafik (dalam kasus umum).

Untuk menggambarkan grafik adegan secara singkat: Katakanlah Anda memiliki model kincir angin - itu didefinisikan dalam ruangnya sendiri. Anda menerjemahkannya ke tempat yang Anda inginkan muncul di ruang dunia Anda . Kincir angin itu akan memiliki objek anak untuk bilahnya yang berputar - jadi Anda akan menerapkan transformasi rotasi pada bilahnya, dan ia juga akan mewarisi terjemahan orang tuanya untuk menempatkan bilahnya dengan benar di dunia.

Saat Anda memulai, membuat game kecil, Anda tidak perlu terlalu khawatir tentang memiliki struktur data yang rumit dan besar ini. Biasanya Anda hanya akan memiliki beberapa model yang akan Anda terapkan matriks transformasi secara langsung.

(Grafik adegan juga digunakan untuk hal-hal yang berhubungan dengan kinerja seperti pengurutan berdasarkan materi, pemusnahan, dll - semua tidak perlu untuk pemula dan untuk sebagian besar game kecil.)

Andrew Russell
sumber
Saya tidak pernah menggunakan XNA, apakah ia memiliki scenegraph sendiri?
Calvin1602
Tidak. XNA adalah level yang sedikit lebih rendah dari itu. Anda harus menulis sendiri.
Andrew Russell
8

Grafik adegan telah sedikit kehilangan tempat mereka sebagai harus dimiliki. Sebagian besar karena mesin adegan-grafik sentris begitu terikat dalam gagasan scenegraph sehingga membingungkan sendiri. Faktanya adalah bahwa berbagai bagian mesin membutuhkan pandangan dunia yang berbeda, sedangkan mesin sentris scenegraph cenderung ingin memaksakan pandangan yang sama pada semua bagian mesin.
Skenegraf seperti yang dilihat secara tradisional, hierarki objek induk dan objek anak bagus untuk transformasi, tetapi mungkin sama sekali tidak pantas untuk rendering, di mana Anda lebih tertarik pada bahan apa yang digunakan (oke, lokasi juga diperhitungkan, tetapi ada perbedaan cara untuk menghadapinya dan orangtua-anak tidak menjamin mereka dekat, kita cenderung melihatnya seperti itu).
Dalam banyak permainan Anda akan menemukan bahwa Anda memiliki adegan-root dengan banyak anak, tetapi anak-anak itu jarang memiliki anak sendiri. Beberapa yang memiliki anak-anak Anda mungkin juga memperbarui diri sendiri dan melewatkan skenegraf karena menambahkan kompleksitas yang tidak perlu dan kehilangan kinerja (setiap transformasi memeriksa apakah orang tuanya kotor sedangkan hanya beberapa yang benar-benar memiliki orang tua yang akan menjadi kotor sebelumnya (root dunia jarang bergerak).

Kaj
sumber
2

Mengapa tidak menggunakan mesin game seperti Unity3d ? Sangat terkenal karena mudah digunakan dan dengan dokumentasi yang bagus. Saya mencobanya sendiri secara singkat dan terkesan oleh seberapa baik didokumentasikan semuanya API dan sejumlah tutorial yang baik. Saya memiliki masalah dengan lengan saya dan beberapa tahap dan harus mendapatkan bantuan dari istri saya. Dia tidak memiliki petunjuk tentang pemrograman tetapi berpikir Unity3D benar-benar keren. Anda dapat mencapai banyak hal hanya dengan drag and drop. Anda dapat menggunakan beberapa bahasa skrip dengan mesin. Ini mendukung JavaScript antara lain, yang saya kira memberi Anda latar belakang harus menarik. Anda bisa mendapatkan versi gratis dengan semua fitur yang dibutuhkan pengembang game pemula.

Jika Anda tidak membutuhkan 3D, maka GameMaker adalah alternatif yang bagus. Sangat mudah untuk masuk dan membuat game. Saya menggunakannya di Universitas dan membuat beberapa permainan dengan itu. Sangat menyenangkan. Ini membuat Anda benar-benar berkonsentrasi untuk membuat game dan Anda tidak perlu terlalu memikirkan teknologi. Anda dapat menyusun game sepenuhnya dengan hanya titik dan klik. Tetapi ketika Anda maju dan memahami cara kerjanya, Anda mulai menulis skrip Anda sendiri.

Menurut saya itu bekerja jauh lebih baik daripada mengatakan GameSalad yang tidak memiliki bahasa skrip. Segera setelah Anda mulai melakukan hal-hal yang lebih rumit, itu menjadi sangat mengganggu dengan hanya menunjuk dan klik saya pikir.

Erik Engheim
sumber
0

Saya sepenuhnya setuju dengan Kaj. Untuk wawasan lebih lanjut tentang hal ini, lihat gamearchitect (omong-omong, jika Anda tertarik pada pengembangan game, baca saja seluruh situs, terutama yang lama)

Calvin1602
sumber