Hinweis: Ein neues und flexibleres Online Highscore System von mir findest du hier: Online Highscore System
Hallo zusammen!
Ein Online Highscore ist schon eine feine Sache und kann ein Spiel schon enorm aufwerten. Die meisten GM Spiele rufen dazu einfach den Standardbrowser auf um den Highscore zu übertragen und anzuzeigen. Noch professioneller und komfortabler für den Anwender ist jedoch ein interner Online Highscore, der dann auch noch optisch passend im Spiel eingeblendet werden kann. In diesem Tutorial werde ich Schritt für Schritt erklären wie man sowas realisieren kann.
Erstmal ein paar allgemeine Worte zur Funktionsweise. Ich werde die 39dll für die Socket Funktionen verwenden. Mit dieser wird eine TCP Verbindung zu dem Highscore Server aufgebaut und mit dem HTTP Protokoll findet der Datenaustausch statt. Es wird eine HTTP Anfrage an ein PHP Script gesendet welches dann den übertragenen Namen und Score auf dem Server speichert und die komplette Highscore Liste zurückliefert. Diese kann dann im Spiel entsprechend angezeigt werden. Ein Eintrag in der Highscoreliste wird in diesem Tutorial den Namen die Punkte und das Eintragsdatum enthalten.
Damit du dieses Tutorial anwenden kannst solltest du über einen PHP fähigen Webspace verfügen. Datenbankunterstützung ist nicht erforderlich. Die erforderliche 39dll und eine md5 DLL von Defmaster liegen im Anhang bei.
Servereinrichtung
Fangen wir jetzt mit der serverseitigen Einrichtung an. Öffne die Datei "ohs.php" die sich im Anhang befindet mit einem Texteditor. Zeile 3-4 sehen so aus:
Das Wort "geheim" stellt dein Passwort dar. Das ist notwendig, damit niemand gefakte Punktzahlen eintragen kann. Ändere es in ein beliebiges Passwort deiner Wahl, je mehr Zeichen desto besser.
In Zeile 110-113 steht noch folgendes:
Noch 2 Einstellungen für die Highscore Liste. Ihre Bedeutung ist im Kommentar erklärt.
Das wars auch schon. Speicher die Datei und lade sie auf deinen Webspace.
Einbinden in ein Projekt
Jetzt kommen wir zum Mechanismus den wir in dein Spiel einbauen müssen. Öffne dein Projekt und importiere die Scripte "onlineHS.gml". Bevor du mit der Online Highscore arbeiten kannst musst du folgendes aufrufen:
Highscore Liste runterladen
Folgendes Script lädt den Online Highscore vom Server:
Du musst also zunächst eine Datenstruktur anlegen und die Funktion ohs_load lädt dann die Liste in die Struktur. Zur Erklärung der Argumente: Das erste Argument ist die Url zum PHP Script welches du auf deinen Server geladen hast. Du brauchst in der Adresse kein "http://" und "www" anzugeben. Die nächsten 3 Argumente sind für das laden der Liste nicht wichtig. Sie sind erst für die Übertragung eines Highscores zum Server entscheident. Wichtig ist jetzt nur, dass Argument 2 die "-1" enthält. Das 5. Argument gibt das Datumsformat an. Die Regeln entsprechen dabei der Funktion date() aus der Sprache PHP. Eine genaue Beschreibung dazu findest du hier: de.php.net/manual/de/function.date.php
Das letzte Argument ist dann die id auf die zuvor angelegte Datenstruktur.
Highscore Liste zeichnen
Als nächstes wollen wir die Liste zeichnen. Ein Script dafür kann z.B. so aussehen:
Alles anzeigen
Dieses Script sollte verdeutlichen in welcher Ordnung die Highscore Liste gespeichert ist.
Highscore an Server senden
Zum Senden eines Scores musst du die gleiche Funktion verwenden wie zum einfachen runterladen, also ohs_load. Ein Script dafür sieht z.B. so aus:
Einige Argumente sind uns noch bekannt von oben und haben die gleiche Bedeutung. Neu sind nur die Argumente 2 bis 4. Argument 2 ist der Name für den neuen Eintrag, gefolgt vom Score und dem Passwort. Achte darauf das gleiche wie oben zu nehmen damit der Score auch vom Server angenommen wird.
Mit diesem Aufruf wird nicht nur der neue Score übertragen sondern auch die Highscore Liste neu geladen und wieder in der Struktur hs abgelegt.
Das wars auch schon, so einfach geht das.
Die Tabelle zu Demozwecken, die lange Zeit auf meinem Server zur Verfügung stand, wurde aus Sicherheitsgründen entfernt!
Werte wie Url zum Serverscript, Datumsformat und Passwort sind als Konstanten unter Global Game Settings zu finden und können leicht für eigene Zwecke geändert werden.
Viel Spaß beim ausprobieren!
Vielen Dank an die Entwickler der DLLs 39ster und Defmaster.
Bei Fragen, Anregungen oder Fehlern bitte posten.
Gruß BlackSpark
EDIT 21.08.07
Das PHP Script "show.php" wurde hinzugefügt. Dieses muss in den gleichen Ordner auf dem Webspace gelegt werden und zeigt bei Aufruf die Highscore Liste normal im Browser. z.B. sinnvoll, wenn der Highscore nicht nur im Spiel sondern auch auf der Homepage angezeigt werden soll.
EDIT 22.08.07
Fehler in "ohs.php" und "show.php" behoben, der entstand wenn man einen leeren Namen hochgeladen hat.
EDIT 28.09.08
Hinweis: Ein neues und flexibleres Online Highscore System von mir findest du hier: Online Highscore System
Ich empfehle jedem das neue System statt diesem Tutorial zu verwenden!
Hallo zusammen!
Ein Online Highscore ist schon eine feine Sache und kann ein Spiel schon enorm aufwerten. Die meisten GM Spiele rufen dazu einfach den Standardbrowser auf um den Highscore zu übertragen und anzuzeigen. Noch professioneller und komfortabler für den Anwender ist jedoch ein interner Online Highscore, der dann auch noch optisch passend im Spiel eingeblendet werden kann. In diesem Tutorial werde ich Schritt für Schritt erklären wie man sowas realisieren kann.
Erstmal ein paar allgemeine Worte zur Funktionsweise. Ich werde die 39dll für die Socket Funktionen verwenden. Mit dieser wird eine TCP Verbindung zu dem Highscore Server aufgebaut und mit dem HTTP Protokoll findet der Datenaustausch statt. Es wird eine HTTP Anfrage an ein PHP Script gesendet welches dann den übertragenen Namen und Score auf dem Server speichert und die komplette Highscore Liste zurückliefert. Diese kann dann im Spiel entsprechend angezeigt werden. Ein Eintrag in der Highscoreliste wird in diesem Tutorial den Namen die Punkte und das Eintragsdatum enthalten.
Damit du dieses Tutorial anwenden kannst solltest du über einen PHP fähigen Webspace verfügen. Datenbankunterstützung ist nicht erforderlich. Die erforderliche 39dll und eine md5 DLL von Defmaster liegen im Anhang bei.
Servereinrichtung
Fangen wir jetzt mit der serverseitigen Einrichtung an. Öffne die Datei "ohs.php" die sich im Anhang befindet mit einem Texteditor. Zeile 3-4 sehen so aus:
Das Wort "geheim" stellt dein Passwort dar. Das ist notwendig, damit niemand gefakte Punktzahlen eintragen kann. Ändere es in ein beliebiges Passwort deiner Wahl, je mehr Zeichen desto besser.
In Zeile 110-113 steht noch folgendes:
Noch 2 Einstellungen für die Highscore Liste. Ihre Bedeutung ist im Kommentar erklärt.
Das wars auch schon. Speicher die Datei und lade sie auf deinen Webspace.
Einbinden in ein Projekt
Jetzt kommen wir zum Mechanismus den wir in dein Spiel einbauen müssen. Öffne dein Projekt und importiere die Scripte "onlineHS.gml". Bevor du mit der Online Highscore arbeiten kannst musst du folgendes aufrufen:
Highscore Liste runterladen
Folgendes Script lädt den Online Highscore vom Server:
Du musst also zunächst eine Datenstruktur anlegen und die Funktion ohs_load lädt dann die Liste in die Struktur. Zur Erklärung der Argumente: Das erste Argument ist die Url zum PHP Script welches du auf deinen Server geladen hast. Du brauchst in der Adresse kein "http://" und "www" anzugeben. Die nächsten 3 Argumente sind für das laden der Liste nicht wichtig. Sie sind erst für die Übertragung eines Highscores zum Server entscheident. Wichtig ist jetzt nur, dass Argument 2 die "-1" enthält. Das 5. Argument gibt das Datumsformat an. Die Regeln entsprechen dabei der Funktion date() aus der Sprache PHP. Eine genaue Beschreibung dazu findest du hier: de.php.net/manual/de/function.date.php
Das letzte Argument ist dann die id auf die zuvor angelegte Datenstruktur.
Highscore Liste zeichnen
Als nächstes wollen wir die Liste zeichnen. Ein Script dafür kann z.B. so aussehen:
GML-Quellcode
- var i, ds;
- draw_set_valign(fa_top);
- draw_set_font(font_normal);
- for (i = 0; i < ds_list_size(hs); i += 1) {
- ds = ds_list_find_value(hs,i);
- draw_set_halign(fa_left);
- draw_text(20,100+i*20,string(i+1)+". "+ds_list_find_value(ds,0));
- draw_set_halign(fa_center);
- draw_text(160,100+i*20,string(ds_list_find_value(ds,1)));
- draw_set_halign(fa_right);
- draw_text(300,100+i*20,ds_list_find_value(ds,2));
- }
Dieses Script sollte verdeutlichen in welcher Ordnung die Highscore Liste gespeichert ist.
Highscore an Server senden
Zum Senden eines Scores musst du die gleiche Funktion verwenden wie zum einfachen runterladen, also ohs_load. Ein Script dafür sieht z.B. so aus:
Einige Argumente sind uns noch bekannt von oben und haben die gleiche Bedeutung. Neu sind nur die Argumente 2 bis 4. Argument 2 ist der Name für den neuen Eintrag, gefolgt vom Score und dem Passwort. Achte darauf das gleiche wie oben zu nehmen damit der Score auch vom Server angenommen wird.
Mit diesem Aufruf wird nicht nur der neue Score übertragen sondern auch die Highscore Liste neu geladen und wieder in der Struktur hs abgelegt.
Das wars auch schon, so einfach geht das.
Die Tabelle zu Demozwecken, die lange Zeit auf meinem Server zur Verfügung stand, wurde aus Sicherheitsgründen entfernt!
Werte wie Url zum Serverscript, Datumsformat und Passwort sind als Konstanten unter Global Game Settings zu finden und können leicht für eigene Zwecke geändert werden.
Viel Spaß beim ausprobieren!
Vielen Dank an die Entwickler der DLLs 39ster und Defmaster.
Bei Fragen, Anregungen oder Fehlern bitte posten.
Gruß BlackSpark
EDIT 21.08.07
Das PHP Script "show.php" wurde hinzugefügt. Dieses muss in den gleichen Ordner auf dem Webspace gelegt werden und zeigt bei Aufruf die Highscore Liste normal im Browser. z.B. sinnvoll, wenn der Highscore nicht nur im Spiel sondern auch auf der Homepage angezeigt werden soll.
EDIT 22.08.07
Fehler in "ohs.php" und "show.php" behoben, der entstand wenn man einen leeren Namen hochgeladen hat.
EDIT 28.09.08
Hinweis: Ein neues und flexibleres Online Highscore System von mir findest du hier: Online Highscore System
Ich empfehle jedem das neue System statt diesem Tutorial zu verwenden!
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Bl@ckSp@rk ()