# Wie und wo, lagern Spiele all die Daten ab?



## BloodSteam (22. September 2018)

Hallo,
Ich erstelle gerade ein Spiel in UE4 und hab jetzt ein kleines Problem.

Wie lagern die ganzen Spiele ihre Daten ab? Welcher Spieler welche Items hat, wie viel EXP etc.
Hauptsächlich geht es um die Items.

Soweit benutze Ich PHP 7.1 und eine MySQL Datenbank(MySQLi).
Das ganze Loginsystem hab Ich schon, einloggen etc ist kein Problem.
Ich connecte mein Projekt mit einer Datenbank die auf meinem Webhosting läuft, irgendwie kann Ich es mir nicht vorstellen, dass die Spiele Devs es auch so machen.
Ich nehme mal an, dass die vielleicht eine andere Datenbank nutzen und die auf einem Dedizierten Server laufen lassen wie zb FreeBSD?

Bei einem Spiel muss man dann die Erfahrung(EXP) in einer Datenbank abspeichern nach jedem Mob den man getötet hat. Somit ist es viel arbeit für die Datenbank, nehme Ich mal an.
zb 200 Spieler * 10 mobs = 2000 requests. Dies kann Sich auch schneller stappeln, mit dem Drop, missionen, quests etc.

Wisst Ihr vielleicht welche Datenbank da genutzt wird?


----------



## bingo88 (22. September 2018)

Normalerweise verbindet man sich nicht direkt mit der DB, sondern da hängen ein paar Server davor, die die Transaktionen verwalten.


----------



## DataDino (22. September 2018)

Ach du redest nicht von Spielständen, sondern von Live-Gaming?

In diesem Falle macht das HTTP-Protokoll wenig Sinn. Du benötigst da schon ein für Echtzeit-Übertragung optimiertes Protokoll. Temporäre Statis kannst du Serverseitig in einer arbeitsspeichergestützten Datenbank wie MemcacheD oder Redis ( In-Memory-Datenbank – Wikipedia ) verwenden. Primäre Statis schreibst du in Intervallen in eine andere Datenbank.

Aber HTTP zur Kommunikation emfehle ich für solche Echtzeit-Anwendungen garnicht!


----------



## Stryke7 (23. September 2018)

Die meisten Spiele erstellen ihre Savegames lokal. Über Steam oder ähnliches werden die meist standardisiert verwaltet und dann mit einem Server dort synchronisiert.

Mich interessiert gerade eher, wie man nur mit PHP und einer MySQL-Datenbank ein Spiel programmieren will   

Oder vielleicht habe ich falsch verstanden was du gerade tust?


Edit:
Nach dem ich den Beitrag noch mal gelesen habe: Meintest du ein reines Browserspiel, bei dem (irgendwie) alles serverseitig gespeichert wird?  
Dann benötigt jedes Objekt wohl eine Position auf der Map oder ein Inventar in dem es liegt. Dafür brauchst du grundlegend eine passende Datenbank. 

Die Frage ist, wie das Projekt skalieren wird. Als kritisch sehe ich hier die Zugriffszeiten auf deine Objektdatenbank an. Bei genug Speicherzugriffen wirst du vermutlich irgendwann auf ein verteiltes System wechseln müssen, wie ein Hadoop-Cluster oder so. 

Aber erstmal würde ich empfehlen die Zugriffe so effizient wie möglich zu entwerfen und dich um grundlegende Funktionalität zu kümmern. "*premature optimization is the root of all evil"*, wie Donald Knuth so schön gesagt hat.


----------



## dailydoseofgaming (23. September 2018)

Meinst du Online Gaming? Geht aus deinem ursprünglichen Beitrag nicht hervor.

Bei Online Games kommt es stark auf die Art des Spiels an. 
Wenn du wirklich Alles in Echtzeit zum Server und zurück bekommen willst (z.B. Spielerpositionen etc.), brauchst du eher etwas Richtung Websockets, daher (Semi)-Echtzeit Streaming.
Da wirst du aber mit PHP und MySQL nicht weit kommen.

Wenn es dir um Items und Ähnliches geht, kann man eine regelmäßige Synchronisierung zwischen Client und Server machen. Daher alle X Sekunden die Änderungen zum Server schicken (neue Items, weggefallene Items etc.)
Muss wie alles bei Online-Games natürlich gegen Manipulation abgesichert sein.


----------



## Plasmadampfer (25. September 2018)

Also damals im Single Play um Trainer zu programmieren, befanden sich die Parameter im RAM. Beim heutigen Online Gaming über Anti Cheating Server wird das dort in Nodes, verketteten Listen gehalten, die Infos. SQL ist Game Programmierern zu Lame. Das machen die Python Anwendergesichter, mehr schlecht als recht. SQL hat zu viel Overhead.

Merke, wer ein Game schreiben kann, kann auch verkettete Listen Low Level verwalten von ihm aus via static struct. So viel wie man braucht, nicht mehr. Die letzte Node hat einen Zeiger auf die erste Node. Fliegt eine Node raus, zeigt der vorherige Node auf die nächst vorhandene Node, vise versa. Das ist rasend schnell. Man nennt sowas auch geilen Richtig schnellen Netcode, daran sind schon viele Simulationen und Games gescheitert. Die Lamer sagen dann, Ping ist schuld. 20msec Ping auweia. Fastpath muss her


----------



## BloodSteam (27. September 2018)

Also Ich mache mein Spiel in Unreal Engine 4 und leider kann mir irgendwie keiner, in en UE4 Foren helfen. Ich hab auch gefragt, ob man Structs oder Tabellen auf dem Server erstellen kann... keine Antwort. Bei einer MySQL / mongoDB etc kann man direkt Sachen ändern.
Ich will es so machen, dass bei jeder Map ein call an das PHP Programm gesendet wird und gefragt wird "Wurden irgendwelche Items aktualisiert?" zb mit einem Timestamp...
wenn ja, die neuen Werte von der Datenbank laden.
Würde alles in Echtzeit passieren ohne den Server neu zu starten.
Ich bin jetzt bei einem anderem Webhosting Anbieter der SSDs verwendet, für FTP und Datenbanken. Muss Ich mal später gucken ob es da ein Unterschied zu OVH gibt (OVH ist mein altes Webhosting).
Bei dem neuem Hosting muss Ich "localhost" als Server für die Datenbanken verwenden, weil es auf der gleichen SSD ist, glaube Ich. Was mich zum nachdenken bringt, sind die Hacker die in die Datenbank mal kurz reinschauen könnten.
Hab auch mal MemCache kurz benutzt aber nicht richtig verstanden.
Die Items etc die man droppt, würde man nur ein call an die Datenbank machen, wenn man es aufhebt und nicht wenn man es sieht.
Die Spieler Position würde man jede 2 Sekunden updated in der Datenbank. Du loggst dich aus, logout screen wird dann ein 2s cooldown haben und in den 2s wo man sich ausloggt wird die Position aktualisiert und an die Datenbank geschickt, dann ist man da wo man war beim einloggen 
Ingame wird die Position zwischen Server -> Client jeden Frame aktualisiert, aber es wird nur jede 2s in der Datenbank GESPEICHERT.
Game Server wird nur eine Verbindung zu der Datenbank haben.

Hier hab Ich ein kleinen Test gemacht. Die 130ms / 86ms sind vom einloggen und nicht das öffnen.
Beim HDD Webhosting gibt es auch ein GEO Cache, bei dem SSD nicht.

Beim Laden der Domain bzw Index kommt man auf:
SSD: 17ms
HDD: 28ms

Browser: Chromium

Importieren der Datenbank (MySQL) via SQL dauerte (SSD) 0.00005ms (mit paar Test usern drin) beim HDD dauerte es 0.72 - _schlag mich tot_ - ms


----------



## bockwurst90 (3. Oktober 2018)

BloodSteam schrieb:


> Hallo,
> Ich erstelle gerade ein Spiel in UE4 und hab jetzt ein kleines Problem.
> 
> Wie lagern die ganzen Spiele ihre Daten ab? Welcher Spieler welche Items hat, wie viel EXP etc.
> ...




