Thursday, May 6, 2010

Game Manager Part 1 (Tugas 2)

Manager Game (GM)?

Jadi, apa itu Manager Game? Jika Anda melihat diagram di atas, hal pertama yang harus Anda perhatikan adalah bahwa Manajer memiliki semua Game Game Aktor, Aktor normal, Komponen dan Pesan. Secara khusus, mereka mengelola keberadaan dan interaksi antara semua aktor dan komponen dalam dunia Anda.Ini adalah jantung dari aplikasi Anda.

Jadi, apa artinya? Sampai sekarang, jika Anda telah menulis aplikasi yang menggunakan Delta3D, Anda telah meletakkan aplikasi Anda bersama-sama dengan tangan.Tentu, Delta3D memberi Anda semua bagian Anda butuhkan termasuk: manajemen adegan, fisika, kemampuan audio, kemampuan untuk objek load, Dynamic Aktor Perpustakaan, dampak lingkungan, pencahayaan, dukungan daerah, kamera dan karakter animasi!

Namun, sekarang Anda memiliki semua bagian, bagaimana Anda akan menempatkan semua bersama-sama untuk membuat game? Siapa yang akan memegang daftar semua objek dalam permainan? Dan komunikasi, bagaimana Anda mengelola? Bagaimana senjata baru Anda masuk ke dunia sehingga pemain bisa mengambilnya?Bagaimana Anda kirim pemain dia ditembak? Dan, begitu Anda menembaknya, bagaimana ia memberitahu sisa jaringan yang dia terluka? Ada banyak hal yang perlu dikhawatirkan untuk mengelola permainan Anda. Untungnya Manager Game menyediakan arsitektur inti untuk membuat semuanya terjadi!
Pesan,Aktor dan Komponen.

Untuk mengelola permainan Anda, maka GM tidak tiga hal utama. Yang pertama, dan yang paling penting, adalah mengelola pesan: lebih tepatnya, Game Pesan. Game Pesan apa yang akan Anda gunakan untuk berkomunikasi antara Pelaku, Komponen, dan GM. Pesan dapat digunakan untuk mengkomunikasikan apa saja: perbaruan untuk kesehatan pemain; acara untuk menyelamatkan sandera # 12; fakta bahwa NPC saja memasuki dunia; dan bahkan perilaku centang sederhana. Pesan mengkomunikasikan semua perubahan perilaku dan negara dalam sistem, tetapi pesan tidak mengirim sendiri. GM tidak itu - ia menerima dan pesan rute ke dan dari aktor dan komponen.

Tugas kedua dari GM adalah untuk terus ke SEMUA aktor dalam sistem. Ini mencakup baik aktor reguler dan GameActor baru (lihat di bawah). Ini trek aktor yang Anda buat dalam kode atau di peta Anda (dibuat oleh TAHAP ). GM mengatakan aktor pesan proses, akan memastikan mereka masuk dan keluar dari adegan di saat yang tepat, dan bahkan memberitahu mereka untuk 'kutu', sehingga mereka dapat melakukan hal-hal.

Tugas ketiga dari GM adalah untuk mendukung GMComponents. Apa komponen, Anda bertanya? Komponen adalah pada dasarnya objek tingkat tinggi yang bekerja dengan Game Pesan. Namun, bukan itu yang Game Aktor lakukan? Ya dan tidak. Aktor melakukan pesan proses, namun, Anda akan sering banyak kasus seorang aktor tertentu dalam permainan. Komponen biasanya tingkat yang lebih tinggi. Mereka melakukan hal-hal seperti perilaku jaringan, penegakan aturan permainan, penebangan, perhitungan mati. Sedangkan aktor permainan hanya menerima pesan khusus yang mereka minati, GM Komponen menerima semua pesan.

Apa yang dimaksud dengan Aktor Game?

