php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-10-2010, 22:16
Abraxus
 Registrierter Benutzer
Links : Onlinestatus : Abraxus ist offline
Registriert seit: Oct 2010
Beiträge: 8
Abraxus befindet sich auf einem aufstrebenden Ast
Standard Echtzeitberechnung

Guten Abend liebe Programmierer.

Mein Kopf ist kurz davor zu explodieren. Ich habe ein Problem und finde komischerweise keine Lösung. Seit ich programmiere, habe ich gelernt mir slebst zu helfen Google machts möglich. Aber ab und zu gab es Dinge, die ich einfach stundenlang selber ausprobieren musste, bis es schließlich klappte.

Aber jetzt sitze ich seit Tagen, Abend für Abend, vor ein und dem selben Problem. Zu dem Problem.

Ich habe ein voll funktionsfähiges Echtzeitbrwosergame in PHP geschrieben. ( echtzeit nicht in diesem Sinne. Ihr versteht schon )
Sowas ist ja einfach, wenn man einmal verstanden hat, das man einfach nur immer wieder Zeiten in die Datenbank einfügen und überprüfen muss.
Wenn ich z.B ein Gebäude baue, dann wird das Gebäude erst fertig gestellt, wenn die Bauzeit abgelaufen ist. Alles schön und gut. Funktioniert alles.
Nun habe ich angefangen die erste Funktion zu schreiben um einen anderen Spieler anzugreifen. Da fing das ganze dann an.
Wenn ich nun z.B einen Spieler um 12:00 AM angreife und der Angriff um 13:00 PM stattfindet, ich aber erst den nächsten Tag wieder online komme, dann würde der Kampf mit völlig falschen Werten ablaufen, weil es ja sien kann, dass der Gegenspieler in der Zwischenzeit schon was gebaut hat.
Das heiß, bei jedem Login muss ich überprüfen, was alles passiert ist. Aber da muss ich so unglaub,ich viel beachten und zurückrechnen, das es am Ende doch immer wieder falsche Ergebnisse gibt. Nun wollte ich von euch wissen, wie Ihr an die ganze Sache rangehen würdet. Gibt es eine Möglichkeit, das ganze simpel zu halten, oder muss ich wohl oder übel ALLE Daten des Gegenspieler ermitteln, zurückrechnen, berechnen usw usf ???
Ein weiteres Problem z.B ist, dass ja auch ein dritter Spieler mit in das Geschehen kommen kann. Der müsste dann auch nochmal alles Werte von den anderen beiden Spielern ermitteln. Das ist mir zu viel.

Ich hoffe Ihr habt ein paar gute Tipps für mich auf Lager

MFG Abraxus

Geändert von Abraxus (04-10-2010 um 22:32 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 04-10-2010, 22:22
gourmet
 Registrierter Benutzer
Links : Onlinestatus : gourmet ist offline
Registriert seit: Feb 2007
Beiträge: 154
Blog-Einträge: 1
gourmet ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Abraxus,

der Spieler der als erstes online ist bzw. die Seite aktualisiert und an irgendein Ereigniss beteiligt ist.

Aktualisiert alle bis dahin abgeschlossenden Ereignisse aller beteiligten Spieler.

so oder so ähnlich .

VG
gourmet
Mit Zitat antworten
  #3 (permalink)  
Alt 04-10-2010, 22:30
Abraxus
 Registrierter Benutzer
Links : Onlinestatus : Abraxus ist offline
Registriert seit: Oct 2010
Beiträge: 8
Abraxus befindet sich auf einem aufstrebenden Ast
Standard

Nunja, so hätte ich es ja gemacht. Aber wenn der Angriff eigendlch schon 1 Tag her ist, und ich hier und jetzt alle abgeschlossenene Ereignisse berechne und DANN den Kampf ausführe, dann sind die Werte ja völlig falsch.

Kleines Beispiel.

A greif B an.
A kommt um 02:00PM an.
B baut Verteidigung. Die Verteidigung ist um 05:00PM fertig.
A und B sind nun einen Tag offline. Der Angriff wurde noch nicht ausgeführt.

Nächster Tag.

A kommt online ( nun prüfe ich alles was fertig ist, wie Du gesagt hast )
Die ganze Verteidigung von B ist fertig weil ein ganzer Tag verstrichen ist.
Aber eigendlich ist die Verteidigung zur Kampfeszeit noch garnicht fertig geworden. Eigendlich hatte B zu dem Zeitpunkt KEINE Verteidigung.
Da ich aber bei meinem Login alles geprüft und aktualisiert habe, hat er nun in dem Kampf Verteidigung die eigendlich nicht da sien sollte.

Das ist mein Problem. Ich muss alles zurückrechnen. Und nicht nur das, es kann ja sein das ein weiterer Spieler, sagen wir Spieler C, auch einen Angriff auf B ausgeübt hat. Und das noch vor meinem Angriff. Dann würde das WIEDER alles ganz anders aussehen. Das ist es ja, was meinen Kopf zum platzen bringt. Es gibt einen Weg, das ist ja klar, aber ich finde nicht mal einen Anfang um es zu realisieren :'(
Mit Zitat antworten
  #4 (permalink)  
Alt 04-10-2010, 22:35
gourmet
 Registrierter Benutzer
Links : Onlinestatus : gourmet ist offline
Registriert seit: Feb 2007
Beiträge: 154
Blog-Einträge: 1
gourmet ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du mußt nichts zurückrechnen

in der Datenbank steht wann das Ereigniss beendet ist und so werden die Ereignisse auch abgearbeitet.

Mit dem kleinsten Datum wird begonnen.

player1 - Angriff - 12.00
player2 - Ausbau Verteidigung - 13.00
...usw.
Mit Zitat antworten
  #5 (permalink)  
Alt 04-10-2010, 22:40
Abraxus
 Registrierter Benutzer
Links : Onlinestatus : Abraxus ist offline
Registriert seit: Oct 2010
Beiträge: 8
Abraxus befindet sich auf einem aufstrebenden Ast
Standard

Ohhhhhhhhhhhhhh GOOOTTTTTTT

Es hat gerade gaaanz feste Pling bei mir gemacht und meine Lampe über dem Kopf ist so hell, dass die ganze Strasse draußen leuchtet *_*

Du bist der Beste. DANKE DANKE DANKE. Warum bin ich da nicht von selbst drauf gekommen. Total easy. Danke nochmal. Dann kann es ja endlich weitergehen. *_*
Mit Zitat antworten
  #6 (permalink)  
Alt 04-10-2010, 22:42
gourmet
 Registrierter Benutzer
Links : Onlinestatus : gourmet ist offline
Registriert seit: Feb 2007
Beiträge: 154
Blog-Einträge: 1
gourmet ist zur Zeit noch ein unbeschriebenes Blatt
Standard

kein Problem

wenn du fertig bist, oder jemanden für nen alpha- oder betatest brauchst, kannst du dich ja mal melden
Mit Zitat antworten
  #7 (permalink)  
Alt 04-10-2010, 22:51
Abraxus
 Registrierter Benutzer
Links : Onlinestatus : Abraxus ist offline
Registriert seit: Oct 2010
Beiträge: 8
Abraxus befindet sich auf einem aufstrebenden Ast
Standard

Klar, wenn Du erste Screenhots haben willst PN me.

Und für alle Andren die das hier gelesen haben gillt das Selbe.

=)
Mit Zitat antworten
  #8 (permalink)  
Alt 05-10-2010, 05:33
matt_dominik
 Registrierter Benutzer
Links : Onlinestatus : matt_dominik ist offline
Registriert seit: Oct 2010
Beiträge: 13
matt_dominik befindet sich auf einem aufstrebenden Ast
Standard

schau dir mal cronjob.de an das kann dir irgendwann auch mal für dein browsergame weiterhelfen
Mit Zitat antworten
  #9 (permalink)  
Alt 05-10-2010, 07:56
Abraxus
 Registrierter Benutzer
Links : Onlinestatus : Abraxus ist offline
Registriert seit: Oct 2010
Beiträge: 8
Abraxus befindet sich auf einem aufstrebenden Ast
Standard

Ja, danke, damit kann ich sicher mal was anfangen. z.B einen Status der Spieler oder des Servers auf der Startseite, auch wenn gerade niemand online ist und der Script nicht von einem Spieler gestartet werden kann =)
Mit Zitat antworten
  #10 (permalink)  
Alt 05-10-2010, 09:35
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

Die Scripte sollten Generell nicht von Spielern gestartet werden.

Du Solltest das in mindestens zwei Sektionen unterteilen.

1) Alle Skripte wie aufträge, angriffe usw.
2) Alle Berechnungsskripte. <--- Cronjob

Die Berechnungen Sollten eigentlich voll automatisch ablaufen.
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #11 (permalink)  
Alt 05-10-2010, 11:04
gourmet
 Registrierter Benutzer
Links : Onlinestatus : gourmet ist offline
Registriert seit: Feb 2007
Beiträge: 154
Blog-Einträge: 1
gourmet ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Wyveres Beitrag anzeigen
Die Scripte sollten Generell nicht von Spielern gestartet werden.
Weil?

Du möchtest doch nicht wirklich einen Cron im Sekundentakt ausführen,
der alle aktuellen Ereignisse abarbeitet.

Bei einigen tausend Spielern wird das mit Sicherheit eine Belastungsprobe...

Desweiteren sollten nur die Daten aktualisiert werden, die auch benötigt werden.

Ich würde es der Performens wegen her so machen.
Mit Zitat antworten
  #12 (permalink)  
Alt 05-10-2010, 11:18
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

Man muss abwägen, Was man mit Cron an Berechnungsskripten übergibt. z.b. Währe es sinnvoller z.b. Ressourcen Scripte in den Cron zu packen.

Da es ist im Grunde eine Abwägung ist wie er das macht und da ich seine Grundlage nicht kenne und auch nicht Wissen kann wie er ran geht.

Ist eine Ausführung von Cronjobs im Sek. Takt wirklich unsinnig, darauf wollte ich auch eigentlich nicht hinaus.

Aber das Thema is extrem schwierig da es eine Menge zu beachten gibt, von der User Interaktion mal abgesehen.
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #13 (permalink)  
Alt 05-10-2010, 14:57
matt_dominik
 Registrierter Benutzer
Links : Onlinestatus : matt_dominik ist offline
Registriert seit: Oct 2010
Beiträge: 13
matt_dominik befindet sich auf einem aufstrebenden Ast
Standard

um die punkte der spieler zu berechnen, kann man auch einen cron nehmen der alle "30minuten" aufgerufen wird um die resourcen des servers zu sparen.
Mit Zitat antworten
  #14 (permalink)  
Alt 05-10-2010, 21:35
Abraxus
 Registrierter Benutzer
Links : Onlinestatus : Abraxus ist offline
Registriert seit: Oct 2010
Beiträge: 8
Abraxus befindet sich auf einem aufstrebenden Ast
Standard

Leute, das was gourmet mir gestern Abend empfohlen hat, ist die beste Variante. Ich habe es gestern Abend und heute den ganzen Tag über realisiert und es läuft super. Ich prüfe NUR die Daten anderer Spieler WENN diese irgendwie mit einem meiner Aktionen zu tun haben und selbst diese Prüfung führe ich ERST aus, wenn es wirklcih notwenidig ist. Wenn z.B die Zeit für eine Aktion gekommen ist.

Mal ne Frage am Rande. Is 0.087471 Sekunden für das Laden einer Seite in Ordnung ? Immerhin werden bei mir auf JEDER Seite Querys ausgeführt und das nicht alzuwenig.

Vielen Dank euch Allen =)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:36 Uhr.