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
źródło
Odpowiedzi:
Tworzenie takich formuł wymaga znajomości elementarnych funkcji matematycznych - rzeczy, których nauczyłeś się w klasie algebry i rachunku różniczkowego.
Kiedy już je opanujesz, po prostu zadaj sobie pytanie (zamień „wartość” na „obrażenia”, „zdrowie”, „prędkość” lub cokolwiek innego) :
Następnie po prostu popraw go (dodaj / pomnóż, zmień wartość bazową itp.), Aż poczujesz się dobrze. Kalkulator graficzny pomoże ci zobaczyć, jak zmiany parametrów wpłyną na funkcję.
Nawiasem mówiąc, problemy, które napotykasz, są spowodowane przepełnieniem liczb całkowitych .
Używaj typów zmiennych, które są wystarczająco duże, aby pomieścić liczby, z którymi pracujesz. Rozmiary różnią się w zależności od platformy w C ++, ale przy użyciu 32-bitowego kompilatora Visual Studio
unsigned int
jest on 32-bitowy, aunsigned __int64
(specyficzny dla MS) - 64-bitowy. Rozważ również użyciedouble
.Ponadto spróbuj zreorganizować swoje operacje, aby nie napotkać tak dużych liczb w pierwszej kolejności (na przykład, a nie
MDef * MDef / 110
zrobić(int)((float)MDef / 110 * MDef)
) .źródło
__int64
na to,uint64_t
ponieważstdint.h
nie jest dostępny w Visual Studio 2008 i niższych wersjach, i nie chciałem mylić biednego chłopca bardziej niż on.Jest twój prawdziwy problem: zdefiniowałeś swoje statystyki, zanim zdefiniowałeś, co te statystyki naprawdę oznaczają . Stawiasz wózek przed koniem.
Zobacz, jak działa D&D (blat). „Siła” sama w sobie nic nie znaczy; to tylko coś znaczy, ponieważ istnieje reguła, która mówi: „Dodaj premię do siły do ataku w zwarciu”. Ta zasada jest częścią zasad walki D & D. Bez zasad walki „Siła” jest na ogół bez znaczenia.
Pierwsze pytanie, które musisz sobie zadać, brzmi: ile chcę różnicowania między postaciami? Ponownie spójrz na D&D. Tam mają 6 podstawowych statystyk. Te statystyki określają różne wymiary gry dla postaci. Postać o wysokiej Zręczności będzie miała inne opcje niż postać o niskiej Zręczności.
Ale powodem tej różnicy są wszystkie zasady. Wysoka Zręczność oznacza bonusy do ataków dystansowych; możesz częściej trafiać atakami dystansowymi. Tak więc pomiędzy siłą a zręcznością masz dwa wymiary gry: dystansowy kontra walka wręcz.
Inteligencja i Mądrość również tworzą coś w rodzaju powiązania, ale one bardziej współdziałają z określonymi klasami. Int sprawia, że Czarodzieje i inni magiczni magowie są lepsi (lub możliwe w niektórych zestawach reguł), Mądrość jest niezbędna dla Kleryków i innych boskich magów. Ponieważ boskie i tajemne zaklęcia mają różne listy zaklęć, te dwie statystyki dotyczą różnych wymiarów gry.
Musisz zdefiniować podstawowe zasady dotyczące statystyk, zanim będziesz mógł zdefiniować funkcje progresji wzrostu i tym podobne. Nie potrzebujesz szczegółów; nie musisz mówić, że „każdy punkt siły jest dodawany do losowego rzutu, aby ustalić, czy trafi atak w zwarciu”. Potrzebne są meta reguły, takie jak „zręczność czyni atakujących dystansowych lepszymi”. Możesz później dokładnie dowiedzieć się, w jaki sposób je poprawia.
Istnieją różne sposoby rozwijania postaci. Powszechną staroświecką sztuczką Final Fantasy było po prostu użycie poziomu postaci w obliczeniach obrażeń. Może to być po prostu pomnożenie poziomu przez odpowiednią statystykę, lub może to oznaczać zastosowanie funkcji do poziomu postaci. Powiedzmy, postęp kwadratowy, aby szybkość obrażeń postaci wzrastała z każdym poziomem.
Jakkolwiek chcesz, aby twoje funkcje walki działały, muszą one uwzględniać postęp. Twoje funkcje wymagają haków do postępu.
D&D ma zabawny sposób progresji. Jest oparty na klasach; za każdym razem, gdy wchodzisz na wyższy poziom, dostajesz nowe funkcje klasowe i płaski bonus do twojego trafienia, w zależności od klasy postaci. Jednak niektóre funkcje klasowe same się poprawiły. Zaklęcia w D&D miałyby wbudowany postęp. Zaklęcie może zadać 1k4 obrażeń na 2 poziomy rzucającego zaklęcie powyżej pierwszego. Tak więc każdy inny poziom czarodzieja czyni to zaklęcie lepszym.
D&D również intensywnie wykorzystywało progresję opartą na przedmiotach. Do 4. edycji postęp oparty na przedmiotach był głównie przeznaczony do walki z postaciami, ale nawet w starszych edycjach rzucający zaklęcia posiadali przedmioty, które dawały im wzmocnienia statystyk lub inne modyfikacje (lub spłaszczanie dawało im zaklęcia).
Przedmioty to kolejna rzecz, którą muszą wziąć pod uwagę funkcje bojowe. Czy przedmioty tylko wzmacniają jedną lub więcej statystyk, gdy są na wyposażeniu, czy też robią też inne rzeczy? D&D było nieco dziwne, pod tym względem statystyki rzadko się zmieniały; broń po prostu zadała obrażenia XdY, prawdopodobnie z premią opartą na jednej z twoich statystyk. I to było to. Więc jedynym sposobem na zadawanie większych obrażeń w bitwie było znalezienie lepszej broni. W wielu grach RPG gry wideo uwzględniają poziom oprócz broni.
źródło
Twoje formuły wydają się dość skomplikowane. Nie jestem pewien, jak radzą sobie z tym profesjonalni programiści RPG, ale zalecałbym skupienie się na prostocie. Spróbuj znaleźć najprostszą możliwą formułę, która nadal zawiera zakres statystyk, których chcesz użyć. Na przykład, czy możesz modyfikować statystyki przed obliczeniem obrażeń, a nie modyfikować obrażenia podczas obliczania? Kiedy będziesz mieć na uwadze formułę, spróbuję ją przedstawić na wykresie dla szerokiego zakresu możliwych wartości, aby zobaczyć, jak będzie się ona zachowywać w miarę zwiększania się poziomu graczy. Oczywiście im mniej masz zmiennych, tym bardziej będzie to możliwe.
Ponadto BlueRaja dostarczył ważne wyjaśnienie, dlaczego możesz zobaczyć nieoczekiwane wartości na wyższych poziomach statystyki. Ważne będzie używanie niepodpisanych typów i sprawdzanie przepełnień.
źródło
Mam z tym problem. Powinieneś budować swoich bossów w oparciu o to, co twoim zdaniem powinni być w stanie poradzić sobie gracze. Budujesz graczy i formułujesz walki wokół tego, jak chcesz, aby Twoi bossowie byli.
Gdy zbudujesz mechanikę walki i role, możesz zdecydować, w jaki sposób chcesz zaprojektować swoich bossów, ponieważ powinna to być odpowiednia równowaga między obrażeniami, które gracze mogą zadawać / absorbować, a tym, co boss może zadawać / absorbować.
źródło
Te liczby, które zacytowałeś, prawdopodobnie pochodzą z drobiazgowej symulacji na przestrzeni tysięcy przebiegów.
Powinieneś więc napisać symulację, stworzyć postać na poziomie 20 i zobaczyć, jak sobie radzi przez około 200 bitew przeciwko typom wroga, z którym powinien walczyć w tym momencie. Zrób to ponownie dla postaci poziomu 30 (prawdopodobnie w następnej części świata).
Zajmie to trochę czasu, ale napisanie automatycznych symulacji z pewnością ułatwi to znacznie więcej niż zgadywanie i ręczne odtwarzanie.
źródło
Myślę, że popełniacie błąd, chcąc stworzyć formułę bez odpowiedniego projektu.
Najpierw zacznij od projektu, a następnie zacznij myśleć o reprezentowaniu projektu we wzorach. Im bardziej przejrzysty jest Twój projekt, tym łatwiej jest znaleźć proste i / lub precyzyjne formuły.
Spróbuj wdrożyć „typy” wrogów, np. „Opancerzony” => atak gracza, jeśli jest on fizyczny, zmniejsza się o 50%. Nie zmuszaj bitwy do abstrakcji, pomyśl o tym, co jest istotne, a co nie.
Jeśli według twojego projektu „pancerni wrogowie” są słabi przeciwko magii, ale silni przeciwko obrażeniom fizycznym, przedstaw to w kodzie. Pamiętaj jednak, że wykonałeś wiele testów, ponieważ wartości nie będą działać magicznie przy pierwszym pisaniu kodu. Spróbuj stworzyć projekt, umieść logikę w kodzie, zawsze sprawdzaj, czy jest to techniczna reprezentacja tego, co miałeś na myśli i czy nie zmienia to wartości, dopóki tak nie jest.
źródło
Chociaż mój projekt nie opuścił fazy arkusza kalkulacyjnego, doszedłem do jednego wniosku dotyczącego projektowania matematyki dla RPG:
Utrzymuj je tak prosto, jak to możliwe. W projekcie, nad którym pracuję, zastosowałem bardzo uproszczone formuły, które są adekwatne do systemu bezklasowego. To znaczy. Zaklęcie Ognistej Kuli ma obrażenia równe 30. Forum to:
Możemy również dodać takie modyfikatory:
Końcowym wynikiem byłoby 45 obrażeń. Odkryłem, że używanie mnożników procentowych jest bardzo łatwym i bardzo skalowalnym rozwiązaniem do pracy. Zamiast przychodzić z nieparzystymi liczbami o złożonej matematyce, aby dowiedzieć się, jaki wynik chcemy osiągnąć.
Teraz możemy obliczyć odporność na obrażenia, która po prostu obliczy obronę przed zadanym typem obrażeń. Istnieją dwa podejścia i szczerze mówiąc, nie zdecydowałem, które będą bardziej odpowiednie, ale oba są proste i opłacalne:
Tak więc wynikiem końcowym będzie 22 obrażenie (właśnie wyciąłem wynik częściowy).
Inna formuła:
Tak więc wynikiem końcowym będzie 23. Jeśli zdarzy się, że opór jest większy niż otrzymane obrażenia, postać po prostu nie otrzymuje żadnych obrażeń. Oczywiście to od Ciebie zależy, czy w takiej sytuacji nie ma miejsca, chyba że chcesz.
Chociaż muszę przyznać, że skalowanie procentowe jest nieco łatwiejsze do zrównoważenia i skalowania. Ale to zależy również od twoich liczb podstawowych. Skalowanie procentowe będzie działać najlepiej, jeśli zaczniesz od 100 lub więcej. Jeśli operujesz na małych liczbach (wszystko poniżej 100, szczerze mówiąc), może to stać się dziwne, ponieważ zaczniesz uzyskiwać wyniki zmiennoprzecinkowe, które trudno będzie zrównoważyć i faktycznie zrobić z nimi coś interesującego.
Prawdopodobnie optymalnym rozwiązaniem w takim przypadku jest zastosowanie obu podejść, gdy uznają, że pasują. Lub jeśli jesteś fanem wielkich liczb, zacznij od 1000.
I na końcach. Nie do końca doszłam do tych wniosków. Spędziłem sporo czasu, czytając różne instrukcje RPG (Hero, DnD). Szczególnie pomocne było DnD, ponieważ działa na podobnych zasadach, ale zamiast atrybutów używa poziomów dla swoich formuł, mogą one być czasem bardziej złożone. Niż to, co tutaj przedstawiłem.
W przypadku obu przypadków najlepszą radą jest: staraj się, aby były one tak proste, jak to możliwe. Nie używaj żadnej zaawansowanej matematyki ani długich równań, ponieważ są one podatne na błędy, które są trudne do wykrycia, gdy masz do czynienia z 87234 innymi rzeczami jednocześnie.
źródło
Jak wspomnieli inni, formuła Final Fantasy X jest dość złożona. Ogólnie dla tej serii im późniejsza gra, tym bardziej skomplikowana formuła. Prawdopodobnie łatwiej jest całkowicie oprzeć formułę obrażeń na innej grze. Ogólnie jednak myślę, że warto omówić z bardzo ogólnego poziomu, jakie formuły obrażeń można znaleźć na świecie i jak stworzyć grę opartą na nich. Pierwszą rzeczą, którą musisz zdecydować, jest to, jakie obrażenia chcesz zadać pod koniec gry i jakie statystyki chcesz, aby gracz mógł mieć? Gdy to zrobisz, możesz wybrać system formuł, a następnie zoptymalizować formułę i wartości broni, aby odzwierciedlić te zakresy w czasie.
Oparte wyłącznie na statystykach
To dobry pomysł, jeśli chcesz, aby twoje postacie były elastyczne pod względem poziomów wrogów, z którymi mogą się zmierzyć. Taka formuła będzie zależeć tylko od statystyk gracza, jego wyposażenia i statystyk wrogów. Te formuły są zwykle dość proste. Na przykład Final Fantasy Legend II (patrz http://www.shenafu.com/ffl2/weapon.php) ma broń, która wyrządza szkody w oparciu o prostą formułę:
Taka formuła jest dobra, jeśli chcesz bardzo prostej metody szacowania obrażeń lub szybkiego punktu odskoczni do modyfikowania obrażeń w oparciu o inne czynniki, takie jak umiejętności i słabości żywiołów.
Aby pokazać, jak szeroki może być ten rodzaj formuły, rozważ formułę obrażeń dla gry Inflacja RPG, gry na Androida i iOS (patrz http://inflation-rpg.wikia.com/wiki/Calculations ). Formuła w dużej mierze zależy zarówno od statystyki, jak i od wyposażenia. Każdy element wyposażenia ma dwie statystyki - bonus do statystyki ATK i wartość mnożnika. Niektóre elementy wyposażenia mają niskie mnożniki, ale wysokie bonusy, inne mają niskie bonusy, ale wysokie mnożniki. Dla postaci posiadającej tylko 10 ATK, Topór Bojowy z premią 5000 ATK, ale niskim mnożnikiem 145% jest doskonałym wyborem. Całkowite obrażenia wynoszą
(10+5000)*1.45 = 7264
, ale Estoc, z premią 0 i mnożnikiem 300%, jest złym wyborem - obrażenia są(10+0)*3 = 30
. W dalszej części gry postać z atakiem 5000 wolałaby zmieniać broń.Na podstawie statystyk i poziomów:
Dobrym przykładem tego jest Final Fantasy V, VI i Final Fantasy XII (patrz na przykład http://www.gamefaqs.com/ps2/459841-final-fantasy-xii/faqs/45900 ). Wzór na miecze w FFXII jest następujący:
a wzór obrażeń dla pięciolinii jest następujący:
Są bardzo podobne, ale zauważ, że formuła miecza zależy tylko od siły i poziomu, podczas gdy formuła kija zależy od siły, magii i poziomu. Zaletą tego rodzaju formuły jest to, że pozwala graczowi na dwa sposoby rozwoju - budowanie statystyk lub budowanie poziomów. Minusem jest to, że również karze postacie na dwa sposoby. Ostatecznie to pozwala graczowi wyrównać poziom, aby zwiększyć zadawane obrażenia (w przypadku FFXII oznacza to zwiększenie zadawanych obrażeń o ~ 4% na poziom około 50, gdy weźmiesz pod uwagę przyrost statystyk), aby pomóc dostosować poziom trudności do ich poziom komfortu.
Naprawiono uszkodzenia:
Formuły o ustalonych obrażeniach nie zależą od statystyk postaci ani od poziomu, zależą tylko od wewnętrznej formuły obrażeń samej broni. Wciąż mogą się różnić w zależności od zasięgu, ale zadają takie same obrażenia niezależnie od użytkownika (z wyjątkiem wszelkich innych efektów specjalnych lub cech postaci). Najlepiej nadają się do użycia, jeśli broń będzie zadawać stałe obrażenia, a zdolność do wyposażenia broni zależy od statystyk i / lub poziomu. Robi to na przykład Diablo 2, podobnie jak wielu roguelike, które dysponują bronią zależną od rzutu kością. Biorąc to pod uwagę, „ustalone obrażenia” nie oznaczają „nieprzypadkowego” - i w rzeczywistości zazwyczaj wyrządzane szkody mają pewien element losowości.
Jest to dobra metodologia, jeśli chcesz mieć broń łatwą do przenoszenia między postaciami lub dokładnie kontrolować zadawane obrażenia, które postaci w określonych punktach gry mogą zrobić, jeśli wiesz, do jakiego sprzętu mają dostęp (za pośrednictwem tablic zrzutu, skrzyń) i kraść stoły).
Innym miejscem, w którym się na to natkniesz, są określone rodzaje sprzętu lub przedmiotów w Final Fantasy. Na przykład 1000 igieł zawsze zadaje 1000 obrażeń. W Final Fantasy Legend II sztuki walki zadają obrażenia w oparciu o wzór:
Final Fantasy XII ma również nieco ustalone obrażenia dla dział, zadając obrażenia zgodnie ze wzorem:
Chociaż obrażenia są dość losowe, różnią się jedynie o 26,5 procent w całym zakresie, więc masz pewność, że z czasem zadasz określony poziom obrażeń. Tego rodzaju ataki są przydatne dla postaci, które mają zarówno niskie statystyki, jak i niski poziom w grach, które zwykle odpowiadają za te czynniki w zadawaniu obrażeń. Ponadto ignorują obronę celu (chociaż formuła może być łatwo przerobiona, aby pasowała do obrony, jeśli chcesz).
źródło
ze względu na napotkany problem we wszystkich grach z końcowej serii fantasy limit statystyk wynosi 255. na poziomie 100 statystyki wyniosłyby 255.
mówisz o zwiększaniu statystyk za pomocą umiejętności i sprzętu. Pamiętam, że widziałem to w grach, ale sposób, w jaki to się dzieje, jest w formule. jest dodatkowy krok, który sprawdza modyfikatory umiejętności i wyposażenia i stosuje je po użyciu statystyk.
w twoim przypadku byłby to krok 21: zastosuj modyfikatory umiejętności krok 22: zastosuj modyfikatory wyposażenia krok 23: obrażenia końcowe.
jeśli jesteś zainteresowany google dla ostatecznych formuł fantasy, są tam. Mam kopie faktycznej mechaniki bitwy, w tym sztucznej inteligencji do ostatecznych fantasy 4, 6, 7 i 9. ludzie złamali je z oryginalnych gier, gdy tworzyli romy dla emulatorów. Nietrudno jest znaleźć, jeśli spojrzysz wystarczająco mocno.
największą rzeczą do tworzenia formuł są testy. skonfiguruj skrypt, aby poprowadzić bitwę po obu stronach i przeprowadzić kilkaset bitew. zmieniaj potwory i statystyki i sprawdzaj, czy to działa, czy jeśli poziom 40 zabije wszystko, jest całkiem możliwe, że boss nie jest w stanie zabić lola. wskazówką byłoby wyłączenie wszystkich animacji, ponieważ imponujące jest to, jak szybko AI mogą walczyć, gdy nikt nie patrzy.
źródło
Pierwsze 2 rzeczy to:
Kiedy już to wiesz, masz wystarczająco dużo informacji, aby użyć formuł matematycznych, o których BlueRaja wspomniał w swojej odpowiedzi . Pamiętaj tylko, że nie ma czegoś takiego jak „odpowiednia” formuła obrażeń - tylko taka, która pasuje do twojego projektu dla rodzaju doświadczenia, jakiego oczekują twoi gracze.
źródło
alternatywnie, jeśli szukasz bardzo prostej formuły, wykonaj następujące czynności:
(Pamiętaj, że to mój pomysł na formułę)
Po pierwsze, dla prostej formuły ataku potrzebujesz tylko kilku statystyk. Statystyka ataku gracza (może to być Siła lub Magia, w zależności od rodzaju ruchu).
Następnie utwórz zmienną o nazwie MovePower. Będzie to zależeć od ruchu, a lepsze ruchy miałyby lepszą siłę ruchu. W przypadku mojej formuły ogólne polecenia „Atak” mają Siłę Ruchu równą 5.
Następnie uczyń obronę statystyką opartą na procentach (i oczywiście uniemożliwi osiągnięcie 100% obrony przed obrażeniami)
Następnie, podczas fazy ataku, wystarczy pomnożyć statystykę ataku przez siłę ruchu i usunąć obrażenia na podstawie obrony przeciwników! prosty!
Możesz także zdecydować się na innych modyfikatorów, na przykład, jeśli ruch uderzy (Celność), jeśli ruch ma kolejny dodatkowy efekt (Bio, zadające truciznę) i zdecydujesz się na trafienie ((Dokładność ponownie), zwiększy obrażenia / obniży ocenę ruchy, które zmieniają statystyki, itp. Baw się dobrze!
źródło
Zasadniczo musisz dowiedzieć się dwóch rzeczy.
1
Możesz użyć
double
biblioteki użytkownika lub dużej liczby. Wykonywanie obliczeń z dużymi liczbami (np. W grach typu klikanie / bezczynność często opiera się na bibliotekach z tak dużymi liczbami). W twoim przypadku liczby są stosunkowo małe, więc użycie 64-bitowej liczby zmiennoprzecinkowej zapewni wymaganą elastyczność.2)
Jak chcesz, żeby gra się zachowywała? kilka przykładów:
ATK
decyzja, czy uderzysz, czy nie, i rzucisz kością o znanej wartości obrażeń w zależności od broni: na przykład długi miecz 1d8, miecz dwuręczny 1d10, sztylet 1d4. Nie będzie to skalować zadziwiająco dobrze, jeśli hp będzie rosło bez końca. Jeśli użyjeszATK
do ustalenia, czy postacie trafią, czy chybią, możesz wykonać kolejny rzut po udanym trafieniu za pomocąATK
* 80%, aby ustalić krytykę.(ATK - DEF) +/- 20%
jak ma to miejsce w World's End (gra strategiczna RPG). Oznacza to, że ataki na silnego przeciwnikaDEF
nie powodują żadnych obrażeń. Dla instaceATK = 10
,ENEMY DEF = 12
,(ATK - DEF) = -2
a to oznacza również, że wysoki atak vs nieco niższym def, można zrobić małe obrażenia, co potencjalnie czyni bitwy już ze wzrostem HP. Na przykładATK = 1010
,ENEMY DEF = 1005
obrażenia wynosiłyby 5. Obrażenia wzrosną również dramatycznie, jeśliATK
zostaną zwiększone o niewielki procent. Na przykładATK = 1055
zada o 900% więcej obrażeń, aATK
wartość wzrośnie tylko o 5% .ATK / DEF * WEAPON_DAMAGE
to będzie skala bardziej stopniowo, gdyATK
alboDEF
są zwiększone i pozwalają słaby napastnik uszkodzić stwora z silnaDEF
.tl; dr Musisz traktować swoje liczby odpowiedzialnie i dowiedzieć się, jak chcesz, aby gra zachowywała się w różnych sytuacjach. Kilka pytań do siebie:
x
bitwę? Czy powinno to być beznadziejne, czy wygrana powinna byćy%
mniej / bardziej prawdopodobna?źródło