Mudah-mudahan Anda sudah akrab dengan Aktor dan ActorProxies .Tapi, apa yang seorang Aktor Game lakukan? Secara sederhana, sebuah permainan adalah Aktor Aktor yang dirancang untuk bekerja secara langsung dengan Manajer Game. Jika Anda belum melakukannya, sekarang akan menjadi waktu yang tepat untuk belajar konsep dasar Aktor dan Aktor Dynamic Layer. Kami akan bekerja dengan Aktor banyak, sehingga Anda mungkin ingin membaca tutorial atau dokumentasi desain .

Jadi, mengapa kita perlu membedakan antara Aktor dan Aktor Game? Aktor Reguler atau "non-permainan" aktor pada dasarnya objek statis dalam permainan dunia. Anda mungkin menggunakannya untuk tingkat geometri, jerat statis seperti rumah-rumah, lampu non-bergerak, pohon, dan mungkin daerah. Namun, objek statis yang membosankan! Aktor Game adalah apa yang membawa permainan hidup Anda! Aktor Game mendapatkan berdetak, dapat memproses Game Pesan, dan umumnya dapat berinteraksi dengan dunia! GameActor dibangun di atas konsep aktor diperkenalkan oleh Dal. Jadi secara alami, sebuah GameActor akan membutuhkan GameActorProxy. Bahkan, Manajer Game hanya memahami Proxy - yang berarti Anda harus menggunakan mereka! Dengan memfokuskan secara eksklusif pada Aktor Proxy, GM menjadi sangat fleksibel. Sama seperti TAHAP , itu GameManager kritis yang benar-benar generik. Ini tidak bisa mengetahui perbedaan antara tangki dan pemutar, antara rudal dan tenda. Jika GM tidak generik, Anda akan pernah bisa menerapkan perilaku bagus seperti penebangan hutan dan pemutaran (lihat contoh testLogger).

Apa yang dimaksud dengan Komponen Manager Game?

Dalam bentuk yang paling sederhana, GMComponent adalah obyek yang dikelola oleh Manager Game yang dapat memproses dan mengirim pesan. Tidak seperti GameActors, GMComponents menerima setiap pesan dalam sistem. Biasanya menyediakan komponen sistem tingkat tinggi perilaku lebar, tetapi mereka dapat melakukan apa saja cukup banyak yang Anda inginkan. GM Komponen adalah cara utama untuk menambahkan perilaku kustom untuk Game Manager.

Anda mungkin bertanya-tanya mengapa kita perlu Komponen sama sekali. Mengapa tidak hanya membuat subclass Manager Game dan memasukkan kode khusus Anda di sana? Jawabannya adalah fleksibilitas. Bayangkan bahwa Anda menulis perilaku untuk benda mati-hisab. Saat itulah Anda memperkirakan di mana sebuah benda berdasarkan posisi terakhir diketahui dan gerakan informasi. Sekarang, bayangkan bahwa Anda menempatkan kode baru Anda langsung ke dalam GM. Dan, kemudian Anda menambahkan beberapa perilaku untuk mengirim pesan di dalam jaringan dan tongkat yang di GM juga Anda. Dan, kemudian Anda ingin log pesan untuk log file untuk mendukung pemutaran, sehingga Anda menempatkan kode yang di GM Anda. Akhirnya, suatu hari atasan Anda meminta Anda untuk menjalankan seluruh permainan Anda dengan kode jaringan berbeda! Atau, dia ingin Anda mengambil kode penebangan tergantung pada apakah Anda berada di klien atau server. Tapi, seiring waktu, Anda telah menciptakan kekacauan saling bergantung kode dalam Anda GM yang sangat sulit untuk memisahkan! Sebaliknya, kami sarankan menempatkan perilaku komponen seperti DeadReckoningComponent, NetworkingComponent, dan sebuah LoggerComponent. Mereka komponen kemudian menjadi perilaku agregat yang Anda dapat mengumpulkan Namun Anda suka. Anda dapat menambahkan atau menghapusnya, dinamis, pada saat runtime. Intinya adalah bahwa GameManager inti Anda akan benar-benar tersentuh.

