Skocz do zawartości

AutoTiler - Generator tilesetów do GMS2


Morgo

Rekomendowane odpowiedzi

Tytuł: AutoTiler

5iGrQr.png

 

Gatunek: Program

 

Opis: Autotiling to rewelacyjna funkcja w nowym GMS2 ale ciągłe tworzenie całych tilesetów w programie graficznym jest trochę męczące.
Postawnowiłem więc stworzyć prosty programik generujący cały tileset z czterech podstawowych grafik (tło, ściana, wewnętrzny narożnik, zewnętrzny narożnik).
Całość można potem wyeksportować do pliku PNG.

Zdaję sobie sprawę z ograniczeń programu, zamierzam go rozwijać dodając kolejne funkcje i poprawiając błędy.
Mam wielki sentyment do tego forum i chciałem się z Wami podzielić swoją pracą ;)

Zgłaszajcie wszelkie błędy, pomysły i piszcie jeżeli macie pytania.

 

zmiany w wersji 0.0.0.3

+ menu "File" gdzie można zapisywać i otwierać projekty

+ podświetlenie przycisków

+ suwak do zooma

+ ostatni tiles z samym tłem (że też od razu nie dostrzegłem jego braku...)

+ nazwa aktualnego projektu wyświetlana u góry ekranu

+ wyskakujące okna (n.p. z potwierdzeniem zamknięcia programu)

 

zmiany w wersji 0.0.0.2:

Dodane:

- możliwość zapisywania projektu (tymczasowo można zapisać tylko jeden bieżący projekt, poprzedni zostanie nadpisany)

- wczytane grafiki dopasowują się do ustawionego rozmiaru

- przyciski przełączania między pełnym ekranem i oknem oraz zamknięcie aplikacji

- wiadomości pojawiające się na dole ekranu

- pliki na wzór załączone w archiwum

Zmienione:

- zwiększenie rozdzielczości to 1080p

- zwiększenie maksymalnego rozmiaru tiesa do 128x128 pikseli

Poprawione:

- paski opcji pojawiające się nad ekranem pomocy

- zoom jest teraz zorientowany na środku ekranu zamiast w prawym górnym rogu

 

Download: itch.io
Rozmiar pliku: 2,5 MB

 

Autorzy:

Programowanie:

Morgo

Grafika:

Morgo


Video oraz Screeny:

 

 

V85wpb.png

 

6VaBV8.png

Odnośnik do komentarza
Udostępnij na innych stronach

26 minut temu, I am Lord napisał:

Przydałby się export tych 4 defaultowych spritów z których generujesz tileset. Bo teraz żeby je sobie podmienić trzeba się bawić w screenshoty

Good point! Wrzucę te grafiki jako wzór w następnej wersji, do tego czasu załączę je do pierwszego posta ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzi mi o to by te cztery też dało się generować, np podając własną texturkę i np wybierając jakieś kilka domyślnych styli

image.png.66c6a0d018929e655e8d400ee022abff.png

 

1)

    Brakuje także zapisu pliku projektu. Stworzyłem sobie tileset ale teraz żeby go zmodyfikować po zamknięciu programu trzeba wszystko importować. Tak to nie jest w tym momencie problem bo jest tutaj mało rzeczy do ustawiania. Ale jak się to wszystko rozbuduje to już będzie :)

 

2)

   Przydatną opcją była by możliwość dodania większej ilości spritów danego elementu by zniwelować powtarzalność. Spójrz na mojego tilesa, w podłodze znajduje się dziura, niestety jest zbyt powtarzalna i teraz żeby całość prezentowała się lepiej to będę musiał i tak edytować obrazek exportowanego tileseta i wprowadzić zmiany ręcznieP9uafp8.png

 

3)

    Kolejną rzeczą którą mógłbyś dodać, to warstwa cienia, dodawałoby się osobne sprity z cieniami które by miały swoją własną warstwę tak by cienie nie nachodziły na siebie, tak jak u mnie gdy dodałem cień na spritach:

j5vqZIn.png

 

Ewentualnie możesz zrobić generowanie cieni przez program jako dodatkową opcję do ustawienia

Odnośnik do komentarza
Udostępnij na innych stronach

37 minut temu, I am Lord napisał:

Chodzi mi o to by te cztery też dało się generować, np podając własną texturkę i np wybierając jakieś kilka domyślnych styli

image.png.66c6a0d018929e655e8d400ee022abff.png

Czyli dobrze zrozumiałem. Dopisane do listy planowanych funkcji :)

 

1) Zamierzam dodać funkcję zapisania projektu. Więcej ustawień oczywiście pojawi się z czasem.

 

2) Też o tym myślałem. Planuję dodać możliwość zmiany każdej grafiki z osobna.

Odnośnik do komentarza
Udostępnij na innych stronach

Jest potencjał, kilka rzeczy dorobić i możesz na marketplace wrzucić nawet

 

