Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Enterprise Java > Zeitabhängige Aktionen in Online-Browsergame
Antwort
 
Themen-Optionen
Alt 07.12.2004, 13:58   Nach oben    #1
theTC
Neuer Benutzer
 
Benutzerbild von theTC
 
Registriert seit: 05.07.2004
Beiträge: 1
Standard Zeitabhängige Aktionen in Online-Browsergame

Hi,
ich programmiere gerade ein Online-Browsergame und bei dieser Art von "Web-Anwendungen" benötigt man auch "zeitabhängige Aktion".

Was versteh ich unter einer zeitabhängigen Aktion? Wenn ich z.B. ein Gebäude baue, es 2h zur Fertigung braucht und ich genau nach diesen 2h per Message über die Fertigstellung informiert werden möchte.
Das Problem ist nicht anzuzeigen, dass das Gebäude fertig gestellt wurde sondern dass genau nach diesen 2h eine Funktion aufgerufen wird, die eine Message verschickt.

Eine Lösung, die mir bisher eingefallen ist, belastet den Server glaub enorm, wenn mehrere User spielen (bei 5-10 also eher noch nicht spürbar ).
Diese Lösung sieht folgender maßen aus: mit dem Klick auf "Bauen des Gebäudes blabla" wird ein Thread gestartet, der dann nach 2h aktiv wird, die Message verschickt und somit zu Ende ist. Jedoch wird dann für jeden User ein eigener Thread gestartet und dann ist das gleich mal eine Unmenge an parallel laufenden Threads. Hab selbst natürlich keine Erfahrungen, wie performant das letztendlich ist, aber vielleicht gibts ja bessere Lösungen.

Eine Lösung, die ich noch bei anderen Browsergames gesehen habe ist die "Tick"-Lösung, welche mir persönlich nicht soo gut gefällt. Da wird ein Timer (oder Thread) gestartet, der sich alle 5min. aktiviert und dann checkt, ob was zu erledigen ist. In dem hier verwendeten Beispiel also, ob ein Gebäude fertig geworden ist und ob die Message noch an den User gesendet werden muss. Vorteil ist, dass nur ein nebenläufiges Programm aktiv ist. Nachteil ist, dass es unter Umständen 5 Minuten zu lange dauern kann, bis der User informiert wird. Kann sehr nervend für den User sein.

Was mir auch so irgendwie im Kopf rumschwebt ist eine Mischung aus beiden Ideen. Also Quasi ein nebenläufiges Programm starten und wenn nun ein Gebäude gebaut wird, wird dem Programm mitgeteilt, dass es in 2h eine Message verschicken soll. Das Programm speichert die Informationen von allen Usern intern ab.
Immer wenn eine neue Aktion hinzugefügt wird, wird die Liste mit allen Aktionen zeitlich sortiert und je nachdem, wann die nächste Aktion ist, aktiviert sich das nebenläufige Programm.

Das Problem mit der ersten und der kombinierten (also 3.) Lösung ist, dass nirgends in der Datenbank (oder sonst wo) festgehalten ist, dass die Nachricht noch raus muss. Das heißt, wenn z.B. während dem Bau der Server den Geist aufgibt, wird das Gebäude zwar fertig, der User bekommt aber keine Meldung, weil die Informationen nicht in der DB liegen sondern in einer Variablen... .

Wie würdet ihr das Problem lösen? Oder sagt ihr, dass ein Thread für jeden User unbedenklich ist? Mich würd dringend eure Meinung/Erfahrung interessieren,

danke
mfg,
matthias
theTC ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.12.2004, 22:28   Nach oben    #2
bluelight
Gast
 
Beiträge: n/a
Standard

Wiso startest du nicht einen Thread, der die Urzeit zB mit der Date klasse bestimmt und die jede Anfrage der Benutzer meinetwegen auf Festplatte oder Ram speichert und kontinuirlich die Zeit mit Übereinstimmung der Zeit die fü die User bestimmt waren überprüft. So hast du nur ein thread der ständig die Zeit überprüft.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

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 Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:09 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44