Chciałbym stworzyć symulator (zasadniczo do celów testowych) do gry (League of legends).
Podstawy gry:
masz bohatera, który ma kilka statystyk:
- Punkt zdrowia
- Obrażenia od ataku
- Szybkość ataku
- Zbroja
- Penetracja pancerza
- Prędkość ruchu
Bohater może mieć 4 umiejętności (dostajesz jeden punkt umiejętności na każdym poziomie) (Są one aktywowane ręcznie, przez większość czasu, ma czas odnowienia, obrażenia, stosunek siły ataku / skalowania obrażeń ataku i poziom umiejętności) + umiejętność pasywna
Możesz zabijać wrogich bohaterów lub neutralne potwory, mają one te same statystyki:
- Punkt zdrowia
- Obrażenia od ataku
- Szybkość ataku
- Zbroja
Co chciałbym zrobić:
Utwórz narzędzie do testowania, czy określony przedmiot lub określony wzrost statystyk przyspieszy twoją moc / szybkość zabijania.
mapa: http://evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg
Przykłady statystyk:
- Hp: 420
- Ogłoszenie: 55
- AttackSpeed: 0,613 (ataki / s -> każdy atak w 1 / 0,613 s)
- penetracja pancerza: 25
Postać automatycznie zaatakuje wroga z prędkością 1 / ataku i zadając obrażenia atakiem (istnieje formuła do obliczenia obrażeń, ale chyba nie jest to ważne w tej fazie), gdy są martwi, przechodzą do następnej z prędkością ruchu ( widać obozy na mapie, żółte czaszki)
Myślałem o algorytmie:
Pomyślałem, że jeśli zrobię for z i = 0 do i = 30000 (zliczanie ms), więc mogę po prostu sprawdzić HP wroga i moje HP również przy każdym ms okazało się tak źle (całkiem ciężkie procesor, i chciałbym żeby dodać trochę losowości, więc powinienem być w stanie podsumować iterację 1k, co jest niemożliwe)
Po drugie, pomyślałem, że powinienem zrobić od i = 1 do 30 i sprawdzać co sekundę, i sprawdzać, co się stało w ostatniej sekundzie, ale niektóre neutralne potwory są w dużym obozie (do 4 potworów) i w ten sposób kod stawał się skomplikowany i skomplikowany.
Stworzę wątki dla każdego gracza / potworów, a kiedy skończą, odszukaj, kiedy umierają, i zmniejszę hp gracza.
Moje pytanie, czy to dobra droga?
TLDR: Chciałbym stworzyć narzędzie do analizy (iteruj 1k i obliczaj średnią) na temat gry, której wzrost statystyk sprawiłby, że postać zabijałaby szybsze neutralne potwory.
Wolałbym java, ale utknąłem w algorytmie.
@Karoly S: Tak, to moje złe, .com -> .eu
Pracowałem nad tym:
Sprawdzam pozostały czas na każdym obiekcie (umiejętność gracza, automatyczny atak, wzmocnienia) i zawsze wybieram najkrótszy czas, przechowuję ostatni czas i dodam od czasu do czasu, w następnej rundzie obliczam czas do ( ostatni raz)
Jeśli obiekt ma pozostały czas 0, zrobi wszystko, co trzeba.
Nie wiem, czy to efektywny sposób, czy nie, ale to najlepsze, co mogłem zrobić.
Odpowiedzi:
Alternatywy dla symulacji klatka po klatce:
Można uzyskać pewnego rodzaju przybliżenie do symulacji za pomocą wzoru takiego jak
Możesz także utrzymywać kolejkę ruchów, aby symulować ruchy, a nie tyknięcia:
źródło