Amaterasu Opublikowano 1 Kwietnia 2016 Udostępnij Opublikowano 1 Kwietnia 2016 Generatory to potężne narzędzia, pozwalające na ułatwienie życia designerowi (do pewnego stopnia - projektant musi zdecydować, jak dane obiekty mają być generowane). Ten generator ma za zadanie stworzyć, na podstawie zdefiniowanych przez użytkownika parametrów, coś na kształt poziomu do gry. Wychodzi mu to nieźle, wg mnie, więc szkoda by było, gdybym się tym z nikim nie podzielił. Zatem, proszę. LINK Generator ma następujące opcje: a ) Modyfikacja metody działania algorytmu generowania pierwotnego szumu Zanim wyjaśnię, przejrzyjcie artykuł o zastosowanym algorytmie generowania szumu. Iteration flags oznacza, które iteracje zostaną wykonane - tzn. dla liczby 27 (011011) zostaną wykonane iteracje 1, 2, 4, 5 - to spowoduje, że szum będzie miększy, a mapa - bardziej gładka. Im większa mapa, tym więcej iteracji - ilość iteracji rośnie logarytmicznie do większego z rozmiarów mapy (dla mapy 80x64 log2(80)=6.32<=7, zatem zostanie wykonanych 7 iteracji). Iteration amplification start pokazuje, jak duży wpływ będzie miała pierwsza iteracja, a iteration amplification speed - jak duży wpływ będą miały kolejne iteracje. b ) Tworzenie losowych bąbli Bąble można sobie wyobrazić jako łagodne pagórki (lub strome, zależnie od blob intensity). Można regulować ich liczbę (blob number) i ich rozmiar (blob radius - promień każdego bąbla mieści się w przedziale od blob_radius/2 do blob_radius). c ) Tworzenie pierścienia Pierścień powoduje stworzenie doliny lub wzniesienia na środku. Zależnie od ring radius, pierścień będzie obejmował całą mapę (1), nic (0), lub pewien fragment (wartości pośrednie). Wysoki ring inner intensity stworzy wzniesienie, a wysoki ring outer intensity - dolinę. Uwaga - liczy się różnica między ring inner a ring outer, nie ich absolutne wartości. d ) Tworzenie linii (korytarzy) Linie można sobie wyobrażać jako coś na kształt bruzdy - im większe line intensity, tym większa szansa, że w tym miejscu będzie podłoga. Można modyfikować ilość linii (line number) i ich szerokość (line width). e ) Tworzenie ściany zewnętrznej Ściana zewnętrzna to użyteczny modyfikator, który zamyka teren naokoło mapy. Od border intensity zależy, jak duże szanse są na powstanie ściany, a od border inner edge i border outer edge zależy grubość ściany. (UWAGA: w tej chwili jest bug powodujący, że zmiana outer edge nie działa tak, jak powinna - niewielki problem, bo i tak zwykle jest na wartości 1, ale na razie nie zmieniać) f ) Zmiana wielkości mapy Niby nic, a cieszy. g ) Modyfikacja progu tworzenia ścian Dzięki tej opcji, niezależnie od jakości szumu, powstała mapa zawsze będzie zawierała zdefiniowany przez bias floor percentage procent pól będących podłogą (bierze pod uwagę jedynie szum, modyfikacja mapy może spowodować, że mniejszy procent pól będzie podłogą). Bias randomization to parametr definiujący, jak mocno krawędzie ścian będą poszarpane (zależnie od kontrastu szumu, ten parametr powinien być mały lub całkiem spory - domyśnie 0). h ) Usuwanie dziur w ścianach Ustawienie holes removal na Y spowoduje, że zostaną zlikwidowane wszystkie dziury, których wielkość jest nie większa niż holes minimum size. Dla algorytmu dziurą jest każde pole, które jest podłogą, a rozmiarem dziury - ilość wszystkich pól, do których można dotrzeć z danego pola bez przechodzenia przez ściany. (Holes diagonal check oznacza, że pola, które sąsiadują z dziurą jedynie po przekątnej również są dołączane do dziury) Pozostałe opcje są jedynie pomocnicze: Generate from current noise wczytuje ponownie mapę z wygenerowanego wcześniej szumu, wykorzystując parametry z punktów g) i h) Save/Load preset pozwala na zapisanie/wczytanie ustawień modyfikowanych w programie, aby móc z nich generować własne mapy Save map zapisuje mapę do pliku, jeżeli masz chęć wykorzystać wygenerowaną mapę w swojej grze. Odczyt wykonuje się za pomocą funkcji file_to_map, znajdującej się w projekcie. Ściana to 0, podłoga to 1. Mapa jest wczytana do ds_grid. Sterowanie: Spacja - generuj nową mapę Shift - przełączaj pomiędzy widokiem minimapy (noise/map) Ctrl - przełączaj pomiędzy trybem interfejsu (pre-processing, post-processing) Strzałki - zmiana pozycji widoku To chyba tyle póki co. Projekt jest w wersji 1.0, na razie nie mam ochoty tego ulepszać : P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Kwietnia 2016 Udostępnij Opublikowano 2 Kwietnia 2016 GML ___________________________________________ ################################################################################ ############ FATAL ERROR in action number 1 of Mouse Event for Glob Left Pressed for object tiledrawer: make_color_hsv argument 3 incorrect type (5) expecting a Number (YYGI32) at gml_Script_noise_to_surface (line 9) - draw_point_color(i,j,make_color_hsv(0,0,ngr[# i,j])); ################################################################################ ############ -------------------------------------------------------------------------------------------- stack frame is gml_Script_noise_to_surface (line 9) called from - gml_Object_tiledrawer_GlobalLeftButtonPressed_1 (line 44) - sf=noise_to_surface(ng); Po wgraniu pliku z presetem i kliknięciem na coś tam Wiesz co mógłbyś jeszcze dodać? Opcję centrowania mapy w post proc oraz opcję która by usuwała wszystkie jaskinie niezależne które są duże tak by została 1. Jest usuwanie małych plam ale nadal mogą się zrobić 2 porównywalnie duże które nie mają ze sobą połączenia. Możliwość ich połączenia lub usunięcia mniejszej było by dobrym pomysłem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 2 Kwietnia 2016 Autor Udostępnij Opublikowano 2 Kwietnia 2016 Wiem na czym polega błąd. Zajmę się tym za chwilę, jak również łączeniem jaskiń. Czym miałoby być centrowanie mapy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jakim Opublikowano 2 Kwietnia 2016 Udostępnij Opublikowano 2 Kwietnia 2016 Nie mam okazji teraz stestować, ale szacuneczek za generator. Centrowanie? Chyba chodzi o to, by znaleźć "środek" planszy i ustawić tam origin, rajt? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 2 Kwietnia 2016 Autor Udostępnij Opublikowano 2 Kwietnia 2016 No tak, ale nie bardzo rozumiem, czym, i gdzie, miałby być "środek planszy". Mój generator dla map o wymiarach nie będących tymi samymi potęgami dwójki bierze wycinek szumu z najmniejszego kwadratu większego od mapy, z samego środka, i dopiero na nim wykonuje wszystkie operacje. Chodzi o bounding box mapy? Takie coś też dałoby się zrobić, ale czy jest potrzeba? Zrobiłem już łączenie jaskiń, niedługo wystawię kolejną wersję. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 2 Kwietnia 2016 Autor Udostępnij Opublikowano 2 Kwietnia 2016 Nowa wersja (oznaczmy ją 1.1), a w niej: -Dodane: opcja łączenia ze sobą dziur korytarzami o wybranej szerokości. Metoda póki co prymitywna - łączone są ze sobą środki dziur, co nie zawsze oznacza, że dziury zostaną połączone. -Dodane: preset small_closed_mountain (jak wam się poszczęści, to zobaczycie w nim problemy tej metody łączenia dziur) -Naprawione: błąd związany ze zmianą rozdzielczości mapy przed jej wygenerowaniem, co powodowało problemy z ponownym generowaniem mapy z istniejącego szumu -Naprawione: Opcja holes diagonal check nie pokazuje już swojej liczbowej wartości -Wczytanie starszych presetów nie wywoła błędów W planach: -Dodanie kompatybilności presetów -Ulepszenie metody łączenia dziur ze sobą -Dodanie pomieszczeń (na poziomie mapy) LINK Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Kwietnia 2016 Udostępnij Opublikowano 2 Kwietnia 2016 No jak to czym ma być środek. Długość wykopanych bloków po H i V dzielisz na 2 z osobna i na tej podstawie przesuwasz je tak by były na środku grida. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 2 Kwietnia 2016 Autor Udostępnij Opublikowano 2 Kwietnia 2016 czyli crop Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę