Hiermit möchte ich euch ein paar Tipps zur Performancesteigerung eurer Levels geben.
Jedes Objekt hat einen Wert der angibt wie lange es zu sehen ist (ViewDistRatio) Standart: 100
sowie einen Wert ab dem es mit weniger Polygonen dargestellt wird um Rechenleistung zu sparen (LodRatio) Standart:100
Je höher der LodRatio wert ist, desto eher wird das Objekt polygonärmer (höchstends 255)
Je niedriger der Wert der ViewDistRatio ist, desto eher wird das Objekt ausgeblendet. Ab 50 verschwindet zum Beispiel der Schatten schneller.
Bei der Vegetation heißen die beiden Werte SpriteDistRatio undViewDistRatio.
SpriteDistRatio gibt an, ab wann die Objekte nicht mehr ganz sondern als Textur dargestellt werden, bevor sie ganz verschwinden.
Bei Blättern oder Ästen auf dem Boden empfiehlt es sich '' UseSprites'' ganz auszuschalten und dafür die VieDistRatio auf einen niedrigen Wert zu stellen. http://img3.imagebanana.com/img/yf1k...mb/SPRITES.jpg
Occluder Areas können gesetzt werden um alles dahinter auszublenden.
Ihr findet sie unter Area/OccluderArea. Je größer sie sind, desto mehr blenden sie aus, wenn man sie aus der Entfernung sieht.
Mit F3 könnt ihr in den Wireframe Modus wechseln wodurch man gut sieht welche Objekte gerade ausgeblendet werden.
Oben rechts steht eine Zahl, die die gesamten Polygone einer Szene anzeigt (Tris), sie sollte nie über 3000000 kommen, sonst brechen die Bilder pro Sekunde stark ein.
Versucht so wenige Entytis wie möglich zu verwenden, nehmt lieber Brushes. Da sie keine Physik haben.
Bei Graß, Ästen oder anderen kleinen Pflanzen sollte man immer den Schatten ausstellen.
Bei Voxeln ''GoodOccluders'' anschalten.
Wenn ihr viele Ecken in eurer Map habt, stellt die Werte eurer Felsen und Häuser so niedrig ein, dass sie erst erscheinen,
wenn man sie im Spielmodus wirklich erst sieht.
Dinge die unwichtig sind oder nur den Hintergrund verschönern sollten einen hohen LodRatio haben.
Weil man meistends in der Hektik des Spiels eh nicht darauf achtet ob sich ein Modell erst spät mit Polygonen ''auffüllt''.
Das Terrain bringt am meisten Performance also versucht oft große Gebiete mit Bergen zu verdecken, wenn sie gerade nicht gebraucht werden.
Hier sieht man einmal wie gut das funktioniert, ich hab ein Beispiel aus der Map ''mine'' genommen:
Wie man sieht wird durch diese Kurve der gesamte große rechte Bereich ausgeblendet . Wenn man hinter der Kurve steht wird wiederum der Bereich aus dem man gekommen ist verdeckt.
Die Lehmkuhle wird zum Teil ausgeblendet, man sieht aber trotzdem noch wie riesig der Level ist.
VisAreas und Portale:
VisAreas können benutzt werden um in Gebäuden die äußere Umgebung auszublenden.
Nur an Portalen (Türen, Fenster) kann man nach draußen gucken.
Affected by sun: Die Sonne beeinflusst die Lichtverhältnissse des Raumes
IgnoreSkyColour: Das Gebäude verändert nicht die Farbe des Lichtes wenn ‚Affected by sun’ angeschaltet ist.
SkyOnly: Man sieht von draußen nur den Himmel.
OceanIsVisible: Hier kann der Ozean ausgeblendet werden.
Zum Aufbau:
VisAreas können nur in Gebäuden benutzt werden, die aus Einzelteilen bestehen,
wo es mindestends eine ''Außenverkleidung'' und Innenräume gibt.
In Voxelhöhlen kann man sie immer einbauen.
Geht in das Menü Areas/VisAreas und zieht die Area genau zwischen zwei Wänden entlang,wo sich die Räume voneinander trennen.
Wenn ihr der Area die gleiche Höhe wie dem Gebäude gegeben habt und die Linien exakt in der Wand verlaufen, kommen jetzt die Portale dran.
Wählt sie unter Area/Portal aus und baut welche an allen Fenstern sowie Türen.
Die Portale müssen genau über der VisArea liegen und die gleiche Höhe wie das Objekt haben, durch das der Spieler durchschauen soll.
Edit by WarpSpeed: Habe das Tutorial jetzt auch bei uns in die Tutorial-Datenbank aufgenommen.
23.06.2008, 16:18
Biggreuda
Ein leicht erweitertes Tutorial für die Levelzeit.
Zuerst erstellt man einen Bereich in den man treten muss damit sich die Zeit ändert.
Tip: Am besten achtet man vorher darauf dass oben in der Leiste "Snap to Terrain" aktiviert ist, rechts neben "XY"
Dafür geht man in der RollupBar auf "Area - Shape"1 und platziert Punkt für Punkt. Abschließen kann man die Area mit einem Doppelklick.
Unter "Height"2 sollte man eine Höhe festlegen, im Beispiel habe ich "4" gewählt.
Danach platziert man einen AreaTrigger, zu finden in der RollupBar unter "Entity - Triggers - AreaTrigger"3. Wo man ihn setzt ist eigentlich egal, der Übersichtlichkeit halber empfehle ich aber in dem Shape oder in der Nähe.
Wählt man jetzt den Shape aus kann man in den "ShapeParameters" über "Pick"4 den AreaTrigger auswählen indem man bei aktivierter "Pick"-Funktion im 3D Fenster draufklickt.
Tip: sollte der AreaTrigger schwer auszuwählen zu sein, dann kann man mit gedrückter Leertaste den Namen einblenden lassen.
Jetzt erstellen wir den Flowgraph.
Dafür muss man den AreaTrigger auswählen, was man wahlweise über das 3D Fenster tun kann oder indem man einen Doppelklick auf den Namen im Target-Fenster des Shapes macht.
Jetzt klickt man unter "FlowGraph" auf "Create" wie im Bild zu sehen ist.
Jetzt wird man aufgefordert einen Namen einzugeben bzw. einen neuen FlowGraph zu erstellen falls man bereits welche hat.
Erscheint die graue Fläche so macht man einen Rechtsklick auf diese und wählt "Add Selected Entity". Sollte nichts oder nur ein kleiner Punkt erscheinen so muss man danach erneut einen Rechtsklick machen und "Fit Graph To View" auswählen.
Hat man jetzt seinen AreaTrigger, so legt man besser erst mal die Startzeit fest. Dafür erstellt man über Rechtsklick-> Add Node folgende Nodes:
Misc:Start
Time:TimeOfDay
Wählt man das TimeOfDay aus, so kann man rechts bei den "Inputs" die Zeit(Time) einstellen. Im Beispiel habe ich dafür 6Uhr ausgewählt.
Am besten legt man auch die Geschwindigkeit(Speed) fest. Bei einem Wert von "1" rast die Sonne so schnell dass einem schwindelig wird, da empfiehlt sich eher ein Wert von "0.0025" oder einfach "0" falls sich die Zeit gar nicht ändern soll.
Damit sich das Ganze auch auswirkt muss man den Output vom "Misc:Start" mit den Inputs "SetTime" und "SetSpeed" verbinden.
Jetzt wird bei Spielstart die Zeit und die Geschwindigkeit auf die jeweils gesetzten Werte gestellt.
Jetzt zum AreaTrigger.
Erst mal fügt man über Rechtsklick und "Add Node" folgende Nodes ein:
1x Logic:Any
2xTimeOfDay
1xTime: Delay
1xMathLess
Danach verbindet man sie wie im Bild zu sehen:
Erklärung:
Betritt man das Shape dass an den AreaTrigger gekoppelt ist so wird ein "Enter" Signal herausgegeben. Dieses "Enter" geht über das "Logic:Any" in das obere "TimeOfDay" und fragt über "GetTime" die aktuelle Uhrzeit ab. Diese abgefragte Uhrzeit wird über "CurTime" an die "Math:Less" Node herausgegeben. Die "Math:Less" Node überprüft ob der eingehende Wert niedriger als die bei "B" eingetragene Zeit ist. Da ich bei "B" 18 eingetragen habe überprüft die Node praktisch ob es noch früher wie 18Uhr ist.
Trifft dies zu, so wird der "True"-Ausgang ausgelöst, welcher wiederrum auf das auf "0.25" gesetzte "SetSpeed" des "TimeOfDay" gelegt ist. Die Geschwindigkeit der Zeit wird also im Gegensatz zum vorherigen "0.0025" verhundertfacht. Gleichzeitig wird über das "Time: Delay" nach einer Sekunde die Abfrage wiederholt. Sollte die Zeit Später als 18Uhr sein, so wird der "False" Wert getriggert und die zeit wieder auf den ursprünglichen Wert gesetzt (man hätte es auch zurück zum ersten "TimeOfDay" führen können, aber so kann man auch einen anderen Wert wählen.
Zusatz:
Will man die Zeit überprüfen um z.B. zu sehen ob der Trigger funktioniert, so kann man sich wie im angehängten Bild eine einfache "Uhr" einfügen. Die Zeit wird dadurch jede Sekunde aktualisiert.
Tipp: Will man diese Uhr nur im Editor und nicht im Spiel selbst haben, so kann man wie im Bild bei der "Misc:Start" Node den Wert "InGame" auf "false" setzen, dann wird der Trigger nur im Editor ausgelöst, nicht aber im gestarteten Spiel.
Edit by WarpSpeed: Habe das Tutorial jetzt auch bei uns in die Tutorial-Datenbank aufgenommen.
29.06.2008, 23:33
IceWolf
Hätte da noch was...
Hab hier ein kleines tut, wie man (nur zum Beispiel) einen Bildschirm verändert...
is noch nich ganz fertig, ich werde es evtl. noch ergänzen...
Was ihr benötigt ...
Standard-Kenntnisse im SB2
das Programm Paint.net (einfach googlen, ich will ja keine werbung machen ;) )
...und was ihr im Editor öffnet:
[Objects\library\props\electronic_devices\consoles\ monitor_lcd.cgf]
So, jetzt kommt der "schwierigste" Teil:
Macht ein Scrennshot oder ladet euch ein Bild runter, egal.
Das öffnet ihr mir Paint.net und speichert das als *.dds mit folgenden Eigenschaften:
Größe: 256*256; 512*512 oder 1024*1024 (weiß das nur sicher von 512, sollte aber auch mit den anderen gehen).
So, hätten wir das, als nächstes wechselt ihr in den SB2.
Dort klickt ihr euren Monitor an und drückt dann "m".
Es öffnet sich der Material Editor.
Da macht, wie auf dem Bild zu sehen ist,
1. auf "Get material from selection" klicken
2. das plus bei "monitor_lcd" anklicken
3. den 3. Unterpunkt "Monitor" anklicken
4. im rechten Fenster den Diffuse-Wert auf fast schwarz ändern
5. weiter unten bei "Texture Maps/ Diffuse" den Pfad der zuvor erstellten *.dds Datei angeben.
6. Evtl. noch auf "Add Material to Selection" klicken.
Achtung: wenn ihr wie ich mehrere Screens mit unterschiedlichen Motiven habt, dann müsst ihr das Material "Monitor_lcd" inklusive unterpunkten kopieren. Dazu könnt ihr das einfach anklicken und [STRG+D] drücken.
Das Tutorial könnte dem ein oder anderem als sehr hilfreich erscheinen 8)
(Ob wir das so ohne weiteres in die DB aufnehmen können weis ich nicht)
- Roberi
21.08.2008, 00:05
Moloch123
Geysir Tutorial
EIn paar steine zur deko.. mit nem kleinen platz in der mitte
2. Öffnet die Database.. geht dort auf öffnen und öffnet unter Particles "Smoke_and_Fire" wählt einen Geysir-Strahl aus der euch gefällt und platziert ihn über dem loch von den steinen (Kopiert den Stahl am besten noch ein paar mal und setzt ihn an die gleiche stelle damit es besser aussieht). Jetzt kommt der komplizierte Teil.. Der Flowgraph.. so dass der Geysir an und aus geht, genauso wie der Soundspot dazu und der Schaden.. (als soundspot würde ich unter sounds/enviroment.. dann Soundspots aufwählen und unten Heavy_loop_2 nehmen)
3.Der Flowgraph(mit einem Geysir Efffekt) mit mehreren muss man das selbe machen man darf nur nicht den
überblick verlieren!!
1.Misc>Start 2.Output-->Enable(Partikeleffekt)
3.Disable(Partikeleffekt)-->Time Delay(nach welcher zeit der angehen soll anchdem er aus war ich hab ca.4 sekunden)
4.Den Parikeleffekt nochmal kopieren und einfügen
5.TimeDelay(out)-->(kopiertenPartikeleffekt)Enable
6.Noch ein Time Delay hinzufügen(nach welcher Zeit der Geysir ausgeht ich hab 5sekunden)
7.Enable(1.Partikeleffekt)-->TImeDelay
8.TimeDelay(out)-->Disable(1.Partikeleffekt)
9.Enable(1.Partikeleffekt)-->Soundspot(start)
Disable(1.Partikeleffekt)-->Soundspot(stop) Damit das Schaden macht wenn man reinläuft: 1.Einen Shape um den Geysir machen in dem Bereich wo es schaden machen soll.
2.ProximityTrigger hinzufügen und die shape mit dem Trigger verbinden
3.FG öffnen .. Wiedermal den Partikeleffekt hinzufügen
4.Enable(Partikeleffekt)-->Enable(ProximityTrigger)
5.Disable(Partikeleffekt)-->DIsbale(ProximityTrigger)
6.Logic>Gate hinzufügen
7.misc>start hinzufügen
8.Enable(Partikeleffekt)-->(LogicGate)Open
9.MiscStart(output)-->(LogicGate)Closed
10.Leave(ProximityTrigger)-->(LogicGate)Close
11.Logic>Any hinzufügen
12.Enter(ProximityTrigger)-->(LogicAny)
13.Out(LogicAny)-->In(LogicGate)
14.Ein zweites LogicAny hinzufügen
15.Out(LogicGAte)-->LogicAny
16.TimeDelay hinzufügen(Delay auf 0)
17.(Zweites LogicAny)Out-->In(TimeDelay)
18.Out(TimeDelay)-->1.LogicAny
19.Game>DamageActor hinzufügen
20.Out(TimeDelay)-->Trigger(DamageActor) <--is egal welchen schaden man macht , kann jeder selbst bestimmen
21.Game>LocalPlayer hinzufügen
22.EntinityID(LocalPlayer)-->InputEntinity(DamageActor)
Dannach kann man den Geysir noch verzieren wie man will und Warnungschilder hinmachhen je nach dem wie man den haben will (hab auch nen dampf Partikeleffekt vom wasserfall hinzugefügt)
hf & hoffe das ihr durchblickt^^
Hallo zusammen. Vorweg: Dies ist mein erstes Tutorial, daher bitte ich um Nachsicht falls es nicht Ausführlich genug ist, bzw. sich kleine Fehler eingeschlichen haben.
Verbesserungsvorschläge, Erweiterungen und hinweise auf Fehler werden von mir selbstverständlich eingepflegt.
gruß Blue.
----------------------------------------------------------------------------------------------------
HowTo: Asian_apc Modifizierung für Singleplayermodus
Schritt 1:
Zitat:
- In den Editor gehen, eigene Datenbank anlegen (falls nicht sowieso schon vorhanden), neues Item hinzufügen:
Zitat:
Scripts\Entities\Vehicles\Asian_apc
- Speichern
- Editor beenden.
Schritt 2:[quote]
- Crysis Verzeichnis öffnen
- Unter \Game\Libs\EntityArchetypes findet ihr EureDatenbank.xml – diese öffnen
- Ersetzt nun folgendes:
Anmerkung:
Die „ID“ in „alt“ und „neu“ sind von mir fett hinterlegt worden, da ihr diese nicht aus diesem Tutorial übernehmen solltet. Als ID nehmt ihr die ID in eurer Datenbank die für dieses Objekt bereits eingetragen ist!
Schritt 3:
- 1) ::PostInit()
- 2) ::Update (vor m_boat.Update)
- 3) ::ProcessMovement (in die Submerged abfrage an den Anfang)
Zitat:
Update: Da ich darum gebeten wurde ein kleines Video zur veranschaulichung zu erstellen, hier der Link. Das Video wurde anhand einer Beispielmod namens Asian_APC erstellt. http://www.youtube.com/watch?v=5QgFDZhL9nY
So – damit sind wir fertig und ihr solltet einen voll funktionsfähigen APC haben, viel spaß damit. :smoke:
12.09.2008, 13:57
Blackstorm
hab ne frage gibt es eine möglichkeit music in einen mpserver einzubinden.also zum beispiel auf einer ganz bestimmten map ohne das sich die spieler die map runterladen müssen??