Saya ingin membuat game sederhana yang mirip dengan buku petualangan pilihan Anda sendiri. Pemain disajikan dengan teks naratif dan dapat memilih tindakannya dari daftar kemungkinan. Ini, pada gilirannya, mengarah ke teks naratif baru, tak terhingga. Satu-satunya hasil adalah bahwa tergantung pada beberapa keputusan sebelumnya, daftar kemungkinan mungkin berbeda.
Pada pandangan pertama, ini terdengar seperti beban pernyataan if-else, sehingga menyiratkan mesin aturan akan ada. Tapi, itu juga terdengar seperti mesin negara yang terbatas bagiku.
Saya akan menulis ini di Jawa atau mungkin Groovy. Saat ini saya lebih tertarik pada masalah konseptual, yaitu bagaimana hal ini harus dilakukan pada tingkat yang luas (bagaimana orang menerapkan permainan catur atau kartu?), Tetapi beberapa saran tentang perpustakaan tertentu juga diterima.
Jelas, "mesin permainan" dari judul tidak merujuk pada deteksi tabrakan atau mekanika fisika / grafik lainnya, tetapi logika yang memutuskan opsi apa yang diberikan pemain terhadap situasi dan kondisinya saat ini.
Jawaban:
Berdasarkan apa yang Anda katakan dalam komentar, beginilah cara saya menanganinya:
Menerapkan cerita sebagai mesin negara yang terbatas, dengan twist. Setiap Negara adalah halaman cerita, dan setiap Transisi adalah tautan dari satu halaman ke halaman lainnya. Tetapi setiap Transisi juga memiliki Ketentuan . Ketentuan bisa nol, dalam hal Transisi selalu muncul sebagai opsi yang tersedia, tetapi jika tidak, maka mereka harus dievaluasi ketika halaman ditampilkan, dan jika evaluasi kembali
False
, Transisi tidak muncul.Ada dua cara dasar Anda bisa menerapkan Ketentuan. Yang pertama adalah untuk mengatur mesin skrip lengkap di dalam permainan, dan kemudian Kondisi terlihat seperti
return player.inventory.contains(GUN)
. Ini awalnya lebih rumit untuk diatur, tetapi memungkinkan untuk skrip yang lebih maju.Yang kedua adalah meng-hard-code kondisi yang mungkin menjadi semacam objek. Itu bisa memiliki
RequiredItem
bidang, dan jika bidang itu memiliki nilai, Anda memeriksa untuk melihat apakah kondisi terpenuhi. Sistem ini lebih mudah diatur. Ini membatasi apa yang dapat Anda lakukan lebih banyak daripada scripting, tetapi jika Anda tidak membutuhkan fleksibilitas yang disediakan oleh mesin skrip, mungkin jauh lebih mudah untuk digunakan.sumber
Saya pikir jawabannya ada di judul: Anda memerlukan mesin aturan. Jika Anda berencana untuk menulis aplikasi Anda dengan Java, tentu saja Anda dapat menulis sendiri seperti yang disarankan Gilbert Le Blanc, ATAU Anda mungkin ingin melihat Drools , mesin aturan.
Dengan Drools, atau mesin aturan lainnya, Anda dapat menentukan situasi parameter yang menghasilkan daftar tindakan yang mungkin. Anda dapat menyandikan aturan sederhana yang dimiliki:
pemain ada di pageX:
Yang menarik dengan Drools adalah Anda bisa menyandikan semua aturan dalam file Excel, dan kemudian di awal gim, membuat Drools membaca file itu. Setelah itu semua ada di memori, Anda hanya perlu repot dengan User Interface Anda.
Berikut adalah beberapa sumber daya untuk membantu Anda memulai dengan Drools:
sumber
Mesin negara kedengarannya seperti pendekatan yang aman untuk memodelkan game Anda. Ada banyak perpustakaan untuk fiksi interaktif:
http://en.wikipedia.org/wiki/Category:Text_adventure_game_engines
tidak disebutkan dalam wikipedia, benang sangat populer saat ini.
sumber
Secara konseptual, gim Anda mudah. Dalam psudeocode, akan terlihat seperti ini:
Sekarang, merantai semua teks secara bersamaan sehingga mengalir dari satu tindakan ke tindakan berikutnya adalah bagian yang sulit. Anda bisa menggunakan database relasional. Anda bisa menggunakan pohon.
Agak sulit untuk lebih spesifik tanpa mengetahui bahasa komputer apa yang ingin Anda gunakan. Karena Anda menyebutkan Jawa, saya akan lebih condong ke arah struktur pohon.
Buat kelas respons yang menampung satu respons dan tautan ke kelas teks.
Buat kelas teks yang menampung teks petualangan, dan Daftar respons sebagai contoh kelas respons.
Diedit untuk menjawab komentar:
Anda tidak menghitung apa pun berdasarkan model ini. Dengan menggunakan contoh Anda, pohon akan terlihat seperti ini, di mana T adalah teks dan A adalah pilihan tindakan:
Ya, ada beberapa duplikasi teks, tetapi dengan mengikuti rantai, tindakan di masa depan dapat memperhitungkan keputusan masa lalu. Ini pohon keputusan besar.
sumber