GameMaker: Studio i IDE, które nam zapewnia, możemy szybko i łatwo budować gry wideo, dając nam przyjazny i przejrzysty interfejs, który dostarcza nam również narzędzi, które pomagają nam rozwijać nasze gry.
Jednym z tych narzędzi jest GML lub Język GameMakera, co znacznie rozszerza funkcjonalność naszego środowiska i pozwala nam poprzez skrypty napisać własny kod do projektu, który wykorzystamy wraz z pozostałymi elementami do rozwoju naszych aplikacji.
Tworzenie skryptów
Zanim przejdziemy do kilku linijek kodu, przyjrzymy się stronom, na których znajdują się nasze skrypty, dając nam przegląd tego, co możemy z nimi zrobić w zależności od sytuacji.
Skrypty w ramach wydarzenia
Wewnątrz obiektu są powiązane z nim zdarzenia, które mogą zawierać skrypt lub akcję, która wywołuje jedno z nich. Będzie to jedyny przypadek, w którym w skryptach będzie używana funkcja „przeciągnij i upuść”.
W celu dodaj skrypt do zdarzenia musimy najpierw utworzyć obiekt z naszego menu zasobów, a po utworzeniu używamy przycisku Dodaj wydarzenie aby go stworzyć:
POWIĘKSZAĆ
Po tej akcji przechodzimy do naszej zakładki kontrola oraz w dziale Kod, przeciągniemy pierwszą ikonę, która wygląda jak kartka papieru, do działania i wydamy, ta akcja utworzy nasz skrypt i możemy zacząć pisać nasze linie kodu:
POWIĘKSZAĆ
Tworzenie skryptów jako zasobów
Aby utworzyć skrypt jako zasób, przechodzimy do naszego menu zasobów i wybieramy Utwórz skrypt, gdzie po utworzeniu skrypt pojawi się w drzewie zasobów w odpowiedniej sekcji:
POWIĘKSZAĆ
Mamy kilka sposobów na stworzenie skryptu i każdy z nich ma swoje zalety, w przypadku skryptu jako zasobu najbardziej przydatne są następujące warunki:
- Gdy wiele obiektów korzysta z funkcjonalności
- Gdy funkcja wymaga wielu danych wejściowych lub argumentów.
- Gdy używane są akcje globalne, takie jak ładowanie i zapisywanie.
- Przy wdrażaniu złożonej logiki lub algorytmów.
Skrypty w pokojach
ten pokoje lub pokoje to miejsca, w których umieszczane są określone zasoby i gdzie rozgrywana jest gra. Zasoby te mogą być tworzone jak inne z odpowiedniego menu za pomocą Stworzyć pokój:
POWIĘKSZAĆ
Te pokoje lub pokoje mogą również zawierać skrypty, w tym celu edytując pokój przechodzimy do zakładki ustawień we właściwościach pokoju i tam powinniśmy zobaczyć przycisk Tworzenie kodu:
Naciśnięcie tego przycisku spowoduje utworzenie pustego skryptu związanego z tym pokojem, który zostanie wykonany, gdy gracz załaduje pokój, zanim jakikolwiek obiekt wywoła własne zdarzenie.
Skrypty GML
Gdy już wiemy, gdzie możemy tworzyć nasze skrypty i z jakimi zasobami je powiązać to czas, aby poznać części, które składają się na nasze skrypty i koncepcje, które musimy opanować, zobaczmy.
Programy
Program w GML to seria instrukcji, które następują w określonej kolejności, w której możemy powiedzieć, że dowolny skrypt w obrębie GML to program, w którym te programy są zwykle zamykane nawiasami klamrowymi, zobaczmy przykład:
{str_text = "Witaj świecie"; x + = 10; if (x> 200) {str_text = "Witaj Solvetic"; }}Jak widać jest to prosty program, w którym tworzymy instancję zmiennej typu string, następnie definiujemy, że każda klatka lub 10 jednostek jest dodawanych do x i wreszcie warunek, że jeśli x jest większe niż 200, przypisanie jest wykonywane ponownie.
Należy wspomnieć, że średnik nie jest konieczny, jednak dla GML zaleca się użycie go w celu poprawy odczytu kodu. Wskazane jest również, aby nie używać wielkich liter, a jeśli jakakolwiek zmienna będzie składać się z dwóch słów, użyj podkreślenia.
Zmienne
Zmienne w GML To one pozwalają nam reprezentować wartości i w przeciwieństwie do reszty niektórych języków programowania nie są one ściśle jednego typu, to znaczy nie muszą reprezentować określonej struktury danych. Jednak te zmienne mogą reprezentować jeden z tych dwóch typów:
- Liczba rzeczywista może wynosić 200 lub 5356. Te liczby całkowite mogą również odpowiadać konkretnemu wystąpieniu obiektu, pokoju, skryptu lub innego rodzaju zasobu.
- Ciąg reprezentujący kolekcję znaków alfanumerycznych, które są regularnie używane do wyświetlania tekstu, takiego jak: „Hello World”.
Przedrostki zmiennych
Jak wspomniano powyżej, zmienne mogą odpowiadać dowolnemu rodzajowi danych, nawet dowolnemu rodzajowi zasobów, ale do rozwiązania tego problemu mamy przedrostki dla zmiennych, które pozwalają nam zidentyfikować rodzaj zawartych w nich danych. Nie jest to obowiązkowe, ale jest to konwencja, aby móc lepiej pracować w GML, na przykład jeśli mamy str_player_name Będziemy już wiedzieć, że jest to ciąg, zobaczmy przedrostki, których możemy użyć:
- str: ciąg
- spr: duszki
- snd: Dźwięki
- bg: Tła
- pth: Trasy
- scr: Skrypty
- przypis: Czcionki
- tml: oś czasu
- obiekt: Obiekt
- rm: Pokój
- ps: System cząstek
- np.: emiter cząstek
- pt: Rodzaj cząstek
- ev: Wydarzenie
Zakres zmiennych
W naszych skryptach zmienne mają różne zakresy, co oznacza, że sposób, w jaki możemy uzyskać dostęp do zmiennych i ustawić wartości, może się różnić. Zobaczmy, jakie mamy różne zakresy:
Instancja
Te zmienne są unikalne dla instancji lub kopii każdego obiektu. Mogą być dostępne i ustawiane samodzielnie oraz przez inne obiekty, co jest najbardziej powszechne w GML.
lokalny
Są to te, które istnieją tylko w funkcji lub skrypcie, są deklarowane przy użyciu zastrzeżonego słowa var a dostęp do nich można uzyskać tylko w skryptach, w których są zdefiniowane.
Światowy
Dostęp do zmiennej globalnej może mieć dowolny obiekt za pomocą skryptu, należy ona do gry, a nie do indywidualnej instancji instancji obiektu.
Stałe
Stałe to zmienne, których wartości można tylko odczytać, a nie zmieniać, mogą być globalne, a nawet instancyjne.
Ponieważ znamy różne typy zakresów zmiennych, zobaczmy mały przykład tego, jak wykonujemy przypisanie zgodnie z zakresem:
// przypadek 1 var a = 1; // przypadek 2 globalvar b; b = 2; // przypadek 3 global.c = 10; // przypadek 4 self.x = 10; // przypadek 5 y = 10;W pierwszym przypadku mamy zmienna lokalna, można to łatwo zidentyfikować za pomocą zastrzeżonego słowa var. W drugim przypadku mamy deklarację a zmienna globalna i twoje zadanie. W przypadku 3 jest to alternatywny sposób deklarowania i przypisywania a zmienna globalna i wreszcie dla przypadku 4 i 5 są zmienne instancji ale jeden z nich przez samego siebie a drugi nie.
Zmienne językowe
Na koniec, jeśli chodzi o zmienne, mamy kilka zmiennych globalnych i instancji, które są dostarczane przez GameMaker: Studio dla każdego obiektu, np. x, duszek lub indeks by wymienić kilka. Ale są też zmienne językowe, które są również globalne zdrowie lub zdrowie, wynik lub zdobądź i zyje lub żyje. Użycie tych zmiennych zależy od każdego programisty, więc możemy zdecydować się na obejście ich bez nich, ale te nazwy znacznie ułatwiają ich zapamiętanie i zastosowanie w naszych programach.
Cechy
A funkcjonować w GML jest to funkcjonalność pozwalająca na uruchomienie programu, może być domyślnie dostępna w języku lub może być stworzona jako zasób typu skrypt.
Funkcje te mogą wykonywać akcję, taką jak zmiana wyrównania czcionki podczas zdarzenia rysowania, zwracanie wartości lub wykonywanie obu tych czynności, przy czym funkcje te muszą być poprzedzone nawiasami i, jeśli to konieczne, określonymi argumentami ich działania. Przyjrzyjmy się kilku linijkom kodu, aby zobaczyć zachowanie niektórych funkcji:
// przypadek 1 draw_self (); // przypadek 2 draw_arrow (0,0,100,100,2); // przypadek 3 random_value = random (10, 23);Dla przypadku nr 1 mamy prostą funkcję, która rysuje instancję, przypadek nr 2 to funkcja, która wykonuje akcję i wymaga argumentów do działania, w końcu mamy funkcję, która wykonuje akcję, która ma otrzymać losową wartość i zwrócić do zmiennej.
Jest specjalny przypadek, który jest skrypt_wykonaj, która jest funkcją, która pozwala nam uzyskać dostęp do skryptów utworzonych jako zasoby, a osobliwością jest to, że pozwala nam użyć zmiennych naszego skryptu, a następnie go wykonać:
self.script = scr_script_recourse; script_execute (self.script, "argument", obj_button, 0.12, false);Jak możemy zobaczyć spektrum GameMaker: Studio wykracza daleko poza jego interfejs, mamy potężne narzędzie, takie jak GML, które posiada elementy znane programistom, takie jak zmienne lub funkcje, a dzięki temu możemy zastosować naszą wiedzę programistyczną do rozwoju naszych projektów i gier.