Tworzę klasyczną grę RPG 2d (podobną do finalnej fantasy) i zastanawiałem się, czy ktoś ma jakieś porady na temat robienia formuł uszkodzeń / linków do zasobów / przykładów? Wyjaśnię moją obecną konfigurację. Mam nadzieję, że nie przesadzam z tym pytaniem i przepraszam, jeśli moje pytania są zbyt duże / szerokie
Statystyki Moich postaci składają się z następujących elementów:
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,
};
Witalność jest w zasadzie obroną przed atakami fizycznymi, a duch jest obroną przed atakami magicznymi.
Wszystkie statystyki mają ustalone maksima (9999 dla HP, 999 dla MP / SP i 255 dla pozostałych). Dzięki umiejętnościom można zwiększyć maksima (99999 dla HP, 9999 dla HP / SP, 999 dla reszty) z typowymi wartościami (na poziomie 100) przed / po umiejętności + wyposażenie + itd. Będą wynosić 8000/20,000 dla HP, 800 / 2000 dla SP / MP, 180/350 dla innych statystyk
Późniejsza ilość HP wroga w grze będzie zazwyczaj mniejsza niż w milionach (super boss ma maksymalnie ~ 12 milionów).
Zastanawiałem się, jak ludzie właściwie opracowują odpowiednie formuły obrażeń, które skalują się prawidłowo? Na przykład na podstawie tych danych użycie formuł obrażeń dla Final Fantasy X jako podstawy wyglądało bardzo obiecująco. Pełne odniesienie tutaj http://www.gamefaqs.com/ps2/197344-final-fantasy-x/faqs/31381, ale jako szybki przykład: Str = 127, użyto polecenia „Atak”, wróg 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
Po prostu zmodyfikowałem dzielniki, tak aby zawierały ocenę ataku broni i ocenę pancerza zbroi.
Obrażenia magiczne oblicza się w następujący sposób: Mag = 255, używana jest Ultima, wrogi 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
Problem polega na tym, że formuły całkowicie się rozpadają, gdy statystyki zaczynają przekraczać 255. W szczególności wartości obrony powyżej 300 zaczynają generować naprawdę dziwne zachowanie. Statystyki Wysoka Siła + Obrona prowadzą na przykład do ogromnych wartości ujemnych. Chociaż mogę być w stanie zmodyfikować formuły, aby działały poprawnie w moim przypadku użycia, prawdopodobnie łatwiej byłoby po prostu użyć zupełnie nowej formuły. Jak ludzie faktycznie opracowują formuły uszkodzeń? Zastanawiałem się nad otwarciem programu Excel i próbowałem w ten sposób zbudować formułę (na przykład mapowanie statystyk ataku vs. statystyki obrony), ale zastanawiałem się, czy istnieje łatwiejszy sposób? Chociaż nie mogę tutaj przedstawić pełnej mechaniki gry, czy ktoś mógłby zasugerować dobre miejsce do rozpoczęcia tworzenia formuły obrażeń?
Dzięki