อัลกอริทึมสำหรับการคำนวณระดับแบบไดนามิกตามคะแนนประสบการณ์หรือไม่ [ปิด]


41

หนึ่งในการต่อสู้ที่ฉันมีอยู่เสมอในการพัฒนาเกมคือการตัดสินใจว่าจะใช้คะแนนประสบการณ์อย่างไรเพื่อให้ได้ระดับ ดูเหมือนจะไม่มีรูปแบบในการเพิ่มระดับในหลาย ๆ เกมที่ฉันเล่นดังนั้นฉันคิดว่าพวกเขามีตารางพจนานุกรมแบบคงที่ซึ่งมีคะแนนประสบการณ์เทียบกับระดับ เช่น

Experience   Level
0            1
100          2
175          3
280          4
800          5

... ไม่มีการสัมผัสหรือเหตุผลว่าทำไม 280 คะแนนมีค่าเท่ากับระดับ 4 เป็นเพียงแค่

ฉันไม่แน่ใจว่าระดับเหล่านั้นจะถูกตัดสินอย่างไร แต่แน่นอนว่ามันจะไม่เป็นแบบไดนามิก ฉันยังคิดเกี่ยวกับความเป็นไปได้ของระดับเอ็กซ์โปเนนเชียลเพื่อไม่ให้แยกตารางการค้นหาเช่น

Experience   Level
0            1
100          2
200          3
400          4
800          5
1600         6
3200         7
6400         8

... แต่ดูเหมือนว่ามันจะไม่สามารถควบคุมได้อย่างรวดเร็วเมื่อเทียบกับระดับบนศัตรูในเกมจะต้องให้ประสบการณ์ที่มากถึงระดับ - และนั่นยากที่จะควบคุม การปรับระดับจะกลายเป็นงานที่เป็นไปไม่ได้

ใครบ้างมีตัวชี้หรือวิธีการที่พวกเขาใช้ในการตัดสินใจวิธีการระดับตัวละครจากประสบการณ์? ฉันต้องการที่จะเป็นธรรมในการปรับระดับและฉันต้องการที่จะอยู่ข้างหน้าของผู้เล่นที่จะไม่ต้องกังวลเกี่ยวกับการเพิ่มประสบการณ์ใหม่ / การค้นหาระดับ


4
ไม่มันเป็นเพียงเลขชี้กำลังที่ช้ากว่า (คูณด้วย 10 ทุก ๆ ระดับ ~ 3.3 หรือ 100 ทุก ๆ ~ 6.6 ระดับแทนที่จะเป็นทุก ๆ ระดับ) เรขาคณิตจะเป็น 1 [00], 4, 9, 25, 36, และอื่น ๆ แม้แต่ 1100 1210 1331 1464 เป็นอนุกรมแทนเลขคูณด้วย 1.1
Random832

1
en.wikipedia.org/wiki/Exponential_growthควรล้างสิ่งต่าง ๆ
aaaaaaaaaaaa

