จะพัฒนาสูตรความเสียหาย RPG ได้อย่างไร?


117

ฉันกำลังพัฒนาเกม RPG 2d แบบคลาสสิก (ในหลอดเลือดดำคล้ายกับแฟนตาซีสุดท้าย) และฉันสงสัยว่าใครมีคำแนะนำเกี่ยวกับวิธีการทำสูตร / ลิงก์ไปยังแหล่งข้อมูล / ตัวอย่างเสียหาย? ฉันจะอธิบายการตั้งค่าปัจจุบันของฉัน หวังว่าฉันจะไม่หักโหมกับคำถามนี้และฉันขอโทษถ้าคำถามของฉันมีขนาดใหญ่ / กว้างเกินไป

สถิติตัวละครของฉันประกอบด้วย:

enum Stat
{
    HP = 0,
    MP = 1,
    SP = 2,
    Strength = 3,
    Vitality = 4,
    Magic = 5,
    Spirit = 6,
    Skill = 7,
    Speed = 8, //Speed/Agility are the same thing
    Agility = 8,
    Evasion = 9,
    MgEvasion = 10,
    Accuracy = 11,
    Luck = 12,
};

พลังโดยทั่วไปคือการป้องกันการโจมตีทางกายภาพและวิญญาณคือการป้องกันการโจมตีเวทมนตร์

สถิติทั้งหมดมีค่าตายตัวสูงสุด (9999 สำหรับ HP, 999 สำหรับ MP / SP และ 255 ที่เหลือ) ด้วยความสามารถสูงสุดสามารถเพิ่มได้สูงสุด (99999 สำหรับ HP, 9999 สำหรับ HP / SP, 999 สำหรับส่วนที่เหลือ) ด้วยค่าทั่วไป (ที่ระดับ 100) ก่อน / หลังความสามารถ + อุปกรณ์ + ฯลฯ จะเป็น 8000 / 20,000 สำหรับ HP, 800 / 2000 สำหรับ SP / MP, 180/350 สำหรับสถิติอื่น ๆ

ศัตรูที่ตามมาในช่วงท้ายเกม HP จะอยู่ที่ล้านคนต่ำกว่า (โดยมีหัวหน้าใหญ่ที่มีจำนวนสูงสุด ~ 12 ล้านคน)

ฉันสงสัยว่าผู้คนพัฒนาสูตรความเสียหายที่เหมาะสมที่ขยายอย่างถูกต้องได้อย่างไร ตัวอย่างเช่นตามข้อมูลนี้การใช้สูตรความเสียหายสำหรับ Final Fantasy X เป็นฐานดูน่าสนใจมาก การอ้างอิงแบบเต็มที่นี่http://www.gamefaqs.com/ps2/197344-final-fantasy-x/faqs/31381แต่เป็นตัวอย่างรวดเร็ว: Str = 127, ใช้คำสั่ง 'Attack', ศัตรู Def = 34

1. Physical Damage Calculation:
Step 1 ------------------------------------- [{(Stat^3 ÷ 32) + 32} x DmCon ÷16]
Step 2 ---------------------------------------- [{(127^3 ÷ 32) + 32} x 16 ÷ 16]
Step 3 -------------------------------------- [{(2048383 ÷ 32) + 32} x 16 ÷ 16]
Step 4 --------------------------------------------------- [{(64011) + 32} x 1]
Step 5 -------------------------------------------------------- [{(64043 x 1)}]
Step 6 ---------------------------------------------------- Base Damage = 64043
Step 7 ----------------------------------------- [{(Def - 280.4)^2} ÷ 110] + 16
Step 8 ------------------------------------------ [{(34 - 280.4)^2} ÷ 110] + 16
Step 9 ------------------------------------------------- [(-246)^2) ÷ 110] + 16
Step 10 ---------------------------------------------------- [60516 ÷ 110] + 16
Step 11 ------------------------------------------------------------ [550] + 16
Step 12 ---------------------------------------------------------- DefNum = 566
Step 13 ---------------------------------------------- [BaseDmg * DefNum ÷ 730]
Step 14 --------------------------------------------------- [64043 * 566 ÷ 730]
Step 15 ------------------------------------------------------ [36248338 ÷ 730]
Step 16 ------------------------------------------------- Base Damage 2 = 49655
Step 17 ------------ Base Damage 2 * {730 - (Def * 51 - Def^2 ÷ 11) ÷ 10} ÷ 730
Step 18 ---------------------- 49655 * {730 - (34 * 51 - 34^2 ÷ 11) ÷ 10} ÷ 730
Step 19 ------------------------- 49655 * {730 - (1734 - 1156 ÷ 11) ÷ 10} ÷ 730
Step 20 ------------------------------- 49655 * {730 - (1734 - 105) ÷ 10} ÷ 730
Step 21 ------------------------------------- 49655 * {730 - (1629) ÷ 10} ÷ 730
Step 22 --------------------------------------------- 49655 * {730 - 162} ÷ 730
Step 23 ----------------------------------------------------- 49655 * 568 ÷ 730
Step 24 -------------------------------------------------- Final Damage = 38635

ฉันเพียงแค่ปรับวงเวียนเพื่อรวมคะแนนการโจมตีของอาวุธและระดับเกราะของชุดเกราะ

คำนวณความเสียหายเวทย์มนตร์ดังนี้: Mag = 255, ใช้ Ultima, MDef ศัตรู = 1

