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ł: PsichiX
Komentarze
stron: 21

2


av

ΨΧΞ (12:55, 27.04.2010)

zeby tylko srednik - and tez wywal albo then wstaw chociaz

av

Misiek999 (15:17, 27.04.2010)

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

av

Assassin (16: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 (17:57, 27.04.2010)

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

av

Ignifil (14: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

ΨΧΞ (14:54, 1.08.2010)

name = "Andrzej";
string wymaga cudzysłowia

av

wikku9 (14:54, 1.08.2010)

musisz Andrzej dać w cudzysłowiu.

av

Ignifil (16:00, 1.08.2010)

okej dzięki

av

TheMarcQ (19: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
116 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 113, userów: 3, ukrytych: 0
lew_leo, Adriann, ukatimavay

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
ANtY (8:51, 25.07.17):
bodajze 1500 pln
Ignatus (21:53, 24.07.17):
orientuje sie ktos jaki jest koszt mini stoiska indie na PGA?
Chell (21:19, 24.07.17):
zbilbym fortune na tym twoim jednorekim bandycie
ΨΧΞ (20:56, 24.07.17):
i jak nieznosze JSa, tak uwazam, ze niestety bedzie on przyszloscia gier i apek mobilnych :<
ΨΧΞ (20:56, 24.07.17):
a ja pochwale sie zrobieniem przykladowej gry w jednorekiego bandyte w 3 dni w JavaScriptcie od zera - silnik powstal wraz z gra github.com/Psic...slots-in-3-days
tramur (12:28, 24.07.17):
Powiedziałem z niską barierą wejścia, bo stworzenie shoot em upa jest troszke trudniejsze niż w GM'ie na kodach, a co do optymalizacji to nie wiem co masz na myśli.
tramur (12:26, 24.07.17):
;P powiedzoałem
Threef (6:02, 24.07.17):
Nie ma niskiego poziomu wejścia. I wymaga masy optymalizacji
tramur (21:33, 23.07.17):
Ja bym optował za czymś zgoła odwrotnym: PICO-8. Ciekawy koncept mitycznej retro konsolki z niską barierą wejścia, ale jak najbardziej z programowaniem.
Ignatus (17:13, 23.07.17):
Raczej nie
exp (16:21, 23.07.17):
a klocki w game makerze traktujecie jako programowanie?
Fervi  (11:29, 23.07.17):
Jasne, że najlepiej jest nauczyć się ich języka itd. Natomiast coś na kształt uproszczonego Dooma (powiedzmy - w skrócie) można zrobić (teoretycznie) bez żadnej linijki kodu dodatkowej. Bardziej to nie tyle Game Maker typowy co edytor map z językiem programowania
Danielus (10:37, 23.07.17):
Prawda ale chodzi raczej o coś innego. Chodzi o prostotę, im coś prościej zrobić tym łatwiej estymować pracę i tym łatwiej to potem utrzymać. Dlatego firmy ciągnie do języków takie jak C# czy Java. Pamiętaj że to tylko narzędzia i zawsze trzeba wybierać odpowiednie narzędzia jeśli możesz zrobić coś w rok w c# to wybierasz c# niż 5 lat w C nawet kosztem 50% spadku wydajności. Chyba że wydajność jest punktem krytycznym projektu.
Wojo (10:22, 23.07.17):
Aż mnie krew zalewa ale to jest nowe pokolenie programistów - idiotów
Wojo (10:22, 23.07.17):
Czytałem blog jakiegoś barana, który pisał, że C# pomimo, że jest mało wydajny to i tak warto się go uczyć bo teraz RAM bez problemu można dokupić
Wojo (10:21, 23.07.17):
No mniej więcej o to mi chodziło. O uproszczenie, co wiąże się z tym, że ludzie nawet nie myślą o optymalizacji
Danielus (10:19, 23.07.17):
W sensie mam na myśli że na początku taki człowiek dostaje gotowce i jest zadowolny a potem mówi "a mam pomysł żeby tu była taka mechanika" i nagle ludzie się uśmiechają "a to sobie napisz bo na to nie ma gotowca" no i projekt upadł.
Danielus (10:17, 23.07.17):
Zawsze wolałem 2d, jakoś przyjemniej się gra i trochę mi szkoda że nie ma już tak potężnych produkcji 2d jak np homm3 ale cuż :f Programować nadal musisz umieć, zmienia się zakres tego co trzeba umieć bo języki się uproszczają i powstają języki vizualne ale ja to wciąż będę nazywał porgoramowaniem bo wymaga takiego samego myślenia jak zwykłe programowanie. Natomiast ludzi przychodzą robić gry myśląc że to ot tak zrobią i potem płacz że miało być bez programowania
Wojo (10:14, 23.07.17):
No bo 3D to skok technologiczny i daje większe możliwości, a miłośników 2D jest znacznie mniej
Ignatus (10:12, 23.07.17):
Nie wiem co ludzie widzą w tym żę coś jest 3D, jak jest słaby pomysł i mechanika to jeden pies jaki masz widok.Wszyscy amatorzy zakładają że 3D od razu daje grze 3punkty do oceny
Wojo (10:06, 23.07.17):
Na tym forum żaden z działów poza GM się nie sprawdza. Hmmm ciekawe dlaczego
Wojo (10:05, 23.07.17):
A jeśli chodzi o tego sandbox game maker to równie dobrze można dodać dział "GAME MAKER 3D" bo program i tak reprezentuje trochę niższy poziom
Wojo (10:01, 23.07.17):
Ale w dzisiejszych czasach serio się nie musisz znać na programowaniu ( a przynajmniej tak bardzo jak kiedyś ).
Danielus (9:49, 23.07.17):
:Nie trzeba znać się na programowaniu" najbardziej idiotyczna fraza jaka pojawiła się w naszym środowisku. Jak nie trzeba programować to znacyz że nie zrobisz nic innego jak klony istniejących rzeczy.
Fervi  (1:39, 23.07.17):
Może admin niech się zastanowi nad dodaniem subforum "Sandbox Game Maker". To taki Game Maker, który napierdziela gry w 3D i nie trzeba znać się na programowaniu (chyba, że coś lepszego chcemy) - jak w GMie xd
MaxGaming (19:00, 22.07.17):
Na AM i nie automatycznie bo trzeba do jakiegoś urzędu zamienić ale nie wiem dokładnie
Wojo (18:13, 22.07.17):
A to nie jest tak, że karta motorowerowa automatycznie zamienia się w a1 ?
MaxGaming (17:41, 22.07.17):
Ja mam A1, a właściwie jeszcze nie mam bo muszę praktykę zdać. Zaczałem jakoś dwa lata temu i nigdy nie skończyłem to doszedłem do wniosku że kiedyś trzeba(chociaż gdybym teraz zaczął mógłbym a2 nie a1) xD
Wojo (15:25, 22.07.17):
A tak na poważnie chciałem sobie kupić 125ke ale niedawno zauważyłem, że trzeba mieć B 3 lata a nie 2 tak jak myślałem :/
Wojo (15:21, 22.07.17):
hehe lewa w górę
MaxGaming (15:14, 22.07.17):
Motor masz pod maska w samochodzie
MaxGaming (15:14, 22.07.17):
Motocykl*
Wojo (11:35, 22.07.17):
Motor
ANtY (10:59, 22.07.17):
co to cbrka
MaxGaming (2:38, 22.07.17):
Po prostu nigdy nie sprawdzajcie vmaxa gdy jest po deszczu a za 200 metrów jest zakręt 90 stopni xd
MaxGaming (2:37, 22.07.17):
Za 5000zł bym nie zaszalał jeżeli chodzi o muscle cara xd
Chell (2:36, 22.07.17):
wniosek trzeba bylo kupic muscle cara
MaxGaming (2:35, 22.07.17):
Wniosek? Nie opłaca się wychodzić z domu XD
MaxGaming (2:35, 22.07.17):
Kupiłem CBRkę i pierwszego dnia ją rozbiłem <facepalm> Koszt naprawy jakieś 2000zł(a kupiłem za 5000zł) XDDDD
I am vader (23:26, 21.07.17):
Kodze projegd
Wojo (21:42, 21.07.17):
a siedze se w domu jak zawsze i podróżnikowałem sobie po mieście wcześniej i generalnie jestem nawet zadowolony
Ignatus (20:53, 21.07.17):
Słyszałem że taka gorzka czekolada
Threef (20:47, 21.07.17):
A nie piłem. Jak ta jelitówka smakuje? Lepsza od wiśniówki?
Chell (19:52, 21.07.17):
siedze w chacie z jelitowka, elo
Nikas (19:47, 21.07.17):
alkololo
ANtY (18:41, 21.07.17):
PRZYZNAWAĆ SIĘ, NIC NIE UKRYWAĆ
ANtY (18:41, 21.07.17):
NO ELO CO TAM
Wojo (5:23, 20.07.17):
O dzięki, doceniam starania
Danieo (0:13, 20.07.17):
Wszystkiego najlepszego!
Gibki Kaktus (21:02, 19.07.17):
Btw zalogowałem się specjalnie, żeby Ci życzenia złożyć xD
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!

[ Czas generowania strony: 0.02268 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev