PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BuildMod



Pheka3
20.07.2011, 10:45
BuildMod

Derzeit bin ich dabei, den BuildMod nach Crysis 2 zu portieren. Alles funktioniert ganz gut soweit bis auf ein paar Mängel. Hier erstmal eine Erklärung, was das für eine Mod ist.

Mit dem BuildMod kann man zusammen mit anderen Spielern im Crysis 2 Multiplayer Maps in Echzeit bebauen. Es gibt eine Standard - Map ("Build") auf der jeder Spieler etwas bauen kann. Man kann Türen, Lichter, Schalter, Fahrstühle, Ventilatoren, Sounds, Partikeleffekte, Teleporter, Animationen, physikalische Objekte und normale statische Objekte erstellen. Jedes dieser Objekte kann man exakt konfigurieren. Nur der Besitzer eines Objekts kann dieses modifizieren. Dafür habe ich effiziente Techniken verwendet, um mehr als 50.000 Objekte ohne Performanceproblemen zu verwalten.

Wie wird gebaut?
Es ist eigentlich ziemlich einfach: Zuerst muss man ein Objekt mit dem Fadenkreuz anvisieren und mit der Makierungstaste (z. B. "i") makieren, was man platzieren möchte. Anschließend erscheint ein Text an der Position des makierten Objekts das es näher beschreibt (Besitzer, Größe, Objekttyp, Objektparameter). Wenn einem das Objekt gehört, kann man es bewegen, rotieren, skalieren oder über Konsolenbefehle modifizieren. Um das makierte Objekt jetzt erneut an einer anderen Position zu platzieren, muss man die Platzierungstaste (z. B. Eingabetaste) drücken. Jetzt hat man ca. 2 Sekunden zeit, um sich von der Position zu entfernen, um zu vermeiden, das man im Objekt feststeckt (eher bei großen Objekten wie z. B. Häuser der Fall). Danach erscheint das gewünschte Objekt.

Man kann aber auch Objekte aus dem SandBox 3 Editor importieren. Dazu muss man im Editor das gewünschte Objekt auswählen und dessen Dateipfad kopieren. Anschließend öffnet man im Spiel die Konsole und gibt folgendes ein:
- create <drücke STRG+V>
Das Objekt sollte dann erscheinen.

Es gibt auch einige Befehle um seine Objekte zu modifizieren. Hier sind ein paar von ihnen:

- light [user=me/all], [color red=0.0-1.0], [color green=0.0-1.0], [color blue=0.0-1.0], [top], [cast shadow=0/1]
- door [user=me/all]
- effect [user=me/all], [effectname], [scale=1.0], [auto=0/1]
- anim [user=me/all], [animationname], [speed=1.0], [auto=0/1]
- sound [user=me/all],[soundname],[radius=10.0],[volume=0.0-1.0],[auto=0/1]
- physic [mass=10.0], [density=-1 (unbreakable)/ 1.0 (breakable)]
...

Hier ein Anwendungsbeispiel für ein Objekt, das beim Betätigen eine Musik abspielt:
- sound all, music01.mp3, 20.0
Die letzten 2 Parameter sind optional (Volume und Auto).

Wie funktioniert es?
Alle Objekte werden jede Minute auf dem gerade gespielten Server abgespeichert. Ich denke das sollte ausreichen, so das keine Daten verloren gehen. Falls der Server abstürtzt, wird er neu gestartet und ladet die zuletzt gespeicherte Map automatisch. Alle Objekte sind syncron zum Server und den Spielern. Das bedeutet, wenn ein Spieler ein Licht anmacht, sehen alle Spieler das im selben Moment. Oder wenn jemand ein Sound Objekt anmacht, hören alle anderen das auch.

Mit Schaltern kann man mehrere Objekte gleichzeitig aktivieren/deaktivieren. Das ist möglich indem man den jeweiligen Objekten Namen gibt und dem Schalter sagt, welche Objekte mit dem Namen er ansprechen muss.