Step 1 ----------------------------------- [DmCon * ([Stat^2 ÷ 6] + DmCon) ÷ 4]
Step 2 ------------------------------------------ [70 * ([255^2 ÷ 6] + 70) ÷ 4]
Step 3 ------------------------------------------ [70 * ([65025 ÷ 6] + 70) ÷ 4]
Step 4 ------------------------------------------------ [70 * (10837 + 70) ÷ 4]
Step 5 ----------------------------------------------------- [70 * (10907) ÷ 4]
Step 6 ------------------------------------ Base Damage = 190872 [cut to 99999]
Step 7 ---------------------------------------- [{(MDef - 280.4)^2} ÷ 110] + 16
Step 8 ------------------------------------------- [{(1 - 280.4)^2} ÷ 110] + 16
Step 9 ---------------------------------------------- [{(-279.4)^2} ÷ 110] + 16
Step 10 -------------------------------------------------- [(78064) ÷ 110] + 16
Step 11 ------------------------------------------------------------ [709] + 16
Step 12 --------------------------------------------------------- MDefNum = 725
Step 13 --------------------------------------------- [BaseDmg * MDefNum ÷ 730]
Step 14 --------------------------------------------------- [99999 * 725 ÷ 730]
Step 15 ------------------------------------------------- Base Damage 2 = 99314
Step 16 ---------- Base Damage 2 * {730 - (MDef * 51 - MDef^2 ÷ 11) ÷ 10} ÷ 730
Step 17 ------------------------ 99314 * {730 - (1 * 51 - 1^2 ÷ 11) ÷ 10} ÷ 730
Step 18 ------------------------------ 99314 * {730 - (51 - 1 ÷ 11) ÷ 10} ÷ 730
Step 19 --------------------------------------- 99314 * {730 - (49) ÷ 10} ÷ 730
Step 20 ----------------------------------------------------- 99314 * 725 ÷ 730
Step 21 -------------------------------------------------- Final Damage = 98633

ปัญหาคือสูตรแตกต่างกันอย่างสมบูรณ์เมื่อสถิติเริ่มสูงกว่า 255 โดยเฉพาะค่าการป้องกันที่มากกว่า 300 หรือมากกว่านั้นเริ่มสร้างพฤติกรรมแปลก ๆ สถิติ High Strength + Defense นำไปสู่ค่าลบขนาดใหญ่เช่น แม้ว่าฉันจะสามารถปรับเปลี่ยนสูตรเพื่อให้ทำงานได้อย่างถูกต้องสำหรับกรณีการใช้งานของฉันมันอาจจะง่ายกว่าที่จะใช้สูตรใหม่อย่างสมบูรณ์ ผู้คนพัฒนาสูตรความเสียหายได้อย่างไร ฉันกำลังพิจารณาเปิด excel และพยายามสร้างสูตรเช่นนั้น (การทำแผนที่สถิติการโจมตีเทียบกับสถิติการป้องกันเป็นต้น) แต่ฉันสงสัยว่ามีวิธีที่ง่ายกว่านี้ไหม ในขณะที่ฉันไม่สามารถถ่ายทอดกลไกเกมเต็มรูปแบบของเกมของฉันที่นี่ใครบางคนอาจแนะนำสถานที่เริ่มต้นที่ดีสำหรับการสร้างสูตรความเสียหาย

ขอบคุณ


1
ฉันคิดว่าคุณทำสิ่งที่ถูกต้องในการตั้งค่าสถิติประเภทแรก HP และอื่น ๆ ที่คุณต้องการ นี่เป็นส่วนหนึ่งของประสบการณ์ผู้เล่นและคณิตศาสตร์ควรจะพอดีกับ 'ค่า' ค่าเหล่านี้ มีสถิติจำนวนมากดังนั้นแม้ว่าผู้เล่นสังหรณ์ใจควรจะรู้ว่าสิ่งที่จะมีผลต่อสถิติที่มีมนต์ขลังโจมตีทางกายภาพของเขา ฯลฯ ดังนั้นคำถามใหญ่ครั้งแรกเป็นสิ่งที่สอดคล้องกับสถิติการโจมตีและสิ่งสถิติป้องกันสถิติเหล่านี้ (สำหรับอดีต PhDef ปกป้องเฉพาะกับ PhAtk)
Jonathan Connell

สิ่งที่ยิ่งใหญ่คือความสมดุลมันอาจเป็นความคิดที่ดีที่จะสร้างโปรแกรมแบบโต้ตอบ (พูดใน C # หรือบางสิ่งอย่างรวดเร็ว) ซึ่งคุณสามารถเปลี่ยนสถิติและดูผลลัพธ์ที่คุณได้รับ หากคุณสามารถเปลี่ยนสูตรในขณะใช้งานได้นั่นจะช่วย :)
Jonathan Connell

4
พิจารณาใช้ Excel ทำสิ่งนี้ ดูเหมือนว่าเหมาะสมกับงานและคุณไม่ต้องเขียนโค้ด
Alex Schearer

2
คำถามที่สำคัญที่สุดคือสูตรที่ให้ผู้เล่นสนุกที่สุด? (ค้นหาหน้าคำว่า "สนุก" และไม่ใช่คำตอบที่กล่าวถึง: P) หากสถิติหรือความเสียหายเกิดขึ้นเร็วเกินไปผู้เล่นจะถูก insensitized ถ้ามันช้าลงพวกเขาจะเบื่อ ผู้เล่นจำเป็นต้องรู้สึกมีความสุขเมื่อพวกเขาได้รับเลเวลดังนั้นพวกเขาจึงต้องรู้สึกว่าพวกเขาได้ทำงานและมันจะมีผลกระทบที่เห็นได้ชัดเจนต่อการเล่นเกมของพวกเขา (นั่นคือเพนนี 2 ตัวของฉัน)
Annan

3
"(Def - 280.4) ^ 2" เหรอ? ฉันคาดหวังว่าสิ่งต่าง ๆ จะไม่แปลกสำหรับ Def> 255 หรือ Def> 300 แต่ค่อนข้างดีสำหรับ Def> 280.4;) หลังจากนั้น def ที่สูงกว่าจะหมายถึง def ที่ลดลง ณ จุดนี้ของสูตรในขณะที่ยังคงทำงานเป็น คาดว่าจะถึงจุดอื่น BTW คุณสามารถพล็อตเรื่องนี้กับ Wolfram Alpha หรือมากกว่านั้นได้ แก้ไขตัวแปรให้เพียงพอเพื่อเก็บไว้แค่สองตัวและคุณจะได้พล็อตพื้นผิวที่ดี
คริสเตียน

คำตอบ:


140

การสร้างสูตรเช่นนี้จำเป็นต้องมีความรู้เกี่ยวกับฟังก์ชันทางคณิตศาสตร์ระดับประถมศึกษาซึ่งเป็นสิ่งที่คุณเรียนรู้ในคลาสพีชคณิตและพรีแคลคูลัส

เมื่อคุณมีความเชี่ยวชาญเพียงแค่ถามตัวเอง(แทนที่ "ค่า" กับ "ความเสียหาย" หรือ "สุขภาพ" หรือ "ความเร็ว" หรืออะไรก็ตาม) :

  • คุณต้องการให้ค่าเติบโตในอัตราคงที่หรือไม่? ใช้ฟังก์ชั่นการเชิงเส้น
  • คุณต้องการให้ค่าเติบโตช้าในตอนแรก แต่เร็วในภายหลังหรือไม่ ใช้พหุนามหรือฟังก์ชั่นการชี้แจง
  • คุณต้องการให้มูลค่าเติบโตอย่างรวดเร็วในตอนแรกและช้าลงในภายหลังหรือไม่ ใช้ที่ n รากหรือฟังก์ชั่นลอการิทึม
  • คุณต้องการให้ค่าเติบโตอย่างช้าๆที่จุดเริ่มต้น / สิ้นสุด แต่อยู่กลางอย่างรวดเร็วหรือไม่? หรือคุณต้องการให้มันเติบโตอย่างรวดเร็ว แต่ก็ยังมีขอบเขตบน ใช้เส้นโค้ง sigmoidเช่นAtanหรือฟังก์ชั่นโลจิสติก
  • คุณต้องการให้ค่าแกว่งหรือไม่? ใช้บาปหรือบาง อื่น ๆคลื่น

จากนั้นเพียงแค่ปรับแต่ง(เพิ่ม / ทวีคูณเปลี่ยนค่าฐาน ฯลฯ )จนกว่าจะรู้สึกว่าถูกต้อง เครื่องคิดเลขกราฟจะช่วยให้คุณเห็นภาพว่าการเปลี่ยนแปลงพารามิเตอร์จะส่งผลต่อฟังก์ชันอย่างไร


โดยวิธีการแก้ปัญหาที่คุณกำลังประสบเนื่องจากการล้นจำนวนเต็ม

ใช้ประเภทตัวแปรที่มีขนาดใหญ่พอที่จะเก็บตัวเลขที่คุณกำลังทำงานอยู่ ขนาดแตกต่างกันตามแพลตฟอร์มใน C ++ แต่การใช้คอมไพเลอร์ Visual Studio แบบunsigned int32 บิตคือ 32 บิตในขณะที่unsigned __int64 (MS-specific)เป็น 64- บิต doubleนอกจากนี้ยังพิจารณาการใช้

นอกจากนี้พยายามที่จะปฏิรูปการดำเนินงานของคุณเพื่อให้คุณไม่พบจำนวนมากเช่นในสถานที่แรก(ตัวอย่างเช่นแทนที่จะMDef * MDef / 110ทำ(int)((float)MDef / 110 * MDef) )


3
หากคุณพบปัญหาจำนวนเต็มมากเกินไปการแปลงเป็นแบบลอยซึ่งรองรับได้เพียง 24 บิตส่วนจำนวนเต็มจะมีปัญหาความแม่นยำที่แตกต่างกัน

@Joe: ฉันได้ย้อนกลับการแก้ไขของคุณ; ฉันเฉพาะเลือก__int64มากกว่าuint64_tเพราะstdint.hไม่สามารถใช้ได้ใน Visual Studio 2008 และด้านล่างและฉันไม่ต้องการที่จะสร้างความสับสนให้เด็กยากจนมากไปกว่าเขาอยู่แล้ว
BlueRaja - Danny Pflughoeft

1
@ BlueRaja: ฉันไม่เห็นหลักฐานใด ๆ ที่ผู้ถามใช้ Visual Studio และมันมีอยู่ใน toolchain มาตรฐานอื่น ๆ (รวมถึง Visual Studio 2010)

คุณทิ้งตัวแปรสำคัญไว้เช่นกันฉันคิดว่า: หากคุณต้องการให้ความเสียหายมีขอบเขตบนซึ่งคุณสามารถเข้าใกล้ได้ แต่ไม่ถึงเลยทีเดียวคุณสามารถใช้ฟังก์ชัน sigmoid ได้
Martin Sojka

1
user127817: ทั้งหมดที่มีความสำคัญจริงๆก็คือฟังก์ชั่นการเติบโต สำหรับส่วนที่เหลือให้ทดสอบจนกว่าจะรู้สึกสมดุล หากคุณรู้สึกว่าตัวละครมีพลังมากเกินไปให้ลดความเสียหายลง หากคุณรู้สึกว่าใช้เวลานานเกินไปในการฆ่าบอสหรือศัตรูตัวใดตัวหนึ่งให้ลดพลังชีวิตหรือเกราะของศัตรู และอื่น ๆ
BlueRaja - Danny Pflughoeft

31

สถิติตัวละครของฉันประกอบด้วย:

มีปัญหาที่แท้จริงของคุณ: คุณกำหนดไว้สถิติของคุณก่อนที่จะกำหนดสิ่งที่สถิติเหล่านั้นจริงหมายความว่า คุณกำลังวางเกวียนก่อนม้า

ดูว่า D & D (โต๊ะ) ทำงานอย่างไร "ความแข็งแกร่ง" ไม่ได้มีความหมายอะไรเลย มันมีความหมายบางอย่างเท่านั้นเพราะมีกฎที่บอกว่า "เพิ่มโบนัสความแข็งแกร่งของคุณในการโจมตีระยะประชิด" กฎนั้นเป็นส่วนหนึ่งของกฎการต่อสู้ของ D & D หากไม่มีกฎการต่อสู้ "ความแข็งแกร่ง" โดยทั่วไปจะเป็นปริมาณที่ไม่มีความหมาย

คำถามแรกที่คุณต้องถามตัวเองคือ: ฉันต้องการความแตกต่างระหว่างตัวละครมากแค่ไหน? ดูที่ D&D อีกครั้ง ที่นั่นพวกเขามีสถิติพื้นฐาน 6 ประการ สถิติเหล่านี้กำหนดมิติการเล่นที่แตกต่างกันสำหรับตัวละคร ตัวละครที่มีความชำนาญสูงจะมีตัวเลือกที่แตกต่างจากตัวละครที่มีความชำนาญต่ำ

แต่เหตุผลที่ทำให้ความแตกต่างนั้นกลับมาเป็นกฎ ความคล่องแคล่วสูงหมายถึงโบนัสในการโจมตีระยะไกล คุณสามารถโจมตีได้บ่อยขึ้นด้วยการโจมตีระยะไกล ดังนั้นระหว่าง Strength และ Dexterity คุณมีสองมิติของการเล่น: เรียงจากระยะประชิด

ความฉลาดและความเฉลียวฉลาดเป็นรูปแบบของการจับคู่ แต่สิ่งเหล่านี้มีปฏิสัมพันธ์กับชั้นเรียนเฉพาะมากขึ้น Int ทำให้พ่อมดและนักเวทย์มนตร์คนอื่นดีขึ้น (หรือเป็นไปได้ภายใต้กฎเกณฑ์บางอย่าง) ภูมิปัญญามีความสำคัญต่อนักบวชและนักสะกดคำศักดิ์สิทธิ์อื่น ๆ เนื่องจากคาถาของพระเจ้าและอาร์เคนมีรายการคาถาที่แตกต่างกันสถิติทั้งสองนี้จึงเกี่ยวข้องกับมิติการเล่นที่แตกต่างกัน

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

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

อย่างไรก็ตามคุณต้องการให้ฟังก์ชันการต่อสู้ของคุณทำงานได้พวกเขาต้องคำนึงถึงความก้าวหน้าด้วย ฟังก์ชั่นของคุณต้องการตะขอสำหรับความก้าวหน้า

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

D&D ใช้ความก้าวหน้าของไอเท็มอย่างมากเช่นกัน จนกระทั่งถึงรุ่นที่ 4 ความก้าวหน้าของไอเท็มส่วนใหญ่ใช้สำหรับการต่อสู้ตัวละคร แต่ในรุ่นเก่าคาถาก็มีไอเท็มที่ทำให้พวกเขาชื่นชอบหรือปรับตัวอื่น ๆ

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


6
" มีปัญหาที่แท้จริงของคุณ: คุณกำหนดสถิติของคุณก่อนที่จะกำหนดความหมายของสถิติเหล่านั้นจริง ๆ คุณกำลังวางเกวียนก่อนม้า " ฉันไม่เห็นด้วยอย่างยิ่ง ตัวเลขในตัวเองเป็นเพียงวิธีแจ้งผู้เล่นถึงพลังของเขาและมันเป็นส่วนหนึ่งของการออกแบบเกม หากคุณดำเนินการต่อไปอีกรอบคุณสามารถจบลงด้วยการเป็นเจ้านายที่มี 147 แรงม้า ... ใครต้องการสิ่งนั้นจริง ๆ
Jonathan Connell

8
ดี Sarevok (ใน Baldurs Gate) มีเพียง 135 HP ...
มาร์ติน Sojka

12
@ 3nixios: จะเป็นอย่างไรถ้าเจ้านายท้ายมี 147Hp? สิ่งที่สำคัญคือไม่ว่าเจ้านายคนสุดท้ายจะท้าทายน่าสนใจและเหนือสิ่งอื่นใดคือรางวัลที่จะเอาชนะ เจ้านายที่มี Hp จำนวนมากไม่น่าสนใจ มันเสียเวลา เจ้านายที่สามารถยุ่งกับงานปาร์ตี้ของคุณที่ต้องใช้กลยุทธ์พิเศษที่เปลี่ยนไปเป็นช่วงเวลาซึ่งต้องการให้คุณต้องใช้ความสามารถทุกอย่างที่คุณมีให้ได้ถึงศักยภาพสูงสุดนั่นคือสิ่งที่ทำให้เป็นเจ้านายคนสุดท้ายที่ยิ่งใหญ่ ฉันจะใช้หัวหน้า 147Hp ที่น่าสนใจไปที่บล็อกที่น่าเบื่อของ Hp ทุกวัน
Nicol Bolas

@ Nicol Bolas ฉันเห็นด้วยกับคุณอย่างเต็มที่ฉันพยายามที่จะสนับสนุนว่าทำไมฉันเชื่อว่าจุดเริ่มต้นจะต้องมาจากสถิติ สถิติที่ผู้เล่นเริ่มต้นด้วยเป็นตัวบ่งชี้หลักและรูปแบบการเล่นที่ผู้เล่นเล่นในระหว่างเกม ฉันยอมรับว่าไม่จำเป็นต้องใช้แถบ HP ขนาดใหญ่สำหรับผู้บังคับบัญชามันช่วยให้ผู้เล่นบ่งชี้ได้ดีขึ้นว่าอะไรคือการตั้งค่าที่ดีที่สุดสำหรับเจ้านายอาวุธสถิติและอื่น ๆ ที่มีประสิทธิภาพมากขึ้น จำนวนเงินที่แน่นอนคือไม่เกี่ยวข้องกับวิธีการที่คุณคำนวณมันเพราะคุณก็สามารถแบ่งหรือหลายคำนวณสุดท้ายของคุณด้วยค่าคงและจะทำกับมัน
Jonathan Connell

2
@ 3nixios: แต่นั่นเป็นส่วนหนึ่งของจุดของฉัน ความชำนาญใน D&D มีอยู่เพื่ออนุญาตให้มีการแยกความแตกต่างระหว่างอักขระผู้เชี่ยวชาญระยะประชิดและผู้เชี่ยวชาญระยะไกล หากไม่มีแนวคิดเรื่องการโต้เถียงกันอย่างสับสนและการโจมตีระยะไกล (และในเกม FF หลายเกมเช่นนั้นไม่มี) ความแตกต่างนี้ไม่จำเป็นต้องมีอยู่ คุณสามารถหนีไปได้ด้วยสถิติ 5 ตัวแทนที่จะเป็น 6 การกำหนดช่วง Hp เป็นสิ่งหนึ่ง แต่การกำหนดสถิติพื้นฐานที่คุณมีอยู่นั้นเป็นอีกสิ่งหนึ่ง สถิติต้องการกฎก่อนที่คุณจะเข้าใจได้และคุณต้องรู้ว่าคุณตั้งใจจะทำสถิติอะไรก่อนที่คุณจะพูดได้ว่าการมีสถิตินั้นเป็นความคิดที่ดี
Nicol Bolas

22

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

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