Also meistens hast du einen dedicated Gameserver, der dies ebenfalls managed. Also stell dir Battlefield vor: Das Spiel wird gehosted auf einem dedicated Gameserver. Dies ist ein Programm, welches alle eingehenden UDP Verbindungen von den Spielern entgegen nimmt und das Spiel leitet, nach den Regeln der Spielmechanik. Stichwort hier ist Konsensus. Alle Spieler senden ihren Zustand (Position, Leben, Munition etc.) an den Gameserver, dieser entscheidet, was der neue Zustand für alle Spieler im nächsten Frame sein wird. Frame hier im Sinne der Gameserver Tickrate, resp. wie oft pro Sekunde ein Konsensus garantiert wird. Nun wird der Gameserver schlussendlich deine Erfahrungspunkte verwalten, weil nur der Gameserver die Korrektheit derer verifizieren kann, durch den eben genannten Konsensus. Der Gameserver redet dafür via einer weiteren Verbindung, nun über TCP mit einem Webservice, im Battlefield Falle an irgendeinen EA/Origin Webserver, der dein Spielerprofil verwaltet. Der Webservice hat eine Datenbank im Hintergrund, der alle Spielerprofile kennt. Wie das skalierbar gemacht wird, ist ein Thema für sich. Wichtigste Erkenntnis hier: Nicht der Spieleclient, also das im Laden zu kaufende und installierbare Spiel updated dein Spielerprofil, sondern der Gameserver (Bei den meisten Multiplayer spielen). Manche weniger kritische Spiele machen das sicher im Client.

So einen Webservice hast du am schnellsten mit Node.js oder Python geschrieben. Datenbanktechnologie ist bei so etwas richtig Wurst. MongoDB, PostgreSQL, MySQL, nimm was du willst.


----------



## DataDino (4. Oktober 2018)

Die hohen Latenzen sind dem HTTP-Protokoll geschuldet. HTTP ist ein Zustandsloses Protokoll. Für jeden Request wird eine neue TCP-Verbindung benötigt und der Webserver führt eine Menge Rechenarbeit durch. Dazu kommt dann auch die Arbeit mit und von PHP, die ebenfalls bei jedem Request anläuft. Wie schon gesagt, eignet sich ein Webserver für Echtzeitaufgaben überhaupt nicht und durch den hohen Rechenaufwand bei den Requests schafft ein Webserver auch nicht viele Clients, die ständig Daten an ihn senden, aus.

Da kommt man meist um ein eigenes spielspezifisches TCP-Protokoll und einer serverseitigen Verarbeitungssystematik nicht herum. So blöd es ist.


----------



## Gorblorex (4. Oktober 2018)

DataDino schrieb:


> Da kommt man meist um ein eigenes spielspezifisches TCP-Protokoll und einer serverseitigen Verarbeitungssystematik nicht herum. So blöd es ist.



Nicht vergessen diese zu verschlüsseln (SSL etc.). Sonst können die Daten zwischen dem Client und Server abgegriffen und manipuliert werden.


----------



## BloodSteam (9. Oktober 2018)

bockwurst90 schrieb:


> Also meistens hast du einen dedicated Gameserver, der dies ebenfalls managed. Also stell dir Battlefield vor: Das Spiel wird gehosted auf einem dedicated Gameserver. Dies ist ein Programm, welches alle eingehenden UDP Verbindungen von den Spielern entgegen nimmt und das Spiel leitet, nach den Regeln der Spielmechanik. Stichwort hier ist Konsensus. Alle Spieler senden ihren Zustand (Position, Leben, Munition etc.) an den Gameserver, dieser entscheidet, was der neue Zustand für alle Spieler im nächsten Frame sein wird. Frame hier im Sinne der Gameserver Tickrate, resp. wie oft pro Sekunde ein Konsensus garantiert wird. Nun wird der Gameserver schlussendlich deine Erfahrungspunkte verwalten, weil nur der Gameserver die Korrektheit derer verifizieren kann, durch den eben genannten Konsensus. Der Gameserver redet dafür via einer weiteren Verbindung, nun über TCP mit einem Webservice, im Battlefield Falle an irgendeinen EA/Origin Webserver, der dein Spielerprofil verwaltet. Der Webservice hat eine Datenbank im Hintergrund, der alle Spielerprofile kennt. Wie das skalierbar gemacht wird, ist ein Thema für sich. Wichtigste Erkenntnis hier: Nicht der Spieleclient, also das im Laden zu kaufende und installierbare Spiel updated dein Spielerprofil, sondern der Gameserver (Bei den meisten Multiplayer spielen). Manche weniger kritische Spiele machen das sicher im Client.
> 
> So einen Webservice hast du am schnellsten mit Node.js oder Python geschrieben. Datenbanktechnologie ist bei so etwas richtig Wurst. MongoDB, PostgreSQL, MySQL, nimm was du willst.



Würde gerne Node.js benutzen und auch lernen, Problem ist halt Node.js an sich. Man muss es installieren, beim Hosting sowas zu installieren ist nicht möglich. Man braucht dann bestimmt ein root server wo man alles machen kann was man will. Der kostet aber keine 5-10€ Monatlich sondern 20-60€. Die Datenbank soll nur zum abspeichern vom Spielstand dienen. Es muss ja nicht bei jedem Mob kill sofort auf die Datenbank zugegriffen werden.


----------



## ZAM (10. Oktober 2018)

BloodSteam schrieb:


> Würde gerne Node.js benutzen und auch lernen, Problem ist halt Node.js an sich. Man muss es installieren, beim Hosting sowas zu installieren ist nicht möglich. Man braucht dann bestimmt ein root server wo man alles machen kann was man will. Der kostet aber keine 5-10€ Monatlich sondern 20-60€. Die Datenbank soll nur zum abspeichern vom Spielstand dienen. Es muss ja nicht bei jedem Mob kill sofort auf die Datenbank zugegriffen werden.



Ich habe bei Host-Europe einen V-Server inkl. der Möglichkeit NodeJS zu installieren für 9,99/Monat.
Starter reicht. Virtual Server – Der ultimative, hoechst zuverlaessige vServer

Wenn du da buchst, gib mal Bescheid, würde dir dann meine Kundennummer als Werber schicken ;p


----------



## RicoBrassers (11. Oktober 2018)

ZAM schrieb:


> Ich habe bei Host-Europe einen V-Server inkl. der Möglichkeit NodeJS zu installieren für 9,99/Monat



Und wem DAS noch zu viel ist, findet bei anderen Anbietern sogar NOCH günstigere Angebote - nur dann vermutlich ohne Werbe-Bonus von/für ZAM. 

Bei manchen (seriösen) Anbietern bekommt man sogar virtualisierte Server mit dediziert-zugewiesener Hardware für <= 10€/Monat.
Ich möchte hier jetzt unter Berücksichtigung von §4.4 der Forenregeln keine Namen nennen, aber mit ein bisschen Suchen wird man fündig.


----------



## ZAM (11. Oktober 2018)

RicoBrassers schrieb:


> Und wem DAS noch zu viel ist, findet bei anderen Anbietern sogar NOCH günstigere Angebote - nur dann vermutlich ohne Werbe-Bonus von/für ZAM.
> 
> Bei manchen (seriösen) Anbietern bekommt man sogar virtualisierte Server mit dediziert-zugewiesener Hardware für <= 10€/Monat.
> Ich möchte hier jetzt unter Berücksichtigung von §4.4 der Forenregeln keine Namen nennen, aber mit ein bisschen Suchen wird man fündig.


Immer diese unterschwelligen Aggressionen aus irgendwelchen unerfindlich bösartigen Motiven heraus. Ich habe nur empfohlen, wo ich selbst bin und nach XX Jahren mit dem Support mal zufrieden. Vor allem bei den einfachen Möglichkeiten zur Kündigung, Up- und Downgrades sowie Verwaltung.


----------



## RicoBrassers (12. Oktober 2018)

ZAM schrieb:


> Immer diese unterschwelligen Aggressionen aus irgendwelchen unerfindlich bösartigen Motiven heraus. Ich habe nur empfohlen, wo ich selbst bin und nach XX Jahren mit dem Support mal zufrieden. Vor allem bei den einfachen Möglichkeiten zur Kündigung, Up- und Downgrades sowie Verwaltung.



Ach quatsch. War doch gar nicht böse gemeint. 
Ich wollte nur aufzeigen, dass es vServer auch noch günstiger geben kann, falls 10€/Monat immer noch zu viel sein sollten.

Die Anspielung auf den Werbe-Bonus war lediglich als Gag gemeint.
Versöhnungsbit gesetzt, alles wieder gut?


----------



## ZAM (12. Oktober 2018)

RicoBrassers schrieb:


> Versöhnungsbit gesetzt, alles wieder gut?


Gerade so. ;p


----------



## BloodSteam (13. Oktober 2018)

RicoBrassers schrieb:


