Kann man ein Webgame ohne PHP programmieren?
Also nur mit Javascript, HTML, CSS und MYSQL? Geht das? Oder braucht man dafür immer auch PHP?
Beispiele: Ogame, Ikariam
6 Antworten
Um im Hintergrund mit einer Datenbank wie MySQL zu arbeiten benötigt man zumindest eine serverseitige Programmiersprache.
Neben PHP kann man hier aber auch andere Sprachen nutzen wie z.B. Python oder auch JavaScript (Node.js).
Node.js ist eine Laufzeitumgebung für JavaScript, welche es ermögliche JavaScript außerhalb eines Webbrowsers ausführen und so auch im Backend nutzen zu können.
https://de.wikipedia.org/wiki/Node.js
https://www.w3schools.com/nodejs/
Jede Programmiersprache hat letztendlich seine Stärken und Schwächen, was am besten geeignet ist kommt immer auf den Anwendungsfall an.
Persönlich nutze ich meist PHP, weil ich damit die meiste Erfahrung habe.
Python hatte ich vor längerem auch mal genutzt, PHP fand ich damals aber einfacher/praktischer für meine Anwendungsfälle.
Zum Glück geht es ohne php.
Alternativen zu php können auch nodejs (JavaScript) basierte Server sein, C# mit asp.net, oder auch Java. Man kann mit so ziemlich jeder Sprache einen web Server erstellen.
Solange es dir reicht Daten nur im Browser zu speichern, reicht auch ein „dummer“ Webserver der einfach nur html, css usw. ausliefert.
Also ich kann mit Javascript Frontend UND Backend erledigen? Kennst du Spiele wie Ogame? Wie würdest du das programmieren?
Klar, aber man muss sich natürlich trotzdem an die andere Umgebung gewöhnen.
Ich kenne Ogame nicht, habe aber selber mal einen Prototyp für ein echtzeit 2d multiplayer hero arena fighting game mit Team Deathmatch gemacht. Da habe ich auch Nodejs, websockets und die HTML Canvas API genutzt.
Wenn ich noch mal so etwas umsetzen würde, könnte ich mir vorstellen das wieder so zu machen. Eventuell würde ich überlegen, stattdessen auf Godot als Engine zu setzen, beim Server Go zu nutzen, oder falls das Spiel nicht unbedingt Echtzeit funktioniert, sondern eher wie eine klassische Website eventuell auch asp.net, eventuell mit vue als frontend framework.
Für einen Anfänger würde ich aber empfehlen:
- Entwickel ein Spiel was mit wenigen Spielern bzw. Single Player funktioniert
- Halte dich an die Technologien die du schon kannst
- Entwickel erst mal ein ganz simplen Prototyp der nur dafür da ist zu schauen wie gut du mit der Technologie klar kommst. Zuerst ohne Server falls möglich, dann mit, dann evaluiere neu was du umsetzen kannst.
- Schreibe ein grobes Konzept, halte fest welche Features du zuerst brauchst und welche später kommen sollen. In meinem Fall habe ich mich z.B. aus Zeitgründen gegen ein Lobby System entschieden
- Falls du noch gar keine Erfahrung hast, lohnt es sich eventuell das Konzept zu schreiben und kleinere, andere Projekte zum lernen zu machen, bevor du "richtig" anfängst.
Ich habe Singleplayer Cookieclicker nachgebaut. Jedoch weiß ich nicht wie man den Fortschritt des Spiels speichert und dann an den Server sendet. Ich brauche eine sehr große Spielerbase, weil ich nur Einnahmen in der Zukunft haben kann, wenn es viele spielen, da ja nur jeder 100. etwas zahlt dafür. Brauche ich Canvas? Prototyp habe ich schon mit HTML, CSS uns Jquery. Die Mathematik dahinter kann ich auch, also ich kann mit Variablen rechnen. Aber ich will, dass ein anderer Spieler z.B. mich angreifen kann und mir Ressourcen stehlen und dass es ein Ranking gibt, wer am meisten hat. So wie bei jedem Strategiespiel. Ich suche dafür nach einer möglichst einfachen Lösung.
Wenn du es nicht schaffst, einen einfachen Webserver einzurichten der einen einzelnen Wert speichert, hast du (noch) nicht die Fähigkeiten dafür öffentliche Server Infrastruktur sicher genug für ein kommerzielles Projekt zu hosten und zu programmieren.
Weiß ich, genau das will ich ja lernen, wie ich das mache. Möglichst schnell.
Wenn man ein DBMS wie MySQL nutzen will, kommt man meines Erachtens nicht um serverseitige Programmierung bspw mit PHP herum.
Eigentlich wollte ich gerade auf deinen Kommentar zu meiner Antwort deiner vorherigen Frage antworten, aber ich dachte mir, ich schreibe es einfach direkt hier.
In dieser Antwort habe ich von einem "Stack" geredet. Mit dem Tech-Stack werden grundlegenden Technologien bezeichnet, auf denen eine Software basiert. Vor allem bei Webanwendungen ist das oft ein Thema, da man hier meist mehrere Schichten hat, u.a. das Frontend (also was der Nutzer im Browser sieht) und das Backend (was auf dem Server läuft und u.a. Daten und Anfragen handhabt).
Es gibt etablierte Stacks wie den LAMP-Stack, das steht für Linux, Apache, MySQL PHP. Das ist einer der simpelsten Stacks, um eine einfache Webanwendung umzusetzen.
Es gibt aber auch modernere Stacks wie MERN (MongoDB, Express.js, React, Node.js).
Wie du sehen kannst, enthält der MERN-Stack kein PHP. PHP ist nur eine von vielen Technologien, die du zur Umsetzung einer Web-App benutzen kannst.
Außerdem musst du dich auch nicht auf irgendeinen etablierten Stack mit einer tollen Abkürzung festlegen, du kannst die Technologien verwenden, die für deine Anwendung passen und mit denen du umgehen kannst. Zudem ist es eine starke vereinfachen zu sagen, man würde eine Anwendung nur mit z.B. LAMP oder MERN umsetzen, meist kommen so oder so noch zusätzliche Tools und Libraries dazu.
Mein bevorzugter Stack ist Vue.js für das Frontend, Node.js + Express für das Backend, und MySQL als Datenbank. Keine Ahnung ob es dafür eine Abkürzung gibt, aber ist ja auch egal, funktionieren muss es.
Also, lange Rede, kurzer Sinn:
Nein, PHP ist nicht unbedingt notwendig.
Node.js (+ Express.js) ist beispielsweise eine Alternative zu PHP. Wie du vielleicht am Suffix ".js" erkennen kannst, handelt es sich dabei um Technologien aus dem JavaScript-Universum. Node.js ist im Prinzip ein Tool, mit dem du JavaScript außerhalb eines Browsers ausführen kannst, wie ein normales Programm. Damit kann man allerlei Dinge programmieren. Express.js ist eine Library, die du mit Node.js benutzen kannst, um einen Webserver damit zu programmieren. Geht theoretisch auch ohne, Express macht es aber viel einfacher, indem es z.B. Funktionen bereitstellt, mit denen du definieren kannst, wie dein Webserver Anfragen verarbeiten soll. Zudem kannst du mit Node.js auch Socket.io verwenden. Socket.io ist eine Websocket-Library, bestehend aus einer Library für den Server und eine für das Frontend. So kannst du relativ einfach ein Websocket-System aufsetzen, mit dem Backend (Server) und Frontend (Browsergame) in Echtzeit kommunizieren können.
Danke, super erklärt!!! Würdest du sagen Node.js oder PHP ist für einen Anfänger leichter? Zu mir: Ich habe kleine Spiele wie Cookieclicker und Minesweeper nooby mit Jquery If und 1000 Zeilen Code Frontend programmiert und habe null Plan von Backend. Ich bin gut in Excel, aber kann keine Datenbanken. Ich kann weder richtiges Javascript mit Funktionen und Arrays, noch PHP. Ich müsste also sowieso beides erst lernen.
MySQL serverseitig ohne etwas dazwischen geht nicht. Aber man kann statt PHP auch eine andere Sprache verwenden.
Oder man speichert die Daten nur clientseitig.
Javascript kann man also für Frontend und Backend verwenden? Was ist node.js? Und ist Python besser geeignet? Wieso ist PHP so beliebt dafür?