Jeśli nie jesteście fanami częstych nowości w GameMakerze, bojąc się o to, że przez jakiegoś buga rozsypie się projekt nad którym siedzicie miesiącami, to zapewne wiecie, że od roku GM ma wersję LTS (Long Term Stable), która dostaje jedynie aktualizacje naprawiąjące bugi i aktualizujące SDK platform eksportowych (iOS, Android, konsole).
Właśnie wyszła jego druga aktualizacja (czyli średnio dostajemy je raz na rok). Poza bugfixami i aktualizacjami SDK, jedyną ważniejszą zmianą są poprawki w systemie kolizji w przypadku korzystania z ułamkowych pozycji x/y - teraz są one sprawdzane z dokładnością do 0.5.
Lista zmian w IDE 2022.0.2 LTS: gms.yoyogames.com/ReleaseNotes-LTS.html
Lista zmian w Runtime 2022.0.2 LTS: gms.yoyogames.com/release-notes-runtime-LTS.html
Linki do ciekawych stron
GMCLAN Meetup #3 - 21 października
Hej! Chcielibyśmy was zaprosić na trzecie już spotkanie GMCLANowe z serii Meetup. Tym razem spotkamy się online (więc argumenty, że za daleko odpadają ).
Spotkanie odbędzie się 21 października na naszym Discordzie. Będzie to okazja do pokazania swoich gier, a także podyskutowania o nowościach i zmianach w GM - jest szansa, że właśnie w okolicach naszego spotkania ruszy otwarta beta nowego runtime...
[url=discord.gg/9FZKaNarze?event=1150716984657449021][/url]
Link do samego spotkania: discord.gg/9FZKaNarze?event=1150716984657449021
Wydarzenie jest też oczywiście dostępne w serwisie meetup - meetup.gmclan.org
GM 2023.8.1 dostępny
YYG wydało dzisiaj hotfixa do GM 2023.8. Znalezione błędy były dość specyficzne, więc jest szansa, że nie zauważyliście problemów.
- naprawiono możliwość zamykania gier za pomocą Alt+F4
- layer_tilemap_create() zwraca id tilemapy, a layer_tilemap_get_id() zwróci teraz id tilemap dodanych w trakcie gry, zamiast jedynie tych stworzonych w IDE
- manual znów otwiera strony na opisach funkcji, zamiast na stronie głównej
Reszta opisów na:
- gms.yoyogames.com/ReleaseNotes.html
- gms.yoyogames.com/ReleaseNotes.html
3 miesiące darmowego GM (Win/Mac/Ubuntu i HTML5)
Jeśli jesteście na bieżąco z sytuacją na rynku silników do gier, na pewno wiecie, co odstawiło Unity (a jeśli nie wiecie - to są byt łasi na hajs od gier). Z tej okazji, dla osób które uciekają od Unity, GameMaker przygotował specjalną promocję. 3 miesiące darmowego eksportu na PC/Mac/Ubuntu i HTML5. Jedyne co trzeba zrobić, aby skorzystać z tej promocji, to założyć i zalogować się na konto na stronie gamemaker.io , a następnie wejść pod wiele mówiący link:
opr.as/F-Unity
Nie wiadomo do kiedy potrwa promocja, ale jeśli skorzystacie z niej teraz, załapiecie się jeszcze na wersję 2023.11 GM, która powinna wprowadzić Layer GUI, panele Flex do responsywnych interfejsów, prefaby oraz otwartą betę Nowego Runtime.
GM 2023.8 wydany
Z lekkim poślizgiem, sierpniowe wydanie stabilnej wersji GMa jest w końcu dostępne.
Przypomnę najważniejsze zmiany:
IDE
- narzędzie do zgłaszania błędów bezpośrednio z programu, oraz publiczny bugtracker na githubie (jeśli chcemy raporty podpiąć
pod nasze githubowe konto, zrobicie to pod adresem gamemaker.io/account/dashboard ).
- zmiany nazw runtime z VM i YYC na GMS2 VM i GMS2 YYC (te runtime na zawsze będą dostępne dla posiadaczy licencji dożywotnich)
- GX przestało być domyślnym eksportem dla posiadaczy licencji dożywotnich
- "Open in external editor" jako opcja dla zasobów
- "Included files" można teraz zobaczyć w inspektorze
- nowe funkcje Feathera dla ignorowania całego folderu w drzewku zasobów
- podgląd efektu emitowania particli co wybrany czas (aka. burst)
- optymalizacja przechowywania tekstur w pamięci IDE
- poprawki 65+ bugów
Runtime
- zasoby są teraz referencjami a nie liczbami naturalnymi (dzięki czemu np. użycie ds_list_add() na ds_mapie wyrzuci nam błędem)
- kolizje z tilemapami (jako argument należy przekazać identyfikator layer_tilemap_get_id() a nie samą tilemapę, dzięki czemu można tej samej tilemapy używać na różnych layerach i sprawdzać te kolizje osobno)
- nowe funkcje ImGui do tworzenia debugowych narzędzi w grze (debug overlay), pozwalających zmieniać wartości dowolnych zmiennych (slider, dropdown, text, sprite, checkbox, color, button) - więcej informacji w manualu; funkcje te mają prefix dbg_
- konsola w debug overlay, która potrafi wykonać istniejące skrypty GML jeśli podamy ich nazwę, przekazując wpisane parametry
- efekt audio "Compressor:
- renderowanie efektów w fontach SDF (color blend/glow/outline/shadow/demo znajdziecie na: github.com/gmclan-org/sdf-dbg-examples )
- poprawki 85+ bugów
Wersji 2023.9 (wrześniowej) nie będzie, ponieważ GM LTS dostanie drugą aktualizację, natomiast samego GM czekają w kolejnej wersji dość duże zmiany i wymagają one kolejnej dłuższej przerwy w cyklu wydawniczym, zatem kolejną wersją będzie ostatnia w tym roku aktualizacja 2023.11 - wszystko oczywiście dostaniemy w wersjach beta 2023.1100, ale dopiero od października. Co nas czeka?
- beta nowego edytora kodu
- beta nowego runtime
- layer GUI
- panele flex do responsywnego pozcjonowania GUI
- efekty fontów SDF w sekwencjach
- referencje w pozostałych typach które do tej pory były zwracane jako liczba naturalna (jak bufory, networking, tekstury i inne rzeczy niedostępne w drzewie zasobów)
- menadżer pakietów pozwalający korzystać w dowolnej liczbie projektów z wybranych zasobów z innego projektu bez potrzeby kopiowania ich (i z automatycznyną aktualizacją, gdy projekt pierwotny jest aktualizowany)
- możliwość podmieniania/aktualizowania vertex bufferów
- lepsza struktura dla właściwosci sekwencji
Pełen opis zmian w wersji 2023.8 (a jest tego baaaardzo dużo) przeczytacie tutaj:
gms.yoyogames.com/ReleaseNotes.html
gms.yoyogames.com/release-notes-runtime.html
GMowy Bugtracker dostępny publicznie
Nadszedł dzień, w którym po paru latach narzekań (i zmianach wprowadzonych jeszcze przez PlayTech) doczekaliśmy się w końcu ponownie publicznego bugtrackera.
Poza faktem, że zgłaszać bugi można teraz (poza dotychczasowym formularzem który nie zniknie) również na githubie, przypomnę, że od wersji 2023.8 GameMakera, bugi można zgłaszać bezpośrednio z IDE GMowego, bez potrzeby logowania się na stronie gamemaker.io .
Bugtracker i listę bugów (zaimportowano również nierozwiązane bugi z ostatnich lat), znajdziecie pod adresem: github.com/YoYoGames/GameMaker-Bugs/issues
Kolizje na tilesetach i większej ilości obiektów w najnowszej becie!
Beta 2023.8 wprowadza kolejne (zapewne już ostatnie) nowości, w tym funkcje których nie zapowiadano.
Po pierwsze, pojawiły się od dawna oczekiwane kolizje na tilesetach.
Działają one tak, że jeśli funkcji sprawdzającej kolizje podamy jako argument id tilemapy na layerze (np. layer_tilemap_get_id("Tiles_1")
, to GM zrzutuje aktualną komórkę na x/y w sprite i sprawdzi, czy zachodzi tam kolizja.
Uwaga!
Aby kolizje na tilemapach działały, trzeba ODZNACZYĆ pole "Disable Source Sprite Export", inaczej GM będzie porównywać kolizje z pustym obrazkiem, zawsze zwracając brak kolizji.Wskazówka:
Typ kolizji ustawiony w sprite ma wpływ na wynik sprawdzania - jeśli ustawimy Rectangle, to będzie po prostu zwracać true/false jeśli w danej komórce jest jakiś kafel tilesetu (nawet jeśli jest przeźroczysty), ale już ustawienie "Precise" sprawi, że będziemy mieć kolizję tylko na pełnych pikselach, co daje naprawdę spore możliwości!
Największą zaletą tego wszystkiego jest to, że... kolizje sprawdza się istniejącymi już funkcjami: instance_place(), instance_position(), place_meeting(), place_empty(), position_meeting(), move_and_collide(), collision_circle/ellipse/line/point/rectangle()
+ wszystkie warianty ..._list().
Dodatkowo, od teraz można do funkcji kolijzji przekazywać tablice obiektów i/lub id elementu tilemap z layera, np.:
kodvar tid = layer_tilemap_get_id("Tiles_1");
var collision = position_meeting(mouse_x, mouse_y, [obj_wall, tid]);
Poza tym, ta beta wprowadza konsolę w show_debug_overlay(), w której poza wyświetleniem logów z okna Output, możemy też wpisywać komendy - wystarczy wpisać istniejącą nazwę globalnej lub funkcji, a opcjonalnie po spacjach można podać argumenty. Niestety, na tę chwilę funkcjonalność ta wydaje się nie do końca działać prawidłowo, ale to pierwsza beta z nią, a do wydania sierpniowej wersji jeszcze blisko 20 dni.
Dwa przykłady sieciowe dodane na stronę - powrót 39dll ale bez dll
W tym tygodniu, dla odmiany od informowania o nowościach w becie GameMakera (w sierpniu czeka nas jeszcze dawka emocji), dodałem na stronę dwa przykłady.
Przypomnę, że obecnie zamiast wrzucać na stronę spakowane pliki staramy się wrzucać kod na naszego githuba - ma to tę zaletę, że po pierwsze możecie zgłosić ewentualne błędy (a nawet je poprawić), a także można sobie przejrzeć kod bez potrzeby ściągania go. Nasz github ma też fajny do zapamiętania adres - github.gmclan.org przeniesie was gdzie trzeba
Wracając jednak do przykładów, tym razem na tapet wziąłem silnik sieciowy do gier online, korzystający z natywnych funkcji GMa, dzięki czemu taki serwer i klienci mogą działać na większości platform.
Dodatkowo - w ramach testów - dorobiłem silnik który działa na podobnej zasadzie co szalenie u nas popularny ponad dekadę temu 39dll.dll
. Okazuje się, że funkcje sieciowe w GM działają bardzo podobnie i większość tych funkcjonalności to raptem aliasy do funkcji buffer_xxx, do tego stopnia, że w ramach testów udało mi się odpalić klienta i serwer Almory Online 0.7.6 w becie GM 2023.8 i podmieniając jedynie funkcje do połączenia, oraz przenosząc odbieranie pakietów z eventu step do Async-Network udało mi się pozbyć starego .dll i odpalić grę na Androidzie czy Steam Decku. Przypomnę, że gra pierwotnie była robiona w GM 7, w 2009 roku...
Przykład gry sieciowej - serwer i klient w GM 2023.6+:
gmclan.org/plik/232
Przykład gry sieciowej a'la 39dll - serwer i klient w GM 2023.6+:
gmclan.org/plik/233
Niewielkie i pisane na szybko dokumentacje znajdują się w repozytoriach przykładów - oba przykłady są obecnie w wersjach beta, gdy "dojrzeją" postaram się dodać też artykuły na temat tego jak działa przesyłanie danych.
Miłej zabawy i nie zapomnijcie zgłaszać błędów i poprawek poprzez Github
Fonty SDF z efektami, debugowanie zmiennych na żywo i lepsze zgłaszanie błędów w 2023.8
Do etapu "feature freeze" GameMakera 2023.8 zostały jeszcze ok. 2 tygodnie, a YYG w którym zakończył się sezon wakacyjny w pierwszej sierpniowej aktualizacji dorzuca do pieca.
- wsparcie dla efektów fontów SDF: obrys, cień, blask, predefiniowany kolor - aż 18 parametrów do ustawienia w font_enable_effects
- zgłaszanie bugów z IDE bez potrzeby wchodzenia na strony YYG. Publiczny dostęp pojawi się w ciągu kilkunastu dni.
- nowe funkcje pozwalające na debugowanie "na żywo" - slidery, dropdowny, pola tekstowe, checkbox, przycisk, pola z wyborem sprite, wybór kolory - wszystkie z nich z prefiksem dbg_xxx
, natomiast do przekazywania zmiennej używamy ref_create(refOrStruct, name), gdzie w przypadku obiektów referencją jest np. self (w runtime 800.0.411 ta funkcja tymczasowo nazywa się dbg_ref).
Wygląda to tak:
- feather pozwala na ignorowanie całych folderów wg. ścieżki na dysku, np. // feather ignore GM2017 in /Objects/System/*
(można podać też np. tylko ścieżkę do zasobu - więcej informacji w Release Notes)
- opcja Otwórz w zewnętrznym edytorze dla zasobów.
- wsparcie dla funkcji part_emitter_delay(), part_emitter_interval()
w edytorze Particli
- efekt audio Compressor
Poza tym, pojawił się ważny fix na użycie pamięci przez IDE w projektach z dużą liczbą spritów (różnica sięga kilka GB). Przypomnę, że warto też włączyć limit historii "Undo", który też przy dłuższych sesjach ratuje użycie pamięci przez IDE.
Wg. wcześniejszych zapowiedzi w ciągu następnych 2 tygodni powinniśmy dostać jeszcze:
- kolizje dla tilemap
- asystenta AI
- betę nowego edytora kodu (która nie zakończy się w tej wersji, a potrwa kilka miesięcy)
Pełna lista zmian w becie:
gms.yoyogames.com/ReleaseNotes-NuBeta.html
gms.yoyogames.com/release-notes-runtime-NuBeta-I.html
Pierwsza beta GM 2023.8 dostępna
Zaczął się lipiec, a więc miesiąc wakacyjny - i chociaż YYG planuje największe nowości w betach bliżej sierpnia, gdy pracownicy wrócą z urlopów (nowy edytor kodu!) - dostaliśmy mimo to całkiem pokaźną listę nowości:
- nowe funkcje particli:
- part_system_colour, part_system_angle, part_system_global_space
- part_emitter_delay, part_emitter_interval, part_emitter_enable, part_emitter_relative
- opcję zmiany skali x/y i klatek sprite'a particli: part_type_size_x, part_type_size_y, part_type_subimage
- funkcje blokowania kursora w środku ekranu dla gier FPS:
- window_mouse_set_locked, window_mouse_get_locked, window_mouse_get_delta_x, window_mouse_get_delta_y
- chwilowe rysowanie na innym depth za pomocą gpu_set_depth/gpu_get_depth
- nowe funkcje rysowania efektów:
- effect_create_layer, effect_create_depth
dzięki którym status deprecated dostały effect_create_below, effect_create_above
- funkcja nameof(name)
która zmienia nazwę danej zmiennej w string w momencie kompilacji.
Poza tym, w YYC przyspieszono odczyt tablic (o prawie 200%), a niektóre typy assetów nie są już kolejnymi liczbami naturalnymi a referencjami (niestety nie podano które, a ja jeszcze na tyle nie przetestowałem bety ).
Przypomnę, że w wersji 2023.8 dostaniemy jeszcze: asystenta AI, nowe narzędzia debugowania, fonty SDF w sekwencjach, nowy efekt audio Compressor, kolizje na tilemapach i rozpoczną się beta testy nowego edytoru kodu - a to wciąż nie jest pełna lista zmian, gdyż YYG każdego miesiąca dorzuca jeszcze kilka mniejszych rzeczy.
Pełna lista zmian oczywiście pod adresami:
gms.yoyogames.com/ReleaseNotes-NuBeta.html
gms.yoyogames.com/release-notes-runtime-NuBeta.html
Najnowsze wersje GameMakera:
wydana 74 dni temu
wydana 2 dni temu
wydana 8 dni temu