Bagaimana menyeimbangkan pengalaman memperoleh dalam RPG

10

Saat ini saya sedang mengembangkan game RPG dengan poin pengalaman klasik dan mekanik levelup. Pemain membunuh monster, mendapatkan poin pengalaman, naik level ketika mereka mengumpulkan cukup dan menjadi lebih kuat.

Bagaimana cara menyeimbangkan jumlah poin Exp yang diperlukan untuk mencapai setiap level dan jumlah Exp yang diberikan oleh setiap monster di setiap level?

Philipp
sumber
Terima kasih sudah memposting. Saya pikir menjawab pertanyaan sendiri untuk berbagi informasi itu bagus. Namun, saya pikir pertanyaan itu harus bisa berdiri sendiri. Jika pertanyaan ini diposting tanpa jawaban, kemungkinan akan ditutup terlalu luas. Mungkin Anda dapat sedikit memodifikasi pertanyaan untuk memasukkan lebih banyak persyaratan dan menentukan masalah yang sebenarnya Anda hadapi? Pertanyaannya sangat luas saat ini dan jawabannya pada dasarnya "itu tergantung pada apa yang Anda inginkan".
MichaelHouse

Jawaban:

18

Cara terbaik untuk sampai pada kesimpulan dalam hal ini adalah - seperti kebanyakan hal dalam pengembangan game - untuk pertama-tama berpikir tentang bagaimana Anda ingin permainan untuk dimainkan , dan kemudian membuat matematika yang akan menghasilkan permainan bermain seperti itu.

Berapa lama Anda ingin pemain bermain di setiap level?

Dalam RPG pemain tunggal yang berfokus pada cerita, Anda kemungkinan ingin mempertahankan level sebagai aliran hadiah konstan dan membuat pemain naik level setiap beberapa menit selama seluruh permainan. Tingkat levelup tetap konstan, jadi fungsi menit-per-level Anda adalah konstan ( time = c).

Pada gim yang lebih berfokus pada pencapaian, seperti MMORPG, Anda biasanya ingin levelup lebih sering untuk pemula tetapi menjadi semakin sering semakin pemain berkembang. Dalam hal ini, fungsi menit-per-level Anda akan polinomial ( time = Level ^ c) atau bahkan eksponensial ( time = c ^ Level). Namun, menganggap angka-angka sebagaimana adanya dalam rumus eksponensial biasanya terlalu ekstrem. Ini bisa menjadi ide yang baik untuk membaginya dengan konstanta untuk membuat peningkatan lebih lambat sambil tetap membuatnya eksponensial ( time = c1 ^ (1 + Level / c2)).

Saya akan merekomendasikan Anda untuk menggunakan spreadsheet untuk menghitung angka. Buat tabel dengan kolom dengan angka dari 1 hingga level maksimum yang Anda harapkan, dan kolom kedua dengan rumus level. Ini dengan mudah memungkinkan Anda untuk bereksperimen dengan formula berbeda untuk menemukan angka yang sesuai dengan keinginan Anda. Mungkin Anda mendapatkan hasil yang lebih baik ketika Anda menggabungkan polinomial dengan komponen eksponensial?

Ingatlah bahwa Anda melihat waktu pertempuran bersih di sini. Waktu permainan, pemain secara aktif mengumpulkan poin pengalaman. Itu tidak menghitung waktu yang dihabiskan pemain untuk berbicara dengan NPC, membandingkan peralatan mereka dan melakukan tugas-tugas lain yang tidak secara langsung menyebabkan kemajuan.

Dalam game saya saat ini (MMORPG) saya datang dengan formula seconds(level) = 10 ^ (1 + Level / 20). Beberapa level pertama hanya membutuhkan detik pertarungan sebenarnya (kepuasan instan selama fase tutorial), level 20 - 40 butuh menit, pada 50-an itu menjadi jam per level dan ketika mendekati level maksimum 100, dibutuhkan seluruh minggu untuk melihat kemajuan.

Seberapa berbeda seharusnya pengalaman itu dengan hadiah per musuh?

