Saya merancang game strategi pertempuran armada ruang 3D-6DOF berbasis giliran yang sangat bergantung pada kustomisasi kapal. Izinkan saya menjelaskan permainan ini sedikit, karena Anda perlu tahu sedikit tentang itu untuk mengatur pertanyaan.
Apa yang saya tuju adalah kemampuan untuk membuat armada kapal Anda sendiri dengan bentuk khusus dan modul yang terpasang (baling-baling, balok traktor ...) yang akan memberi keuntungan dan kerugian bagi setiap kapal, sehingga Anda memiliki banyak distribusi armada yang berbeda. Misalnya, kapal panjang dengan dua baling-baling di samping akan membiarkan kapal berputar di sekitar pesawat itu dengan mudah, kapal yang lebih besar akan bergerak lambat kecuali jika Anda menempatkan banyak baling-baling di belakang (karena itu menghabiskan lebih banyak "konstruksi" poin dan energi saat bergerak, dan itu akan hanya bergerak cepat ke arah itu.) Saya berencana untuk menyeimbangkan semua permainan di sekitar fitur ini.
Permainan akan berputar di sekitar dua fase: fase pesanan dan pertempuran. Selama fase pesanan, Anda memerintahkan kapal yang berbeda. Ketika semua pemain menyelesaikan fase pesanan, fase pertempuran dimulai dan pesanan kapal diselesaikan secara real-time untuk beberapa waktu, maka aksinya berhenti dan ada fase pesanan baru.
Masalahnya muncul ketika saya berpikir tentang input pemain. Untuk memindahkan kapal, Anda perlu menghidupkan atau mematikan baling-baling yang berbeda jika Anda ingin menyetir, bergerak maju, mengerem, memutar di tempat ... Baling-baling ini tidak harus bekerja dengan kekuatan penuh, sehingga Anda dapat mencapai lebih banyak gerakan kombinasi dengan baling-baling lebih sedikit.
Saya pikir pendekatan ini agak membosankan. Pemain tidak ingin bermain-main dengan motor atau apa pun, Anda hanya ingin MOVE dan MEMBUNUH. Cara saya bermaksud pemain untuk memberi perintah kepada kapal-kapal ini adalah dengan tujuan dan rotasi , dan kemudian AI akan menghitung kekuatan baling-baling yang benar untuk mencapai gerakan dan rotasi itu. Propulsi tidak harus sama dengan seluruh perhitungan putaran (setelah pesanan diberikan) sehingga akan lebih keren jika kapal bereaksi ketika mereka bergerak, menyesuaikan kekuatan baling-baling untuk kebutuhan mereka secara dinamis, tetapi mungkin terlalu sulit untuk diterapkan dan itu tidak benar-benar diperlukan untuk permainan untuk bekerja.
Dalam kedua kasus, bagaimana AI memutuskan baling-baling mana yang akan diaktifkan untuk lintasan terbaik (atau setidaknya tidak terburuk) yang akan dicapai?
Saya memikirkan beberapa pendekatan:
- Belajar AI: Jenis kapal akan belajar tentang pergerakan mereka dengan coba-coba, menyesuaikan perilaku mereka dengan lebih banyak kegunaan, dan akhirnya menjadi "pintar". Saya tidak ingin terlibat sejauh itu dalam pengkodean AI, dan saya pikir itu bisa membuat frustrasi pemain (bahkan jika Anda bisa membiarkannya belajar tanpa bermain.)
- Pergerakan timestep pra-dihitung: Setelah pembuatan kapal, SEMUA gerakan yang mungkin dihitung untuk setiap konfigurasi baling-baling dan daya untuk delta-waktu yang diberikan. Memori intensif, jelek, buruk.
- Lintasan yang dihitung sebelumnya: Sama seperti di atas tetapi tidak untuk setiap delta-waktu tetapi keseluruhan lintasan, yang kemudian akan dipasang sebanyak mungkin. Membutuhkan konfigurasi baling-baling yang tetap untuk seluruh fase pertempuran dan masih membutuhkan banyak memori, jelek dan buruk.
- Continuous brute forcing: AI terus-menerus memeriksa SEMUA konfigurasi baling-baling yang mungkin di seluruh fase pertempuran, menghitung ulang beberapa langkah waktu dan memutuskan mana yang terbaik berdasarkan itu. Con: apa yang baik sekarang mungkin tidak sebagus nanti, dan itu terlalu intensif CPU, jelek, dan buruk juga.
- Single brute forcing: Sama seperti di atas, tetapi hanya brute forcing di awal simulasi, sehingga diperlukan konfigurasi baling-baling yang konstan di seluruh fase pertempuran.
- Pemeriksaan sudut Coninuous: Ini bukan metode gerakan penuh, tapi mungkin cara untuk membuang konfigurasi baling-baling "bodoh". Mengingat vektor normal baling-baling saat ini dan yang terakhir, Anda dapat memperkirakan daya yang dibutuhkan untuk baling-baling berdasarkan sudut. Anda harus melakukan ini terus menerus selama seluruh fase pertempuran. Saya menemukan yang ini baru-baru ini jadi saya tidak terlalu memikirkannya. A priori, ia memiliki kelemahan "apa yang baik sekarang mungkin tidak sebagus nanti", dan tidak peduli dengan baling-baling lain yang mungkin bertindak bersama untuk membuat konfigurasi penggerak yang lebih baik.
Saya benar-benar terjebak di sini. Ada ide?