Ich programmiere gerade ein JavaScript Spiel und wollte ein Highscore System programmieren, dass die Daten in einer Datenbank gespeichert werden aber wie?

4 Antworten

Theoretisch kannst du den Score auch in einer Textdatei speichern und auslesen (mit JS). Wenn du einzelne Werte bestimmten Spielern zuordnen willst, empfiehlt sich natürlich eine Datenbank mit Benutzern.

 Wenn du schon mit php programmiert hast, hast du ja sicher einen lokalen Server eingerichtet. Bei XAMPP ist zum Beispiel auch ein Datenbankserver dabei. Mit phpMyAdmin kannst du bequem eine entsprechende Datenbank anlegen und direkt Benutzer anlegen oder mit HTML/php auf deiner Webseite ein Registrierungs- bzw Login-Formular realisieren.

Dann kannst du lokal "rumprobieren", wie du mit php/MySQL(i) die Datenbank-Kommunikation umsetzen kannst. 

Für forgeschrittene Projekte ist eventuell auch die Score-APi von Facebook interessant. Aber eine Benutzerverwaltung zu programmieren ist eine gute Übung.


DM6835 
Beitragsersteller
 17.08.2017, 11:30

Aber wie bekomme ich die Punktezahl in die PHP Datei? Das kann man ja auch verändern oder?

0
curuba555  17.08.2017, 17:43
@DM6835

Aber kann ehrlich gesagt noch nicht richtig nachvollziehen, wie an durch Veränderung der JS-Datei cheaten kann. Man kann natürlich das Javascript lokal speichern und verändern aber dann wirkt der "Cheat" doch auch nur lokal. 

Könntest du nicht die JS-Funktion, die die Punkte zählt/anzeigt durch eine php-Funktion ersetzen? Dann wird alles auf dem Server verarbeitet und die Nutzer bekommen nur das Ergebnis angezeigt.

0

"Aber wie?"

Dazu brauchst du gewöhnlicher weise einen Webserver mit Datenbankunterstützung.
Mittels PHP Skript forderst du den Webserver dann auf, die Highscore Variablen geordnet in einer (MySQL-)Datenbank zu speichern.
Einfach gesagt, aber dazu ist schon etwas aufwand nötig, aber es soll wohl auch Bibliotheken geben, die dir so etwas abnehmen.


Kieselsaeure  14.08.2017, 08:37

mittels php huiuiui na das kann ja was werden

0
StrangeMale  14.08.2017, 10:47

Für ein einfaches Spiel sollte das doch wohl reihen, solange er nicht beabsichtigt Geld damit zu verdienen.
Wie willst du das den sonst machen?
Durch Sockets mittels Node.js?
Leider unterstützten zu wenig kostenfreie Webserver diese Technologie, deshalb würde ich mich als armer Schüler damit erstmal nicht auseinander setzten.
Aber man kann doch auch mit php eine Socket Verbindung aufbauen

0

Ich würde die Daten per POST an ein PHP-Script schicken, welches sie in einer MariaDB- oder SQLite-Datenbank abspeichert. Abgerufen werden sie dementsprechend ebenfalls über das Script. Die Authentifizierung erfolgt am besten mit Sessions.

Zur Verbindung mit dem Server gibt es zwei Möglichkeiten:

  1. WebSocket: https://entwickler.de/online/websocket-implementierung-mit-php-132012.html
  2. AJAX: https://www.w3schools.com/xml/ajax_intro.asp

Allerdings würde ich u.a. aus performancetechnischer Sicht die erste Möglichkeit bevorzugen.

mit js allein kannst du keine datenbankkommunikation vornehmen.

du solltest das aber auch nicht tun. es ist übrigens schwachsinnig wenn du sagst der client sendet zum beispiel einem php script jetzt den neuen punktestand und php gibt das weiter an mysql. da kannst du immernoch genauso manipulieren.

ziel muss es sein einen gameserver zu entwickeln. der gameserver kennt die punktestände und kommuniziert mit der datenbank und nicht der client hat die kontrolle. wenn der client manipuliert hat das keine ernst zu nehmenden konsequenzen solange der server sauber geschrieben ist. villeicht verstehst du jetzt auch warum server unter umständen so viele ressourcen schlucken.

never trust your clients :-)


DM6835 
Beitragsersteller
 14.08.2017, 01:46

Ja, aber wie kann der Gamesserver die Spielstände kennen wenn das Spiel in JavaScript geschrieben wurde?

0
Kieselsaeure  14.08.2017, 08:36

na in dem du mit dem server in kommunikation bleibst. der client darf nurnoch ausführen was der Server ihm befiehlt. der client darf nichtmehr selbst entscheiden ob er gewonnen oder verloren hat oder wie viel geld zur verfügung steht etc. diese ganzen dinge sind aufgaben des servers

0
StrangeMale  14.08.2017, 10:47

Für ein einfaches Spiel sollte das doch wohl reihen, solange er nicht beabsichtigt Geld damit zu verdienen.
Wie willst du das den sonst machen?
Durch Sockets mittels Node.js?
Leider unterstützten zu wenig kostenfreie Webserver diese Technologie, deshalb würde ich mich als armer Schüler damit erstmal nicht auseinander setzten.
Aber man kann doch auch mit php eine Socket Verbindung aufbauen

0
Kieselsaeure  14.08.2017, 11:23
@StrangeMale

naja er hat gefragt wie er es absichert. andauernd per ajax php mit daten voll zu bomben und anders herum ist nicht wirklich optimal. es müstte ja nur der websocketserver auf ner vm laufen. der webspace kann ja getrennt davon irgendwo kostenlos laufen. mit php kann man natürlich auch nen websocketserver betreiben allerdings hast du da sofern du nen kostenlosen webspace hast das problem mit der max_exec_time in php.

0