Fehlerbericht System

    • GM 8

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Fehlerbericht System

      Hallöchen Leute!

      Heute werde ich euch mal zeigen, wie man eine einfache Fehlerbericht-Erstattung in sein Spiel einbauen kann. Der Benutzer hat die Wahl, beim Auftreten eines Fehlers den Fehlerbericht an den Entwickler des Spiels zu senden oder eben nicht. Diese Meldung wird dann über ein PHP-Script auf eurem Webserver an eure E-Mail-Adresse geschickt.
      Was wir dazu brauchen sind:
      • Natürlich den Game Maker (sollte mit jeder Version funktionieren)
      • Einen PHP-fähigen Webserver (z.B.: bplaced.net)
      • Ein FTP-Upload-Programm (optional kann man auch den Windows Explorer benutzen)
      • Eine HTTP-fähige dll (in diesem Fall nehme ich die http.dll von Bl@ckSp@rk)
      Dann legen wir mal los

      Als erstes erledigen wir gleich die Fremdsprachenarbeit, nämlich das PHP-Script, da es wirklich einfach aufgebaut ist und wenig Code enthält. Wir werden beim Übertragen der Daten auf die POST -Methode zurückgreifen und eine kleine Sicherheitsabfrage einbauen, die verhindert, dass man außerhalb des Spiels Fehlerberichte senden kann.
      Das PHP-Script sollte so ähnlich aussehen:

      PHP-Quellcode

      1. <?php
      2. if ($_POST["code"] == "deincode" && isset($_POST["error"]))
      3. {
      4. $header = "From: Fehlerbericht System <noreply@error.net>\nReply-To: noreply@error.net\nContent-Type:text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit\n";
      5. mail("deine@mail.net", "Dein Betreff", "Folgender Fehler ist im Spiel xyz aufgetreten:<br>".nl2br($_POST["error"]), $header);
      6. }
      7. ?>


      Das wars auch schon. Speichert dieses Script als php-Datei (in diesem Fall unter report.php) und ladet es auf euren Webspace.

      Kommen wir zum Spiel

      Fügt eure HTTP-fähige dll in das Spiel ein und initialisiert alles korrekt (ich verwende in dem Fall die http.dll). Am besten ihr legt nun ein neues Script mit dem Namen error_report an, welches ihr im Step-Event ausführt.
      Das Script muss überprüfen, ob ein Fehler aufgetreten ist und bei Bedarf einen Fehlerbericht senden. Und das sieht folgendermaßen aus:

      GML-Quellcode

      1. // Prüfe, ob ein Fehler aufgetreten ist.
      2. if (error_occurred)
      3. {
      4. // Vergleiche sicherheitshalber den Text der Fehlermeldung mit dem Text einer eventuell zuvor aufgetretenen Fehlermeldung,
      5. // damit der Bericht auch nur einmal erfragt und gesendet wird (die Variable global.lerror muss natürlich noch definiert werden - als leerer String)
      6. if (error_last != global.lerror)
      7. {
      8. if (show_message_ext("Ein unerwarteter Fehler ist aufgetreten. Fehlerbericht senden?", "Ja", "", "Nein") == 1)
      9. {
      10. // Hier wird nun der Fehlerbericht gesendet, falls der Benutzer das will
      11. // So sieht es mit der http.dll aus
      12. http_add_post("code", "deincode"); // Code, den ihr in der PHP-Datei festgelegt habt
      13. http_add_post("error", error_last); // Die Fehlermeldung
      14. if (http_request("testserver.bplaced.net", "/pfad/zum/php/script/report.php"))
      15. show_message("Fehlerbericht wurde gesendet");
      16. else
      17. show_message("Fehlerbericht konnte nicht übermittelt werden");
      18. }
      19. error_occurred = 0;
      20. global.lerror = error_last;
      21. }
      22. }
      Alles anzeigen


      Schlusswort

      Das war eine relativ einfach zu verwirklichende Methode, ein Fehlerberichtsystem zu erstellen, natürlich ist es noch ausbaufähig, man könnte z.B. das PHP-Script erweitern, sodass es z.B. nur wöchentlich alle aufgetretenen Fehler einmal per E-Mail versendet, aber die Grundlage wäre damit geklärt. Auf jeden Fall ist es noch zu empfehlen, die GM Fehlermeldungen abzuschalten, da diese sonst noch extra vor unserer Methode angezeigt werden.

      © 2008 by Teamgrill Productions

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von MasterXY ()