NukeBoards - Kreatywność przede wszystkim
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  DownloadDownload
RejestracjaRejestracja  ZalogujZaloguj

Odpowiedz do tematu
Poprzedni temat :: Następny temat
[Algorytm] AutoTile
Autor Wiadomość
Cootje 
Legenda


Pomógł: 35 razy
Posty: 644

18047 Prestiż
Wysłany: 11-09-2013, 01:07   [Algorytm] AutoTile

Witam,

Chciałbym przedstawić sposób na stworzenie AutoTile - metody używanej w wielu edytorach map bardzo przydatnej i przyśpieszającej maping naszych gier.
Istnieje wiele różnych algorytmów przykładowo dla podłoży jak w RPG Maker lub dla samych ścian, ale ja przedstawię uniwersalny sposób nadający się do tworzenia map dla gier z widokiem z góry jak i platformówek.


Algorytm:


Kod:

1.0 Ustaw badany klocek na ostatnio postawiony.

1.1 Dla badanego klocka zlicz sąsiadów ustawiając odpowiednio 8 flag (0 - pole puste, 1 - pole pełne).

1.2 Podczas liczenia jeśli napotkamy sąsiadujący klocek, który nie był jeszcze sprawdzony i jest sąsiadem ostatnio postanowionego
wracamy do punktu 1.1

1.2.1 Jeśli napotkamy sąsiada ustawiamy flage na 1 jeśli nie to na 0. ( sąsiad 1 flaga1, sąsiad 2 lfaga2 itd... )

1.3 Po skończeniu zliczania sąsiadów ustawiamy danemu klockowi animacje według jego flag po czym zerujemy flagi.



Wizualizacja:



Na fioletowo zaznaczono aktualnie badany klocek.


Schemat flag jeśli pierwsza oznacza klocka badanego po lewej i dalej kierując się w kierunku wskazówek zegara:



00000000 =
1?0?0?0? =
0?1?0?0? =
0?0?1?0? =
0?0?0?1? =
0?1?0?1? =
1?0?1?0? =
10101010 =
11111111 =
1?1?0?0? =
0?1?1?0? =
0?0?1?1? =
1?0?0?1? =
0?1?1?1? =
1?0?1?1? =
1?1?0?1? =
1?1?1?0? =
0?11111? =
0?0?111? =
1?0?1111 =
1?0?0?11 =
111?0?11 =
111?0?0? =
11111?0? =
0?111?0? =
0?11101? =
0?10111? =
1?0?1110 =
1?0?1011 =
101?0?11 =
111?0?10 =
11101?0? =
10111?0? =
11101110 =
10111011 =
10101110 =
10101011 =
11101010 =
10111010 =
11101011 =
11111010 =
10111110 =
10101111 =
11111011 =
11111110 =
10111111 =
11101111 =


Download:
AutoTile
_________________
Mój klucz publiczny PGP
 
     
Fadex 
Legenda
#4; #12; #18; #20; #21; #27


Pojedynki: nie
Pomógł: 105 razy
Posty: 1773

51612 Prestiż
Wysłany: 11-09-2013, 01:37   

No... Dijkstra to to nie jest, ale prosty i skuteczny algorytm :P

Zakodzenie tego zaoszczędza sporo czasu, powiem od razu że układanie tak kafelków w edytorze poziomów to głupota. W Twoim poście znajduje się wszystko poza... opisaniem co właściwie pokazujesz :P więc może dopowiem:

Oczywiście jest to sposób ustawienia klocków tak by pasowały do sąsiadujących graficznie. Najlepiej jest to zrobić prostym algorytmem, gdyż ustawianie tego ręcznie nie ma sensu. Do tego algorytmu bardzo przydaje się kolejka, a z implementacją jej w klikach może być różnie zależnie od tego jakiej struktury do tego użyjemy - no ale cóż, to nie c++ :P

PS: Tak w ogóle to czy nie ma jakiegoś rozszerzenia obsługującego kolejkę (albo lepiej całą strukturę dekową - wraz ze stosem, mieszaniem i sortowaniem)? Bo w sumie byłoby to dość przydatne w implementacji wieeelu algorytmów.
_________________
If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat
 
 
     
Cootje 
Legenda


Pomógł: 35 razy
Posty: 644

18047 Prestiż
Wysłany: 11-09-2013, 01:58   

Ja użyłem tylko Map object (Zastępstwo array do przechowywania planszy), jednego activa z grafikami i kolejnego jako wskaźnik myszy, a reszta to sprytne użycie pętli odpalanej 1 raz w MMF2. :D

Dla osób, które nie radzą sobie z pętlami w MMF2 jest jeszcze Queque Object, choć nie wiem jak działa bo nie miałem okazji używać.
_________________
Mój klucz publiczny PGP
 
     
Fadex 
Legenda
#4; #12; #18; #20; #21; #27


Pojedynki: nie
Pomógł: 105 razy
Posty: 1773

51612 Prestiż
Wysłany: 11-09-2013, 11:38   

Aaaa. To z pętli zrobiłeś sobie taki stos systemowy. W sumie dobry pomysł :)
_________________
If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat
 
 
     
Cootje 
Legenda


Pomógł: 35 razy
Posty: 644

18047 Prestiż
Wysłany: 11-09-2013, 13:10   

Można tak powiedzieć.
_________________
Mój klucz publiczny PGP
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

PSK Cytaty Klikibaza - kopia wszystkich klików Klikipedia - encyklopedia o tworzeniu gier Discord KlikCzat Zaproszenie
Daj piniondza Wielkie Muzeum Klikowe

Powered by phpBB modified by Przemo © 2003 phpBB Group