Initialisierung

MusicIsLife
Beiträge: 2
Registriert: So 13. Mär 2011, 18:17

Initialisierung

Beitragvon MusicIsLife » Di 30. Aug 2011, 20:04

Ich wollte mal fragen, ob es möglich ist, den client bei seinem start eine art initialisierung durchführen zu lassen, bevor er mit dem server verbindet. Oder kommt es da zu abstürzen wegen eines timeouts?

gruß

MusicIsLife

Benutzeravatar
Christian Wulf
Beiträge: 27
Registriert: Mi 31. Aug 2011, 05:54

Re: Initialisierung

Beitragvon Christian Wulf » Do 1. Sep 2011, 10:05

Hi MusicIsLife,
solange das Spiel noch nicht gestartet hat, kannst du beliebig viel berechnen, d.h. initialisieren. Schreib deinen Code dazu einfach in den Constructor deiner Strategieklasse (am Beispiel logic/RandomLogic.java in die "Methode" mit dem Namen RandomLogic).

Ich weiß jetzt nicht genau, ob zu dem Zeitpunkt bereits eine Verbindung zum Spiel hergestellt worden ist. Allerdings hat das Spiel an der Stelle definitiv noch nicht angefangen. Wenn du mit Gewissheit vor einer Verbindung initialisieren willst, kannst du in den Konstruktor der Starter.java vor der If-Anweisung (mit joinAnyGame usw.) deinen Code einfügen.

Schöne grüße
Christian

ChristianR
Beiträge: 17
Registriert: So 6. Nov 2011, 13:33

Re: Initialisierung

Beitragvon ChristianR » So 15. Jan 2012, 12:43

Ich wollte diese Frage bzgl. der Initialisierung gerne nocheinmal aufgreifen.

Der Starter wurde insofern geändert, dass direkt am Beginn der Eintrittsmethode main Laufzeittests durchgeführt werden, um die Laufzeiten von Schlüsselmethoden bestimmen zu können. Zu diesem Zeitpunkt besteht noch keine Verbindung zum Server.

Dies ist notwendig, da die Laufzeiten von System zu System variieren können und die Testdurchläufe noch nicht auf den VMs der Uni laufen.

Welche Initialisierungszeiten werden denn von Seiten der Uni Kiel aus akzeptiert, bevor sich der Client mit dem Server verbindet?

Je mehr Zeit einem gelassen wird, desto genauer sind die Laufzeittests.

Viele Grüße,
Christian

Benutzeravatar
Christian Wulf
Beiträge: 27
Registriert: Mi 31. Aug 2011, 05:54

Re: Initialisierung

Beitragvon Christian Wulf » So 12. Feb 2012, 18:05

Rein theoretisch unendlich. Der Server wartet unendlich lange. Ich leite die Frage aber mal an die zuständiger Entwickler weiter.

FewKinG
Beiträge: 14
Registriert: Mi 16. Mär 2011, 16:25

Re: Initialisierung

Beitragvon FewKinG » Fr 24. Feb 2012, 09:00

Nein das stimmt so nicht ganz. Der Server selbst wartet theoretisch unendlich lange. Das System gibt dem Client aber nur 30 Sekunden Zeit, sich mit dem Server zu verbinden, nach folgendem Ablauf:

- Der Client wird vorbereitet
- Die virtuelle Maschine für den Client wird hochgefahren
- Der Client wird auf die Maschine kopiert, sobald diese bereit ist
- Ab jetzt werden 30 Sekunden gezählt
- Der Client wird entpackt und ausgeführt
- Hier hat der Client Zeit, noch etwas zu machen, bevor er sich beim Server melden muss (die 30 Sekunden sollte man lieber nicht vollständig ausreizen)
- Verbindet sich der Client nicht innerhalb von 30 Sekunden mit dem Server, wird der Spielstart forciert. Der Client ist dann disqualifiziert.

Wenn ihr mehr Zeit braucht und auf diesen Aspekt eurer Entwicklung viel Wert legt, empfehle ich euch, selbst eine virtuelle Maschine zum Testen einzurichten. Dann habt ihr alle Zeit der Welt, eure Laufzeiten zu optimieren. Wir verwenden VirtualBox, das ist frei benutzbar. Die wichtigen Rahmendaten der virtuellen Maschine:

- Ubuntu 10.04 LTS (Lucid) 32bit
- 1,5 GB RAM
- 1 Xeon Core (2,27 GHz)

Ich hoffe ich konnte helfen,
Sven.

EDIT: Eine andere Möglichkeit ist natürlich, dass ihr nur die knapp 30 Sekunden nutzt, aber Testdaten über mehrere Durchläufe sammelt (z.B. beim Test und bei Freundschaftsspielen). Die Ergebnisse könnt ihr ja jeweils im Log ausgeben und über das Wettkampfsystem herunterladen. Diese Methode ist natürlich etwas mühsamer.

ChristianR
Beiträge: 17
Registriert: So 6. Nov 2011, 13:33

Re: Initialisierung

Beitragvon ChristianR » Fr 24. Feb 2012, 17:30

Danke für das Feedback, ich werde dann mal schauen, wie wir die Laufzeitwerte zusammensammeln.

Aber die 30 Sekunden sind doch schon einmal ein guter "Maximal-Richtwert".