tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
2620
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kipperlenny Kipperlenny ist offline Mitglied Gold
    Registriert seit
    May 2006
    Ort
    Hannover
    Beiträge
    202
    Moin

    Sogenannte "Echtzeit Browsergames" sind ja eigentlich gar keine, weil die Zeit die man z.B. braucht um virtuell ein Haus zu bauen viel viel kürzer ist als die Zeit die man in Echt brauchen würde. Dieser Ausdruck sagt ja eigentlich nur aus, dass das Browsergame nicht Runden basiert ist.

    Nun meine Frage - realisiert man das durch einen Cronjob der jede Sekunde (Mikrosekunde?) ausgeführt wird, bestimmt nicht, aber wie dann?

    Dabei geht es ja um gutschreiben von Rohstoffen, Fertigstellung von Gebäuden, Kämpfe etc.

    lenny
     

  2. #2
    CraHack CraHack ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    96
    Einfach jedesmal wenn du die Daten durchgerechnet und Aktualisiert hast speichern.
    Und jedesmal wenn ein User etwas macht, werden die Daten aktualisieren die dazu nötig sind.
    Im Grunde ziemlich simple.

    Ein kleines Beispiel:

    Dein Script hat vom letzten aufruf folgende Daten (Zeiten sind natürlich Timestamps).
    Holz=500
    HolzProduktionProSekunde=10
    LetzterAufruf=27.3.08 15:00:00


    Jetzt ruft ein User eine Seite auf, auf der dein Aktueller holzbestand steht.
    Es holt sich also die daten aus dem Letzten aufruf und hat ausserdem noch die momentane Uhrzeit:
    Jetzt=27.3.08 15:10:00


    Jetzt rechnet es:
    VergangeneZeit=Jetzt-LetzterAufruf
    Holz=Holz+HolzProduktionProSekunde*VergangeneZeit


    Wenn sich in der zeit die Rohstoffproduktion verändert hat oder einfach etwas geklaut wurde, muss dass natürlich auch berücksichtig werden.



    Und das jedesmal wenn etwas passiert. Dabei reicht es nur die Daten, des Users zu berechnen, der auch von einer Aktion betroffen ist.
    Wenn also User1 seine Rohstoffmenge betrachtet, müssen dazu nicht die Rostoffe von User123234 berechnet werden.
    Geändert von CraHack (27.03.08 um 19:09 Uhr)
     

  3. #3
    Kipperlenny Kipperlenny ist offline Mitglied Gold
    Registriert seit
    May 2006
    Ort
    Hannover
    Beiträge
    202
    Das ist eine gute Idee. Nur beim Plündern, Handeln etc. sind dann ja zwei User betroffen, das ist dann nicht einfach.

    Und wenn ein User nicht eingeloggt ist, müssen seine Gebäude ja trotzdem fertig werden (zur richtigen Mikrosekunde). Wenn er z.B. eine Eisenmine baut und diese um 17:00:00Uhr fertig sein soll, dann muss er ja ab genau dieser Sekunde auch mehr Eisen pro Sekunde bekommen.
     

  4. #4
    Registriert seit
    Jul 2007
    Ort
    Quakenbrück
    Beiträge
    756
    Prüfe bei jedem aufruf ALLE Daten die geprüft werden müssen, nach aktualität...
     
    PHP-Code:
    ($hilfe=='hilfreich') ? bewerten(positiv) : ignore_post(); 
    Schnellste Hilfe -> www.gidf.de

    Wer aus meiner Gegend kommt, kann sich gern mal melden, kenn hier keenen ;)

  5. #5
    CraHack CraHack ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    96
    Einfach überprüfen ob zwischen Jetzt und dem letzten Update eine veränderung von z.b. der Produktionsrate stattgefunden hatt und wenn ja dann einfach erst bis zu diesem zeitpunkt updaten und danach mit den neuen Variablen weiterrechnen. Auf Microsekunden rechnet auch wohl kein Browsergame genau. Eher auf Sekunden.
     

  6. #6
    splasch splasch ist offline Mitglied Brillant
    Registriert seit
    Jul 2004
    Beiträge
    854
    Und wenn ein User nicht eingeloggt ist, müssen seine Gebäude ja trotzdem fertig werden (zur richtigen Mikrosekunde). Wenn er z.B. eine Eisenmine baut und diese um 17:00:00Uhr fertig sein soll, dann muss er ja ab genau dieser Sekunde auch mehr Eisen pro Sekunde bekommen.
    Versteif dich mal net so sehr auf die Mikrosekunden.Und bei deinem Beispiel muß es nicht sofort durchgeführt werden da reicht es wenn die Berechnung gemacht wird sobald der Spieler wieder online ist.
    Keine Angst der Spieler bekommt schon sein mehr Rohstoff. All dies kann man nachträglich berechnen und gutschreiben lassen.
    Es wird ja der beginn des Bau gespeichert. Man weiß wie lange der Bau dauert und man weiß wieviel Zeit seit dem Bau vergangen ist. Auf grund der fakten kann man die Rohstoff menge leicht berechnen die der Spieler bekommt.


    Bei Kampfscripten wird ein wenig Schwierieger aber das geht auch ohne cronjobs.
    (hier müssen dann viele mehrer Faktoren bedacht werden und damit mein ich nicht den kampf selbst)

    Mfg Splasch
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 16.01.11, 09:36
  2. Cursorposition in "Echtzeit" ermitteln
    Von zoidberger im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 15.05.08, 10:41
  3. Livestream in echt "Echtzeit"!?
    Von Chriss3000 im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 1
    Letzter Beitrag: 31.03.07, 00:26
  4. News ohne HTML, aber "eigenen" Tags
    Von mgd-one im Forum PHP
    Antworten: 3
    Letzter Beitrag: 01.02.05, 17:40
  5. Premiere 6.5 auch ohne Echtzeit-Videokarte ?
    Von wasndas? im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 22.07.03, 23:11