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.
Dla przypomnienia, zgodnie z obietnicą, dbg_ref()
z poprzedniej wersji zmieniono na ref_create()
. Ma to związek z tym, że planowane jest stworzenie możliwości przekazania takiej referencji jako zmiennej do funkcji w celu zmiany jej wartości.
Z mniejszych zmian, naprawiono w końcu problem z wylogowywaniem jeśli GMa nie odpalamy przez ponad tydzień, czy też wyłączono opcję "wyciągania" workspace/roomów za pomocą myszy - teraz jest opcja "Detach" pod PPM, co obchodzi problem lagów w IDE i wyskakiwania okien mimo, że tego nie chcemy.
Zmieniono też nazewnictwo eksportów: VM to od teraz GMS2 VM, a YYC to od teraz GMS2 YYC. Zmiana podyktowana jest faktem, że za 2-3 miesiące planowana jest otwarta beta nowego runtime, które dostępne będzie jedynie dla subskrybentów, natomiast posiadacze starej "wiecznej" licencji na GMS2 będą mieć dożywotnio dostęp do eksportów GMS2 (oczywiście tak długo jak YYG będzie wydawać poprawki w przypadku nowych wymagań danego eksportera - tak samo jak w przypadku GameMakera 1.x, gdzie takie poprawki wychodziły przez 1,5 roku i chociaż eksport na Androida czy iOS jest dziś już niemożliwy, to nadal działają gry pod Windowsem, gdyż system ten nie otrzymuje tak drastycznych zmian).