Bahkan ketika musuh Anda tidak memiliki stat level eksplisit (atau bermakna), Anda akan ingin mendesain mereka menjadi tantangan yang seimbang untuk level karakter tertentu. Tetapi berapa banyak lagi pengalaman yang harus direkomendasikan musuh untuk hadiah level 40 lebih dari yang direkomendasikan untuk level 30?

Jawaban untuk pertanyaan ini terkait erat dengan seberapa kuat karakter yang didapat per level dan seberapa jauh Anda ingin membiarkan mereka berada di depan atau di belakang musuh saat ini dengan level karakter mereka.

Beberapa sistem gim, seperti yang dimiliki World of Warcraft misalnya, menjadikannya tidak ada gunanya mengejar pertempuran dengan musuh sedikit di bawah atau di atas level karakter pemain. Apa pun yang hanya beberapa level di atas akan memusnahkan pemain, apa pun beberapa level di bawah ini tidak akan menjadi tantangan (dan tidak ada hadiah) sama sekali.

Contoh tandingannya adalah seri Disgaea. Dalam permainan itu Anda dapat dengan mudah mengalahkan musuh dengan beberapa kali tingkat karakter Anda sendiri ketika Anda memainkannya dengan cerdas.

Semakin ketat Anda ingin berada di level bracket yang merupakan pertarungan yang adil bagi pemain, semakin Anda perlu memastikan bahwa pemain tidak ketinggalan atau maju tingkat musuh yang saat ini mereka lawan. Ketika pemain jatuh di belakang musuh, permainan akan menjadi sangat sulit tanpa menggiling. Ketika pemain unggul dari monster, gim akan menjadi terlalu mudah dan membosankan.

Cara yang baik untuk menjaga pemain tetap berada di dalam bracket level adalah dengan meningkatkan reward exp per level. Di satu sisi, itu akan dengan mudah memungkinkan pemain untuk mengejar ketinggalan ketika mereka sedikit di bawah level yang disarankan. Di sisi lain, itu tidak akan memungkinkan mereka naik level secara efisien pada musuh yang lemah tanpa maju ke daerah yang lebih sulit.

Kurva exp polinomial ( exp = Level ^ c) biasanya bekerja dengan baik. Semakin besar nilainya c, semakin Anda memaksa pemain masuk ke kelompok level saat ini dari monster yang mereka lawan.

Perlu diingat bahwa musuh yang membutuhkan waktu lebih lama untuk dikalahkan juga harus memberikan pengalaman yang lebih proporsional. Pertempuran yang membutuhkan waktu 20 detik harus memberikan exp dua kali lebih banyak daripada yang hanya membutuhkan waktu 10 detik. Ini memperluas formula Anda ke exp = (Level ^ c) * minutes_per_combat.

Formula exp-per-level akhir

Formula akhir sekarang dapat diturunkan dari keduanya. The experience per leveladalah time per level in minutesdikalikan dengan experience gained per minute. Jadi, ambil saja dua formula yang Anda buat di dua bagian terakhir dan gandakan. Itu dia: Formula pengalaman-per-tingkat Anda.

Dengan peningkatan waktu polinomial per level, rumusnya adalah

exp(level) = (level ^ c1) * (level ^ c2)

dimana

  • c1 tergantung pada berapa lama Anda ingin setiap level untuk mengambil
  • c2 tergantung pada seberapa dekat Anda ingin menjaga pemain ke level musuh yang mereka lawan

Apa yang bisa salah?

Bahkan konsep pemikiran terbaik tidak dapat menggantikan playtesting yang tepat. Jika tes bermain Anda menunjukkan bahwa rata-rata pemain berkembang lebih cepat atau lebih lambat daripada yang Anda inginkan, biasanya itu adalah tanda bahwa Anda melebih-lebihkan atau meremehkan level yang disarankan musuh Anda dan berapa lama yang dibutuhkan pemain rata-rata untuk membunuh mereka. Cobalah menganalisa bersama dengan playtester Anda, musuh mana yang seberapa sulit untuk dibunuh pada level karakter apa dan sesuaikan nilai exp atau statistik mereka.

Philipp
sumber