10
+1 เพื่อง่าย ทุกคนสามารถทำสิ่งที่ซับซ้อนอย่างจริงจังซึ่งไม่ได้สร้างเกมที่ดี
aaaaaaaaaaaa

8
@ Randolf เว้นแต่ว่าคุณกำลังใช้งาน Apple 2 หรือบางอย่างมันเป็นที่สงสัยอย่างมากว่าการลบทวีคูณหรือหารที่นี่และจะส่งผลต่อประสิทธิภาพในทุกทาง
Tetrad

8
@ Randolf การต่อสู้ครั้งใหญ่ในเกม RPG อาจหมายถึงการคำนวณ 10 ดาเมจต่อวินาที CPU ที่ทันสมัยสามารถทำหลายพันล้านครั้งต่อวินาที คุณสามารถสรุปได้อย่างปลอดภัยว่าผลกระทบต่อประสิทธิภาพของคณิตศาสตร์ที่ "มองเห็นได้" นั้นไม่มีความสำคัญ เรียบง่ายในกรณีนี้คือเพื่อประโยชน์ของผู้ที่ออกแบบและผู้ที่เล่นเกมไม่ใช่สำหรับคอมพิวเตอร์ของเรา
aaaaaaaaaaaa

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

5
@ Randolf: ฉันหมายถึงอะไร; ฉันกำลังบอกว่าการเพิ่มประสิทธิภาพบางอย่างที่ไม่ใช่คอขวดเป็นการเสียเวลาเปล่า
Nicol Bolas

11

ศัตรูที่ตามมาในช่วงท้ายเกม HP จะอยู่ที่ล้านคนต่ำกว่า (โดยมีหัวหน้าใหญ่ที่มีจำนวนสูงสุด ~ 12 ล้านคน)

นี่ฉันมีปัญหากับ คุณควรสร้างหัวหน้าของคุณในสิ่งที่คุณคิดว่าผู้เล่นของคุณจะสามารถรับมือได้ คุณกำลังสร้างผู้เล่นและสูตรการต่อสู้รอบสิ่งที่คุณต้องการให้เจ้านายของคุณเป็นเหมือน

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


4
+1 สุขภาพของศัตรูควรขึ้นอยู่กับสิ่งที่ผู้เล่นสามารถจัดการได้อย่างมีเหตุผล ณ จุดนั้นไม่ใช่วิธีอื่น ๆ
BlueRaja - Danny Pflughoeft

7

ตัวเลขเหล่านั้นที่คุณยกมานั้นมีแนวโน้มว่ามาจากการจำลองเพียงแค่วิ่งมากกว่าพันครั้ง

ดังนั้นคุณควรเขียนแบบจำลองสร้างตัวละครระดับ 20 และดูว่าเขามีค่าโดยสารอย่างไรผ่านการต่อสู้ 200 ครั้งหรือเทียบกับประเภทศัตรูที่เขาควรจะต่อสู้ในตอนนั้น ทำอีกครั้งสำหรับอักขระระดับ 30 (ในส่วนถัดไปของโลก)

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


5

ฉันคิดว่าคุณทำผิดพลาดที่คุณต้องการสร้างสูตรโดยไม่มีการออกแบบที่เหมาะสมในใจ

เริ่มแรกด้วยการออกแบบจากนั้นเริ่มคิดเกี่ยวกับการแสดงการออกแบบในสูตร ยิ่งการออกแบบของคุณชัดเจนยิ่งขึ้นคุณควรหาสูตรที่ง่ายและ / หรือแม่นยำ

ลองใช้ "ประเภท" ของศัตรูเช่น "เกราะ" => ผู้เล่นที่ถูกโจมตีหากเป็นประเภททางกายภาพจะลดลง 50% อย่าทำให้กระแสการต่อสู้สู่นามธรรมคิดเกี่ยวกับสิ่งที่เกี่ยวข้องและสิ่งที่ไม่

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


ฉันได้รวบรวมสิ่งนั้นไว้แล้ว - การจัดอันดับชุดเกราะลดความเสียหายจากการโจมตีทางกายภาพยกเว้นการโจมตีถูกทำเครื่องหมายเป็นเกราะเจาะหรือใช้สูตรความเสียหายตาม%
user127817

5

แม้ว่าการออกแบบของฉันจะไม่ออกจากสเปรดชีต แต่ฉันได้ข้อสรุปหนึ่งเกี่ยวกับการออกแบบคณิตศาสตร์สำหรับเกม RPG:

ทำให้มันง่ายที่สุดเท่าที่จะทำได้ ในการออกแบบที่ฉันกำลังทำอยู่ฉันใช้สูตรแบบง่าย ๆ ซึ่งเพียงพอกับระบบแบบกึ่งคลาสน้อย กล่าวคือ Fireball Spell มีความเสียหาย 30 คะแนนฟอรัมคือ:

BaseSpellDamage * Attribute (5 * 6)

เรายังสามารถเพิ่มตัวดัดแปลงดังนี้:

Result = (BaseSpellDamage * Attribute) (5*6)
Result = Result + (Result * 50%) (30 = 30 + (30 * 50%))

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

ตอนนี้เราสามารถคำนวณค่าความเสียหายที่ต้านทานได้ซึ่งก็จะคำนวณค่าการป้องกันจากความเสียหายประเภทที่กำหนดไว้ มีสองวิธีและฉันก็ยังไม่ได้ตัดสินใจอย่างสุจริตซึ่งจะเหมาะกว่า แต่ทั้งสองวิธีนั้นง่ายและใช้งานได้:

DamageResult = Resistance * Damage ( 50% * 45)

ดังนั้นผลลัพธ์ที่ได้คือความเสียหายที่ 22 (ฉันเพิ่งตัดผลลัพธ์บางส่วน)

สูตรอื่น ๆ :

DamageResult = Damage - Resistnace (45 - 22).

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

แม้ว่าฉันต้องยอมรับว่าการปรับขนาด precentage ค่อนข้างง่ายต่อการรักษาความสมดุลและการปรับขนาด แต่สิ่งนี้ก็ขึ้นอยู่กับหมายเลขฐานของคุณด้วย การปรับสเกลเปอร์เซ็นต์จะทำงานได้ดีที่สุดหากคุณเริ่มต้นตั้งแต่ 100 ขึ้นไป หากคุณดำเนินการกับตัวเลขขนาดเล็ก (อะไรก็ตามที่ต่ำกว่า 100 จะซื่อสัตย์) ก็จะได้รับ awkard ในขณะที่คุณจะเริ่มได้รับผลคะแนนลอยตัวซึ่งจะยากที่จะสมดุลและจริง ๆ แล้วทำอะไรที่น่าสนใจกับพวกเขา

