Jestem absolutnym początkującym w programowaniu gier, jeśli to pytanie jest źle sformułowane, pamiętaj, że nie był to niechlujność po mojej stronie, ale brak doświadczenia w programowaniu gier.
Gra, którą planuję kodować, będzie używać mapy 2D z góry jako „świata”. Świat może być większy niż okno (okno może powiększać lub pomniejszać), a pojazdy mogą być zlokalizowane w dowolnym punkcie świata (= nie jest to mapa kafelkowa, przestrzeń jest „ciągła”).
Wyjaśnij na przykładzie: jeśli świat jest terenem o wymiarach 1000 x 1000 metrów, pojazd może znajdować się w odległości (327,31, 720,4) metrów.
Moje pytanie brzmi: jaki jest najwygodniejszy sposób reprezentowania świata wewnętrznie? Mógłbym pomyśleć o tych możliwościach:
- nic nie rób i używaj mierników tak, jakbym pracował z fizycznym przedmiotem,
- znormalizować do pikseli określających rozmiar świata jako liczbę pikseli reprezentujących 1000 metrów przy maksymalnym powiększeniu,
- znormalizuj do 1, definiując słowo jako kwadrat wielkości 1
... ale jestem pewien, że mogą istnieć inne / niektóre z nich mogą nie mieć sensu. Chodzi o to, że będąc moją pierwszą grą, nie mam przed sobą jasnych zdjęć problemów i chciałbym uzyskać wskazówki, jak dokonać właściwego wyboru początkowego.
Dziękuję za Twój czas.
Odpowiedzi:
Zgadzam się z wykorzystaniem rzeczywistej wartości (metrów, stóp itp.) Jako podstawy odległości. Problem z pozostałymi dwiema sugestiami polega na tym, że obie są zmiennymi. Praca ze światem wielkości
1
spowoduje, że cała arytmetyka będzie zmiennoprzecinkowa między -1 a 1, co może prowadzić do większej liczby błędów zmiennoprzecinkowych. Ponadto, jeśli kiedykolwiek zdecydujesz się na tworzenie różnych rozmiarów światów („duże” światy dla dłuższych gier itp.), Wprowadzisz wiele problemów do swojego kodu. Podobnie, jeśli używasz pikseli, nawet przy maksymalnym / minimalnym poziomie powiększenia, wpadniesz w zamieszanie, a także problemy, jeśli zdecydujesz się zwiększyć lub zmniejszyć poziomy powiększenia.źródło
Spośród trzech zasugerowanych przez ciebie opcji, korzystanie z mierników będzie prawdopodobnie najlepsze. Gdy tworzysz inne dane, radzenie sobie z długością w metrach znacznie ułatwi ci życie. Między innymi możesz zdecydować o zmianie rozmiaru świata lub różne poziomy mogą wymagać map o różnych rozmiarach.
Możesz także zdecydować się na użycie stóp (lub ewentualnie cali). Część tej decyzji może zależeć od tego, jakich pakietów oprogramowania pośredniego używasz - niektóre silniki fizyki preferują taki czy inny typ jednostki (choć prawie zawsze można ją konfigurować). W przeważającej części możesz po prostu wybrać jednostkę i iść z nią.
źródło
Normalizacja do „1” nie jest tak naprawdę dobrą drogą (co zrobić, jeśli masz świat, który nie jest kwadratowy? Lub kilka światów o różnych rozmiarach ...).
Używanie pikseli jako ... NIGDY Nie mieszaj rozgrywki i środków graficznych !! Nie zamykaj się, aby nie można było zmienić grafiki bez konieczności zmiany kodu.
Tak więc mierniki (stopy lub jakikolwiek inny pomiar, który lubisz najbardziej) to droga. Znacznie lepiej poczujesz kodowanie wyrzutni rakiet, aby poruszała się z prędkością 50 km / h niż 0,00076 jednostek na sekundę ...
źródło