Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

21

10.05.2017, 09:09

Das was DeKugelschieber da beschreibt ist dann übrigens AJAJ.
Wie gesagt, PHP ist für das was du vor hast auch nicht unbedingt die richtige Wahl. Deshalb wurde dir das direkt am Anfang ein paar mal gesagt. Du kannst jetzt PHP fürs Backend und Javascript fürs Frontend benutzen, wirst damit aber keinen 'normalen' Ansatz verfolgen können. Zumindest nicht so wie du es gewohnt bist. Wenn du jeden Frame eine Serveranfrage stellst, auf Antwort wartest und verarbeitest dann wird das ganze zu langsam werden. Echtzeit-Multiplayer mit Javascript, PHP und einer Datenbank dazwischen umzusetzen ist einfach nicht besonders sinnvoll.
Womit lernst du PHP aktuell? Ich habe das damals mit dieser Seite gemacht. Die hat sich über die Jahre ziemlich verändert und da ich selbst ewig kein PHP mehr genutzt habe kann ich dir auch nicht sagen ob das 'schönes' modernes PHP ist was man da lernt. Mir hat es zumindest damals beim lernen geholfen. Da wird am Anfang auch beschrieben wie der Ablauf der Kommunikation bei PHP zwischen Server und Client ist. Zumindest die Seite ist ja vielleicht interessant für dich.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Subsampling

Frischling

Beiträge: 39

Beruf: Anwendungsentwickler - Azubi

  • Private Nachricht senden

22

10.05.2017, 11:36

Wären z.B Geschichten wie das Phaser (HTML5 GameDev) Framework in Verbindung mit AJAX/WebSockets/WebServices nicht einfacher umzusetzen?

23

10.05.2017, 13:12

Ich arbeite ab und zu an meinem Beispiel PHP Browsergame. Vielleicht schaust du dir das an.

Dort habe ich URLs definiert https://github.com/BlackScorp/webrpg/blo…r/routes.php#L9 du kannst http://localhost/character/move/<himmelsrichtung> aufrufen. Basierend auf der Himmelsrichtung, errechne ich die Koordinaten die die Spielfigur haben soll https://github.com/BlackScorp/webrpg/blo…ctions.php#L101. Auf keinen Fall X/Y Werte angeben, sonst kann ja jeder die URL aufrufen und seine Spielfigur irgendwohin "teleportieren".

Generell musst du verstehen. Erst wird PHP Script ausgeführt, mit diesem gibst du die INITIALEN werte aus, danach hast du HTML/Canvas. Jetzt machst du irgendwelche Aktivitäten im Browser und zeigst es an. Wenn du die Seite aktualisierst, ist alles weg. Das heißt du musst bei deiner Aktion auch dem Server mitteilen dass sich der Zustand deines Spiels verändert hat.

In einem requestAnimationFrame würde ich auch nicht jedes mal eine SQL Abfrage abfeuern. Nicht dass du noch ajax Anfragen in der Funktion einbaust. Stattdessen musst du gucken, wann muss denn eine Information sich verändern.

Angenommen du hast eine Keyboard Steuerung, dann müsstest du eventuell deine Welt in Kacheln aufteilen und x/y steht dann für eine Kachel und nicht absolute position. Und sobald der Spieler eine Kachel verlassen hat, schickst du diese Information an den Server. Damit machst du nur dann ein Update, wenn du es wirklich brauchst.

Hast du eine Steuerung mit der Maus, dann schick an den Server nur die Information wo sich die Spielfigur später befinden würde.

Also auf keinen Fall ständig die daten senden und schon garnicht in requestAnimationFrame.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

24

10.05.2017, 13:18

Für Echtzeit ist PHP nicht geeignet. Dafür würde ich WebSockets empfehlen. Was du im Backend verwendest ist dann fast egal, es muss aber eine "echte" Sprache sein, keine Scriptsprache (für eine stehende TCP oder UPD Verbindung).
Echtzeit Multiplayer ist für den Anfang übrigens ein sehr schwieriges Projekt. Ein klassisches Browsergame hat normalerweise keine Echtzeit Ansprüche, das wäre evt. erstmal eher was für dich.

25

10.05.2017, 13:25

Für Echtzeit ist PHP nicht geeignet. Dafür würde ich WebSockets empfehlen. Was du im Backend verwendest ist dann fast egal, es muss aber eine "echte" Sprache sein, keine Scriptsprache (für eine stehende TCP oder UPD Verbindung).
Echtzeit Multiplayer ist für den Anfang übrigens ein sehr schwieriges Projekt. Ein klassisches Browsergame hat normalerweise keine Echtzeit Ansprüche, das wäre evt. erstmal eher was für dich.


Selbst mit Sockets ist es nicht so einfach. http://caniuse.com/#search=socket einige Browser unterstützen es nicht und dann muss man mindestens eine alternative anbieten mit ajax/long pooling.

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

26

10.05.2017, 14:02

einige Browser unterstützen es nicht

Opera Mini, Android Browser < 4.4 und IE < 10.

94% Unterstützung aktuell. Good enough.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

27

10.05.2017, 14:46

einige Browser unterstützen es nicht

Opera Mini, Android Browser < 4.4 und IE < 10.

94% Unterstützung aktuell. Good enough.


IE <= 10 bzw IE <11 der 10er kann das auch net. Ich wollte es nur mal gesagt haben;)

Bei den Websockets muss man auch als PHP Entwickler umdenken. Plötzlich hat man eine endlosschleife die auf Kommandozeile ausgeführt wird und auf einem Port lauscht. Es ist alles möglich nur nicht für TE. Nicht solange er noch versucht mit PHP mit JavaScript ohne Ajax zu kombinieren.

@zimmer

Alter Hase

  • »@zimmer« ist der Autor dieses Themas

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

28

10.05.2017, 15:42

@BlueCobold: Die Debug konsole habe ich vergessen, danke für die Erinnerung.

@DeKugelschieber: Soll ich daten über die url weiter geben?

@DeKugelschieber: ich möchte einen versuch mit XMLHttpRequest machen, alle user namen mit einem Wert >0 in der Variable OnlineStatus aus der usertabelle sollen auf der seite zu sehen sein. muss aber erst den sql befehl für den richtigen eintrag machen.


@Schorsch: ich lerne biher über https://www.w3schools.com, danke für Deinen Link. Ja Die Seite ist interessant, habe auch schon reingeschaut, hätte wegen den alten namen aber erst mehrmals überlegt ob ich die nehme :P

PHP Frage: gibt es sinvolle Beispiele für while(1==1) endlosschleifen in php? Da stand jetzt kein tolles beispiel

@Subsampling: zitat

@BlackScorp:
ich habe gelesen requestAnimationFrame ist eher was für screen wechsel ist das wahr?
kann man nicht stat der url daten übermitlung http://php.net/manual/de/function.session-start.php nehmen?
Ich dachte auch gester an eine rundenbasierende version, alla x-com.
ich möchte auch nicht, das man mit flimmern spielt, weil das fenster immer neu geladen werden muss, aber wie schnell die DB ist weiss ich nicht.
Sollte ich auch eher kleine Tabellen abrufen als große? Ich habe für die WaffeVar mir überlegt die Skill-level der Waffen in 20er schritten anzugeben, dann kann Waffe 1 einen wert von 1-20 haben 21 wäre schon Waffe2 auf stufe1 damit ich Spalten Spare, macht das denn sinn?

Web socets: Fädet Ihr es sehr schlimm, wenn man dann alleine durch ein lävel läuft, es ist ja trotztdem ein gemeinschafts spiel, weil man die Level von anderen Playern spielen darf.

Ich habe so ein diagramm von Konzept vor dem Level erstellt, wie findet Ihr das?
»@zimmer« hat folgendes Bild angehängt:
  • SVGGraph.png

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

29

10.05.2017, 18:07

IE <= 10 bzw IE <11 der 10er kann das auch net. Ich wollte es nur mal gesagt haben

Dann schau nochmal in die caniuse Daten oder MSDN rein. Da steht eindeutig dass der IE 10 Websockets zu 100% unterstützt.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

30

10.05.2017, 18:21

@Schorsch: ich lerne biher über https://www.w3schools.com, danke für Deinen Link. Ja Die Seite ist interessant, habe auch schon reingeschaut, hätte wegen den alten namen aber erst mehrmals überlegt ob ich die nehme

Na auf der von mir verlinkten Seite hast du wenigstens vernünftige Beispiele. Ich finde w3schools ganz nett wenn ich kurz Kleinigkeiten nachschlagen möchte. Ich würds jetzt aber nicht benutzen um ne ganze Sprache zu lernen. Was dabei rum kommt hast du ja jetzt gesehen. Dass PHP rein serverseitig ist ist unglaublich essentiell und sollte eigentlich bei jedem vernünftigen Tutorial direkt als erstes erwähnt werden.
Was deine Frage an DeKugelschieber angeht. Guck dir doch einfach endlich AJAX an ;) Das was er beschrieben hat ist im Prinzip das was du dabei tust. Du kannst jetzt warten bis er sich die Zeit nimmt und dir das alles in Ruhe erklärt, oder du gibst es mal bei Google ein und guckst es dir selbst 10 Minuten an. So schwer ist es nicht. Bei w3schools gibts übrigens auch was dazu.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige