![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Witam, dostałem zlecenie zaprojektowania gry 2d(w Canvas/JS) gry która może być rozbudowana, więc pomyślałem, że napisze silnik który będę mógł wykorzystać w innych projektach, jako, że Canvas ostatnio staje się coraz popularniejszy.
Zrobiłem już trochę ale mam problem: Gra jest uruchomiona w pętli(pętla uruchamia się z częstotliwością 8-64 Hz, zależnie od tego jak ustawimy. Aktualnie przy odświeżeniu przerysowuję wszystko. I tutaj pojawia się moje pytanie. Funkcja odpowiadająca za przerysowanie wygląda mniej więcej tak:
i wykonuje sie ona 2^n razy na sekundę z przedziału od 8-64. Aktualnie przerysowywane są wszystkie obiekty narazie jest ich około 200(prosty świat i bohater który może się poruszać[tylko poruszać]), ale co jeśli będzie ich 5000 przy dużym świecie, wtedy zajdzie potrzeba filtrowania który obiekt jest na ekranie. I tutaj pytanie jak to zrobić? Myślałem nad czymś takim: PSEUDO KOD:
I co z kolizjami. Nie chodzi mi o to jak sprawdzać kolizje bo zaimplementowałem 2 podstawowe algorytmy(Przybliżenie kołem i przybliżenie prostokątem). Jednak mam wachanie kiedy sprawdzać kolizje. Do sprawdzania kolizji mam funkcję: collision_id = DefineCollisionTest(Obiekt1, Obiekt2, Options) i umożliwiłem zdefiniowanie kolizji pomiędzy obiektem1 a obiektem2, dodatkowo mogę zdefiniować do jakiej grupy ma należeć dany obiekt. I tym samym w pętli sprawdzam przy renderowaniu czy wystąpiła kolizja i wykonuje jakiś kod. który definiuje sobie(w sumie to nie myślałem gdzie) ale np w collision_id.callback; 1) Przy przerysowaniu dla aktualnie renderowanych obiektów wtedy sprawdzam raz w pętli. 2) Przy Updacie obiektu(sprawdzam raz dla obiektu ale daje mi to pewność, że gdy np kolizja wystąpi z obiektem 12021 a ja sprawdzam w tym czasie już kilka obiektów dalej. to zwróci kolizje natychmiast. Ale to jest kilka, kilkanaście pętli dodatkowych sprawdzających to samo co podczas rysowania(tylko nie rysujących), a znowu nawet 15fps nie powinno pozwolić na spostrzeżenie błędów. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
Witam,
poczytaj artykuły na tej stronie http://www.unit1.pl/224,idx powinny cię zainteresować artykuły z serii "Wędrowanie w świecie 2D", "Giganty świata 2D" oraz być może "Góry i doliny świata 2D". Tak wiem że to zupełnie inny język i inna technologia ale chodzi samą "ideje" i teorie która dla js będzie bardzo podobna |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje za linka przeglądnąłem z grubsza te artykuły i bardzo ciekawe, Jeśli ktoś znajdzie temat to dorzucam swoje:
http://lazyfoo.net/SDL_tutorials/index.php http://informatyka.wroc.pl/ Te strony są naprawdę godne polecenia, całą wiedzę o tworzeniu gier zdobyłem z nich. Jeśli ktoś miałby inne godne polecenia strony to proszę o podanie. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
http://warsztat.gd/ (pl)
http://www.gamedev.pl/ (pl) http://www.gamasutra.com/ (en) http://www.gamedev.net/ (en) -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 13:44 |