Skocz do zawartości

Map loader V2


Rekomendowane odpowiedzi

Witam. Jest to kolejny przykład ładowania map, tylko tym razem z pliku binarnego i chunkami. Nie robiłem komentarzy bo mi się nie chciało ;D ale kod jest na tyle prosty że można go zrozumieć bez nich. Rozmiar chunka to pierwszy bajt w pliku, można go zmienić w edytorze.

 

Klawiszologia:

edytor:

Enter - zapis mapy

Spacja - wczytanie mapy

Kółko myszy - przewijanie obiektów

Lewy przycisk myszy - Tworzenie obiektu

 

Obydwa:

Aby przesunąć view dojedź myszką do krawędzi okna.

 

!!WAŻNE!!

Obiekty muszą być wyrównane do siatki 32x32(można to zmienić), i tylko jeden obiekt na jeden "kwadrat"(Poprawione w nowej wersji).

Gdy naprawdę będziesz chciał to użyć w grze, radzę zmienić sposób pobierania id obiektu, albo pilnować aby obiekty miały ten sam id w edytorze i grze(Poprawione w nowej wersji).

 

>>Download<<

 

!!!UPDATE!!!

Teraz obiekty można kłaść jak(i ile) się chce :)

 

PPM - usuwanie obiektu.

 

Ważne uwagi:

chunk_size musi się mieścić w przedziale od 1 do 8.

 

>>Download V2<<

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

dajesz wszystkim obiektom które da się stawiac na mapie jednego parenta, PAR_MAP.

Tworzysz ds_listę, wstawiając kolejne nazwy obiektów

w zapisie:

GML
with (PAR_MAP) {

file_bin_write_byte(fileid, ds_list_find_index(LISTA, object_index));

}

 

a w odczycie:

 

GML
instance_create(xx,yy,ds_list_int_find_value(LISTA, oid);

 

id obiektów możne być rożne w obu grach, ważne, żeby na liście były w tej samej kolejności. przy okazji, jakis element na mapie moze obrazowac inny w grze :)

 

samo x i y mozna rozbijać i zapisywac jako dwa bajty

GML
file_bin_write_byte(x >> 8);

file_bin_write_byte(x & 255); // albo x & $FF</span></span></span>

i odczytywać

GML
x = file_bin_read_byte(fileid) << 8;

x |= file_bin_read_byte(fileid);

Odnośnik do komentarza
Udostępnij na innych stronach

Gnysek tylko mi chodziło o zapis chunkami dla dużych map gdzie takie ładowanie było by za wolne, a co do tego że tylko jeden obiekt na kwadrat to jak będe miał chwilkę to napisze, narazie nauka.

Ps: A autoupdate to zapomniałem o tym, ale zrobię w tym tygodniu też.

Pps: adam ten pomysł nie przejdzie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

@edie: po tym, jak Mike już naprawi wczytywanie binarne plików w GM w jednym z kolejnych updateów Studio, to w tej wersji GM będzie to bardzo szybkie. Ale w 8.1 - masz rację.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Można napisać DLLa, albo uzyc jakiegoś z odczytem plików, który nie czyta bajt po bajcie, tylko buforuje i problem z głowy. Najprostszy to ofc. 39dll. Wtedy jest szybko, ja tak robie w Almorze.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
  • 3 miesiące temu...

Edytor:

GML
___________________________________________

ERROR in

action number 1

of Key Press Event for <Space> Key

for object loader:

 

Error reading byte.

Przykład:

GML
___________________________________________

ERROR in

action number 1

of Create Event

for object loader:

 

Error reading byte.

To samo jest na 8.1 jak i na 8.0

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...