Hallo Comunity,
mit diesem Thread befolge ich mal MewXs Idee und erstelle einen Thread wo jeder der will bekannte Bugs in den GameMaker Versionen besprechen kann.
Definition von einem solchen "Bug":4-8 Beine, Schale, eklig, klein.. ehh..
Fehler die nicht am eigenen Code zu liegen (scheinen). Also Probleme die von Fehlern im Runner des Game Makers selbst herrühren.
Es sollte nach Möglichkeit auch darauf hinauslaufen dass Workarounds oder externe Lösungen angeboten werden, sofern dies möglich ist.
Anmerkung: Keine Bugs aus dem GM-Studio bitte, denn dieses wird im moment dauernd überarbeitet und mit dessen Bugs könnte man wohl einen Roman füllen.
Hiermit fange ich mal an:
------------------------------------------------------------
Version: GM 8.1
Art: String-vergleich oder ord() Funktion fehlerhaft
Beschreibung:
Es geht darum dass das Umwandeln von Zeichen in Zahlen und die Umkehrung davon nicht ganz korekt abzulaufen scheint. Hier ein Stück komentierten Code dessen ursprünglicher Zweck es war zwecks Komprimierung Farben in einen dreistelligen String umzuwandeln:
Spoiler anzeigen
Alles anzeigen
Lösung: Anstelle von string_char_at() und ord() muss man string_byte_at verwenden! Dies funktioniert dann problemlos.
Mag sein dass dies so gedacht ist. Trotzdem ist es verwirrend dass beim direkten Vergleich (in den ersten Messages) rauskommt dass die Zeichen gleich wären obwohl sie beim Umwandeln in Zahlen trotzdem was anderes ergeben.
------------------------------------------------------------
Version: GM 8.1
Art: display_set_size - Funktion führt zum Absturz
Beschreibung:
Selbst einfach scheint nicht zu funktionieren und wirft eine Adress-violation Meldung (manchmal kann es auch zum einfachen Blockieren führen - scheint auf das Event anzukommen).
Lösung: Keine. Es könnte aber über eine DLL gelöst werden (die diese Funktion einfach ersetzt). Mir ist aber leider noch keine bekannt. (In der Gmtoolbox findet sich zwar eine die es ermöglichen könnte, aber der Link führt zu einem gelöschten Thread.)
EDIT: 1.3.2013 ------------------------------------------------------------
Version: GM 8.1
Art: string_byte_at - Funktion führt bei leerem string zu Fehlermeldung oder Event-Abbruch
Beschreibung:
Übergibt man der Funktion string_byte_at(str,pos) ausversehen einen leeren String, dann bricht das gesamte Event einfach ab(!) _oder_ es erscheint ein adress-violation error (bei mir nur wenn der Code im create-event ausgeführt wurde).
Lösung: Einfach verhindern dass ein leerer String übergeben wird...
------------------------------------------------------------
So, das wars erstmal von mir. Hoffe jemand anderes kann weiter machen.
mit diesem Thread befolge ich mal MewXs Idee und erstelle einen Thread wo jeder der will bekannte Bugs in den GameMaker Versionen besprechen kann.
Definition von einem solchen "Bug":
Fehler die nicht am eigenen Code zu liegen (scheinen). Also Probleme die von Fehlern im Runner des Game Makers selbst herrühren.
Es sollte nach Möglichkeit auch darauf hinauslaufen dass Workarounds oder externe Lösungen angeboten werden, sofern dies möglich ist.
Anmerkung: Keine Bugs aus dem GM-Studio bitte, denn dieses wird im moment dauernd überarbeitet und mit dessen Bugs könnte man wohl einen Roman füllen.
Hiermit fange ich mal an:
------------------------------------------------------------
Version: GM 8.1
Art: String-vergleich oder ord() Funktion fehlerhaft
Beschreibung:
Es geht darum dass das Umwandeln von Zeichen in Zahlen und die Umkehrung davon nicht ganz korekt abzulaufen scheint. Hier ein Stück komentierten Code dessen ursprünglicher Zweck es war zwecks Komprimierung Farben in einen dreistelligen String umzuwandeln:
GML-Quellcode
- k1 = ansi_char(200); // Zahlen zum Umwandeln (Können z.B. Farbwerte (RGB) sein. )
- k2 = ansi_char(255); // SIe werden in einzel-Strings (Zeichen) gespeichert.
- k3 = ansi_char(150);
- kk = k1+k2+k3; // die drei Einzel-Zeichen werden zu einem String adiert. Der sich ergebende Gesamt-String kann z.B. übertragen werden)
- kk1 = string_char_at(kk,1); // Nun werden die Einzelzeichen wieder ausgelesen
- kk2 = string_char_at(kk,2);
- kk3 = string_char_at(kk,3);
- show_message("Zeichen sind equivalent: "+string(k1 == kk1)); // Es wird jeweils verglichen ob das ursprüngliche Zeichen VOR dem
- show_message("Zeichen sind equivalent: "+string(k2 == kk2)); // zusammenfassen (k1/k2/k3) zu einem String, mit den neuen Zeichen
- show_message("Zeichen sind equivalent: "+string(k3 == kk3)); // (kk1/kk2/kk3) übereinstimmt.
- // Diese messages werden immer "Zeichen sind equivalent: 1 " ausgeben.
- show_message(string(ord(k1))+" --> "+string(ord(kk1)))
- show_message(string(ord(k2))+" --> "+string(ord(kk2)))
- show_message(string(ord(k3))+" --> "+string(ord(kk3)))
- // Trotzdem zeigen diese Messages dass die jeweiligen Ergebnisse aus der "ord()" Funktion, NICHT übereinstimmen!
- // Merkwürdiger Weise ergibt der zweite Teil immer 239.
Lösung: Anstelle von string_char_at() und ord() muss man string_byte_at verwenden! Dies funktioniert dann problemlos.
Mag sein dass dies so gedacht ist. Trotzdem ist es verwirrend dass beim direkten Vergleich (in den ersten Messages) rauskommt dass die Zeichen gleich wären obwohl sie beim Umwandeln in Zahlen trotzdem was anderes ergeben.
------------------------------------------------------------
Version: GM 8.1
Art: display_set_size - Funktion führt zum Absturz
Beschreibung:
Selbst einfach scheint nicht zu funktionieren und wirft eine Adress-violation Meldung (manchmal kann es auch zum einfachen Blockieren führen - scheint auf das Event anzukommen).
Lösung: Keine. Es könnte aber über eine DLL gelöst werden (die diese Funktion einfach ersetzt). Mir ist aber leider noch keine bekannt. (In der Gmtoolbox findet sich zwar eine die es ermöglichen könnte, aber der Link führt zu einem gelöschten Thread.)
EDIT: 1.3.2013 ------------------------------------------------------------
Version: GM 8.1
Art: string_byte_at - Funktion führt bei leerem string zu Fehlermeldung oder Event-Abbruch
Beschreibung:
Übergibt man der Funktion string_byte_at(str,pos) ausversehen einen leeren String, dann bricht das gesamte Event einfach ab(!) _oder_ es erscheint ein adress-violation error (bei mir nur wenn der Code im create-event ausgeführt wurde).
Lösung: Einfach verhindern dass ein leerer String übergeben wird...
------------------------------------------------------------
So, das wars erstmal von mir. Hoffe jemand anderes kann weiter machen.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von DragonGamer () aus folgendem Grund: Bug hinzugefügt