1
@ สตีเฟ่น: @ Random832 ถูกต้องทั้งการเติบโต "เอ็กซ์โปเนนเชียล" และ "เรขาคณิต" หมายถึงการมีอัตราส่วนคงที่ระหว่างคำต่อเนื่อง / ระยะเท่ากัน(ซึ่งหมายถึงอัตราการเจริญเติบโตเป็นสัดส่วนกับมูลค่าปัจจุบัน - ในแคลคูลัส ฟังก์ชั่นการชี้แจงมีf'(x) = c*f(x) ) คำว่า "เรขาคณิต" ใช้เมื่อโดเมน (อินพุต) ไม่ต่อเนื่อง (เช่นจำนวนเต็ม) สูตรสำหรับตัวอย่างของ @ George เหนือระดับ 1 คือExperience = 100 * 2^(Level-2)ซึ่งเป็นเลขชี้กำลัง สูตรสำหรับความก้าวหน้าของคุณซึ่งอยู่เหนือระดับ 1 คือExperience = 100^(Level-1)เลขชี้กำลังเช่นกัน
BlueRaja - Danny Pflughoeft

คำตอบ:


36

เป็นเรื่องปกติที่จะใช้ความสัมพันธ์แบบสแควร์

level = constant * sqrt(XP)

หรือเทียบเท่าโดยประมาณของช่องว่างระดับที่เพิ่มขึ้นเชิงเส้น

Level   XP      Difference
1       0       -
2       100     100
3       300     200
4       600     300
5       1000    400

ระบบเหล่านี้ทำงานได้ดีเมื่อ XP ได้รับเป็นเส้นตรง หากตัวละครระดับสูงสามารถรับ XP ได้เร็วกว่าตัวละครระดับต่ำนี่ไม่ใช่ระบบที่เหมาะสม


3
สำหรับผู้เล่นประเภท Achiever ฉันสงสัยว่ามีความคาดหวังอย่างมากที่จะได้รับ XP มากขึ้นเมื่อตัวละครดำเนินไป ฉันพบวิธีแก้ปัญหาของคุณที่น่าสนใจและฉันอาจปรับแต่งเพียงเล็กน้อยเพื่อสร้างความแตกต่างเช่น 107-214-321-428 ดังนั้นจึงป้องกันผู้เล่นจากการมองเห็นเพียงตัวเลขกลมและด้วยความหวังว่าสิ่งนี้จะเพิ่มความรู้สึกของเกมเพียงเล็กน้อยมากขึ้น "อินทรีย์" (ฉันพยายามที่จะเกิดขึ้นกับคำที่ดีกว่านี้ แต่ "อินทรีย์" คือทั้งหมดที่ฉันได้รับในขณะนี้)
Randolf Richardson

1
+1 นี่คือสิ่งที่ฉันเคยทำในอดีตใช้งานได้ดี
BlueRaja - Danny Pflughoeft

3
สมการสำหรับช่องว่างระดับที่เพิ่มขึ้นเชิงเส้น ระดับ = (sqrt (100 (2 ประสบการณ์ + 25)) + 50) / 100 และประสบการณ์ = (ระดับ ^ 2 + ระดับ) / 2 * 100- (ระดับ * 100)
C9HDN

3
คำตอบที่ดีและฉันชอบเส้นโค้งที่ผลิตนี้ ฉันลงเอยด้วยการใช้ค่าคงที่ 0.04 สำหรับผู้ที่สงสัยการย้อนกลับของสูตรนี้เพื่อคำนวณสำหรับ XP คือ: XP = ระดับ ^ 2 / คงที่
BradH

3
@BradH ที่จริงแล้วดูเหมือนว่าจะเป็น XP = (ระดับ / ค่าคงที่) ^ 2 ใน php สิ่งนี้สามารถแสดงเป็น XP = pow (ระดับ / ค่าคงที่ 2) หรือในรุ่นที่ใหม่กว่า (ระดับ / ค่าคงที่) ** 2
Taylor Dondich

17

คุณอาจพบว่าฟังก์ชันลอการิทึมมีประโยชน์เนื่องจากสามารถใช้เพื่อชะลอการเพิ่มเมื่อได้รับคะแนนประสบการณ์มากขึ้น ต่อไปนี้เป็นหน้าเว็บสองหน้าที่อธิบายการทำงานของสิ่งเหล่านี้:

  กราฟของฟังก์ชันลอการิทึม
  http://www.analyzemath.com/Graphing/GraphLogarithmicFunction.html

  รู้เบื้องต้นเกี่ยวกับฟังก์ชั่นกราฟลอการิทึม
  http://www.purplemath.com/modules/graphlog.htm

นี่คือลักษณะที่ปรากฏบนกราฟซึ่งหวังว่าจะตอบสนองความต้องการของคุณ:

ป้อนคำอธิบายรูปภาพที่นี่


1
@George ด้วยการเล่นกับ co-efficients คุณสามารถใช้ฟังก์ชันลอการิทึมเพื่อปรับระดับเครื่องเล่นของคุณได้อย่างง่ายดาย +1 สำหรับการใช้คณิตศาสตร์
Stephen

2
โปรดทราบว่านี่เป็นการดำเนินการตามข้อกำหนดเอ็กซ์โปแนนเชียล XP level = log(XP) <=> XP = e^level. ความต้องการอาจกลายเป็นความสูงชันเล็กน้อยสำหรับระดับสุดท้าย แต่จะทำงานได้ดีเมื่อมีการสะสม XP ที่เหมาะสม
aaaaaaaaaaaa

@eBusiness: จุดดี แต่นี่อาจไม่เป็นปัญหาเนื่องจากตัวละครในระดับที่สูงขึ้นมีแนวโน้มที่จะได้รับคะแนนมากขึ้นได้ง่ายขึ้นและในระยะเวลาที่สั้นลง (เช่นโดยการโจมตี / ฆ่าสัตว์ประหลาดที่ทรงพลังกว่าด้วยความเร็วที่เร็วขึ้น) นี่คือเหตุผลหนึ่งที่ฉันคิดว่าคณิตศาสตร์นี้เหมาะกับวิดีโอเกม (โดยเฉพาะในบริบท MMORPG)
Randolf Richardson

2
ฉันเพิ่งพบว่าแปลกเล็กน้อยที่ OP กังวลเป็นพิเศษเกี่ยวกับการเติบโตแบบเอ็กซ์โปเนนเชียลแล้วยอมรับคำตอบที่อธิบายสิ่งเดียวกันในอีกทางหนึ่ง แต่ฉันคิดว่านั่นเป็นปัญหาของเขา
aaaaaaaaaaaa

1
@eBusiness: บางทีคำตอบของฉันอาจจะอธิบายบางอย่างเกี่ยวกับการเติบโตแบบเลขชี้กำลังที่ก่อนหน้านี้ไม่ชัดเจน? มีวิธีการมากมายในการประยุกต์ใช้คณิตศาสตร์และฉันไม่แน่ใจว่าแม้แต่ครูคณิตศาสตร์ที่เก่งที่สุดก็สามารถรู้จักพวกเขาทั้งหมดได้ (อาจเป็นครูคณิตศาสตร์ที่ดีที่สุดคนที่สองต่อไป)
Randolf Richardson

9

นี่คือวิธีที่ฉันใช้ไป พวกเขาจะเรียงตามอัตราการเติบโต (เพียงแค่คูณทุกสมการด้วยค่าคงที่):

  1. exp = ระดับ (อันนี้อาจดูแปลก ๆ แต่สำหรับบางเกมที่ให้รางวัล EXP เปลี่ยนแปลงตามระดับผู้เล่นเช่นชายแดนที่เกมนี้อาจเหมาะสม)

  2. exp = ระดับ * บันทึก10 (ระดับ)

    1   0
    2   0.6
    3   1.4
    4   2.4
    5   3.5
    6   4.6
    
  3. exp = level ^ const_value: สำหรับตัวอย่างของฉันฉันตั้งค่า const เป็น 3/2

    1   1
    2   2.8
    3   5.1
    4   8
    5   11.2
    6   14.7
    

4

ฉันคิดว่ามันขึ้นอยู่กับว่าผู้เล่นจะได้รับประสบการณ์ได้ง่ายเพียงใด หากผู้เล่นสามารถได้รับ 200 xp ที่ lvl 1 ใน 20 นาทีและจากนั้นได้รับ 200 xp ที่ lvl 2 ใน 2 นาทีจากนั้นคุณต้องปรับขนาด xp ของคุณแบบเอ็กซ์โพเนนเชียล

อย่างไรก็ตามหากการเพิ่มระดับจะทำให้ได้รับ xp ได้ง่ายขึ้นคุณควรทำฟังก์ชัน xp ในระดับที่มากขึ้น (อาจเป็นเชิงเส้นที่มีสัมประสิทธิ์บางอย่าง> 1)


4

บ่อยครั้งที่คะแนนที่จำเป็นในการเพิ่มระดับนั้นขึ้นอยู่กับเส้นโค้ง ในเกม RPG จำนวนมากนั้นยังมีคุณสมบัติและคุณสมบัติอื่น ๆ อีกมากมายของตัวละครของคุณที่เพิ่มขึ้นตามระดับของคุณพวกเขาจะอยู่ในโค้งของตัวเอง

ดูที่ RPGMaker เพื่อดูว่าพวกเขาทำสิ่งต่าง ๆ อย่างไร โดยเฉพาะดูที่เส้นโค้งพารามิเตอร์ในภาพหน้าจอของ "เพิ่มเอกลักษณ์ให้กับบางโดยการปรับแต่งอุปกรณ์เริ่มต้น" ของการสร้างตัวละครหลักเอกสาร

โดยทั่วไปคุณอาจมีเส้นโค้งสำหรับระดับ XP ที่ต้องใช้ในการปรับระดับจากนั้นเส้นโค้งที่แตกต่างกันสำหรับจำนวน HP, MP, ความแข็งแกร่งความแข็งแกร่ง ฯลฯ ที่ได้รับในแต่ละระดับ

ป้อนคำอธิบายรูปภาพที่นี่


2

พิจารณาเวลา

ก่อนอื่นคุณต้องคิดออกว่าอัตราประสบการณ์เพิ่มระดับกับระดับ จากนั้นคุณสามารถปรับแต่งการปรับระดับของคุณโดยระยะเวลาที่ต้อง ถ้าทุกระดับเพิ่มเติมช่วยให้คุณได้รับประสบการณ์สองครั้งที่รวดเร็วและคุณจะต้องเป็นสองเท่าประสบการณ์มากในระดับทุกระดับจะต้องเดียวกันปริมาณของเวลา

ข้อเสนอแนะของฉันคือการคิดเกี่ยวกับวิธีการมากเวลาที่ผู้เล่นจะต้องใช้จ่ายแล้วตัดปรับระดับที่


-3

บางทีฉันควรใช้ระบบปรับระดับแบบเรียบซึ่งแต่ละระดับจะต้องใช้ประสบการณ์จำนวนเท่ากันทุกประการ


3
คำตอบควรจะเป็นเนื้อออกมากกว่าคำแนะนำง่ายๆ ลองเชื่อมโยงข้อดีของกลยุทธ์นี้กับการมีระบบไดนามิกเช่นที่ขอไว้
MichaelHouse

นอกจากนี้ทราบว่าข้อมูลเพิ่มเติมควรจะโพสต์โดยผู้เขียนต้นฉบับ ; หากผู้ใช้รายอื่นมีเพิ่มให้เพิ่มพวกเขาควรพิจารณาโพสต์คำตอบแยกต่างหาก
Gnemlock
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.