> Und wem DAS noch zu viel ist, findet bei anderen Anbietern sogar NOCH günstigere Angebote - nur dann vermutlich ohne Werbe-Bonus von/für ZAM.
> 
> Bei manchen (seriösen) Anbietern bekommt man sogar virtualisierte Server mit dediziert-zugewiesener Hardware für <= 10€/Monat.
> Ich möchte hier jetzt unter Berücksichtigung von §4.4 der Forenregeln keine Namen nennen, aber mit ein bisschen Suchen wird man fündig.



Was soll Ich mit "dediziert-zugewiesener Hardware" verstehen? Dass mir zb 1 Kern zugewiesen wird?


----------



## BloodSteam (15. Oktober 2018)

ZAM schrieb:


> .



Ich hab mir NodeJS auf einer VM installiert und meine Frage wäre jetzt, kann Ich auf PHP verzichten und es alles in JS machen?


----------



## DataDino (15. Oktober 2018)

BloodSteam schrieb:


> Ich hab mir NodeJS auf einer VM installiert und meine Frage wäre jetzt, kann Ich auf PHP verzichten und es alles in JS machen?


Ja. Aber du musst da etwas umdenken. Denn das ganze arbeitet doch erheblich anders. Während PHP entweder als Modul (meist Socketbasiert), CGI oder FastCGI an einen Webserver angebunden werden, musst du bei Node den Webserver "selbst programmieren". Du kannst zwar einen Webserver davorschalten, um es zum einen leichter mit HTTPS und dem Loadbalancing zu haben. Aber auf Seitens Node.JS brauchst du eben auch einen Webserver. Aber das klingt komplizierter als es ist. Mit Express.JS lässt sich sowas erstaunlich leicht realisieren.

Node läuft im Vergleich zu PHP permanent. Bei PHP wird die Abarbeitung deines Programms durch den Webserver ausgelöst und läuft dann pro Request genau einmal durch. Bei Node Läuft dein Programm dauerhaft. Die Anfragen werden durch Events getriggert und der Request wird dann an Unterprogramme (Funktionen, Methoden etc.) geleitet. Der Rest des Programms, sofern es dafür auch geschrieben ist, läuft durchgehend, wodurch du auch in der Lage bist, einen frei programmierten UDP bzw. TCP Server laufen zu lassen, was bei der Echtzeitkommunikation von erheblichen Vorteil ist.

Es gibt für Node nahezu alles wichtige. Von Template-Engines über Routing-Engines bis hin zu Verschlüssellungsbibliotheken, Datenbanktreiber, String-Bibliotheken (Markdown, BBCode und Co.). Das kann man sich alles über den Node Package Manager zusammensuchen. Ist aber eben auch eine starke Umgewöhnung. Aber wenn man sich dem ganzen hingibt, wird merken, wie mächtig das Teil ist und die Möglichkeiten sind fast grenzenlos.


----------



## RicoBrassers (15. Oktober 2018)

BloodSteam schrieb:


> Was soll Ich mit "dediziert-zugewiesener Hardware" verstehen? Dass mir zb 1 Kern zugewiesen wird?



Zum Beispiel. Deiner virtuellen Maschine wird halt ein Kern komplett zugewiesen, ohne, dass dieser Kern gleichzeitig auch auf anderen virtuellen Maschinen eingesetzt wird.


----------



## BloodSteam (16. Oktober 2018)

@DataDino
Ich hab jetzt bei mir NodeJS 8.12.0 und Express installiert. Ich kann meine Webseite im Browser öffnen, lerne weiter Javascript und dann muss Ich sehen wie Ich mit NodeJS genau umgehe. Bzw wie Ich Sachen in Datenbanken einfüge etc.

Ist es möglich nur NodeJS zu benutzen ohne PHP? Ich meine, wenn NodeJS so viel kann wieso dann PHP benutzen?


----------



## DataDino (16. Oktober 2018)

Hat doch auch keiner gesagt, das du PHP nutzen sollst 

Du kannst PHP komplett weglassen. Das brauchst du dann nicht mehr. Es ist nur eben ratsam, einen Webserver davorzuschalten, um das Loadbalancing sowie die gesicherte Verbindung über HTTPS zu regeln. Außerdem sparst du dir das Anlegen von zusätzlichen routen für Mediendateien, weil diese auch der Webserver ausliefern kann und nicht zwingend deine Node-Applikation. Stichwort: Reverse Proxy

