Zum Inhalt springen

Browsergame


Empfohlene Beiträge

Hallo zusammen, ich stehe gerade vor einem Projektbeginn und habe noch einige Fragen.

Das Endprodukt sollte ein online Browsersportgame in Flash werden. Mir ist schon klar, dass ich das nicht in wenigen Wochen erstellen kann. Ich denke da eher an Freizeitsbeschäftigung über Jahren hinweg. ))

Bevor ich aber beginnen kann, muss ich mich für die Programmiersprachen entscheiden. Und genau hier stehe ich vor grossen Schwierigkeiten, da ich eben ein sehr beschränktes Fachwissen besitze. Einzig Flash (Actionscript), PHP (MySQL), HTML und Javascript beherrsche ich teilweise.

Welche Sprache eignet sich hier für am besten? (Performance und so...)

Wissen sollte man, dass die Spiele im Browsergame all 30 Sekunden neu berechnet werden und auf Eingriffe der User reagieren sollten. Ausserdem sollten die Spiele auch wenn kein User online ist berechnet werden.

Anfangs dachte ich, dass ich das ganze nur mit PHP, MySQL und Flash (Actionscript) mache. Aber eben, PHP funktioniert nur wenn auch min. ein User online ist.(Zwar mit Cronjop möglich) Und da viele Berechnungen in einer Zeitperiode immer wieder durchgeführt werden und viel auf die DB zugegriffen wird, dacht ich mir, dass ich ein Programm schreibe, welches auf dem Server ist und diese Berechnungen durchführt.

Ist das der Richtige Weg? Oder sollte ich doch alles mit PHP machen?

Natürlich freu ich mich auch auf andere Tipps bezüglich Browsergame.

Mit freundlichen Grüssen

sereinjunky

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Du kannst einen Dienst in einer beliebigen Sprache schreiben, der dann auf dem Server läuft und die entsprechenden Dinge auf dem Server durchführt.

Du solltest vor allem, das Design gut durchdenken, damit Du bei steigender Userzahl keine Probleme mit den Zugriffen hast. Es bietet sich auch an, dass man nach Datenvolumen nicht mySQL einsetzt sondern andere DBMS Lösungen z.B. Postgres. Postgres stellt z.B. Python innerhalb von Stored Procedures zur Verfügung.

HTH Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Juhu endlich bekomme ich in einem Forum eine Antwort, vielen Dank :e@sy

Du kannst einen Dienst in einer beliebigen Sprache schreiben, der dann auf dem Server läuft und die entsprechenden Dinge auf dem Server durchführt.

beliebig? Kannst du mir eine nennen? ;)

Habe ich das richtig verstanden, dass sich PHP nicht für diese Berechnungen bzw. Verarbeitungen der Daten eignend. Bräuchte ich da PHP noch?

Würde das so aussehen?

Flash <-> Datenbank <-> beliebigen Anwendungssprache

Du solltest vor allem, das Design gut durchdenken, damit Du bei steigender Userzahl keine Probleme mit den Zugriffen hast.

Kannst du mir diesbezüglich sagen, auf was ich da achten muss? Das Design wird mit Flash gemacht.

Es bietet sich auch an, dass man nach Datenvolumen nicht mySQL einsetzt sondern andere DBMS Lösungen z.B. Postgres.

Für mein Browsergame wäre also mySQL nicht optimal?

Postgres stellt z.B. Python innerhalb von Stored Procedures zur Verfügung.

Wenn ich mich nicht irre (Was ich leider sehr oft tue :rolleyes:), dann kann bei den Stored Procedures kein Benutzer zugreifen oder? Und genau diese ist ja bei meinem Browesergame notwendig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also Cronjob hast du das "Problem" das er maximal jede Minute laufen kann. Müsstest also um 30 Sekunden hinzubekommen den Job verschachteln.

Also in meinen Augen kannst du "alles" mit PHP machen, auch wenn hier sicherlich jemand elegantere Lösungen parat hat. Setz die maximale Laufzeit eines PHP SKriptes auf unendlich (ACHTUNG !!!) und pack die jeweiligen Aktionen in eine endlose Schleife die du mit einem sleep 30 versiehst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es bietet sich auch an, dass man nach Datenvolumen nicht mySQL einsetzt sondern...

Das ist doch Blödsinn. Wieso sollte mysql kein Datenvolumen verarbeiten können, wie es bei so nem kleinen Browserspielchen zustande kommt?

siehe z.B.

Database test: Sun UltraSparc T1 vs. AMD Opteron (9/10) | Tweakers.net

Ja, keiner sagt dass mysql schneller ist als pgsql, aber unbrauchbar ist mysql auch nicht.

Außerdem wird er keinen Provider finden, der ihm pgsql zum webspace anbietet ;) Und bei seinen Kenntnissen ist ein root-server auch nicht das, was du ihm empfehlen willst, oder?

