Cara Efektif Membuat Pola Peluru


8

Saat ini saya sedang membuat penembak top-down seperti Touhou. Faktor terpenting dari gim ini adalah bahwa ada banyak pola dan cara peluru dihasilkan dan ditembakkan pada pemain, lihat video ini: http://www.youtube.com/watch?v=4Nb5Ohbt1Sg#start=0 : 60; end = 9: 53 ;

Saat ini, saya menggunakan kelas "Pola" yang memiliki serangkaian langkah untuk bergerak dan menembak. Namun, saya merasa metode ini cukup sulit karena saya harus membuat Pola baru untuk setiap serangan dan mungkin kelas Bullet baru yang akan menerapkan perilaku tertentu.

Pertanyaan ini menerima komentar yang menyarankan saya harus melihat ke BulletML untuk memudahkan pembuatan dan penyimpanan peluru dengan pola tertentu. Kelihatannya layak, tetapi itu membuat saya bertanya-tanya, solusi apa lagi yang Anda miliki yang harus saya pertimbangkan?

Memperbarui

Desain saya saat ini adalah sebagai berikut:

Diagram UML

Contoh pola yang diterapkan:

GigasPattern saya pertama kali mengeksekusi sebuah teleportasi yang memindahkan Alice ke titik tertentu (X, Y) di layar. Setelah ini selesai, pola mulai menggunakan Mover untuk memindahkan sprite (sedangkan teleportasi memiliki efek dan animasi terpisah). Ini bukan masalah, sungguh, karena cukup sederhana.

Shooter juga menciptakan berbagai Serangan, yang merupakan kelas lagi yang dapat digunakan Shooter untuk membuat berbagai pola peluru, seperti yang ada dalam pertanyaan yang saya posting. Setelah Penggerak mencapai tujuannya, baik penembak berhenti dan kembali ke keadaan tidak aktif. Pola selesai, dihapus oleh AI dan yang baru akan dipilih.

Jawaban:


4

Akan menjadi melelahkan tidak peduli apa pun, menciptakan level seperti itu sepertinya tugas yang mudah, dan mungkin tidak terlalu sulit, tetapi akan selalu membutuhkan banyak waktu. (Perkiraan yang sangat kasar: 1000 kali waktu bermain untuk sesuatu yang sekeren video itu.)

Jika Anda menggunakan bahasa skrip Anda masih harus menulis kode yang persis sama, hanya dalam bahasa yang berbeda, keuntungannya adalah Anda dapat membuat level skrip tanpa mengacaukan kode yang dikompilasi. Jika Anda bekerja di tim besar Anda pasti menginginkannya, tetapi sebagai pengembang tunggal biasanya tidak ada bedanya.

BulletML bukanlah jawaban dalam dirinya sendiri, Anda membutuhkan implementasi yang berfungsi dalam bahasa Anda, yang harus berinteraksi dengan sisa gim Anda. Dan masih ada pekerjaan besar menulis semua file XML.

Saya cenderung mengatakan bahwa Anda harus tetap memprogram pola yang diinginkan di kelas seperti yang Anda lakukan, tetapi mungkin Anda bisa mengungkapkan beberapa sampel dari struktur Anda saat ini, mungkin ada perbaikan yang harus dilakukan.

Sunting:
Mungkin ada satu realisasi yang dapat menyederhanakan banyak hal, dan memberi Anda kotak alat yang sedikit lebih baik. Anda dapat menggambarkan AI sebagai suatu pola, idealnya hanya ada satu jenis entitas, tetapi entitas tersebut dapat memilih untuk memanggil entitas lain dari jenis yang sama untuk melakukan pekerjaan. Ini akan membebaskan Anda dari segala batasan seberapa dalam Anda bisa mengumpulkan propagasi tanggung jawab dan memberi Anda satu jenis kelas yang kurang untuk dipikirkan.

Setidaknya itulah yang saya kumpulkan dari diagram. Meskipun Anda seharusnya membatasi jumlah kode yang Anda masukkan dalam sebuah pertanyaan, tidak pernah ada pengganti lengkap untuk melihat beberapa kode aktual.


Tentu, terima kasih atas bantuannya. Saya telah menyertakan diagram UML yang disederhanakan dari desain saya saat ini dan juga contoh aplikasi dari desain yang sedang bekerja. Saya harap ini membantu!
IAE

2

Mungkin Anda bisa menerapkan bahasa skrip kecil sendiri untuk gim Anda. Maka Anda akan dapat menuliskan perilaku bullet dengan hanya menambahkan skrip baru. Keuntungan dari bahasa skrip sendiri adalah Anda bisa menggunakannya di bagian lain gim Anda. Atau Anda bisa mencoba menggunakan Lua (saya tidak tahu bahasa / kerangka apa yang Anda gunakan). Tapi menurut saya, Lua akan berlebihan jika Anda hanya ingin memiliki pola movin.

Antara: Aku sudah melakukan ini untuk penembak ruang, tetapi untuk perilaku musuh. Ini bekerja dengan baik, jadi Anda benar-benar bisa mencobanya.


Saya menggunakan AS dan tidak cocok untuk menggunakan sumber daya lokal apa pun, namun menggunakan bahasa scripting atau XML mungkin bernilai bagi saya, jadi terima kasih atas sarannya.
IAE

2

Saya berada dalam situasi yang persis sama beberapa waktu lalu dan mulai menerapkan arsitektur saya sendiri untuk pola-pola peluru. Saya menyerah, karena saya menemukan implementasi BulletML untuk C # / XNA: BulletML C #

Saya harus membuat beberapa perubahan, tetapi sekarang menciptakan pola yang terlihat spektakuler benar-benar sangat mudah. Ada demo hebat di sini yang menunjukkan kepada Anda caranya, beberapa baris XML, dapat membuat pola yang mengagumkan.

Jika Anda bekerja pada C #, saya sangat menyarankan menghindari menciptakan kembali roda. Apalagi jika ingin memiliki pola yang sangat kompleks. Mungkin perlu beberapa waktu untuk membungkus kepala Anda di sekitar BulletML, tetapi, menurut saya, itu sepadan dengan waktu Anda.

Namun, jika Anda memutuskan untuk tidak menggunakan BulletML, maka, paling tidak, lihat kode C # dan dapatkan gagasan tentang arsitekturnya. Mungkin memberi Anda beberapa ide.


Terima kasih! Saya baru saja mulai menjauh dari ActionScript untuk proyek ini dan sekarang saya menulisnya dalam C # / XNA. Saya pasti akan melihat kodenya, terima kasih.
IAE
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.