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
Kategorie bazy artykułów
Artykuły -> Game Maker
Treść artykułu
O błędach i ich przyczynach
autor: Misiek999 (28.12.08)
Podczas pracy z Game Makerem, możemy natrafić na różnego rodzaju błędy. Niektóre możemy zignorować podczas wyświetlenia - jednak niektóre wymuszają wyłączenie gry. W tym artykule postaram się opisać wyskakujące błędy, ich przyczynę oraz jak je naprawiać.

Error Messages
W większości przypadków, okno z informacją o błędzie wskaże nam miejsce gdzie takowy wystąpił - przez co nie powinniśmy mieć problemów z wyszukaniem problemu.



1 - Numer akcji, w której wystąpił błąd ( "1" to ta na samej górze eventu ).
2 - Event ( wydarzenie ), w jakim wystąpił błąd. W tym wypadku jest to step.
3 - Informacja, w jakim obiekcie wystąpił błąd ( w tym wypadku object0 ).
4 - Linia w jakiej wykryto błąd. W tym wypadku jest to pierwsza linia kodu. Używając wbudowanego edytora, można bez problemu "skoczyć" do szukanej linii używając "Go to a particular line".
5 - Część kodu, w którym wykryto błąd.
6 - Opis błędu. W tym wypadku nieznana zmienna.
7 - Przerywamy działanie gry.
8 - Ignorujemy napotkany błąd - nie zawsze jest to jednak skuteczne.
9 - Kopiujemy cały raport do schowka.
10 - Czyścimy okno błędu.

Rodzaje Błędów
Każdemu, nawet najlepszemu mistrzowi nie raz wyskoczą różnego rodzaju błędy. W większości będą to problemy łatwe do naprawienia, drobne przeoczenia. Zdąża się też jednak i takie, nad którymi będziemy siedzieć i głowić się jak go rozwiązać.

Błąd: Unknown variable <nazwa>.
Tłumaczenie: Nieznana zmienna <nazwa>.
Opis: Musimy pamiętać, że przed jakąkolwiek operacją z użyciem zmiennej, musimy ją uprzednio zadeklarować. Zazwyczaj robimy to w create, lecz nie jest to konieczne. Zasada jest taka, że przed użyciem zmiennej musimy ją zadeklarować, nadać jakąś początkową wartość. Robimy to w taki sposób: nazwa = dowolna_wartość. Innym rozwiązaniem problemu jest zaznaczenie w ustawieniach Game Makera opcji "Treat uninitialized variables as value 0". Znajdziemy ją w Global Game Settings > Errors.
Możliwość zignorowania: Istnieje. Ale w tym wypadku ignorowanie błędu jest bez sensu - gdyż błąd będzie się wyświetlał tak długo, dopóki zmienna nie zostanie wykryta. Może to nastąpić po jakimś czasie, gdy mamy ustawiony np. alarm, gdzie została zadeklarowana zmienna.

Błąd: Division by 0.
Tłumaczenie: Dzielenie przez zero.
Opis: W jakieś operacji matematycznej, chcemy podzielić dowolną liczbę przez zero. W programowaniu nie jest to dopuszczalne. Pozostaje nam tylko zmiana dzielnika liczby.
Możliwość zignorowania: Nie istnieje.

Błąd: Unknown variable "nazwa" or array index out of bounds.
Tłumaczenie: Nieznana zmienna "nazwa", lub indeks tablicy poza jej granicami.
Opis: Tworząc tablice, ustalamy również jej granice. Możemy ją powiększać, dopisując kolejne wartości, ale nie możemy bezpośrednio odwoływać się do indeksu poza jej granicami. Przykładowo : Tablica o nazwie "array" ma rozmiar 8, więc nie możemy odwołać się do indeksu 9 : zmienna = array[9]. - przed wykonaniem tej operacji musi być dopisana tam jakaś wartość np. array[9] = 5. Aby powiększyć tablicę.
Możliwość zignorowania: Istnieje. Po zignorowaniu, Game Maker nie wykona po prostu obliczeń.

Błąd: Negative array index.
Tłumaczenie: Negatywny indeks tablicy.
Opis: Tablica nie może mieć ujemnego indeksu - przeszukaj kod. Często zdarza się w przypadku, gdy jakaś zmienna posiada wartość ujemną, a my próbujemy za jej pomocą odwołać się do jakiegoś indeksu tablicy ( tablica[zmienna] ).
Możliwość zignorowania: Istnieje. Po zignorowaniu, Game Maker nie wykona obliczeń.

Błąd: Error defining an external function.
Tłumaczenie: Błąd w definiowaniu zewnętrznej funkcji.
Opis: Błąd ten głownie występuje, gdy korzystamy z funkcji biblioteki dll, a nie umieściliśmy jej w tym samym folderze co gra. Większość bibliotek posiada również tzw. Funkcję inicjalizującą, którą musi być wykonana przed używaniem reszty funkcji. Możliwe, że o niej zapomniałeś. Błąd może występować również w innych wypadkach - ale jak nie jesteśmy twórcą danego dll'a nic więcej nie możemy zrobić.
Możliwość zignorowania: Istnieje. Tak jak w wypadku "Unknown variable <nazwa>", Game Maker nie będzie dawał nam spokoju póki problem nie będzie rozwiązany. Krótko mówiąc "Ignore" nic nam nie da.

Błąd: Wrong number of arguments to function or script.
Tłumaczenie: Zła liczba argumentów w funkcji bądź skrypcie.
Opis: Do większości funkcji możemy wpisać tylko określoną liczbę argumentów, niezbędną do wykonania obliczeń. Jeśli jest ona nieprawidłowa - zostaniemy o tym poinformowani.
Możliwość zignorowania: Nie istnieje.

Błąd: Cannot compare arguments.
Tłumaczenie: Nie można porównać argumentów.
Opis: Pamiętajmy, że porównywać można ze sobą zmienne tylko tego samego typu. W GML istnieją dwa typy : real ( liczby rzeczywiste ) oraz string ( ciąg znaków ), jeśli zmienna "a" będzie liczbą, a zmienna "b" ciągiem znaków, kod: if a == b { game_end(); } będzie nieprawidłowy.
Możliwość zignorowania: Nie istnieje.

Błąd: Unexpected symbol in expression.
Tłumaczenie: Niepożądany symbol w wyrażeniu.
Opis: Przyczyną ich występowania może być pomyłka bądź też niewystarczająca wiedza GML. Możliwości jest bardzo wiele więc nie będę ich wszystkich wymieniał. Unikniemy ich - jeśli dobrze poznamy składnie oraz zasady panujące w tym języku. Symbole takie jak !, ^, ^^, & itd. Używamy w konkretnych sytuacjach - nie możemy natomiast stawiać ich wszędzie gdzie nam się podoba. Odsyłam do kursów GML.
Możliwość zignorowania: Nie istnieje.

