walka z godotem

czwartek, 16 marca 2017

Godotowe Tile

Niedawno zmierzyłem się z godotowymi tilesetami, to dość toporny mechanizm.

Tworzenie tilesetu polega w godocie na utworzeniu nowej sceny, do której dodajemy nody typu Sprite. Każdy utworzony Sprite bierzemy pod lupę i dodajemy mu wszystko to, czego potrzebuje aby stać się pełnoprawnym elementem świata gry - to jest texturę oraz blok kolizji. Banalne? Tak. Ale niezbyt przyjemne. Przycinanie textury polega tu na ręcznym wprowadzaniu współrzędnych i rozmiarów danego tila. Każdego po kolei...

Rysowanie bloku kolizji też nie zadowala. Aby to zrobić należy do tak sporządzonego sprite dodać dziecko typu CollisionPolygon i za pomocą narzędzia ołówka narysować obszar kolizji dla każdego tila osobno (albo skopiowanie takiego obszaru, po czym zmiana jego współrzędnych w atrybutach). Bardzo tu pomaga możliwość utworzenia na scenie siatki, do której można przyciągać punkty obszaru kolizji nanoszone ołówkiem.

Utworzyłem dla testów tileset składający się z 4 tilów i eksporotwałem go do pliku zrozumiałego dla godota. Do wyboru miałem 3 różne rozszerzenia - .xml, .res oraz .tres. Przy wgrywaniu takiego setu do mapy rozpoznawane są już tylko dwa z nich - .xml i .tres.

Trochę boli to, że nie można użyć do tej mozolnej pracy jakiegoś narzędzia wyższego poziomu. Tiled zapisuje swoje mapy w formacie .json i kilku innych, ale nie ma tam .xml ani tajemniczego .tres. Internetowy konwerter json -> xml też nie pomaga (i się nie dziwię, po prostu musiałem spróbować).

Potem spróbuję zautomatyzować ten proces, na razie czeka mnie dużo klikania, rysowania i wklepywania coordów.

Dodałem mapkę do projektu i odpaliłem grę. Patrzyłem, jak ludek popychany godotową siłą ciążenia spada w dół, po czym ląduje prawidłowo na ziemi. Satysfakcjonujące. Potem przeszedłem się w prawo... I spadłem w niewidzialną dziurę pomiędzy tilami. Dziwne, obszary kolizji narysowałem bardzo dokładnie i na postaci i na tilach. Jeszcze nie udało mi się tego przypadku rozgryźć.

Acha, godotową siłę ciążenia uaktywniłem opakowując mój Sprite postaci w obiekt o nazwie RigidBody i nadając mu tym samym atrybuty budujące jego ciało. Mogę tam na przykład zmienić wartość masy obiektu lub zabawnego atrybutu o nazwie 'bounce'. :)

Pozdrawiam!

3 komentarze:

  1. Hej,
    do przyspieszenia pracy z tilesetami w Godocie polecam Ci skorzystać z Tilesethelper (https://godotengine.org/asset-library/asset/9)
    Możesz go ściągnąć przez Godota w AssetLib
    https://snag.gy/5d6FjN.jpg
    Sam niedawno robiłem grę w Godocie i ten tool znacznie poprawił pracę z tilesetami. ;)
    Gdybyś więc miał jakieś problemy z nim związane to uderzaj śmiało, chętnie podzielę się wiedzą ;)

    Pozdrawiam serdecznie,
    Artur "ekhart" Dębkowski
    http://ekhart.pl

    OdpowiedzUsuń
    Odpowiedzi
    1. Hej, dzięki za radę :) Szczerze, to z racji że już proponowałeś mi swoją pomoc, miałem dzisiaj do Ciebie się odezwać. Przy okazji - jestem bardzo ciekaw twojej gry w godocie.

      Usuń
  2. Zapraszam do kontaktu przez mail, slack, social media itp. http://ekhart.pl/index.php/kontakt
    Jeśli chodzi o grę to przygotowywałem remake River Raida
    https://www.youtube.com/watch?v=U9PwzE38n1I
    kod jest dostępny na moim Githubie
    https://github.com/ekhart

    Pozdrawiam serdecznie,
    Artur "ekhart" Dębkowski
    http://ekhart.pl

    OdpowiedzUsuń