Hallo ich möchte gern ein kleines Spiel programmieren, stoße aber mit PHP auf eine schwierige Stelle, genauer gesagt zwei Probleme:
Wenn der Spieler auf der Seite ist, soll er jederzeit sehen können, wieviele andere noch da sind. Also so eine Art Zähler. Nur wenn sich ein weiterer einloggt, soll sich der Zähler bei den bisherigen Mitspielern *automatisch* erhöhen. Die Seite muss also auf Befehl vom Server her bei allen Mitspielern aktualisiert werden. Schön ware es auch, wenn sich der Wert des Zählers verringert, wenn einer wieder geht, indem er sich ausloggt oder einfach seinen Browser schließt. Aber das ist technisch wohl vollkommen unmöglich, damit kann ich auch leben.
In einem anderen Feld auf der Seite, die alle eingeloggten Spieler sehen, verändert sich ein Wert, sagen wir ein Zähler der Sekunden. Jeder der Spieler kann auf STOP klicken, um das Spiel anzuhalten. In dem Moment, wo einer das macht, soll auf den Bildschirmen der anderen erscheinen :Spiel wurde von XYZ gestoppt. Und zwar auch *automatisch*, also sofort zu sehen, nicht erst, wenn der Einzelne auf Aktualisieren klickt.
Nun habe ich da schon lange rumprobiert und überlegt, aber es scheint so, als ginge das mit PHP nicht.
Kann mir das jemand bestätigen, oder hat jemand einen Tip, wie das doch noch gehen könnte?
Nun habe ich da schon lange rumprobiert und überlegt, aber es
scheint so, als ginge das mit PHP nicht.
PHP ist dabei nicht das Problem sondern der Browser. Um eine automatische Anzeige zu bekommen, muss der Browser die Seite immer wieder neu Laden, andernfalls bekommt er ja keine Information vom Server.
Du musst also die angezeigte Seite mit einem Refresh von vielleicht 5-10 Sekunden versehen, so dass eben alle 5-10 Sekunden der neue Stand angezeigt wird.
Eine andere Lösung: Du machst das Spiel nicht Browser-basiert sondern entwickelst eine eigene Client Software (z.B. in VisualBasic, C++ oder Java) die dann über einen Socket-Aufruf vom Server (also von der PHP-Seite) angestossen werden kann.
Das ist allerdings etwas aufwendiger. Wenn Du an sowas interesse hast, sprich mich mal privat an. Ich arbeite gerade an so einem System.
HTTP eignet sich äußerst schlecht für solche Aufgaben, da würde sich meiner Ansicht nach ein java applet anbieten, auch wenn ich grundsätzlich nicht viel von diesen halte haben sie doch genau auf dem Gebiet wo Echtzeitdaten benötigt werden, Ihre Berechtigung.
Danke für Deine Tips. Ich möchte vom User nicht verlangen, daß er Flash installiert, oder Java-Applets akzeptiert, weil mir das den potentiellen Nutzerkreis einschränkt.
Ich werde mal probieren, ob ich den Refresh alle paar Sekunden in einen kleinen Frame setzen kann, sodass nicht immer die ganze Seite neu geladne wird.
VisualBasic kann ich zwar, aber ich nehme an, daß bei der von Dir vorgeschlagenen Client-Software auch was auf dem Rechner des Users akzeptiert werden muß, oder?
Gruß
Dan
Du musst also die angezeigte Seite mit einem Refresh von
vielleicht 5-10 Sekunden versehen, so dass eben alle 5-10
Sekunden der neue Stand angezeigt wird.
Eine andere Lösung: Du machst das Spiel nicht Browser-basiert
sondern entwickelst eine eigene Client Software (z.B. in
VisualBasic, C++ oder Java) die dann über einen Socket-Aufruf
vom Server (also von der PHP-Seite) angestossen werden kann.
Danke für Deine Tips. Ich möchte vom User nicht verlangen, daß
er Flash installiert, oder Java-Applets akzeptiert, weil mir
das den potentiellen Nutzerkreis einschränkt.
das ist eine gesunde Einstellung. Obwohl; Gerade das Flash Plugin ist bei den meisten Leuten vorhanden und hat auch die wenigsten Sicherheitsbedenken.
Ich werde mal probieren, ob ich den Refresh alle paar Sekunden
in einen kleinen Frame setzen kann, sodass nicht immer die
ganze Seite neu geladne wird.
das ist eine ganz gute Strategie. Das lässt sich auch noch beliebig verfeinern, je nachdem ob du JavaScript mit einsetzen willst. Dann könntest Du nämlich den großen Frame per JS refreshen lassen, aber nur dann, wenn wirklich neue Daten angekommen sind.
VisualBasic kann ich zwar, aber ich nehme an, daß bei der von
Dir vorgeschlagenen Client-Software auch was auf dem Rechner
des Users akzeptiert werden muß, oder?
Das VB-Programm muss natürlich beim User installiert werden. Wenn Du schon Java und Flash deswegen ausschließen willst, ist die VB-Lösung erst recht ungeeignet.
JAVA!!
Also meiner Meinung nach ist für das was du programmieren
willst Java die ideale Lösung…
PHP ist für solche Probleme überhaupt nicht
gedacht/geschaffen…
Hallo Fabian,
danke für Deinen Hinweis, das hat mich neugierig gemacht. Von Java weiß ich nix, aber aber nun habe ich mal nachgelesen.
Natürlich habe ich erstmal garnix verstanden.
Aber wenn Du es empfiehlst, kannst Du mir vielleicht kurz folgende Anfängerfragen beantworten:
Muß ich zum Programmieren in Java irgendwelche Software oder Entwicklungsumgebungen kaufen, oder geht es auch umsonst?
Muß der User, der meine Seite aufruft um mitzuspielen, auf seinem Rechner irgendwas installiert haben, oder läuft alles auf dem Server ab?
Ich möchte nämlich den potentiellen Nutzerkreis nicht um diejenigen verkleinern, die es ablehnen, etwas aus dem Internet herunterzuladen oder zu installieren, wie es z.B. bei Flash der Fall ist.
Wenn Java so ideal ist, wie du sagst, bin ich durchaus bereit mich da einzuarbeiten.
Gruß
Dan
du koenntest die clients/serverkommunikation in einem versteckten frame auf basis eines chats laufen lassen.
mit frame aktualisieren hast du jede menge requests, und trotzdem relativ unsichere response seiten…
Muß ich zum Programmieren in Java irgendwelche Software oder
Entwicklungsumgebungen kaufen, oder geht es auch umsonst?
Du brauchst nur das Java SDK ( www.sun.com ) und irgendeinen
schönen freien Programmiereditor wie man sie zuhauf als
Freeware im Internet findet.
(z.b. JEdit oder ähnliches)…
Muß der User, der meine Seite aufruft um mitzuspielen, auf
seinem Rechner irgendwas installiert haben, oder läuft alles
auf dem Server ab?
Der User muss die Java Runtime (die sog. Virtual Machine)
installiert haben… die ist aber im Normalfall bei jedem
Browser dabei…
Wenn Java so ideal ist, wie du sagst, bin ich durchaus bereit
mich da einzuarbeiten.
Ja…es ist so ideal, aber es ist halt eine echte
Programmiersprache… d.h. wenn du noch nie programmiert hast
mit einer Sprache wie C oder ähnliches, und dich nicht zu lange
einarbeiten willst, würde ich dir für dein Programm schon Flash
empfehlen.