Will Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Mam pytanie. Czy jest możliwe wczytywanie części mapy. Tzn wchodzimy w nowy room i wczytuje się on po części. W zasięgu wzroku, pozwoli to chyba na wyciągnięcie dużej ilości FPS. Czy jest to wogule możliwe a jeśli tak to bardzo proszę o informacje o tym :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Oczywiście że jest. =) Trzeba tylko opracować odpowiedni system zapisu/odczytu takiej mapy. Choć nie wydaje mi się że jest to dobry pomysł, lepszym jest załadowanie całej mapy i zdezaktywowanie obiektów niewidocznych. To najlepsze rozwiązanie. =) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 Mógłbyś mniej więcej opisać na czym to polega? Ten system deaktywacji. Chodzi o to że jeżeli obiekt nie jest widoczny na ekranie nie jest aktywny? Jeśli o to to czy mógłbyś mniej więcej opisać jak to osiągnąć. Mam problem gdyż jestem dopiero przy drugiej mapce w mojej grze a wyciągam max 30fps. Kompa nie mam jakiegoś super (Duron 1.8 256ramów i karta 64 mb) ale nie przesadzajmy żeby sie 2d gierka rwała xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Chodzi o to że jeśli obiekt jest zdezaktywowany to nie wykonuje swoich eventów, włącznie z rysowaniem - więc nie jest też widoczny. Więc zamiast niszczyć obiekt gdy nie jest potrzebny i tworzyć go/ładować z pliku gdy znowu powinien się pojawić na ekranie gracza po prostu go wyłączasz bądź włączasz. Masz funkcje z rodziny instance_deactivate_... i instance_activate_.... I wszystko sprowadza się tylko do ich użycia, więcej w helpie. =) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 Znalazłem ale na razie nie zamykam tematu bo nie wiem czy sobie z tym poradzę :P Ale myślę że tak ;P A tak wogule pomaga to? bo jak nie to nie będe się w to bawił xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Oczywiście, można tworzyć planszę dowolnej wielkości nie patrząc na wydajność, no chyba że chodzi o wykorzystywane zasoby takie jak pamięć. :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 if distance_to_object (obj_bohater) > 300 { instance_deactivate_object (o_fog) } else if distance_to_object (obj_bohater) < 300 { instance_activate_object(o_fog) } Zrobiłem taki kod i teraz wogule nie ma mgły ;P co jest w nim źle? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Może być tak: xx = obj_bohater.x; yy = obj_bohater.y; instance_deactivate_region( xx - 300, yy - 300, 600, 600, false, 1 ); instance_activate_region( xx - 300, yy - 300, 600, 600, true ); //Aktywacja obiektow ktorych dzialanie jest niezbedne instance_activate_object( obj_bohater ); Wtedy tworzysz listę obiektów które muszą być aktywne (na dole ten dopisek), albo tak: xx = obj_bohater.x; yy = obj_bohater.y; for( n = 0; n < instance_count; n += 1 ) { i = instance_id[n]; if( !instance_exists( i ) ) continue; // Typ obiektu do dezaktywacji if( !object_index == o_fog ) continue; if( point_distance( i.x, i.y, xx, yy ) > 300 ) instance_deactivate_object( id ); } instance_activate_region( xx - 300, yy - 300, 600, 600, true ); I robisz listę do dezaktywacji ( patrz ten dopisek w kodzie ). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 Kod działa świetnie. Szybkość gry znacząco sie poprawiła ^^ Jednakże dalej nie mogę sobie z mgłą poradzić albo jest cały czas albo wogule. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Nie wiem jak wygląda ta mgła u Ciebie. Są to pojedyncze obiekty o_fog leżące na całym roomie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 To mgła z przykładów gmclanu. Enable_fog=60 ta funkcja rozjaśnia określony teren. a mgła jest jednym obiektem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Właśnie w tym przykładzie zrobiłem taki mały haczyk. :) Poprawię go i z edytuje posta. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 Czekam z niecierpliwością. Ten kod jest na prawdę świetny dziwie się że wcześniej go nie widziałem. Wystarczyło go z edytować i działa wyśmienicie no poza tą mgła :] Jak poprawisz to napisz na czym polega zmiana. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 https://gmclan.org/index.php?plik=80 Co do poprawek... zmieniłem wszystko, nie ma co się rozdrabniać. :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 O Boże. Nieźle uprościłeś xD Teraz z tego nic nie czaje ale przyznam że działa świetnie ;P Napracowałeś się i trzeba to przyznać wielkie dziex za pomoc! Jednakże zauważyłem mały problem wyskakuje błąd Data structure with index does not exist (czasem tylko wyskakuje a czasem nie 0o) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Opiszę: - Create: -- Określenie viewa w zmiennej global._fogView -- Badanie czy ustawiono -1 w global._fogView, jeśli tak to ustawia rozmiary surface na rozmiary rooma, jeśli nie to sprawdza czy view istnieje jeśli tak to ustawia rozmiary surface na rozmiary viewa jeśli nie to na rozmiary rooma. -- Pozycja rysowania surface w global._fogX i global._fogY, domyślnie 0, 0. -- Tworzenie surface o określonych wcześniej rozmiarach. -- Tworzenie listy jeśli jeszcze nie istniej i listy priorytetów. - Step: -- Przekazywanie wszystkich stworzonych świateł z listy do listy priorytetowej razem z jego depth w postaci priorytetu pod warunkiem że światło jest widoczne w okienku, w przeciwnym wypadku jest pomijane. -- Rozpoczęcie rysowania i wyczyszczenie całego surface kolorem czarnym. -- Rysowanie świateł znajdujących się na liście priorytetowej uwzględniając depth ( priorytet ) oraz jego typ. -- Zakończenie rysowania na surface. - Draw: -- Update pozycji surface jeśli view został ustalony. -- Rysowanie wszystkiego. - fogLightAdd...: -- Tworzenie mapy (światła). -- Dodanie podstawowych kluczy takich jak typ, x, y, r ( rozmiar maksymalny ) i depth. -- Dodanie innych kluczy ( tylko w przypadku fogLightAddNormalExt, fogLightAddSprite, fogLightAddSpriteExt ). -- Zapisanie identyfikatora do listy. - fogLightMove: -- Tylko i wyłącznie zmiana pozycji światła. - fogLightUpdate...: -- Zmiana wartości wszystkich kluczy dla stworzonego wcześniej światła. EDIT Dziwne, u mnie nie ma błędów. :/ A jaka treść? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 ERROR in... Create event for object obj_bohater: data structure with index does not exist. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Musiałeś czegoś nie skopiować. U mnie naprawdę błędu nie ma. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 22 Kwietnia 2007 Autor Udostępnij Opublikowano 22 Kwietnia 2007 Sprubuję jeszcze raz wszystko skopiować. Jakbym nie mógl dać sobie rady mógłbys looknąć na plik? Jasne. =) Tymon Nie wiem co jest nie tak 2 razy kopiowałem i nic ;/ Jakbyś podał e-mail o ile możesz to bym Ci plik wysłał. Napisz na PW, albo GG. :3 Tymon Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 22 Kwietnia 2007 Udostępnij Opublikowano 22 Kwietnia 2007 Problem rozwiązany. Z racji iż nie istnieje funkcja sprawdzająca czy lista istnieje używam variable_global_exists, a Will miał zaznaczone ustawianie wszystkich nieistniejących zmiennych na 0 co powodowało błąd ( zmienna istnieje, ale lista nie ). Proste jak drut. =P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 23 Kwietnia 2007 Autor Udostępnij Opublikowano 23 Kwietnia 2007 No tak dla ciebie to banał jakich mało ;) Problem rozwiązany. Bardzo dziękuje za pomoc! Zamykam temat. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi