Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Platform Agnostic
Gamedevelopment

Menyelesaikan Player Frustration: Teknik untuk Random Number Generation

by
Length:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by AaliyaA (you can also view the original English article)

Jika Anda memulai percakapan dengan penggemar RPG, Anda tidak perlu waktu lama untuk mendengar kata-kata kasar tentang hasil dan penjarahan acak — dan betapa menyebalkannya mereka. Banyak gamer telah membuat iritasi ini dikenal, dan sementara beberapa developers telah menciptakan solusi inovatif, banyak yang masih memaksa kita melalui tes kegigihan yang menyebalkan.

Ada cara yang lebih baik. Dengan mengubah cara kita sebagai developers menggunakan angka acak dan generator mereka, kita dapat menciptakan pengalaman menarik yang mendorong kesulitan “perfect” tanpa mendorong pemain melewati batas. Namun sebelum kita membahasnya, mari kita bahas beberapa dasar dari Random Number Generator (atau RNGs singkat).

The Random Number Generator dan penggunaannya

Random numbers ada di sekitar kita, digunakan untuk menambahkan variasi ke software kita. Secara umum, penggunaan utama RNGs adalah untuk mewakili peristiwa kacau, menunjukkan volatilitas, atau berperilaku sebagai limiter buatan.

Anda mungkin berinteraksi dengan random numbers, atau hasil dari tindakan mereka, setiap hari. Mereka digunakan dalam uji coba ilmiah, permainan video, animasi, seni, dan hampir semua aplikasi di komputer Anda. Misalnya, RNG kemungkinan diterapkan dalam animasi dasar di ponsel Anda.

Sekarang setelah kita berbicara tentang apa itu RNG, mari kita lihat penerapannya dan bagaimana itu dapat meningkatkan permainan kita .

Standar Random Number Generator

Hampir setiap bahasa pemrograman menggunakan RNG Standar dalam fungsi-fungsi dasar. Ia bekerja dengan mengembalikan nilai acak antara dua angka. RNG Standar dapat diimplementasikan dalam lusinan cara yang berbeda di seluruh sistem yang berbeda, tetapi mereka semua umumnya memiliki efek yang sama: mengembalikan nomor acak di mana setiap nilai dalam rentang memiliki kesempatan yang sama untuk dikembalikan.

Untuk permainan, ini biasanya digunakan untuk mensimulasikan dadu bergulir. Idealnya, mereka hanya boleh digunakan dalam situasi di mana setiap hasil diinginkan untuk terjadi dalam jumlah yang sama.

Jika Anda ingin bereksperimen dengan kelangkaan atau tingkat pengacakan yang berbeda, metode selanjutnya ini lebih cocok untuk Anda.

Random Numbers Berbobot dan Rarity Slotting

Jenis RNG ini adalah dasar untuk RPG apa pun dengan kelangkaan barang. Khususnya, ketika Anda membutuhkan hasil acak tetapi ingin beberapa terjadi dengan frekuensi kurang dari yang lain. Dalam kebanyakan kelas probabilitas, ini biasanya diwakili dengan sekantung kelereng. Dengan RING berbobot, tas Anda mungkin memiliki tiga kelereng biru dan satu warna merah. Karena kita hanya menginginkan satu marmer, kita akan mendapatkan satu marmer, kita akan mendapatkan yang berwarna merah atau biru, tetapi kemungkinan besar warnanya menjadi biru.

Mengapa pengacakan berbobot menjadi penting? Mari gunakan acara dalam game SimCity sebagai contoh. Jika setiap peristiwa dipilih menggunakan metode non-weighted , maka potensi untuk setiap peristiwa terjadi secara statistik sama. Itu membuat kemungkinan bagi Anda untuk mendapatkan proposal untuk kasino baru untuk mengalami gempa dalam game. Dengan menambahkan pembobotan, kita dapat memastikan bahwa peristiwa ini terjadi dalam jumlah proporsional yang mempertahankan alur game.

Bentuk dan kegunaan

Pengelompokan dari item yang sama

Dalam banyak program studi ilmu komputer atau buku, metode ini sering disebut sebagai 'bag'. Nama cantik di hidung, menggunakan kelas atau objek untuk membuat representasi virtual kantong harfiah.

