Nasze strony: gmclan.org gameonly.pl ps-plus.pl gameswithgold.pl n-switch.pl hmt.pl
Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Akademia GMCLANu
Wiadomości
Kategoria: wszystkie :: game maker :: kącik programowania :: inne

Wielkie zmiany i nowości w GML pod koniec roku !!!

Na taką informację czekaliśmy od dawna. GameMakerStudio 2 w końcu czekają konkretne zmiany, poprawiające i dodające mnóstwo brakujących funkcjonalności do języka GML!!!

Pełna lista tutaj: www.yoyogames.c...updates-in-2019 - ale postaram się wam przybliżyć o co chodzi (zwłaszcza tym który angielski sprawia problemy).

Dereferencje tablic i struktur.
GMS 2 wprowadził zmianę, która pozwala wstawić tablicę do tablicy. Tak naprawdę teraz tablice 2D to własnie tablica w tablicy. Niestety, odczyt takiej zagłębionej tablicy nie jest łatwy, trzeba bowiem "podtablicę" przypisać najpierw do zmiennej.
Zmiany to poprawią i będzie można napisać tak:
kod:var a = my_array[1][4][0][2];To samo dotyczy map, list i gridów:
kod:var a = my_list[| 5][# 5, 6][? "key"]; // odczyt 5 elementu listy, potem pozycji 5,6 grida, potem klucza mapy w tymże gridzie
Skrypty i funkcje można napisać teraz wszędzie i przypisać do zmiennej.
Zamiast tworzyć skrypt, od teraz będzie można napisać:
kod:function my_script(a,b){return a+b;}Poza faktem, że można zrezygnować z argument0,...,.argment15, można też przypisać funkcję do zmiennej (jak w JS) i ta zmienna automatycznie zostaje nazwą funkcji. Powala to też na tymczasowe funkcje:
kod:var my_script = function(a,b){return a+b;} // bez "var" funkcja będzie globalnaMinusem jest to, że takie funkcje stracą dostęp do zmiennych tymczasowych zdefiniowanych poza nimi.
Wszystkie istniejące skrypty zostaną przekonwertowane po odpaleniu w GMS 2.3 do nowego formatu, a domyślnie zostanie argument0, argument1 itp.
Funkcje będzie też można dzięki temu zrobić w jednym pliku, a nie każda osobno. Będzie trzeba się przestawić z mówienia "skrypt" na "własna funkcja" - chociaż na finalne nazewnictwo poczekamy, na forum YYG już są na ten temat narzekania.

Lekkie obiekty
Będzie można zdefiniować własne obiekty, bez jakichkolwiek wbudowanych zmiennych (x, y, image_index itp.) - coś na zasadzie "struct" z innych języków czy właśnie obiektu z Javascriptu.
kod:
var a = {
name: "Buty z borsuka",
price: 500,
def: 20,
desc: "Te buty zrobiłem ręcznie",
can_buy: function() { return global.gold > price; }
};

konstruktor "new"
konstruktor "new" pozwoli na utworzenie instancji obiektu (coś jak instance_create dla lekkich obiektów).
kod:
function Item(n,p){
name = n;
price = p;
};
var buty = new Item("Gwiezdne kapcie", 300);

Łapanie wyjątków
GMS2 wprowadzi funkcjonalność wyłapywania błędów w grze, bez wywalania fatal errorów.
kod:
try {
var b = my_array[-1];
} catch ex {
// w zmiennej ex będzie błąd, zapewne "Index out of bounds" w tym przypadku
} finally {
// kod który będzie wykonany zawsze po try-catch, w sumie to bez finally za klamrą też powinien się wykonać
}

Garbage collector
Będzie usuwał zmienne które wyparowały z pamięci. Nie jest jeszcze jasne czy, ds_xxx też znikną, jak nie będą przypisane do żadnej zmiennej, bo tego YYG nie napisało. Ale logicznym by było, zeby tak się stało.


 

autor: gnysek | data dodania: 10:01, 5.04.2019 | odsłon: 3303
Komentarze
stron: 1

1


av

Konrad-GM (21:11, 5.04.2019)

Jeszcze warto wspomnieć, że operator 'new' tworzy obiekt, który może mieć własne metody definiowane tak jak inne funkcje

function Item(n,p){
name = n;
price = p;
can_buy = function () { return global.gold > price; }
};
var buty = new Item("Gwiezdne kapcie", 300);

av

Pieter (12:04, 6.04.2019)

lul. tyle lat a GM nadal korzysta z GML? Już lepiej by było gdyby przepieli się na V8 albo Lua, wyszło by im to na dobre.

av

Temporal (13:40, 6.04.2019)

Fajnie gnysek, że nie linkujesz newsa z yoyo strony, tylko jednak robisz własną wersję z własnymi przykładami. Szanuję.

av

gnysek (11:59, 8.04.2019)

Dzięki

av

BONUS GMC (21:02, 10.10.2019)

i to są te wielkie zmiany tak

av

gnysek (10:44, 11.12.2019)

Rok się nie skończył

stron: 1

1



Dodaj komentarz:
Treść:
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
2 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 0, ukrytych: 1
Użytkownicy na czacie discord
gnysek (12:54, 19.02.20):
Nowy sprite mozna dodac przez sprite_add w sumie, ale resztę owszem - nie dodasz z Live. Można natomiast przeładować room i sprite, chociaz to też zżera ostro. Dla debugowania jednak chwilowy drop niewiele zmieni, ważniejsze, zeby sobie perfekcynie ustawić coś.
gnysek (12:53, 19.02.20):
Raczej nie planują, dlatego, ze to mocno wpływa na wydajność i ludzie nie do konca rozumieją jak to działa i by same reklamacje były
nowy_user (9:12, 19.02.20):
Dodatkowo, jeśli chcesz stworzyć nowy sprite, obiekt, room czy nowy script no to jednak będziesz musiał wyłączyć grę, dodać to co chcesz i odpalić na nowo. Pomimo tych minusów - warto, zwłaszcza jeśli sporo czasu zabiera Ci tworzenie intefejsu.
nowy_user (9:10, 19.02.20):
Choć też - aby nie było tak różowo - GMLive ma swoje ograniczenia. To nie jest tak, że odpalasz projekt i zmieniasz co chcesz. Przed kompilacją musisz wklepać specjalną funkcję i wtedy możesz zmieniać kod w całym tym Evencie... problem w tym, że jeśli użyjesz tej funkcji wszędzie, w każdym evencie jaki masz, to gra bardzo mocno zwolni i ciężko będzie testować.
nowy_user (9:08, 19.02.20):
Też jestem zdziwiony tym bardziej, że YellowAfterlife jest chyba w jakim stopniu pracownikiem YoYo... ja bym nie czekał na oficjalne ruchy Yoyo, te 80 zł zwróci się bardzo szybko w zaoszczędzonym czasie.
Adriann (8:37, 19.02.20):
Racja..to w sumie dość podstawowa funkcja która powinna być wszędzie :|
Borek (8:32, 19.02.20):
@gnysek a nie wiesz czy YOYO planuje coś takiego zrobić? W stylu GMLive? bo w sumie to się dziwie, że jeszcze nie zrobili skoro ktoś inny to ogarnął
gnysek (17:13, 18.02.20):
Zawsze jednak można dać if !variable_instance_exists i to też rozwiaże problem bez restartu.
gnysek (17:12, 18.02.20):
Jedyne co, to żeby w create zmienić wartość, trzeba usunąć i stworzyć obiekt w grze. Więc czasem jedynym sposobem jest restart roomu, ale to i tak milion razy szybsze.
gnysek (17:11, 18.02.20):
Pokochasz do takch rzeczy GM Live. Ja napisałem nawet gui z checkboxami i dropdownami na żywca w tym, zaczynając od pustego obiektu. Nawet jakieś dopasowywanie mocy czarów, efektów po śmierci, animacji - wszystko jest uproszczone, po prostu w otwartym oknie gry jeszcze raz robisz daną rzecz.
Borek (14:56, 18.02.20):
Jak ustawiam jakieś ikony, to pod kursorem mam X,Y i na tej podstawie zmieniam, ale wystarczy że pomylę się o piksel i znowu kompilowanie...
Borek (14:55, 18.02.20):
Samsung Evo*
Borek (14:54, 18.02.20):
Nom, Samsung Eco 970 1TB ( odczyt 3500MB/s ) daje radę, chociaż tutaj ma też duże znaczenie procesor i wcale nie ilość rdzeni/wątków a sam zegar... Tak czy inaczej, ciągłe kompilowanie jest męczące...
gnysek (10:07, 18.02.20):
10-15 sekund to jest i tak szybko przy takim rozmiarze gry tak szczerze, na moim SSD to by było z minutę jak nic
gnysek (10:07, 18.02.20):
Generalnie powiem tak. Robiłem menu do sklepiku. Na żywca pisałem for-y, przesuwałem wszystko (po pikselu), skalowałem, dodałem scrollowanie listy, popup gdzie wybiersz sztuki, dialog sprzedawcy po każdym zakupie itp. i wszystko bez wyłączania gry. W jakieś 15 minut. Normalnie - 2-3 godziny to chyba zajmowało.
Borek (0:16, 18.02.20):
Muszę pomyśleć bo każda kompilacja to ok 10-15 sekund. SSD m2 nvme i i7 7700k. Naprawdę w skali dłuższego czasu robi się sporo straty czasu
gnysek (12:45, 17.02.20):
Jedyne czego się boję, to jak sobie poradzi z GMS 2.3 i funkcjami anonimowymi.
gnysek (12:45, 17.02.20):
Tam wystarczy zakomentować linijkę, albo dać w makro 1 na 0 i gra znów działa płynnie, gdyby był jakiś problem, nawet bez usuwania rozszerzenia. A jak przesadzisz z livem i będzie drop FPS - w deweloperce to i tak nie robi, ważne, że przetestujesz co chcesz.
gnysek (12:43, 17.02.20):
Nie byłoby. Nawet na tym etapie by pomogło, a jakby co, to tylko wywalasz jeden obiekt + included files i masz projekt po staremu.
Borek (9:43, 17.02.20):
No ja tutaj z shouta się dowiedziałem Przyda się do innych projektów, bo Almora to już za duży kombajn i boje się, że będą problemy
Adriann (23:15, 16.02.20):
Widzę że trzeba było głośniej rozgłaszać temat jak zacząłem się bawić.. :d
Borek (23:06, 16.02.20):
Kurde... gdybym poznał szybciej GMLive to Almora nie powstawałaby 8 lat tylko 4
Konrad-GM (9:34, 15.02.20):
Godot ma to chyba od dawna, w dodatku działa też na mobilkach bit.ly/2OVpcIi
nowy_user (21:11, 14.02.20):
Godot chyba też nie ma... GMS mógłby zrobić z tego naprawdę mocną przewagę konkurencyjną. Szybsze tworzenie interfejsu to jedna sprawa, ale pracując z GMLive można znacznie szybciej nauczyć się kodzić ( ja dzięki temu szybko zajarzyłem ds_listy, ds_mapy i wszystkie funkcje z nimi związane).
Rakson (18:42, 14.02.20):
chyba jak sobie sam napiszesz, pygame nie ma i pyglet też. jedyne co mi przychodzi na myśl to panda3d
Threef (19:05, 11.02.20):
Chyba wszystkie silniki na Pythonie pozwalają na coś takiego
nowy_user (17:52, 11.02.20):
Aż dziwne, że YoYo nie zaimplementują tego modułu na stałe. To byłaby jedna z nielicznych przewag konkurencyjnych w porównaniu do innych silników. W Unity na żywca można edytować tylko podstawowe parametry oraz ułożenie elementów na scenie.
gnysek (12:15, 11.02.20):
Tak, mocno przyspiesza pracę z GMem, robisz jakiś skrypt, odpalasz grę i na żywca edytujesz. Całe menu sklepu do gry tak napisałem, w 20 minut zamiast w 4-5 godzin. Najlepiej wychodzi zabawa jak musisz przesuwać tekst czy robić ramki dookoła niego, wszystko ładnie sobie przesuniesz na żywca.
nowy_user (17:58, 10.02.20):
Ja i Uzjel kupiliśmy to rozszerzenie i jesteśmy zadowolemni. Gnysek chyba też kupił, bo udziela się na forum YellowAfterlife (nick gościa, który to zrobił) i zgłasza mu bugi.
nowy_user (17:56, 10.02.20):
btw. koleś od gmlive.js zrobił też GMLive, który implementujesz sobie do GMa i możesz modyfikować niektóre fragmenty kodu po kompliacji i włączeniu gry. Mega pomocne, zwłaszcza gdy projekt się rozrasta.
gnysek (13:13, 10.02.20):
Możliwość pisania kodu GML w przeglądarce.
LolikZabójca2 (7:39, 10.02.20):
co ot jest gmlive.js?
I am Lord (0:16, 10.02.20):
tiny.pl/t69tv
I am Lord (0:15, 10.02.20):
Moja gierka zrobiona w GMlive.js yal.cc/r/gml/?m...CkzHYvZBeS8kHEs
gnysek (22:32, 3.02.20):
Bardzo możliwe, że na razie to placeholdery, ale chyba nie dali ich bez powodu ?
I am Lord (18:40, 3.02.20):
a co jak to puste wydmuszki?
gnysek (18:11, 3.02.20):
Taaaa Jak psyś się dorwie do tego, to może przerobi IDE tak, zeby te DLLki też odpalić
I am Lord (17:31, 3.02.20):
Takie "trochę" że nawet wiemy nad czym pracują w ukryciu a nie zapowiadali tego nigdzie
gnysek (10:15, 3.02.20):
Nie jest, czekamy na otwartą bętę, ale mi się udało trochę info pozyskać
I am Lord (16:32, 1.02.20):
żeby tylko siusiaki
I am Lord (16:32, 1.02.20):
potwierdzam, strumyk był gruby
SimianVirus7 (11:59, 1.02.20):
a to ten cały gm:s2 2.3 już jest dostępny?
gnysek (2:07, 1.02.20):
Game Maker wyszedł z Unii
Uzjel (16:51, 31.01.20):
Nie, ale humor podobny jak poniżej :p
gnysek (16:27, 31.01.20):
No dajcie spokoj
Chell (14:06, 31.01.20):
siusiaki?
Nikas (14:04, 31.01.20):
siusiaki?
gnysek (23:39, 30.01.20):
Kto nie był dziś na disco zrąbał, pokazywaliśmy takie rzeczy że hoho
gnysek (13:09, 30.01.20):
Nawet na Disco.
gnysek (13:09, 30.01.20):
A przecież można napisać do mnie
Ankieta
» Ile powinny trwać tury Ligi 24?
24h
48h
54h (piątek od 18:00)
7 dni
inna długość (podałem w komentarzu ankiety)

GMCLAN to serwis o programie Game Maker i nie tylko.
[ Polityka prywatności ]
Copyright © 2002-2020. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2020 {=|=} fable_inside();

[ Czas generowania strony: 0.02759 sekund ] [ Liczba zapytań MySQL: 8 ]