Einzelnen Beitrag anzeigen
Alt 03.05.2014, 02:27   #5 (permalink)
manatarms
Newbie
 
Registriert seit: 02.05.2014
Beiträge: 15
Standard

Hello again,

danke für das schnelle Feedback.

Ich bin noch in der Evaluierungs- bzw. Probierphase...Ich werde versuchen ein typischen Spielablauf zu erklären und wie ich es aktuell umgesetzt habe.

Ich habe ein Adminmenü gebaut mit einer Liste von allen Objekten die Arma zur Verfügung stellt. Wenn ich ein Objekt aus der Liste auswähle wird es lokal via createVehicle erzeugt und direkt an meinen Spieler attached. Ich habe dann die Möglichkeit das Objekt in alle Richtungen zu rotieren und in der Höhe oder Tiefe zu verstellen. Verschieben in X, Y ist gerade in der Mache . Sobald ich meine gewünschte Ausrichtung erreicht habe, setze ich das Objekt mit detach ab. Damit ich mit diesem Objekt alle Transformationen machen kann, muss ich mir diverse Daten merken. Diese Daten wie die Richtungsvektoren vectorDir und vectorUp und die letzte Position ( positionASL) über dem Meeresspiegel habe ich in einem Array "objectData" gespeichert. Lokal also kein Problem alles geht wunderbar. Jetzt kann es aber sein das ein Spieler "B" mein Objekt auch attachen möchte. Er kennt aber die Daten des Objektes nicht. Hier hätten wir also das Problem das er nur das Objekt selber kennt, aber irgendwie an meine Daten herankommen muss. Mein erster Ansatz war es mit setVariable das Array zu broadcasten, jedoch würde dieses immer an alle Spieler auf dem Server geschickt werden. Es braucht aber in diesem Moment nur ein bestimmter Spieler den Input. Ich gehe davon aus dann bei einer gewissen Anzahl an Objekten der Netzwerktraffic zu hoch wöre und die Spielumgebung abstürzt. Das habe ich also erstmal wieder hingeschmissen und einfach die Regel aufgestellt wenn ein Spieler ein Objekt eines anderen Spielers attachen will dann gibt es Defaultdaten, quasi wie die Ausgangslage als das Objekt das erste Mal erzeugt wurde. Prompt hat sich dann das nächste Problem aufgetan. Ein Spieler der ein Objekt eines anderen Spielers attached kann keine Rotation mehr darauf ausführen, da es ihm nicht gehört!!! So, nun kommen wir zu dem setOwner Fall . Idee war es, das der Spieler dem das Objekt nicht gehört den Server per publicVariableServer anfragt und der Server ihm mit setOwner das Objekt zuweist. Das hat in soweit geklappt das Spieler B das Objekt attachen konnte, aber wie in meinem ersten Post erwähnt das Objekt einfach unsichtbar ist. Naja, so viel zu meinen Versuchen mit Arma Freund zu werden .

Deinen Ansatz das der Server ausschliesslich die Objekte erzeugt finde ich interessant. Könntest du das vllt näher erläutern ? Wenn ich dich richtig verstehe müsste ich für jede Aktion wie Rotation, Verschieben etc einen EventHandler bauen. Somit könnte jeder Client Objekte Transfomieren, indem er das Event triggered und der Server die Transformation auf das Objekt anwendet. Klingt erstmal ziemlich vernüftig, aber kann ein Server n-viele Events gleichzeitig verarbeiten ?
Ich stelle mir einfach die Frage, ob die Arma-Engine überhaupt meine Anforderungen erfüllen kann. Bei beispielsweise 100 Spielern die gleichzeitig 100 Objekte ändenr möchte würde der Server wahrscheinlich in die Knie gehen. So etwas wie ein Abarbeitungsliste kam mir in den Sinn, aber dann würde es automatisch zu delays kommen. Wäre auch nicht so schön. Du merkst ich dreh mich im Kreis, hilf mir raus zu kommen

Geändert von manatarms (03.05.2014 um 02:38 Uhr).
manatarms ist offline