Kerjanya pada dasarnya seperti ini: ada sebuah wadah yang objek dapat ditempatkan ke tempat mereka disimpan, fungsi untuk menempatkan objek ke dalam 'bag', dan fungsi untuk secara acak memilih item dari 'bag'. Untuk merujuk kembali ke contoh marmer kita, ini berarti bahwa Anda akan memperlakukan bag Anda sebagai berisi satu marmer biru, satu marmer biru, satu marmer biru, dan satu marmer merah.

Memanfaatkan metode pengacakan ini, kita dapat secara kasar menentukan tingkat di mana hasil terjadi untuk membantu menyeragamkan pengalaman masing-masing pemain. Jika kita menyederhanakan hasil pada skala dari 'Very Bad' ke 'Very Good', sekarang kita telah membuatnya jauh lebih layak bahwa pemain akan mengalami serangkaian hasil yang tidak diinginkan yang tidak perlu (seperti menerima hasil 'Very Bad' 20 kali berturut-turut).

Namun, secara statistik tetap mungkin untuk menerima serangkaian hasil yang buruk, hanya saja semakin sedikit. Kita akan melihat metode yang sedikit lebih maju untuk mengurangi hasil yang tidak diinginkan dalam waktu dekat.

Berikut ini contoh pseudocode cepat tentang apa yang mungkin terlihat seperti kelas tas:

Implementasi Slotting Radar

Mirip dengan implementasi pengelompokan dari sebelumnya, slotting kelangkaan adalah metode standarisasi untuk menentukan tarif (biasanya untuk membuat proses desain game dan reward pemain lebih mudah untuk dipelihara).

Daripada menentukan tingkat setiap item dalam permainan secara individual, Anda akan menciptakan kelangkaan yang representatif — di mana tingkat 'Common' mungkin mewakili peluang 20 dalam X untuk hasil tertentu, sedangkan 'Rare' mungkin mewakili 1 dalam Kesempatan X.

Metode ini tidak banyak mengubah fungsi sebenarnya dari tas itu sendiri, melainkan dapat digunakan untuk meningkatkan efisiensi di bagian akhir pengembang, memungkinkan sejumlah besar item secara eksponensial untuk diberi kesempatan statistik secara cepat.

Selain itu, kelangkaan slotting berguna dalam membentuk persepsi pemain, dengan mudah memungkinkan mereka untuk memahami seberapa sering suatu peristiwa mungkin terjadi tanpa menghilangkan perendaman mereka melalui angka-angka.

Berikut ini contoh sederhana tentang cara kita menambahkan slotting ke tas kita:

Menilai Variabel Random Numbers

Kita sekarang membicarakan tentang beberapa cara paling umum untuk menangani pengacakan dalam game, jadi mari kita selesaikan dengan yang lebih canggih. Konsep menggunakan tingkat variabel mulai sama dengan tas dari sebelumnya: kita memiliki sejumlah hasil, dan kita tahu seberapa sering kita menginginkannya terjadi. Perbedaan dengan penerapan ini adalah kita ingin menyesuaikan potensi hasil saat terjadi.

Mengapa kita ingin melakukan ini? Ambil, misalnya, permainan dengan aspek yang dapat dikumpulkan. Jika Anda memiliki sepuluh hasil yang mungkin untuk item yang Anda terima, dengan sembilan yang "common" dan satu yang "rare", maka kemungkinan Anda cukup mudah: 90% dari waktu, pemain akan mendapatkan yang umum, dan 10% dari waktu mereka akan mendapatkan yang langka. Masalahnya muncul ketika kita mempertimbangkan banyak penarikan.

Mari lihat peluang Anda untuk menggambar serangkaian hasil umum:

  • Pada penarikan pertama Anda, ada 90% kesempatan untuk menggambar umum.
  • Pada dua kali seri, ada peluang 81% untuk menarik semua milik bersama.
  • Dengan 10 kali seri, masih ada kemungkinan 35% dari semua milik bersama.
  • Dengan 20 kali seri, ada peluang 12% dari semua milik bersama.

Sementara rasio awal 9: 1 tampaknya menjadi tingkat yang ideal pada awalnya, itu hanya berakhir mewakili hasil rata-rata, dan meninggalkan 1 dari 10 pemain menghabiskan dua kali lebih lama daripada yang dimaksudkan untuk mendapatkan yang langka. Selanjutnya, 4% pemain akan menghabiskan tiga kali lebih lama untuk mendapatkan yang langka, dan 1,5% yang sial akan menghabiskan empat kali lebih lama.

Bagaimana Harga Variabel Mengatasi Masalah Ini

Solusinya adalah menerapkan rentang kelangkaan pada objek kita. Anda melakukannya dengan menentukan kelangkaan maksimum dan minimum untuk setiap objek (atau slot kelangkaan, jika Anda ingin menggabungkannya dengan contoh sebelumnya). Sebagai contoh, mari kita berikan nilai minimum kelangkaan barang-barang umum kita bersama 1, dengan maksimum 9. Angka langka akan memiliki nilai minimum dan maksimum 1.

Sekarang, dengan skenario dari sebelumnya, kita akan memiliki sepuluh item, dan sembilan di antaranya adalah satu contoh umum, sementara salah satunya adalah langka. Pada pengundian pertama, ada 90% peluang untuk mendapatkan yang umum. Dengan tarif variabel sekarang, setelah itu umum ditarik, kita akan menurunkan nilai kelangkaannya sebesar 1.

Ini membuat hasil imbang kita berikutnya memiliki total sembilan item, delapan di antaranya umum, memberikan 89% peluang untuk menggambar umum. Setelah setiap hasil umum, kelangkaan barang itu turun, membuatnya lebih mungkin untuk menarik yang langka sampai kita cap keluar dengan dua item dalam tas, satu umum dan satu langka.

Padahal sebelumnya ada kemungkinan 35% untuk menggambar 10 commons berturut-turut, sekarang hanya ada 5% peluang. Untuk hasil outlier, seperti menggambar 20 commons berturut-turut, peluang sekarang berkurang menjadi 0,5%, dan bahkan lebih jauh ke bawah. Hal ini menciptakan hasil yang lebih konsisten untuk pemain kita, dan mencegah kasus-kasus di mana pemain berulang kali memiliki hasil yang buruk.

Membangun Kelas Tingkat Variabel

Implementasi tingkat variabel yang paling dasar adalah menghapus item dari tas, bukan hanya mengembalikannya, seperti ini:

Sementara versi sederhana membawa masalah tersendiri (seperti tas akhirnya mencapai keadaan pengacakan standar), itu merupakan perubahan kecil yang dapat membantu untuk menstabilkan hasil pengacakan.

Ekspansi pada gagasan

Meskipun ini mencakup gagasan dasar tingkat variabel, masih ada beberapa hal yang perlu dipertimbangkan untuk penerapan Anda sendiri:

  • Menghapus item dari tas membantu menciptakan hasil yang konsisten, tetapi akhirnya kembali ke masalah pengacakan standar. Bagaimana kita bisa membentuk fungsi untuk memungkinkan keduanya meningkatkan dan mengurangi barang untuk mencegah hal ini?

  • Apa yang terjadi ketika kita berurusan dengan ribuan atau jutaan item? Memanfaatkan tas yang diisi tas bisa menjadi solusi untuk ini. Misalnya, membuat tas untuk setiap kelangkaan (semua barang umum dalam satu tas, barang bekas di lain) dan menempatkan masing-masing ke dalam slot dalam tas besar dapat memberikan sejumlah besar kemungkinan baru untuk manipulasi.

Kasus untuk Nomor Acak Kurang Tedious

Banyak game masih menggunakan generasi nomor acak standar untuk menciptakan kesulitan. Dengan demikian, sistem dibuat di mana setengah dari pengalaman pemain jatuh di kedua sisi yang dimaksudkan. Jika dibiarkan, ini menciptakan potensi untuk mengulangi kasus pengalaman buruk yang berulang terjadi pada jumlah yang tidak diinginkan.

Dengan membatasi rentang seberapa jauh hasilnya dapat tersesat, pengalaman pengguna yang lebih kohesif terjamin, memungkinkan lebih banyak pemain menikmati game tanpa rasa bosan terus-menerus.

Membungkus

Random number generation adalah pokok desain game yang bagus. Pastikan Anda memeriksa ulang statistik Anda dan menerapkan jenis generasi terbaik untuk setiap skenario untuk meningkatkan pengalaman pemain.

Apakah Anda menyukai metode lain yang tidak saya cakup? Ada pertanyaan tentang pembuatan nomor acak dalam desain game Anda sendiri? Tinggalkan saya komentar di bawah ini, dan saya akan melakukan yang terbaik untuk menghubungi Anda kembali.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.