Karena komponen mendapatkan semua pesan dalam sistem, mereka memiliki kesempatan untuk tahu tentang semua aktor dan segala sesuatu yang terjadi! Anda dapat membangun komponen sederhana yang menunggu untuk pesan tertentu atau mendengarkan keyboard / mouse. Anda dapat memiliki komponen kompleks yang terus ke daftar besar aktor dan hierarki penggunaan benda-benda pembantu. Komponen adalah arsitektur diperpanjang untuk menambahkan perilaku penting untuk permainan Anda. Jika Anda masih tidak dijual di GMComponent, jangan khawatir. Kemudian dalam tutorial ini, Anda akan membangun GMComponent Anda sendiri dan yang seharusnya membantu membereskan masalahnya.

Petunjuk berguna - Cobalah untuk menghindari membuat subclass dari GameManager tersebut. Delta3D sepenuhnya mendukung ini, tetapi secara umum lebih baik untuk mencoba menggunakan komponen untuk mencapai perilaku yang Anda butuhkan, bukan subclassing GM.

Apa yang dimaksud dengan Pesan Game?

Sekarang bahwa Anda memahami lebih lanjut tentang Komponen dan Game Aktor, mari kita kembali ke fitur pertama GM: Pesan Game. Game pesan hanya cara para aktor dan komponen berkomunikasi satu sama lain. Pesan biasanya digunakan untuk mengirimkan data (ex: perubahan properti) atau perilaku (permintaan atau perintah). Diagram berikut memperlihatkan gambaran tingkat tinggi aliran pesan ke / dari Game Aktor, Manager Game, dan Game Manager Komponen. 

Ada beberapa metode dasar Anda harus akrab dengan bekerja sama dengan pesan:
  1. SendMessage () pada GameManager
  2. SendNetworkMessage () pada GameManager
  3. Invokables pada GameActorProxy
  4. ProcessMessage pada GMComponent
  5. DispatchNetworkMessage pada GMComponent
Manager Game memiliki dua mekanisme utama untuk penanganan pesan: SendMessage (), dan SendNetworkMessage ().  Mudah-mudahan, ini sebagian besar langsung.  Untuk mengirim pesan dari mana saja di permainan Anda, Anda menelepon SendMessage () pada GameManager tersebut. Untuk mengirim pesan yang Anda ingin keluar melalui jaringan, Anda menelepon SendNetworkMessage () pada GameManager tersebut.  Hanya beberapa komponen harus memusatkan perhatian pada versi jaringan.
Komponen juga memiliki dua metode: ProcessMessage () dan DispatchNetworkMessage ().  Komponen menerima semua pesan.  Jadi, Anda timpa ProcessMessage () menerima pesan normal.  Kemudian, jika Anda adalah beberapa proses komponen jaringan, Anda timpa DispatchNetworkMessage () untuk menerima pesan yang siap untuk dikirim melalui jaringan.  Biasanya RulesComponent bertanggung jawab untuk mengambil pesan normal dan kirim kembali mereka sebagai pesan jaringan.
Untuk aktor itu sedikit berbeda.  Aktor tidak pernah menerima pesan jaringan, mereka hanya mendapatkan pesan normal.  Karena sering ada BANYAK aktor dalam sistem, kita tidak ingin mengirimkan semua pesan ke semua aktor.  Sebaliknya, aktor mendaftar untuk menerima jenis tertentu pesan dengan menggunakan Invokables.  Kami akan menjelaskan hal ini dengan lebih rinci nanti.  Untuk sekarang, Anda harus berkonsentrasi pada Invokables 3 default yang disediakan untuk Anda GameActor: TickLocal (), TickRemote (), dan ProcessMessage ().
 

No comments:

Post a Comment