Ich habe herausgefunden, dass die CryEngine 3 eine viel bessere Speicherverwaltung als die vorherige Engine hat. Wenn ca. 2000 verschiedene Objekte geladen sind, liegt die Speicherauslastung bei mir bei 560 MB, ohne Objekte (leere Map) ist sie bei 530MB. Also 30MB für 2000 Objekte in diesem Fall. Natürlich kommt es darauf an welche Komplexität die Objekte haben, was ja unterschiedlich ist. Um aber eine noch bessere Performance zu erzielen, werden alle Objekte, die außerhalb des Sichtbereiches sind aus dem Entity - System (Objektsystem der Engine) gelöscht und anschließend komprimiert in den Arbeitsspeicher geschrieben. Das spart sowohl Performance als auch Speicher. Wenn die Objekte dann wieder im Sichtbereich sind, werden sie mithilfe der komprimierten Daten wieder im Entity - System registriert und sind somit wieder sichtbar. Vor allem bei hoher Objektanzahl ist dies ein riesen Vorteil. Bei der CryEngine 2 (also in Crysis Wars) gab es ein Problem bei der Speicherfreigabe, nachdem die Objekte aus dem Entity - System gelöscht wurden. Jedes mal wenn es gelöscht wurde, blieb ein kleiner Rest im Arbeitsspeicher hängen, welcher sich mit der Zeit ansammelte und die Speicherauslastung stetig anstieg.

Derzeitiger Status
Hier ist ein Video, das zeigt, wie man etwas baut. Ich werde aber bald ein kürzeres und besseres Video erstellen ;).
http://www.youtube.com/watch?v=f50wjrX7LPs&feature=player_embedded

Vielleicht wird die Mod noch eine grafische Benutzeroberfläche (HUD) bekommen, mit der es einfacher wird Objekte zu modifizieren. Das ganze basiert ja auf Konsolenbefehle also muss das HUD nichts weiter machen, als die Konsolenbefehlen mit den entsprechenden Parametern auszuführen.

Ich und haacki47 haben geplant, eine neue Stadt in Crysis 2 mit dem BuildMod zu bauen, mit vielen Details und Features natürlich. Wenn die erste stabile Version fertig ist, werde ich sie hier veröffentlichen und so können auch andere Spieler ihren Teil zur Stadt beitragen. Hier ein paar Screenshots vom aktuellen Stand der Stadt, an der wir bauen (Bauzeit etwa 2 Stunden).

http://xyross.de/download/Crysis2_BuildMod05.jpg
http://xyross.de/download/Crysis2_BuildMod06.jpg
http://xyross.de/download/Crysis2_BuildMod07.jpg
http://xyross.de/download/Crysis2_BuildMod08.jpg
http://xyross.de/download/Crysis2_BuildMod09.jpg
http://xyross.de/download/Crysis2_BuildMod10.jpg
http://xyross.de/download/Crysis2_BuildMod11.jpg

Jackhammer567
20.07.2011, 15:43
RESPEKT!

Diese Mod ist ja wirklich atemberaubend :shock:

Hätte aber da auch ein paar Anmerkungen:
Die Mod macht eher den Eindruck als ob sie zum Fun da wäre ( was sonst ^^ ) aber könntet ihr vl. eine ähnliche Mod machen wo z.B zwei Leute an einer Map arbeiten ,jedoch das im Editor. Also 2 PC's und jeder hat den Editor offen und beide arbeiten an einer Map. Dieses Tools gibts ja bei Crytek und heißen_

What You See Is What You Play
bzw.
Live Create

Von dem was man aber gesehen hat ( GDC ) sind die tools eher dazu da um mit den Konsolen zu arbeiten und nicht das 2 User an 2 PC's an einer Map arbeiten!
Ist ja auch nur ne Anfrage ^^ aber wenn ihr das schaffen könntet würdet ihr Modding revolutionieren!

Pheka3
20.07.2011, 21:03
Danke :grin:.
Das mit dem SandBox funktioniert glaub ich nicht so einfach, weil man da höchstwahrscheinlich den Source Code (also das SDK) für Crysis 2 braucht (was bis jetzt nicht veröffentlicht wurde). Aber versuchen könnte ich es trotzdem mal, das hinzubekommen ;).

Pheka3
22.07.2011, 12:46
Es gibt ein neues Video zu diesem Mod. Ein Funvideo von YinYinSaka:

http://www.youtube.com/watch?v=Fd3IwVUOxuk

nanoSam
24.07.2011, 16:58
gefällt mir sehr gut das video ;D