14.11.2012 Aufrufe

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Projekt</strong> MiCarpet <strong>Projekt</strong>bericht<br />

Die Abbildung der Pakettypen auf die Klassenstruktur im System ist in Abbildung 12.13 zu sehen.<br />

Synchronisation Wie schon erwähnt, werden mit jedem neuen Frame vom Master ein oder mehrere<br />

Update-Pakete generiert, in denen die Änderungen an der Welt im Vergleich zum vorigen Frame<br />

kodiert sind. Solche Unterschiede können etwa Änderungen der Position, der Orientierung, der Größe,<br />

aber auch an der Existenz eines Weltobjekts sein. Alle Objekte haben durch ihre Ableitung von<br />

CWorldObjectBase (siehe Abschnitt 12.1.3) die Möglichkeit, ihre variablen Eigenschaften über die<br />

Methoden load/saveObjektDiff() binär zu kodieren (insbesondere ist der Betrachter selbst auch<br />

ein Objekt, seine Bewegungen werden also über den selben Mechanismus erfasst). Vor jedem neuen<br />

Frame muss der Master also nur die Objekte in der Szene durchgehen und aus den individuellen Unterschieden<br />

der Objekte einen CDiffStream erstellen (Sammlung von binär kodierten Unterschieden).<br />

Dieser wird dann (falls nötig) auf einzelne Pakete aufgeteilt und über Update-Pakete verschickt. Die<br />

Slaves konstruieren daraus wieder einen CDiffStream und können über die entsprechenden Gegenfunktionen<br />

die Unterschiede auf die lokalen Weltobjekte anwenden, so dass die Szene nun auch den<br />

selben Zustand wie im Master hat.<br />

Das Klassendiagramm der Hauptklassen für Master und Slaves ist in Abbildung 12.14 zu sehen.<br />

6. Januar 2005 Seite 111

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!