ทางออกที่ดีที่สุดน่าจะเป็นในกรณีนั้นคือใช้ทั้งสองวิธีเมื่อเห็นว่าเหมาะสม หรือถ้าคุณเป็นแฟนตัวยงของตัวเลขขนาดใหญ่เริ่มต้นที่ 1,000

และเมื่อสิ้นสุดการปิด ฉันยังไม่ได้ข้อสรุปนี้อย่างสมบูรณ์ด้วยตัวเอง ฉันใช้เวลาอ่านคู่มือเกม RPG (Hero, DnD) หลายครั้งแล้ว โดยเฉพาะอย่างยิ่ง DnD มีประโยชน์เนื่องจากมันทำงานบนหลักการที่คล้ายกัน แต่แทนที่จะใช้คุณลักษณะที่ใช้ระดับสำหรับสูตรของมันพวกมันอาจซับซ้อนกว่าบางครั้ง กว่าสิ่งที่ฉันนำเสนอที่นี่

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


3

ดังที่คนอื่น ๆ ได้กล่าวถึงสูตร Final Fantasy X นั้นค่อนข้างซับซ้อน โดยทั่วไปแล้วสำหรับซีรีส์นั้นเกมต่อมาจะมีสูตรที่ซับซ้อนมากขึ้น มันอาจง่ายกว่าที่จะคำนวณสูตรความเสียหายของคุณในเกมอื่นโดยสิ้นเชิง แต่โดยทั่วไปฉันคิดว่ามันคุ้มค่าที่จะพูดคุยกันในระดับทั่วไปว่าเป็นสูตรความเสียหายที่คุณสามารถพบได้ในโลกและวิธีที่คุณสามารถสร้างเกมโดยรอบได้ สิ่งแรกที่คุณต้องตัดสินใจก็คือความเสียหายที่คุณต้องการจะทำได้เมื่อสิ้นสุดเกมและคุณต้องการให้ผู้เล่นมีสถิติแบบไหน? เมื่อคุณมีแล้วคุณสามารถเลือกระบบสูตรแล้วปรับค่าสูตรและอาวุธให้เหมาะสมเพื่อสะท้อนช่วงเหล่านั้นเมื่อเวลาผ่านไป

หมดจดตามสถิติ