Edit:

Naprawiłem problem z cieniami tworząc inner sprite na tyle dużym by tą wadę przykryć. Przemyśl dodanie warstwy cieni

Macie mojego tilesa:

lNQyfIF.png

 

 

I sprity:

inner.png.f871118708fd2c183217acb428f2e58c.png outershadow.png.addd1f6556cc6b8f51d5029871cdf4cb.pngWallshadow.png.ad39628c45153342428404c7c3d52de1.pngFloor.png.3b7a7df485e1e5ab00e7190ecc230936.png

 

 

Edit 2: 

A jednak jest jakiś bug w exporcie, zobacz png gotowego tileseta się różni od tego co było w edytorze:

0aUSpyp.png

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Korzystając z vertexów, tai program powinen w sumie ograniczyć się do dwóch spritów i robić trójkącik w rogu. Jak to wyrenderujesz na surface, to nawet choćby była masakrycza wydajność, nie robisz tego co krok, tylko w momencie jak !surface_exists() ( ogólnie tak powinno się robić, nie redrewować surface jak istnieje i się nie zmienia ).

Odnośnik do komentarza
Udostępnij na innych stronach

8 godzin temu, gnysek napisał:

Korzystając z vertexów, tai program powinen w sumie ograniczyć się do dwóch spritów i robić trójkącik w rogu. Jak to wyrenderujesz na surface, to nawet choćby była masakrycza wydajność, nie robisz tego co krok, tylko w momencie jak !surface_exists() ( ogólnie tak powinno się robić, nie redrewować surface jak istnieje i się nie zmienia ).

Początkowo właśnie takie miałem założenia - generować wszystko z dwóch grafik, ale zabrakło mi wiedzy i doświadczenia więc rozwiązałem to w taki sposób. Mam przynajmniej motywację, żeby wreszcie ogarnąć surfacey :P

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
14 godzin temu, Morgo napisał:

Początkowo właśnie takie miałem założenia - generować wszystko z dwóch grafik, ale zabrakło mi wiedzy i doświadczenia więc rozwiązałem to w taki sposób. Mam przynajmniej motywację, żeby wreszcie ogarnąć surfacey :P

 

OK:

 

// create

global.s = -1;

// draw

if (!surface_exists(global.s)) { // redraw tylko jak komputer usunie z pamieci surface, albo jeszcze go nie ma
  global.s = surface_create(1024, 768);

  // jesli potrzebujemy aktualizowac surface co klatkę, bo się zmienia, poniższy kod wyciągamy poza nawiasy klamrowe
  surface_set_target(global.s);
    draw_clear_alpha(c_white, 0); //maluje na przezroczysto
	draw_text(10, 10, "test"); // pamietaj, ze teraz wsystkie pozycje są relatywnie do 0,0 na surface, a nie od pozycji obiektu
  surface_reset_target();
}

draw_surface(global.s, 10, 20);

Jak nic nie pomyliłem z kolejnością argumentów, masz fajny gotowy tutorial :)

Odnośnik do komentarza
Udostępnij na innych stronach

Nowa wersja dostępna

zmiany w wersji 0.0.0.2:

Dodane:

- możliwość zapisywania projektu (tymczasowo można zapisać tylko jeden bieżący projekt, poprzedni zostanie nadpisany)

- wczytane grafiki dopasowują się do ustawionego rozmiaru

- przyciski przełączania między pełnym ekranem i oknem oraz zamknięcie aplikacji

- wiadomości pojawiające się na dole ekranu

- pliki na wzór załączone w archiwum

Zmienione:

- zwiększenie rozdzielczości to 1080p

- zwiększenie maksymalnego rozmiaru tiesa do 128x128 pikseli

Poprawione:

- paski opcji pojawiające się nad ekranem pomocy

- zoom jest teraz zorientowany na środku ekranu zamiast w prawym górnym rogu

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

Kolejny update. Najważniejsza zmiana to możliwość zapisu wielu projektów (yay!) haczyk w tym, że ze względu na ograniczenia GMS2 projekty można trzymać tylko w appdata (":\Users\<nazwa_użytkownika>\AppData\Local\GMS2___AutotileR"), (w miarę możliwości zamierzam to obejść odpowiednim rozszerzeniem do GMS2) Poniżej pełna lista zmian.

 

Dodane funkcje:

+ menu "File" gdzie można zapisywać i otwierać projekty

+ podświetlenie przycisków

+ suwak do zooma

+ ostatni tiles z samym tłem (że też od razu nie dostrzegłem jego braku...)

+ nazwa aktualnego projektu wyświetlana u góry ekranu

+ wyskakujące okna (n.p. z potwierdzeniem zamknięcia programu)

 

JoeUgv.png

 

Zgłaszajcie znalezione błędy i swoje uwagi odnośnie programu ;).

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ę...