Mengapa XNA tidak dianggap sebagai mesin game?

13

Saya hanya ingin tahu apa yang hilang dari XNA, untuk dianggap sebagai mesin game. Itu melakukan semua hal yang harus dilakukan mesin permainan (kecuali bagian fisika); itu juga memiliki dukungan untuk setiap aspek yang didefinisikan dalam artikel Wikipedia di mesin game .

Mengapa XNA tidak dianggap sebagai mesin game?

Ali1S232
sumber
19
@Miro Itu tidak masuk akal.
Bebek Komunis
2
Apa gunanya? Jika itu melakukan pekerjaan yang Anda butuhkan, gunakan itu. Jika tidak, maka jangan. Siapa yang peduli bagaimana orang menyebutnya? Itu hanya label, sebagian besar digunakan dari monyet pemasaran;)
Maik Semder
itu hanya karena komentar The Duck Komunis menanggapi komentar saya dalam pertanyaan ini
Ali1S232
4
@Maik Semder Ini bukan label sama sekali. Mesin dan kerangka adalah dua hal yang berbeda dan terpisah, dan XNA adalah yang terakhir. Sangat berguna untuk membedakan dan memahami bahwa XNA bukan mesin, jika tidak, Anda mungkin akan sangat bingung ketika mengetahui Anda benar-benar perlu membuat mesin di XNA, atau bahwa itu tidak menawarkan plug-in-some-bits-and- kemampuan bermain seperti mesin sebenarnya.
doppelgreener
3
@Maik Ini adalah bagian dari cara kami mengetahui fungsinya. Saya katakan driver , Anda tahu apa itu dan tidak, apa fungsinya dan bagaimana Anda bisa menggunakannya. Sesuatu yang serupa harus terjadi ketika saya mengatakan framework - tetapi hanya jika Anda mengenali apa itu framework, dan apa yang bukan (engine). Mempertimbangkan implikasi praktis itu, saya terutama keberatan jika Anda mengatakan "Siapa yang peduli bagaimana orang menyebutnya? Itu hanya label"
doppelgreener

Jawaban:

28

Microsoft XNA adalah seperangkat alat dengan lingkungan runtime terkelola yang disediakan oleh Microsoft yang memfasilitasi pengembangan dan manajemen permainan komputer. XNA berusaha membebaskan pengembang game dari menulis "kode boilerplate berulang" dan untuk membawa berbagai aspek produksi game ke dalam satu sistem tunggal.

Ini dirancang sebagai kerangka kerja - sebenarnya, XNA adalah Microsoft XNA Framework - jadi secara teknis itu bukan mesin dengan nama.

Tidak ada 'mesin' - jika Anda perhatikan, Anda mendapatkan kelas utama dari XNA.Framework.Game dan harus menimpa sendiri fungsi undian dan pembaruan. Tidak ada sistem render sentral, atau sistem input, atau sistem audio yang siap. Ada SpriteBatch dan kelas vertex, ada KeyboardState, dan ada beberapa kelas audio..tapi mereka hanya abstraksi atas kode gambar tingkat rendah.

EDIT: Demi kegunaan, mengapa ada masalah jika dilabeli sebagai engine, framework, library, atau toolset?

Untuk menjernihkan semuanya: Saya sedang mengembangkan mesin di XNA. Jelas saya tidak bisa melakukan itu dalam sesuatu seperti Unreal, seperti yang telah disebutkan Jonathan. Namun, ada beberapa hal yang saya rasa penting agar XNA tidak miliki:

Plug-n-play: Saya ingin bisa membuat semacam template - miliki HP ini, mesh ini, animasi ini dan BOOM! Saya memiliki NPC di game saya.

Tingkat rendah tersembunyi - XNA sudah melakukan ini, tapi saya tidak ingin bermain-main dengan GameServiceProviders. Saya hanya ingin mendorong barang bersama.

Game terpisah dari engine - Mungkin ada kelas 'game', tapi saya ingin memisahkan logika dan kode saya dari sistem basis. Saya tidak ingin if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)bercampur dengan memperbarui buffer pada renderer grafik saya.

Bebek Komunis
sumber
Saya menerima bahwa Anda harus menimpa Anda menggambar dan memperbarui pengaturan tetapi itu tidak berarti tidak memiliki mesin rendering, intinya itu membuat semuanya siap untuk Anda menggambar, dan itu tidak hanya panggilan undian abstrak hanya melihat sampel itu ia memiliki tidak kurang dari 2d GameEngine (saya tidak memeriksa hal-hal 3d benar-benar), dan sejauh yang saya ingat itu memiliki pengontrol input, dan maksud saya apakah itu hanya kerangka kerja karena microsoft menamakannya begitu atau apakah ia memiliki alasan logis ?
Ali1S232
1
@Gajet: Pertimbangkan sejenak bahwa ada diskusi di internet tentang cara membuat mesin di XNA tetapi tidak untuk Unreal Engine atau CryEngine. Saya pikir karakteristik umum dari mesin permainan adalah bahwa Anda bisa memasukkan bit-bit dan sesuatu akan hilang ( TV Tropes menegaskan mesin bisa cukup data-driven dalam hal ini ). Sebaliknya, XNA membuat Anda melakukan sendiri setiap ons pekerjaan - Anda tidak perlu membuat middleware untuk berinteraksi dengan perangkat.
doppelgreener
1
Terlebih lagi saya tidak percaya saya telah menemukan definisi yang jelas tentang mesin gim, tetapi yang saya tahu adalah ada mesin gim , dan XNA sama sekali tidak melakukan hal-hal yang mereka lakukan (kecuali menyediakan middleware, dan beberapa komponen tingkat rendah yang sangat sederhana).
doppelgreener
@ Jonathan Hobbs: sekarang saya bisa melihat apa yang Anda bicarakan tetapi sekali lagi saya sudah mencoba GameBryo (NetImmerse) dan itu dianggap sebagai gameengine tetapi sampai lightspeed ia memiliki lebih sedikit fitur daripada XNA itu sendiri, itu hanya middlewere belaka, jadi saya pikir kami dapat mengubah judul pertanyaan menjadiwhat makes an sdk to be called a GameEngine?
Ali1S232
1
Tapi Anda bisa mengembangkan mesin menggunakan mesin yang sudah ada sebagai kerangka kerja jika Anda benar-benar ingin menjadi ahli. Banyak orang mengambil gempa 3 tech kemudian membuat mesin yang lebih bermanfaat. Kemudian lagi Anda juga bisa membuat game tanpa "mesin" sama sekali jika Anda benar-benar menginginkannya. Lebih tepat menyebut xna suatu kerangka kerja, tetapi saya tidak tahu tentang membuat perbedaan dari "mesin", karena tidak begitu kuat didefinisikan sebagai "kerangka kerja".
Tetrad
5

Kerangka kerja menyediakan arsitektur minimal yang dibangun untuk jenis aplikasi tertentu. Ini meminimalkan asumsi tentang detail implementasi di luar tujuan arsitektur yang dinyatakan. Sementara kerangka pengembangan game lintas-platform mungkin memiliki tujuan untuk memberikan "apa yang umum untuk (hampir) semua game komputer, terlepas dari platform", dan mungkin hanya menerapkan faktor-faktor abstrak seperti pengaturan waktu dan manajemen entitas, Kerangka Kerja XNA (secara implisit) memiliki tujuan untuk memberikan "apa yang umum untuk (hampir) semua game komputer yang ditulis untuk dieksekusi pada XNA CLR". Mengingat bahwa fokus ini sangat sempit, mereka telah dapat memasukkan fitur engine dengan impunitas. Mereka menggabungkan semuanya di bawah judul "Kerangka Kerja", karena ini menunjukkan kebebasan implementasi tertentu yang akan Anda nikmati sebagai pengembang game.

Secara kasar, sebuah kerangka kerja harus tidak membatasi mungkin sambil tetap memberikan dasar yang bermanfaat. Mesin, di sisi lain, biasanya lebih fokus ke fitur-fitur tertentu, dan saat menggunakannya, Anda menerima bahwa ada batasan tertentu yang Anda akan terikat.

Insinyur
sumber
2

Saya tidak pernah menggunakan 'mesin permainan' tetapi pemahaman saya tentang ini lebih sebagai seperangkat alat yang telah ditentukan sebelumnya yang dibundel dengan struktur kerangka permainan yang telah ditentukan sebelumnya untuk pengembangan jenis permainan tertentu. Dan tentu saja bahwa struktur untuk pengembangan jenis permainan tertentu adalah faktor penentu utama dalam mesin permainan, tentu saja itulah yang memikat artikel Wikipedia tersebut. Bagi saya kerangka XNA lebih mirip dengan set pustaka pihak ketiga, seperti AJAX, dalam hal itu menambahkan rutinitas pra-dibangun ke bahasa pemrograman telanjang yang ada. Itu tidak memberikan batasan atau pedoman apa pun yang Anda, sebagai programmer, dapat dan tidak bisa lakukan dengan rutinitas perpustakaan ini. Dalam pikiran saya itu tidak mirip dengan mesin dengan cara apa pun. Lalu saya datang dari latar belakang perangkat lunak bisnis / web centric,

Saya telah membangun kerangka kerja untuk ide gim menggunakan XNA dan rasanya seperti menggunakan pustaka lain di atas C #. Saya akan menggunakan proses yang telah saya retas dalam program pengujian untuk menghasilkan dua atau tiga game untuk windows dan mungkin Xbox.

Jadi, seperti yang saya katakan, dalam pikiran saya ini jauh dari apa yang saya pahami sebagai 'Mesin Game' sehingga ketika saya menemukan posting ini saya tidak tahu mengapa seseorang akan membuat perbandingan itu. Apakah aku salah?

pengguna29569
sumber