Zakładam, że jest to pytanie o równowagę gry, a nie o kodowanie, i istnieje wiele sposobów, aby sobie z tym poradzić. Z twojego istniejącego algorytmu podejrzewam, że komplikujesz go bardziej niż trzeba (trzy atrybuty ORAZ liczba losowa tworzą wyjątkowo błotnisty system z perspektywy gracza). Moim pierwszym instynktem jest uproszczenie!
Preferuj atrybuty, które wykonują wiele czynności, a nie wyniki, które są określane przez wiele atrybutów. DEX działa dobrze jako główny wyznacznik szansy na trafienie; dodanie wszystkiego innego służy jedynie utrudnieniu równowagi. Pomyśl o tym w ten sposób: oczekiwane obrażenia gracza przy każdym trafieniu to jego% trafienia pomnożony przez ich średnie obrażenia po trafieniu. Jak planujesz obliczyć „oczekiwany” lub „typowy”% trafienia przy tak wielu zmiennych?
Widzę inny problem, polegający na tym, że formuła nie skaluje się i prawdopodobnie tego właśnie doświadczasz. Zakładając, że DEX, LUCK i SPEED mają tendencję do zwiększania się w trakcie gry, różnice między graczem i potworem w tych statystykach również będą się zwiększać. Przykładowo, jeśli DEX gracza we wczesnej fazie gry mieści się w zakresie od 4 do 6, podobnie jak potwory, jest to modyfikator 10-20% do trafienia. Jeśli w późniejszych etapach gry zasięg wynosi od 10 do 20, oznacza to 100% modyfikator.
Jednym ze sposobów, aby to naprawić, jest utrzymanie stałych statystyk. Zasięg graczy i potworów jest taki sam w trakcie gry, a uzyskanie czegoś takiego jak +1 DEX to ogromna sprawa, niezwykle rzadka i traktowana jako taka (jeśli w ogóle istnieje). Wtedy twoja formuła będzie dobrze działać przez całą grę, a zobaczysz gracza z taką samą szansą na trafienie przez cały czas.
Innym sposobem jest zmiana tej zakodowanej „10” na skalowaną wraz z poziomem, więc może to „10 + poziom potwora” lub „10 + poziom lochu” lub coś takiego, co powoduje niewielki wzrost trudności w miarę postępu gry, chyba że gracz awansuje na wyższy poziom odpowiednio ich statystyki.
Trzeci sposób, jak powiedzieli inni, to ustawienie twardych limitów na najwyższy i najniższy dopuszczalny% trafień i po prostu powiedzenie „jeśli obliczona wartość jest mniejsza niż X, zamiast tego użyj X”.
Ze względu na kompletność zaznaczę, że nie ma absolutnego prawa, że MUSISZ uwzględniać przede wszystkim rzut na trafienie. Nieefektywne działanie w grze nie jest szczególnie zabawne i naprawdę nie wzbogaca doświadczenia, z wyjątkiem rzadkich przypadków. Alternatywą jest pozwolenie graczom ZAWSZE uderzać i po prostu zadzierać z zasięgiem obrażeń, aby czasami zadawali o wiele mniej obrażeń niż inni. Pamiętaj, że złożone systemy są bardziej zabawne dla projektanta niż dla gracza.