นี่เป็นความคิดที่ดีถ้าคุณต้องการให้ตัวละครของคุณมีความยืดหยุ่นในแง่ของระดับศัตรูที่พวกเขาสามารถท้าทายได้ สูตรเช่นนี้จะขึ้นอยู่กับสถิติของผู้เล่นอุปกรณ์และสถิติของศัตรู สูตรเหล่านี้มักจะค่อนข้างง่าย Final Fantasy Legend II (ดูhttp://www.shenafu.com/ffl2/weapon.phpเป็นต้น) มีอาวุธที่สร้างความเสียหายตามสูตรง่าย ๆ :

(Stat+StatBonus)*WeaponStrength - Defense*4

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

หากต้องการแสดงให้เห็นว่าสูตรนี้สามารถใช้งานได้จริงในวงกว้างอย่างไรให้พิจารณาสูตรความเสียหายสำหรับ Inflation RPG เกม Android และ IOS (ดูที่http://inflation-rpg.wikia.com/wiki/Calculations ) สูตรนี้ขึ้นอยู่กับสถานะของอุปกรณ์และอุปกรณ์เป็นอย่างมาก อุปกรณ์แต่ละชิ้นมีสองสถานะ - โบนัสเป็นค่า ATK และค่าตัวคูณ อุปกรณ์บางชิ้นมีตัวคูณต่ำ แต่โบนัสสูงส่วนอื่นมีโบนัสต่ำ แต่มีตัวคูณสูง สำหรับตัวละครที่มีเพียง 10 ATK, Battle Axe ที่มีโบนัส 5,000 ATK แต่ตัวคูณที่ต่ำ 145% เป็นตัวเลือกที่ยอดเยี่ยม ความเสียหายทั้งหมดเป็น(10+5000)*1.45 = 7264แต่ Estoc ด้วย 0 โบนัสและคูณ 300% เป็นทางเลือกที่ดี - (10+0)*3 = 30ความเสียหาย ต่อมาในเกมตัวละครที่มีการโจมตี 5,000 ครั้งต้องการเปลี่ยนอาวุธ

สถิติและระดับพื้นฐาน:

ตัวอย่างที่ดีของสิ่งนี้คือ Final Fantasy V, VI และ Final Fantasy XII (ดูhttp://www.gamefaqs.com/ps2/459841-final-fantasy-xii/faqs/45900เป็นต้น) สูตรสำหรับดาบใน FFXII คือ:

DMG = [ATK x RANDOM(1~1.125) - DEF] x [1 + STR x (Lv+STR)/256]

และสูตรความเสียหายสำหรับเสาคือ:

DMG = [ATK x RANDOM(1~1.125) - DEF] x [1 + STR x (Lv+MAG)/256]

พวกมันคล้ายกันมาก แต่สังเกตว่าสูตรดาบนั้นขึ้นอยู่กับความแข็งแกร่งและเลเวลในขณะที่สูตรของสตาฟนั้นขึ้นอยู่กับความแข็งแกร่งเวทย์มนตร์และระดับ ข้อดีของสูตรประเภทนี้คือช่วยให้ผู้เล่นสองช่องทางในการเติบโต - สร้างสถิติหรือสร้างระดับ ข้อเสียคือมันยังลงโทษตัวละครทั้งสองได้เช่นกัน สิ่งที่จบลงจริง ๆ ก็คือทำให้ผู้เล่นเลเวลอัพเพื่อเพิ่มเอาท์พุตดาเมจของพวกเขา (สำหรับ FFXII จำนวนนี้จะเพิ่มเอาท์พุตดาเมจของพวกเขาโดยประมาณ 4% ต่อระดับรอบ ๆ เลเวล 50 เมื่อคุณคำนึงถึงผลกำไร) ระดับความสะดวกสบาย

ความเสียหายคงที่:

สูตรความเสียหายคงที่ไม่ได้ขึ้นอยู่กับสถิติหรือระดับของตัวละคร แต่ขึ้นอยู่กับสูตรความเสียหายภายในของอาวุธเท่านั้น พวกเขายังสามารถแตกต่างกันไปในช่วง แต่พวกเขาจัดการความเสียหายเดียวกันโดยไม่คำนึงถึงผู้ใช้ (ยกเว้นลักษณะพิเศษอื่น ๆ หรือลักษณะตัวละคร) พวกมันถูกใช้งานได้ดีที่สุดถ้าอาวุธจะสร้างความเสียหายคงที่และความสามารถในการติดตั้งอาวุธนั้นขึ้นอยู่กับสถิติและ / หรือระดับ ตัวอย่างเช่น Diablo 2 ทำเช่นนี้เช่นเดียวกับชาวโร๊คไลค์หลายคนที่มีอาวุธที่ต้องพึ่งพาม้วนตาย ที่ถูกกล่าวว่า 'ความเสียหายคงที่' ไม่ได้หมายความว่า "ไม่สุ่ม" - และในความเป็นจริงมักจะมีองค์ประกอบบางส่วนของการสุ่มเพื่อความเสียหายที่ทำ

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

อีกสถานที่ที่คุณจะพบเจอกับอุปกรณ์หรือไอเท็มบางอย่างใน Final Fantasy ตัวอย่างเช่น 1,000 Needles สร้างความเสียหาย 1,000 ดาเมจเสมอ ใน Final Fantasy Legend II ศิลปะการต่อสู้จะสร้างความเสียหายตามสูตร:

Damage = WeaponStrength*(90-UsesLeft) - 4*Defense

Final Fantasy XII ได้รับความเสียหายค่อนข้างคงที่สำหรับปืนเช่นกันสร้างความเสียหายตามสูตร:

DMG = [ATK x RANDOM(1~1.125)]^2

แม้ว่าความเสียหายจะค่อนข้างสุ่ม แต่จะแตกต่างกันเพียง 26.5 เปอร์เซ็นต์ในช่วงทั้งหมดดังนั้นคุณจึงรับประกันว่าจะได้รับความเสียหายระดับหนึ่งโดยเฉลี่ยเมื่อเวลาผ่านไป การโจมตีประเภทนี้มีประโยชน์สำหรับตัวละครที่มีทั้งสถิติต่ำและระดับต่ำในเกมซึ่งโดยปกติจะคำนึงถึงปัจจัยเหล่านั้นในการสร้างความเสียหาย ยิ่งไปกว่านั้นพวกเขาไม่สนใจการป้องกันของเป้าหมาย (แม้ว่าสูตรนั้นสามารถทำใหม่ได้อย่างง่ายดายเพื่อให้พอดีกับการป้องกันหากคุณต้องการ)


2

เกมทุกเกมในซีรีย์แฟนตาซีสุดท้ายมีสถิติสูงสุด 255 รายการเนื่องจากปัญหาที่คุณพบ ที่ระดับ 100 สถิติจะเป็น 255

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

ในกรณีของคุณมันจะเป็นขั้นตอนที่ 21: ใช้ตัวดัดแปลงความสามารถขั้นตอนที่ 22: ใช้ตัวดัดแปลงอุปกรณ์ขั้นตอนที่ 23: ความเสียหายสุดท้าย

หากคุณสนใจ google สำหรับสูตรแฟนตาซีขั้นสุดท้ายพวกเขาจะอยู่ที่นั่น ฉันมีกลศาสตร์การต่อสู้จริงรวมถึง AI สำหรับแฟนตาซี 4, 6, 7 และ 9 ผู้คนแตกมันจากเกมดั้งเดิมเมื่อพวกเขากำลังสร้าง roms สำหรับอีมูเลเตอร์ มีไม่ยากที่จะหาถ้าคุณดูหนักพอ

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


2

ฉันสงสัยว่าผู้คนพัฒนาสูตรความเสียหายที่เหมาะสมที่ขยายอย่างถูกต้องได้อย่างไร

2 สิ่งแรกคือ:

  • ตัดสินใจในสิ่งที่คุณหมายถึงโดย 'ถูกต้อง' - คุณคิดว่า 'ความเสียหายที่ถูกต้อง' คืออะไร?
  • ตัดสินใจว่าคุณหมายถึงอะไรโดย 'มาตราส่วน' - ค่าอะไรที่จะเปลี่ยนแปลงและคุณต้องการให้การเปลี่ยนแปลงเหล่านั้นมีผลกระทบอย่างไร

เมื่อคุณรู้ว่าคุณมีข้อมูลมากพอที่จะใช้สูตรทางคณิตศาสตร์ที่ BlueRaja กล่าวถึงในคำตอบของเขา เพียงจำไว้ว่าไม่มีสิ่งเช่นสูตรความเสียหายที่ 'เหมาะสม' เพียงอันเดียวที่ตรงกับการออกแบบของคุณสำหรับประเภทของประสบการณ์ที่คุณต้องการให้ผู้เล่นของคุณมี


นี่เป็นความคิดเห็นที่ไม่ช่วยเหลืออย่างยิ่ง ผลรวมถึง "ฉันไม่รู้" และเนื่องจากว่ามันเสียเวลาทุกคน การตั้งค่าสถานะสำหรับการลบ
Krythic

1

อีกอย่างถ้าคุณกำลังมองหาสูตรที่ง่ายมากให้ทำดังต่อไปนี้:

(โปรดทราบว่านี่เป็นความคิดของฉันสำหรับสูตร)

ขั้นแรกสำหรับสูตรการโจมตีที่ง่ายคุณจะต้องมีสถิติไม่กี่ สถิติการโจมตีของผู้เล่น (อาจเป็น Strength หรือ Magic ขึ้นอยู่กับประเภทของการเคลื่อนที่)

จากนั้นสร้างตัวแปรที่เรียกว่า MovePower สิ่งนี้จะขึ้นอยู่กับการเคลื่อนไหวและการเคลื่อนไหวที่ดีกว่าจะมี MovePower ที่ดีกว่า สำหรับสูตรของฉันคำสั่ง "การโจมตี" ทั่วไปมี MovePower 5

จากนั้นให้การป้องกันเป็นสถิติตามเปอร์เซ็นต์ (และแน่นอนทำให้เป็นไปไม่ได้ที่จะได้รับการป้องกัน 100% จากความเสียหาย)

จากนั้นในช่วงการโจมตีเพียงแค่เพิ่มค่าพลังโจมตีด้วยการย้ายและลบความเสียหายตามการป้องกันของศัตรู! ง่าย!

นอกจากนี้คุณยังสามารถเลือกที่จะมีการดัดแปลงอื่น ๆ เช่นถ้าการเคลื่อนไหวจะตี (ความแม่นยำ), ถ้าการเคลื่อนไหวนั้นมีผลเพิ่มอีก (Bio, ก่อให้เกิดพิษ,) และเลือกที่จะตี (ความแม่นยำอีกครั้ง) มีการอัพเกรด / ลดระดับความเสียหาย ย้ายสถิติที่เปลี่ยนแปลง ฯลฯ ขอให้สนุกกับมัน!


อีกทางเลือกหนึ่งที่หลีกเลี่ยงเกราะในรูปแบบเปอร์เซ็นไทล์ (ซึ่งทำให้ค่าของมันดูเหมือนกัน) คือการคำนวณความเสียหายกับเกราะเมื่อเปรียบเทียบกับตัวคูณ บางอย่างเช่น Ln (atk / def) เป็นฐาน สิ่งนี้จะช่วยให้สถิติเกราะป้องกันมีการขยายตัวเมื่อเวลาดำเนินไปในแบบเดียวกัน หาวิธีที่จะได้รับความเสียหายพื้นฐานที่คุณต้องการในช่วงเวลาที่สถานะความเสียหายและเกราะเหมือนกันและคาดการณ์จากที่นั่น สิ่งนี้ทำให้การโจมตี "การหลีกเลี่ยงเกราะ" นั้นต้องใช้กลอุบายในการสร้าง แต่นั่นเป็นส่วนหนึ่งของความคิดสร้างสรรค์
Aviose

1

ในสาระสำคัญคุณต้องคิดสองสิ่ง

  1. วิธีการคำนวณ preform อย่างถูกต้องด้วยตัวเลขจำนวนมาก
  2. วิธีที่คุณต้องการและคาดหวังความเสียหายจากการโจมตีที่จะประพฤติปฏิบัติต่อผู้อ่อนแอและคู่ต่อสู้ที่แข็งแกร่ง

1

คุณสามารถเป็นผู้ใช้doubleหรือไลบรารีขนาดใหญ่ก็ได้ การคำนวณด้วยตัวเลขจำนวนมาก (เช่นในการคลิก / เกมที่ไม่ได้ใช้งานมักอาศัยไลบรารีจำนวนมาก) ในกรณีของคุณตัวเลขมีขนาดค่อนข้างเล็กดังนั้นการใช้จุดลอยตัว 64 บิตจะทำให้เกิดความยืดหยุ่นที่จำเป็น

2

คุณต้องการให้เกมทำงานอย่างไร ตัวอย่างบางส่วน:

  • วิธีหนึ่งคือใช้ATKในการตัดสินใจว่าคุณจะโดนหรือไม่และทอยกับการจัดอันดับความเสียหายที่ทราบขึ้นอยู่กับอาวุธ: เช่นดาบยาว 1d8, ดาบสองมือ 1d10, กริช 1d4 สิ่งนี้จะไม่ขยายขนาดอย่างน่าอัศจรรย์หากแรงม้าสามารถเติบโตได้เรื่อย ๆ หากคุณใช้ATKเพื่อพิจารณาว่าตัวละครโดนหรือผิดพลาดคุณสามารถโยนอีกครั้งหลังจากการโจมตีสำเร็จด้วยATK* 80% เพื่อกำหนด crits
  • หากคุณต้องการใช้สูตรความเสียหายสูตรความเสียหายนั้นง่ายเหมือน(ATK - DEF) +/- 20%ที่ทำใน World's End (เกมวางแผนสวมบทบาท) นี่จะหมายความว่าการโจมตีคู่ต่อสู้ที่แข็งแกร่งDEFจะไม่สร้างความเสียหายเลย สำหรับ instace ATK = 10, ENEMY DEF = 12, (ATK - DEF) = -2และมันยังหมายถึงว่าการโจมตีสูง VS def ลดลงเล็กน้อยอาจจะเกิดความเสียหายเล็ก ๆ น้อย ๆ ที่อาจทำให้การต่อสู้อีกต่อไปกับการเพิ่มขึ้นของ HP เช่นกับATK = 1010, ENEMY DEF = 1005ความเสียหายจะเป็น 5 ความเสียหายจะเพิ่มขึ้นอย่างมากในขณะนี้หากATKมีการเพิ่มขึ้นร้อยละขนาดเล็ก ตัวอย่างเช่นATK = 1055จะสร้างความเสียหายมากขึ้น 900% โดยมีATKมูลค่าเพิ่มขึ้นเพียง 5%
  • เพื่อหลีกเลี่ยงนี้คุณสามารถทำอะไรเช่นATK / DEF * WEAPON_DAMAGEนี้จะขนาดมากขึ้นค่อยๆเมื่อATKหรือมีการเพิ่มขึ้นและทำให้ผู้โจมตีที่อ่อนแอให้เกิดความเสียหายกับสิ่งมีชีวิตที่แข็งแกร่งDEFDEF

tl; dr คุณต้องปฏิบัติต่อตัวเลขของคุณอย่างมีความรับผิดชอบและหาวิธีที่คุณต้องการให้เกมทำงานในสถานการณ์ต่าง ๆ บางคำถามที่ถามตัวเอง:

  1. มีการโจมตีกี่ครั้งที่ต้องกำจัดบอส / มิเนียน
  2. ทักษะบัฟและดีบัฟที่แตกต่างกันควรส่งผลต่อxการต่อสู้อย่างไร มันควรจะสิ้นหวังควรจะy%มีโอกาสชนะน้อยลง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.