1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Timer im Hintergrund laufen lassen

    • Frage
  • Fatjoe
  • 9. Dezember 2007 um 02:07
  • Unerledigt
  • Fatjoe
    2
    Fatjoe
    Mitglied
    Punkte
    35
    Beiträge
    5
    • 9. Dezember 2007 um 02:07
    • #1

    Ich würde gerne ein kleines Browsergame machen für meine Klasse. Es soll so sein das jeder einen Charakter besitzt mit dem er verschiedene Sachen machen kann. Das Problem ist das wenn ich jemanden angreife weiß ich nicht wie ich das kampf script ausführen soll wenn beide spieler off sind.

    Das angreifen läuft ca so ab:

    Spieler A gibt koordinaten ein. Php script rechnet sich weg aus und Dauer bis zum Ziel und speichert es in die Datenbank ab. Sobald der Spieler on kommt wird ihm angezeigt wie lange sein Spieler noch zum Ziel braucht (Ankunftszeitpunkt - Sendezeitpunkt).

    Meine Frage ist jetzt, wie kann ich das am besten programmieren das der Server zum ankuftszeitpunkt das script startet mit dem das alles berechnet wird? Oder bin ich da auf dem Holzweg und das ganze geht anders viel einfacher?

  • Simon
    5
    Simon
    Mitglied
    Reaktionen
    1
    Punkte
    211
    Beiträge
    42
    • 9. Dezember 2007 um 17:49
    • #2

    Warum lässt du nicht alle Angriffe auf/von einem Spieler berechnen, wenn sich dieser einloggt? Davor muss er es ja eh nicht wissen...

    PokerStrategy - Pokercommunity + 150$ geschenkt!

  • tosh
    6
    tosh
    Mitglied
    Punkte
    375
    Beiträge
    73
    • 9. Dezember 2007 um 21:22
    • #3

    in browsergames wird es wie Simon bereits erklärt hat tatsächlich oft so gelöst dass es einfach eine tabelle gibt in der events gespeichert werden die noch passieren müssen (zb mit datum in der zukunft) und dass einfach bei jedem pageload (egal von wem der durchgeführt wird) alle events durchgeführt werden die schon vergangen sind.

    vorteil von dieser lösung ist dass wirklich alle events der reihe nach berechnet werden. das ist je nach gametyp wichtiger oder unwichtiger. bei kampf und handels simulationen ist es wohl für die allgemeinheit der spieler wichtig ob ein spieler noch ressourcen oder einheiten im lager hat oder ob die schon durch einen angriff von einem anderen spieler vernichtet wurden obwohl sich der spieler noch garnicht eingeloggt hat.

    wenn du php verwendest und ein browsergame codest hast du auch garnicht so viele andere möglichkeiten. die datenbank meldet sich nicht von selbst. die musst du regelmässig pullen. und die php scripte führen sich auch nicht von selbst aus. die müssen von spielern aufgerufen werden durch pageloads.

    eine andere möglichkeit wäre eine art tick-system. wo ein cronjob oder ein php script dass sich selbst mit sleep regelmässig aktiv und inaktiv macht regelmässig eine aktion durchführt.

    der vorteil vom tick system ist, dass der user selbst nichts mitbekommt von berechnungen und db abfragen die eigenltich andere spieler betreffen und die recht lange dauern können wenn lange niemand mehr aktiv war. nachteile gibts aber wenn die intervalle zwischen den ticks kurz sind (um realtime nahe zu kommen) und irgendwann aber so viele aktionen zu berechnen sind, dass die berechnungen und abfragen länger brauchen als der tick intervall.

    sogesehen ist die lösung mit den pageloads die immer alle events berechnen die gerade auszuführen sind recht einfach umzusetzen, auch wenn dein host keine cronjobs oder lang-laufende php scripts unterstützt. man kann echtzeit vortäuschen und die datenintegrität ist nicht so sehr gefährdet.

    ich hoffe ich hab jetzt nichts übersehn aber meine browsergame entwickler zeit ist schon ein bisschen her.

    tosh.at|huntu.at|opentu.net { die realität ist dort wo der pizzamann herkommt … }

  • Fatjoe
    2
    Fatjoe
    Mitglied
    Punkte
    35
    Beiträge
    5
    • 9. Dezember 2007 um 21:54
    • #4

    Danke für die antworten, hat mir sehr geholfen =)

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 2 Besucher

Rechtliches

Impressum

Datenschutzerklärung