Ansonsten wirst du mit php bestimmt keine endlosschleife programmieren wollen. Das was im Browser abläuft ist komplett getrennt von dem was php macht. Das was du im Browser siehst ist allein die ausgabe des PHP-Interpreters. Wenn du da eine endlosschleife hast, dann ginge das theoretisch, nur reagieren auf das was der User tut... über ein zwotes skript und db einträge und abfragen könnte man... aber da denk ich lieber nich mal weiter drüber nach.

Ein Browsergame funktioniert ganz einfach, indem der Server auf Aktionen des Users wartet und diese verarbeitet. Wenn du eine Interaktion im Browser brauchst musst du Javascript oder eben Flash o.ä. nehmen.

Wenn du das schneller und flüssiger haben willst, bietet sich auch AJAX an.

Beliebig für die Programmiersprache heißt ganz einfach, dass die egal ist. sie muss nur auf dem (Web)Server laufen. Dann kannst du PHP, Perl, C, C#, ASP(.net), Java, Ruby, Delphi oder was auch immer nehmen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

beliebig? Kannst du mir eine nennen? ;)

C++, Prolog, .NET, C#, Java, ....... es kommt auf Deine Algorithmik, die Plattform und eben Deine Kenntnisse an

Habe ich das richtig verstanden, dass sich PHP nicht für diese Berechnungen bzw. Verarbeitungen der Daten eignend. Bräuchte ich da PHP noch?

Nicht zwingend, eine Sache des persönlichen Geschmacks. Du kannst auch Perl nehmen oder eine andere Sprache

Würde das so aussehen?

Flash <-> Datenbank <-> beliebigen Anwendungssprache

Mir ist nicht bekannt das Flash direkt einen Datenbank Zugriff unterstützt (kann aber sein, dass ich hier nicht mehr up-to-date bin). Warum nicht

Flash <-> Webservice & Anwendung <-> Datenbank <-> Anwendung

Schaue Dir mal den Bereich "verteilte Anwendungen" und die dazugehörigen Modelle an. Ich kenne nicht Deine Systemanforderungen, aber da Du als Bowsergame sicher mehrere simultane Zugriffe, die auch sehr zeitnah sein müssen, sowohl auf die Datenbank wie auf die Anwendung hast bietet sich ein verteilte Anwendung an.

Kannst du mir diesbezüglich sagen, auf was ich da achten muss? Das Design wird mit Flash gemacht.

Das "Design" heißt hier nicht die optische Ausgabe, sondern das Design der entsprechenden Komponenten, d.h. das Deine Anwendung skalierbar sein muss, denn wenn du vielleicht mit 10 Benutzer anfängst und innerhalb von Monaten Du die 10.000 User hast, muss das Konzept hinreichend gut sein, damit Du nkeine Performanceeinbrüche hast.

Für mein Browsergame wäre also mySQL nicht optimal?

siehe Deine Anforderungen. mySQL ist sicherlich nicht immer die erste Wahl. Es kommt eben auf die Anforderungen an, die ich nicht kenne. Es gibt DBMS Systeme, die eben andere Funktionalitäten bieten, mit denen sich gewisse Konzepte besser umsetzen lassen. Setzt Du z.B. bei mySQL nicht auf InnoDB hast Du keine Transaktionssicherungen, die z.B. Postgres schon seit Jahren von Hause aus unterstützt. Postgres beherrscht mehrere Sprachen für Stored Procedures. Gerade Python hat gewisse Vorzüge im OOP Design

Wenn ich mich nicht irre (Was ich leider sehr oft tue :rolleyes:), dann kann bei den Stored Procedures kein Benutzer zugreifen oder? Und genau diese ist ja bei meinem Browesergame notwendig.

das ist eine Sache der Rechteverwaltung und der Art der Stored Procedure. Nicht jede SP muss ja auch für den User zugänglich sein, sondern kann sich hinter Triggern innerhalb der entsprechenden Tabellen verbergen, in diesem Fall benötigt der Benutzer keinen Zugriff.

@Carnie

Die Idee mit dem Cronjob ist (sofern es überhautp ein Unix ist) eine Möglichkeit, aber eben sehr ineffizient bzw. die Sache mit der Endlosschleife ist nicht elegant. Hier wäre wirklich ein Dienst in C oder C++ geschrieben eine sinnvollere Alternative, da dazu kein Interpreter benötigt wird und es eben Maschinencode ist, der schneller ausgeführt wird. Ich gehe bei einem Browsergame von mehreren 1000 simultanen Zugriffen auf den Webserver, Datenbank und ggf. Anwendungsserver aus

HTH Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist doch Blödsinn. Wieso sollte mysql kein Datenvolumen verarbeiten können, wie es bei so nem kleinen Browserspielchen zustande kommt?

siehe z.B.

Database test: Sun UltraSparc T1 vs. AMD Opteron (9/10) | Tweakers.net