Błąd: Wrong type of arguments to <symbol>.
Tłumaczenie: Złe typy argumentów dla <symbolu>.
Opis: Przy operacjach takich dodawanie (+), odejmowanie ( - ), dzielenie (/), mnożenie ( * ), dzielenie całkowite ( div ) oraz reszta z dzielenia (mod ) - używać możemy tylko liczb rzeczywistych ( tzn. po lewej i po prawej stronie tego symbolu muszą znaleźć się zmienne typu real. Oprócz tego znakiem "+" możemy łączyć ciągi znaków.
Możliwość zignorowania: Nie istnieje.

Błąd: Symbol <symbol> expected.
Tłumaczenie: Wymagany symbol <symbol>.
Opis: Pojawia się, kiedy zapomnieliśmy dopisać jakiegoś znaku np. zamknąć nawiasu podczas pisania funkcji, Zamknąć blok klamrą.
Możliwość zignorowania: Nie istnieje.

Może też się zdarzyć, że twój kod będzie poprawnie napisany - a gra będzie się ciągle wyłączać. Powodem tego mogą być zbyt obciążające obliczenia bądź funkcje, z którymi Game Maker nie może sobie poradzić. Przykładem może być funkcja draw_getpixel(), którą należy stosować z umiarem.

Kontrola nad błędami
Istnieje kilka opcji, które mogą pomóc nam w kontrolowaniu błędów. Znajdziemy je wchodząc do "Global Game Settings" w zakładce "Errors".



1 - Jeśli to odznaczymy, nie będą wyświetlane okienka z błędami. Jeśli błąd nie może być zignorowany - gra zostaje wyłączona.
2 - Po zaznaczeniu, każdy błąd zostanie zapisany do pliku game_errors.log.
3 - Po wystąpieniu jakiegokolwiek błędu , Game Maker przerywa działanie gry.
4 - Wszystkim nieznanym zmiennym, które wystąpiły w kodzie - zostaje przypisana wartość 0 ( patrz tabelka - Unknown variable "nazwa" ).

Wersja PDF
głosów: 13 | ocena: 8.54 oceń zasób | dodał: ???
Komentarze
stron: 21

2


av

??? (10:55, 27.04.2010)

zeby tylko srednik - and tez wywal albo then wstaw chociaz

av

Misiek999 (13:17, 27.04.2010)

yyy, a czemu tak nie może być ? ;p sprawdza czy kakao false jest.

av

Assassin (14:28, 27.04.2010)

YXE miał na myśli, że kakao=false to skutek, a nie przyczyna, dlatego powiedział: wywalić and (a opcjonalnie dać then) .

av

Mentoss (15:57, 27.04.2010)

nie, nie kakao to warunek. wywalenie srednika pomogło

av

Ignifil (12:24, 1.08.2010)

Czemu jak mam w create name = Andrzej to mi wyskakuje taki błąd?:

ERROR in
action number 1
of Create Event
for object object0:

Error in code at line 1:
name = Andrzej

at position 8: Unknown variable Andrzej

av

??? (12:54, 1.08.2010)

name = "Andrzej";
string wymaga cudzysłowia

av

wikku9 (12:54, 1.08.2010)

musisz Andrzej dać w cudzysłowiu.

av

Ignifil (14:00, 1.08.2010)

okej dzięki

av

TheMarcQ (17:32, 4.08.2010)

" Unknown variable Andrzej"
jak nie znasz angielskiego to odsyłam do
translate.google.pl

stron: 21

2



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

Nie masz konta? Zarejestruj się
Użytkownicy on-line
0 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 0, userów: 0, ukrytych: 0


5 użytkownik(ów) na gmczacie discord.com
Shoutbox
I am Lord (15:29, 26.09.17):
nie rozumiem
gnysek (11:57, 26.09.17):
Super, w GMS2 można sobie dowolnie stawiac rzeczy na layerach w runtime, ale w IDE już nie.
Threef (6:10, 26.09.17):
Pierwszy!
Gibki Kaktus (13:23, 24.09.17):
Poxi, ja pracuję w Deliveroo na rowerze xD Odwiedzasz czasem Londyn?
PoxiPol (11:21, 24.09.17):
Dzisiaj robie to tutaj takei o www.facebook.com/pappspizza
PoxiPol (11:20, 24.09.17):
Hah, w Anglii. Sprzedajem tutaj Polskiego Kebaba w bulce i inne, np grillowana kielbasa z frytkami, i schabowy.
Threef (9:44, 24.09.17):
Gdzie? Jaki? Bedziemy wspierać i prosić o kod na kolizję na opakowaniach
PoxiPol (7:05, 24.09.17):
Ja kupilem sobie prace. Jutro pierwszy dzien jako wlasniciel Takeawaya ;-;
Threef (19:32, 23.09.17):
Ja to zrozumiałem jakby Ranma nie chciał oddać domeny
PoxiPol (18:33, 23.09.17):
Nic przeciwko Ranmie ofc
PoxiPol (18:32, 23.09.17):
Ja to rozumiem jako dobra wiadomosc
Ranmus (18:23, 22.09.17):
Skąd ten smutek i zwątpienie?
gnysek (6:21, 22.09.17):
O, dzisiaj przychodzi mój hajs z googla, chyba mozna zacząć przenosić GMCLAN na "mój" serwer i przejąć od Ranmy domenę
Threef (19:56, 21.09.17):
No nie jest łatwo. Szczególnie jak dobra ma 24h
Ignatus (19:30, 21.09.17):
Ja tam mam bardziej nadzieję że zrobisz grę Threef Kiedy jakies premiery?
Threef (16:32, 21.09.17):
Mnie tak. Plus mam większą kontrolę. Mogę np robić warunki logiczne.
gnysek (15:54, 21.09.17):
Nie chciało mi się nigdy bawić w takie porównanie.
Threef (15:52, 21.09.17):
No i mam taką tablicę. Oczywiście mam tylko parametry jakie potrzebuję.
gnysek (8:53, 21.09.17):
W ogóle coś ma sie z particlami zmienić, nawet ma być dla nich layer w room editorze, wiec czuję edytor. Co do rysowania sprite w pętli - no to nie, bo mają więcej parametrów - to byś musiał zrobić sporą tablicę, żeby to odwzorować.
Threef (6:58, 21.09.17):
Czy particle są w końcu szybsze w GM:S2 od rysowania sprite w pętli? xD
gnysek (22:04, 20.09.17):
Znalazłem sposób na rysowanie spritów particli normalnie w draw: forum.yoyogames...s-sprites.34697
MaxGaming (16:35, 20.09.17):
jest ktoś kto mi by krótki refren angielski ze słuchu potrafił przetłumaczyć na już?
gnysek (13:37, 20.09.17):
Tu się akurat zgodzę
Ranmus (11:49, 20.09.17):
I bardzo dobrze, że nie ma dziwnych znaków. Same liczby i litery powinny być w nickach.
gnysek (11:14, 19.09.17):
Kodowanie... musiałbym przed każdym SQL do forum zmieniać kodowanie bazy, a potem je przywracać... do dupy z tym nowym forum, żaden to prezent
Uzjel (21:47, 18.09.17):
???
??? (21:38, 18.09.17):
;_;
I am vader (21:26, 18.09.17):
A, to YXE. Jego nick nie wyswietla sie poprawnie.
I am vader (21:25, 18.09.17):
Ciekawe kto to led.feen.us/lkx8xqvn.png
Wojo (10:59, 17.09.17):
chell śmiechłem
Chell (19:35, 13.09.17):
exp ty masz ojca poza kadrem albo cos?
exp (19:03, 13.09.17):
gmclan mnie wychował
exp (19:03, 13.09.17):
ehh
Wojo (12:50, 13.09.17):
Jak tak dalej pójdzie to będę musiał znaleźć realnych kolegów
Wojo (12:49, 13.09.17):
Tu nic nigdy nie działa. Cały czas stoimy w miejscu i nawer nie zapowiada się na korzystne zmiany
gnysek (9:41, 13.09.17):
Niestety, aby ten fix działał, trzeba wejść raz na forum i dopiero drugie wejście będzie OK (więc po fixie jeszcze raz mógł być problem)
gnysek (9:41, 13.09.17):
MaxGaming - bo dodałem usuwanie ciasteczek z domeny .forum.gmclan.org automatycznie. Czyli to jednak to było problemem.
SimianVirus7 (14:08, 12.09.17):
Dzięki
exp (11:15, 12.09.17):
możesz
SimianVirus7 (10:13, 12.09.17):
Tak
exp (9:50, 12.09.17):
czyli po prostu chcesz zrobić grę i wrzucić ją do internetu za darmo?
SimianVirus7 (9:03, 12.09.17):
Mi się śniło, że podpadłem rybnemu gangowi SpongeBoba ale nie po to się zalogowałem, żeby o tym powiedzieć mam pytanie, może dość głupie, ale prawo w Polsce też potrafi takie być. Czy jeśli chce swoją grę rozdawać za darmo i nie brać z tego absolutnie żadnych opłat (nawet z reklam), to mogę ją publicznie udostępniać? Skarbówka lub jakiś inny organ państwowy się do mnie nie przyczepi?
Chell (7:17, 12.09.17):
wpadłem tylko żeby napisać ze śniło mi się że zalogowałem się na 4tk
MaxGaming (17:49, 11.09.17):
Wreszcie mogę się zalogować. Odkąd weszło to nowe forum to nic nie działa jak powinno. Jak klikam w nowości z forum też raz mnie odsyła na główną forum a raz do tematu. PS mam dość proste wydaje mi się pytanie z MySQL którego ja osobiście znam póki co tylko absolutne podstawy. forum.gmclan.or...-i-subkategorii
doctor (18:49, 9.09.17):
Chociaż oficjalnie jest jakiś GDL, może w tym da się klepać (i 3 inne dokumentacje)
doctor (17:46, 9.09.17):
Przypomina nawet nieźle GM, niestety nie ma kodu (trzeba wyklikiwać jakby kod - czuję się jakbym grał w Patapony) - niby sporo funkcji jest (nawet 3D), ale wyklikiwać ...
doctor (17:45, 9.09.17):
Nowe konto xd Na stare wbić nie mogę :/ Jak ktoś szuka coś a'la Game Maker, czyli program do robienia upośledzonych gier to znalazłem GDevelop
Ignatus (20:21, 8.09.17):
Apropo Gnyska dziś czytałem temat o Almoraoczątek- we wstępnie jest "Gra ukaże się w drugiej połowie roku, na PC, a potem na iPada (możliwe, ze będzie to pierwsza produkcja w GameMaker:Studio 2)." A to temat z 2012. Gnysek jak długo trwały te beta testy GM2 ?
Threef (19:55, 8.09.17):
To że gnysek zrobił swego czasu grę o takiej nazwie.
Ankieta
» Jakiej wersji GameMakera głównie Używasz?
GameMaker: Studio 2
GameMaker: Studio
GameMaker 8.1 i starsze
Żadnej

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

[ Czas generowania strony: 0.00918 sekund ] [ Liczba zapytań MySQL: 13 ]