Könnte man schon mit PHP und JS machen. + Datenbank oder so noch.. je nachdem was das für ein Shopsystem ist^^ vielleicht ists ja nur eine CSV-Datei mit 5 verschiedenen Schwertern drin
(Schonmal zur Klärung, ich benutz ab jetzt die Wörter
Client -> für die Weboberfläche die der User zu sehen bekommt, von wo die Bauaufträge etc abgeschickt inkl. Datenverarbeitung auf dem Server für den entsprechenden Request
und
Server -> für die Anwendung die nur auf dem Server läuft und von der der User nichts mitbekommen soll, die für die periodischen Statusänderungen der Spielobjekte verantwortlich ist)
Das was man als Spieler auf der Seite anklickert wird als Bauauftrag in die Datenbank eingetragen. Dann ist der Client an dieser Stelle fertig.
Auf dem Server könnte man dann per Cron minütlich (glaube das war früher immer so die Tick-Rate fürs Werteupdate) nachsehen ob der Bauauftrag schon fertig ist und entsprechend den Wert für den Ressourcengewinn und den Status des Gebäudes ändern. Genauso kann man mit einem weiteren Aufruf immer die Ressourcen erhöhen die von anderen Gebäuden erwirtschaftet wurden.
So weit ist das kein Hexenwerk und das haben Leute auch schon vor 10 Jahren umgesetzt. (Es könte auch noch einen Cron geben der abfragt ob Angriffe durchgeführt wurden und deren Ergebnis ausrechnen... und keine Ahnung was Aufbau-Browsergames sonst noch so können)
Könnte auch sein, dass ein Nodejs Daemon besser geeignet ist das auszuführen, kA. Müsste man sehen was sich besser macht und ob man ein bisschen node lernen will.
Am Ende gehts ja nur darum in regelmäßigen Abständen Werte zu aktualisieren. Für den Client muss man dann nur den aktuellen Status der Gebäude, der Ressourcen und einkommender + ausgehender Angriffe abfragen und hübsch darstellen. Vielleicht könnte der Server auch regelmäßig einen Cache aktualisieren aus dem der Client dann die Werte bezieht, damit könnte der Client sich das Mapping von Datenbankdaten zu Datenstrukturen sparen (Ich geh jetzt einfach mal von einem rdbms aus).
Wie schon angedeutet wären Client und Server bei mir getrennte Anwendungen die auf die gleiche(n) Datenbank(en)/Quelle(n) zugreifen. Das hätte dann ein paar Vorteile
- während man im Frontend hübsche URLs, Templateengines usw. haben will kann man im Backend so minimal wie möglich arbeiten um nicht schon im Bootstrap-Prozess Zeit zu verschwenden indem man erst entscheiden muss ob man Paket xyz initialisieren muss oder nicht.
Z.B könnte man eine Framework-Kombo aus Symfony für den Client und Silex als ballastlosen Server einsetzen
- man kann für beide Anwendungen entsprechend die Einstellung setzen, die Aufrufe des Backends sind aufwendiger, deshalb kann man hier schon die maximale Laufzeit erhöhen und je nachdem auch mehr Speicher freigeben (Die Trennung der Konfiguration ist eh schon gegeben, Konfig für Webserver und Konsole sind in verschiedenen Dateien).
- man kann für beide Anwendungen gezielt Helfer suchen. Du könntest aus dem Client z.B. eine Single Page Webanwendung mit einem der fancy JavaScript Frameworks machen. Damit kannst du vielleicht Helfer anlocken die sich mit einem dieser Frameworks beschäftigen wollen.
- eigentlich generell die Unabhängigkeit von Server und Client voneinander. Vielleicht bekommst du ja so viele User, dass der Server irgendwann in C programmiert sein soll um noch Performance rauszukitzeln (überspitzt, don't hurt me)
Joa... das waren so meine Gedanken zum Thema Aufbau-Spiel. Ich glaube die meisten anderen Spiele sind eh einfacher umzusetzen.
Ich arbeite seit 4 Jahren in meiner Freizeit an einem, bei dem die Seite einfach eine Plattform für die Werte, Items usw. ist. Man erstellt seinen Charakter, stellt Training ein. Jeden Tag um Mitternacht läuft ein Update das die Werte entsprechend des Trainings erhöht. Dazu gibts dann noch so Community-Sachen wie Nachrichten verschicken und ähnliches.
Sowas ist ziemlich straight forward und man muss sich nicht ganz so viele Gedanken machen wie man die Daten jetzt am besten updatet. Es ist aber trotzdem ein Haufen Arbeit