Ja, keiner sagt dass mysql schneller ist als pgsql, aber unbrauchbar ist mysql auch nicht.

bestreitet auch keiner. Der OP hat nur nicht den Rahmen definiert. Wenn mySQL ausreichend ist, gerne. Aber es gibt auch andere DBMS Lösungen, die unter Umständen für die Problemstellung sinnvoller wären.

Außerdem wird er keinen Provider finden, der ihm pgsql zum webspace anbietet ;) Und bei seinen Kenntnissen ist ein root-server auch nicht das, was du ihm empfehlen willst, oder?

Root-Server ist nur etwas für Leute, die in der Materie fit sind! Aber nicht jedes Webpaket bietet Cronjobs an usw. D.h. ohne entsprechende Kenntnisse ist es schwer, entsprechend die Dimensionen einzugrenzen. Ebenso auch die Programmierung: Wenn bei jedem Aufruf eine neues Verbindungshandel (z.B. persistent) zur Datenbank geöffnet wird, dann wird das bei 1000... Usern sehr schnell die Datenbank in die Knie zwingen. Ebenso wenn man nicht "transaktionssicher" arbeitet.

Viele Probleme treten bei kleinen Userzahlen nicht auf, steigt die Zahl kann man nun mal sehr schnell an die Grenzen kommen, wenn das Konzept nicht vorher entsprechend erarbeitet wurde

HTH Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du einen System Prozess laufen lässt der deine Berechnungen alle 30 sekunden macht, dann pass auf das du nicht "zusätzlich" bei usereingaben alles live berechnest.

Teile klar auf was der user direkt verändern kann und was getimed alle 30 sekunden geschieht.

Persönlich halte ich von Stored Procedures wenig, damit verteilst du nur die Logik in verschiedene Sprachen und wirst auf dauer unflexibel (meine Meinung ! *g*)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Persönlich halte ich von Stored Procedures wenig, damit verteilst du nur die Logik in verschiedene Sprachen und wirst auf dauer unflexibel (meine Meinung ! *g*)

Das ist in der Client/Server Entwicklung aber ganz normal. Für manche Dinge sind SP eben einfach unschlagbar.

Ich hab damit meinen Client schonmal um Faktor 1000 beschleunigt. Ja, klingt arg, aber eine Wartezeit von einigen Minuten auf wenige Sekunden ist auch arg.

Ohne SP musst du u.U. sehr viele kleine Abfragen machen, die im Client verarbeiten und dann wieder an die DB senden. Das macht eine SP direkt z.B.

Link zu diesem Kommentar
Auf anderen Seiten teilen

mittlerweile ist MySQL aber auch mächtiger geworden. Cronjobs werden eigentlich nicht mehr benütigt, da MySQL mittlerweile jobs erledigen kann.

Wenn du MySQL verwenden willst sollteste dir den EVENT befehl mal ansehen. Ausserdem die angesprochenen kleinen abfragen...man kann Trigger verwenden.

ich glaube seit version 5 ist das alles mit drin. es könnte aber auch eine minimal fortgeschrittenere version sein, die das beinhaltet. jedenfalls wird es nicht vor version 5 unterstützt. darauf solltest du achten.

du wirst dir auf jeden fall ziemlich viele gedanken machen müssen, wenn du deine statements schreibst um so wenig overhead zu produzieren wie möglich. das alleine hebt dann die performance schon wieder bedeutlich an

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ausserdem die angesprochenen kleinen abfragen...man kann Trigger verwenden.

Wenn das was bringen würde. tut es aber nicht immer. Im angesprochenen Fall wäre das überhaupt keine Lösung gewesen ;)

Ein kleines Serverprogramm was viele Daten abfrägt, kombiniert, verknüpft neue Daten schreibt... Da hilft dir kein Trigger. Aber eine StorecProcedure.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich denke, es kommt auf das Konzept des Games an. Z.B. wenn ich aufwendige "Routen" berechnen muss, dann werde ich das nicht innerhalb der Datenbank machen, sondern durch einen ausgelagerte Anwendung / Dienst. Ich denke man kann / muss an manchen Stellen Stored Procedures und Trigger einsetzen. Ich denke eher dass das ganze so sein soll, dass die Weltzeit auch "ohne Webzugriff" weiter laufen soll, so dass eben ein Dienst im Hintergrund läuft.

Ich denke das Konzept der Anwendung ist hier der erste Schritt, damit das Spiel entsprechend skaliert.

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der erste Schritt ist wohl, sich eine funktionierende Spielmechanik auszudenken die Langzeitmotivation bietet, ausbalanciert ist und und und...

So lange man keine ausgereifte Spielidee hat braucht man über die Mittel der Umsetzung kaum nachdenken.

Und yet another Galaxywars Clone zu schreiben ist doch eher sinnlos.

Also hopp hopp, lass dir was geniales einfalln ! Sonst spielt den Kram eh niemand.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...