PHP hingegen kannst du komplett weglassen. Das brauchste nicht mehr.

*ERGÄNZUNG:* Solltest du aber jetzt denken, das du mit Node dein Vorhanben über das HTTP-Protokoll performanter realisieren kannst, dann muss ich dir zum Teil wiedersprechen. Denn PHP leidet bei deinem Vorhaben an 3 Flaschenhälse. Abarbeitungskonzept, HTTP/-S und die Verbindung zur Datenbank. Und und letzten beiden sind keine PHP-Probleme. Diese beiden Flaschenhäls gibt es auch mit Node. Der Unterschied ist nur, das sich mit Node auch Echtzeit-Kommunikation realisieren lässt. Das hat aber mit HTTP nichts zu tun. Solltest du also mit Node jetzt 1zu1 das umsetzen, was du mit PHP versuchen wolltest, dann wirste mit Node genauso auf die Nase fallen wie mit PHP. Denn HTTP ist kein Echtzeit-Protokoll. Es ist und bleibt Zustandslos. Bei jeder Anfrage muss also die Verbindung neu aufgebaut, alles übertragen und wieder geschlossen werden. Das ändert sich auch mit Node nicht! Du hättest also theoretisch auch deine Webseite in PHP umsetzen können und den Echtzeitserver mit Node. Zugriff auf die gleiche Datenbank ist kein Thema. Aber beides in eine Node-Anwendung zu packen, wird eins. Geht zwar alles. Aber bis dahin ist es noch ein weiter Weg.


----------



## BloodSteam (16. Oktober 2018)

Ich hab gelesen dass NodeJS nicht auf Rückmeldungen wartet wie es PHP tut. NodeJS macht beides gleichzeitig, nimmt sofort alle Requests entgegen und verarbeitet die, wartet aber nicht blöd da bis eine Rückmeldung kommt um die verarbeiten zu können und macht mit den Requests weiter, wenn eine Rückmeldung kommt, dann gibt er die weiter. Bei PHP ist es so dass alles Wartet und keine weiteren Requests annimmt, bis alles abgeschlossen ist damit PHP dass nächste Request verarbeiten kann.

So hab Ich es gelesen und verstanden. Bei einer Seite wie einem Blog, ist NodeJS besser als PHP oder?


----------



## DataDino (16. Oktober 2018)

BloodSteam schrieb:


> Ich hab gelesen dass NodeJS nicht auf Rückmeldungen wartet wie es PHP tut. NodeJS macht beides gleichzeitig, nimmt sofort alle Requests entgegen und verarbeitet die, wartet aber nicht blöd da bis eine Rückmeldung kommt um die verarbeiten zu können und macht mit den Requests weiter, wenn eine Rückmeldung kommt, dann gibt er die weiter. Bei PHP ist es so dass alles Wartet und keine weiteren Requests annimmt, bis alles abgeschlossen ist damit PHP dass nächste Request verarbeiten kann.
> 
> So hab Ich es gelesen und verstanden. Bei einer Seite wie einem Blog, ist NodeJS besser als PHP oder?


Nö. Denn PHP ist mittlerweile auch Multithread-Fähig. Natürlich besitzt Node eine Non-Blocking IO, die PHP nicht hat. Und wenn, ist es genau umgekehrt. PHP wartet nicht auf Rückmeldung. PHP arbeitet auf einen Thread erst wieder einen HTTP-Request ab, wenn der vorherige bedient ist. In der Zeit ist der Thread für weitere Requests geblockt. Aber PHP ist trotzdem in der Lage, mehrere Requets parallel abzuarbeiten. Die Threads sind nur eben geblockt. Bei Node nicht. Node ist für einen einfachen Blog völlig überzogen und der Aufwand kann sich nur schwer rechtfertigen. Man hat eine deutlich eingeschränktere Wahl an Hosting-Angeboten. Nach Änderungen wie Updates ist es leider erforderlich Module oder gar die ganze Node-Anwendung neu zu starten.  Und dank des neuen Bytecode-Compilers/Interpreters sowie das verbesserte Caching seit PHP 7 hat sich auch die Geschwindigkeit der PHP Anwendungen deutlich gesteigert.

Ich selbst setze Node auch nur für das ein, was PHP nicht leisten kann. Ein Blog oder allgemein eine Website zählen nicht dazu.


----------

