Thema:
cfgundergroundtriggers.json
Wie immer ein Herzliches Willkommen beim heutigen Thema đ.
Hier befassen wir uns, wie das Thema ja schon vermuten lÀsst,
mit der "cfgundergroundtriggers.json", welche im Grunde dafĂŒr verantwortlich ist,
uns ein wenig an der Nase herumzufĂŒhren und uns glauben lĂ€sst,
wir wÀren in einem Keller, Bergwerk oder eben einem Bunker.
Eben allem, was sich ggf. unter der Erde befindet
oder eben sonst keinerlei Licht von auĂen hereinkommt.
Warum es uns an der Nase herumfĂŒhrt đ€?
Im Prinzip ist es ganz einfach, da im Spiel selber immer eine gewisse Art
von Lichtquelle vorhanden ist, insofern z.B. die Sonne scheint oder es eben Tag ist.
Dadurch ist es leider auch in RĂ€umen, in denen keine Sonne hinkommen wĂŒrde, hell.
Hiermit lÀsst sich dieses System allerdings ein wenig umgehen.
Wir können versuchen das ganze mal auf simple Art und Weise zu erklÀren,
um das Prinzip eines Servers zu verstehen.
Denn es ist nicht so, dass es irgendwo eine direkte Spielwelt gibt,
auf der wir uns tatsÀchlich mit unserem Charakter bewegen
und uns mit unseren Freunden treffen đ€Ł.
TatsĂ€chlich mĂŒssen wir uns damit abfinden, dass wir eigentlich alleine
in Chernarus unterwegs sind und andere Spieler eigentlich eine Art Illusion darstellen.
Jeder kann natĂŒrlich seine eigene Meinung haben, und es sich auf seine Art erklĂ€ren,
aber um meinen Gedanken ein wenig nÀherzubringen, stellen wir uns einfach folgende Situation vor.
Wir wollen mit ein paar Freunden D&D spielen, welche aber leider nicht gleich um die Ecke wohnen.
Man könnte auch Monopoly nehmen, falls nicht jeder weiĂ was D&D ist đ€Ł.
Nun hat in unserer Situation jeder unserer Freunde ein Monopoly zuhause,
was uns zu der Idee fĂŒhrt, dass wir uns in einem Discord oder Team Speak zusammenfinden.
Gesagt, getan, baut jeder unserer Freunde sein Monopoly bei sich zuhause im Keller auf.
Wir stellen allerdings nicht nur eine Figur, sondern auch die Figuren
all unserer Freunde auf unser Spielbrett, und selbes machen natĂŒrlich unsere Freunde.
Einen unserer Freunde ernennen wir zum Dungeon Master oder Spielleiter.
Dieser hat nun leider die Aufgabe, all unsere Bewegungen und Aktionen zu notieren,
was ihn also leider daran hindert tatsĂ€chlich selber zu Spielen đ«.
Er erledigt also Papierkram und schreibt unsere WĂŒrfelzahlen auf,
wann wir bei wem in welchem Hotel ĂŒbernachtet haben,
und wann wir ĂŒber los oder ins GefĂ€ngnis mussten đ .
Wir spielen also jeder fĂŒr sich auf einem eigenen Brett,
bei uns zuhause, wÀhrend eben einer unserer Freunde zuhause sitzt, unser Spiel Koordiniert
und darauf achtet, das wir uns an die Regeln halten.
Er kann uns mitteilen, welcher Spieler was gewĂŒrfelt hat,
womit wir die Figuren unserer Freunde auch bei uns zuhause bewegen können,
falls wir sie mal falsch gesetzt haben und irgendjemanden auffordern,
und 4,5 Millionen zu zahlen, weil er angeblich auf unserer Schlossallee steht đ€Ł.
Unser Spielleiter ist im Grunde unser Server.
Er selber Spielt also selber nicht aktiv
und hat kein direkt eigenes Spielbrett.
Es ist Vielmehr in seinem Kopf und er tauscht mit uns
die von ihm notierten Daten aller anderen Spieler aus,
damit wir eben die Spielfiguren der anderen Spieler
auf unserem Brett bewegen können.
Auch wenn es eventuell ein doofer Vergleich ist, hoffe ich mal,
man kann es ein wenig nachvollziehen und versteht wie ich das ganze meine.
Denn nun können wir uns mal noch folgendes vorstellen.
Unser Spielleiter kann wenn er es möchte auch gern mal die Spielregeln Àndern.
In unserem Fall und um einen Vergleich zur "cfgundergroundtriggers.json" zu ziehen,
legt er nach jedem ĂŒberqueren, des "LOS" Feldes fest, das der Spieler,
der es ĂŒberquert fĂŒr 2 ZĂŒge das Licht im Keller ausmacht đ.
So ist es nur bei dem Spieler Dunkel, welcher "LOS" ĂŒberquert,
wÀhrend es bei allen anderen Hell ist.
SO, viel Text fĂŒr wenig Datei đ€Łđ .
Aber wie gesagt, hoffe ich einfach, dass man das Prinzip somit wenigstens ein wenig verstehen kann
und vor allem, was ich mit der aussage "alleine spielen" meine,
auch wenn es ein merkwĂŒrdiges Beispiel ist đ .
Aber kommen wir nun zum eigentlich wichtigen Teil, nÀmlich unserer "cfgundergroundtriggers.json".
Hier fangen wir wieder natĂŒrlich auch nochmal mit der Grunddatei an.
"Triggers":
[
{
"Position": [ 749.738708, 533.460144, 1228.527954],
"Orientation": [ 0, 0, 0 ],
"Size": [ 15, 5.6, 10.8 ],
"EyeAccommodation": 1,
"Breadcrumbs": [],
"InterpolationSpeed": 1
},
{
"Position": [ 735.0, 533.7, 1229.1 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 15, 5.6, 10.8 ],
"EyeAccommodation": 0,
"Breadcrumbs":
[
{
"Position": [ 741.294556, 531.522729, 1227.548218 ],
"EyeAccommodation": 1,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 741.273071, 531.522729, 1229.310547 ],
"EyeAccommodation": 1,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 739.904,531.6,1230.51 ],
"EyeAccommodation": 0.7,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 736.021,531.597,1228.22 ],
"EyeAccommodation": 0.7,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 734.525,531.597,1228.18 ],
"EyeAccommodation": 0.7,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 739.852,531.605,1233.05 ],
"EyeAccommodation": 0.4,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 736.805,531.665,1233.17 ],
"EyeAccommodation": 0.2,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 730.858,531.665,1233.18 ],
"EyeAccommodation": 0.0,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 730.748,531.593,1228.88 ],
"EyeAccommodation": 0.0,
"UseRaycast": 1,
"Radius": -1
}
]
},
{
"Position": [ 701.8, 535.1, 1184.5 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 55.6, 8.6, 104.6 ],
"EyeAccommodation": 0,
"Breadcrumbs": []
},
{
"Position": [ 626.15, 504.95, 1143.3 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 101.1, 71, 57.4 ],
"EyeAccommodation": 0,
"Breadcrumbs": []
},
{
"Position": [ 605.05, 562.5, 1143.45 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 33.7, 45, 34.9 ],
"EyeAccommodation": 0,
"Breadcrumbs": []
},
{
"Position": [ 593.7, 588.75, 1131.8 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 11, 22.3, 11.6 ],
"EyeAccommodation": 0,
"Breadcrumbs": []
},
{
"Position": [ 584.65, 611, 1131.1 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 6, 8, 7.6 ],
"EyeAccommodation": 1,
"Breadcrumbs": []
},
{
"Position": [ 592.0, 606.5, 1131.0 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 8.7, 16, 7.8 ],
"EyeAccommodation": 0,
"Breadcrumbs":
[
{
"Position": [ 588.88, 612.03, 1133.67 ],
"EyeAccommodation": 0.9,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 588.92, 612.03, 1128.43 ],
"EyeAccommodation": 0.7,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 591.15, 612.03, 1128.47 ],
"EyeAccommodation": 0.5,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 591.223, 612.035, 1133.68 ],
"EyeAccommodation": 0.34,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 595.591,612.032,1133.36 ],
"EyeAccommodation": 0.45,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 595.166,609.58,1128.22 ],
"EyeAccommodation": 0.3,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 593.22, 609.57, 1128.41 ],
"EyeAccommodation": 0.2,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 592.94,607.02,1132.95 ],
"EyeAccommodation": 0.1,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 595.434,607.02,1132.98 ],
"EyeAccommodation": 0.075,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 595.496,604.55,1127.97 ],
"EyeAccommodation": 0.055,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 592.213,601.996,1133.03 ],
"EyeAccommodation": 0.025,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 595.375,599.529,1127.99 ],
"EyeAccommodation": 0.0,
"UseRaycast": 0,
"Radius": -1
}
]
}
]
Alles anzeigen
Jetzt mĂŒssen wir uns das Ganze in 3 teilen vorstellen.
Es gibt Ă€uĂere so wie innere "Trigger" und zusĂ€tzliche "Krumen",
die sich zwischen den Bereichen befinden.
Man könnte sich die "Krumen" als eine Art Dimmschalter vorstellen,
den wir nach jedem ĂŒberqueren in der Helligkeit einstellen.
Fangen wir aber erst mal wieder mit den Einstellungen an.
"Position": [ 0, 0, 0] = Position des "Trigger" mit Koordinaten
Hierbei handelt es sich wie bei allen anderen um Koordinaten,
welche wieder einen Mittelpunkt darstellen.
Dabei gilt hier wieder die Reihenfolge "[ x, z, y ]".
"x" = X Achse (Horizontal von links nach rechts)
"z" = Z Achse (Höhe zum 0. Punkt und der WasseroberflÀche)
"y" = Y Achse (Vertikal von Unten nach Oben)
"Orientation": [ 0, 0, 0 ] = Positionsanpassung / Orientierung / Ausrichtung
Wie bei anderen Objekten wird oder können wir unseren "Trigger" oder "Bereich" anpassen.
Dazu haben wir wieder die Möglichkeit es zu drehen, zu neigen oder zu kippen,
was in diesem Fall die Reihenfolge "[ y, p, r ]" festlegt
und wir ggf. auch noch aus der "cfggameplay.json Extras: objectSpawnersArr" kennen.
y = Yaw = Drehung um die eigene Achse in °
p = Pitch = Neigung nach links oder rechts in °
r = Roll = Kippen nach vorn oder hinten in °
"Size": [ 0, 0, 0 ] = "Trigger" oder "Bereich" GröĂe in Koordinaten
Hier mĂŒssen wir wissen und beachten, dass es sich bei diesen "Bereichen" um ein Viereck in jeder Form handelt.
Wir legen hier also eine Art Raum fest, in dem wir uns am Ende als Spieler befinden
und uns eben die Dunkelheit vortĂ€uscht, als wĂŒrde man eine dicke Decke ĂŒber einen Tisch legen
unter dem wir uns befinden.
Wie auch bei der "Position" gilt hier "[ x, z, y ]" als Ausrichtung und als Mittelpunkt.
Das bedeutet also, dass bei einer GröĂe von z.B. 10 m LĂ€nge unser Raum vom Mittelpunkt aus
5 m in die entsprechende Richtung gerĂŒckt wird.
Ein wenig weiter unten kommen wir zu einer kleinen visuellen ErklĂ€rung đ.
"EyeAccommodation" = Dunkelheit als Wert in "%"
Hiermit können wir die Dunkelheit bestimmen, bei der in "%" die Helligkeit bestimmt wird.
Dabei gilt "1" als "100 %", "0" als eben "0 %" und beispielsweise "0.5" wÀren "50 %".
"Breadcrumbs": [] = Krumen / ĂbergĂ€nge (Checkpoints) fĂŒr Zwischenstufen
Dabei handelt es sich um eine Art Checkpoints, die wir als Spieler ablaufen
um am Ende den Tiefsten und dunkelsten Punkt dieses Raumes oder Bereiches zu erreichen.
Die Krumen oder Checkpoints liegen hier immer in diesem angelegten Raum
und sind kein eigener Raum. Auch hier kommen wir etwas weiter unten zu einer kurzen ErklĂ€rung đ.
"InterpolationSpeed" = Ăbergangsgeschwindigkeit als Wert in "sec"
Hier können wir in mit einem Wert in Sekunden bestimmen, wie schnell ein Ăbergang zwischen "Triggern" vollzogen werden soll.
Es wird also beispielsweise bei einem Wert von "5" ein Ăbergang von 5 Sekunden stattfinden,
Was allerdings meist unnötig ist, da die ĂbergĂ€nge schon mit den "Breadcrumbs" festlegen.
Ich bin mir zwar unsicher, bin aber der Meinung, dass bei einer Nichtangabe dieses Wertes immer der Wert "1" gilt.
Nun kommen wir noch zu 2 Werten, welche nur in den "Breadcrumbs" verwendet werden.
"UseRaycast" = "Raycasting" Verwendung
Hierbei wird mit "1" / "true" oder mit "0" / "false" die Nutzung von "Raycasting" aktiviert.
Ich bin leider immer noch kein Programmierer, was es mir also etwas schwerer macht,
das ganze zu erklĂ€ren đ€Łđ .
Daher wĂŒrde ich jetzt mal auf die schnelle auf einen "Wikipedia" Eintrag verweisen,
damit jeder, der daran Interesse hat, eventuell selber nochmal genauer nachlesen kann.
"Radius" = Entfernung in "m" fĂŒr Anpassung / Beeinflussung durch den Krumen
Hiermit kann eine Entfernung in Metern angegeben werden, inwieweit der Krumen oder "Checkpoint"
die angegebene Licht- oder Sichtanpassung beeinflussen kann.
Dabei gilt der Wert "-1" als eine Einstellung, bei der ein Standardwert genutzt wird.
Ich hab da leider auch noch keine genaue Erfahrung, was hier wie wo oder wann angepasst wird
und empfehle daher entweder wie in der Vanilla Einstellung alles auf "-1" zu lassen
oder ggf. einfach selber ausprobieren.
Versuch macht eben klug đđ.
Nun aber zum Allgemeinen, denn beim Aufbau eines "Unterirdischen" Bereiches,
und nein er muss nicht zwingend unter der Erde sein đ , ist es wichtig eine Art Startpunkt zu haben.
Dieser sollte in der Regel schon vor dem Eintritt in beispielsweise einen Bunker vorhanden sein.
In der Vanilla Livonia Variante haben wir dafĂŒr den folgenden ersten Trigger.
{
"Position": [ 749.738708, 533.460144, 1228.527954],
"Orientation": [ 0, 0, 0 ],
"Size": [ 15, 5.6, 10.8 ],
"EyeAccommodation": 1,
"Breadcrumbs": [],
"InterpolationSpeed": 1
},
Dieser hat die Koordinaten vor der BunkertĂŒr und die entsprechende GröĂe,
um zu verhindern, dass wir als Spieler an diesem Punkt vorbeilaufen können.
Hier auch gleich ein Bildausschnitt mit der Position des "Triggers".
ZusÀtzlich haben wir die Einstellung "EyeAccommodation" mit dem Wert "1",
was dafĂŒr sorgt, dass wir keinen Unterschied zur eigentlichen Tageszeit haben,
da quasi die Einstellung fĂŒr unseren "Lichtschalter" deaktiviert ist.
Dies ist also unser Startpunkt fĂŒr alle darauffolgenden "Trigger".
Als NĂ€chstes kommt nun der erste Raum und somit der "eigentlich" erste Bereich, der betreten wird.
{
"Position": [ 735.0, 533.7, 1229.1 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 15, 5.6, 10.8 ],
"EyeAccommodation": 0,
"Breadcrumbs":
[
Abgesehen von Koordinaten und GröĂe, welche nun so angepasst sind, dass beide Bereiche aneinandergrenzen,
haben wir hier wieder die Einstellung "EyeAccommodation", welche mit dem Wert "0" versehen ist.
Dadurch ist dieser Bereich eigentlich in vollkommene Dunkelheit gehĂŒllt, was bedeuten wĂŒrde,
wir wĂŒrden innerhalb einer Sekunde in einem Raum in vollkommener Dunkelheit stehen.
Hinzu kommt, dass wir ja nun wissen, dass bei uns, auf unserem Bildschirm,
eigentlich die Sonne verschwindet, was also auch bedeutet,
dass es auch drauĂen vollkommen dunkel wĂ€re.
Nun könnte man ja behaupten:
"đ€ Es gibt doch die Einstellung "InterpolationSpeed" đ€,
womit ich diesen Ăbergang verzögern kann."
So einfach ist das in der Praxis aber leider nicht đ , denn das einzige was wir damit erreichen,
wÀre eine Verzögerung aber keine Beseitigung des Problems.
Man wĂŒrde also einen Raum betreten und wĂ€hrend wir im TĂŒrrahmen stehen bleiben,
macht einfach jemand langsam das Licht aus und gleichzeitig wĂŒrde jemand die Sonne verschwinden lassen,
wĂ€hrend es bei unserem Kumpel, der genau hinter uns steht, noch Taghell ist đ€Ł.
Daher kommen wir auch gleich zu den oben erwÀhnten Krumen / Breadcrumbs,
welcher sich in unserem eigentlichen Bereich befindet.
DafĂŒr nehmen wir uns einfach auf die schnelle nochmal das komplette Beispiel.
{
"Position": [ 735.0, 533.7, 1229.1 ],
"Orientation": [ 0, 0, 0 ],
"Size": [ 15, 5.6, 10.8 ],
"EyeAccommodation": 0,
"Breadcrumbs":
[
{
"Position": [ 741.294556, 531.522729, 1227.548218 ],
"EyeAccommodation": 1,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 741.273071, 531.522729, 1229.310547 ],
"EyeAccommodation": 1,
"UseRaycast": 0,
"Radius": -1
},
{
"Position": [ 739.904,531.6,1230.51 ],
"EyeAccommodation": 0.7,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 736.021,531.597,1228.22 ],
"EyeAccommodation": 0.7,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 734.525,531.597,1228.18 ],
"EyeAccommodation": 0.7,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 739.852,531.605,1233.05 ],
"EyeAccommodation": 0.4,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 736.805,531.665,1233.17 ],
"EyeAccommodation": 0.2,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 730.858,531.665,1233.18 ],
"EyeAccommodation": 0.0,
"UseRaycast": 1,
"Radius": -1
},
{
"Position": [ 730.748,531.593,1228.88 ],
"EyeAccommodation": 0.0,
"UseRaycast": 1,
"Radius": -1
}
]
},
Alles anzeigen
Auch hierfĂŒr und um den erwĂ€hnten Raum mit den enthaltenen Krumen darzustellen,
Gibt es mal eine kleine Matheaufgabe. Aber dieses Mal ist sie relativ simpel đ .
DafĂŒr nehmen wir als Erstes unsere Koordinate des Raumes "[ 735.0, 533.7, 1229.1 ]".
Als NĂ€chstes können wir jetzt das Wissen anwenden, welches wir ĂŒber den Mittelpunkt
und die "Size" haben, um eben die GröĂe des Raumes ĂŒber Koordinaten bestimmen zu können.
DafĂŒr können wir die "Size" Werte "[ 15, 5.6, 10.8 ]" nehmen und diese erst einmal halbieren.
Somit ergeben sich die Werte 7,5, 2,8 und 5,4. Jeweils vom Mittelpunkt aus in die entsprechende Richtung.
Jetzt können wir unsere Koordinaten des Raumes und seinem Mittelpunkt mit unseren Werten berechnen,
in dem wir zum jeweiligen Wert + und - unserer halben "Size" Werte rechnen.
Klingt schlimmer als es sich anhört đ .
Aber einfach gesagt rechnet man z.B. 735.0 + 7,5 und einmal 735.0 - 7,5 usw.
Um das Ganze auch schnell hinter uns zu Bringen, machen wir also folgendes.
Mittelpunkt = Position 735.0, 533.7, 1229.1
735,0 - 7,5 = 727,5
735,0 + 7,5 = 742,5
533,7 - 2,8 = 530,9
533,7 + 2,8 = 536,5
1229,1 - 5,4 = 1223,7
1229,1 + 5,4 = 1234,5
(Zum Rechnen mit 'nem Taschenrechner am besten immer "." durch "," ersetzen, der kommt sonst damit nicht zurecht
und ich werde, damit man nicht durcheinander kommt "." mit "," ersetzen. Es sieht halt auch besser aus đ )
Aber wozu das ganze nun gut ist, schauen wir uns mit den Positionen jedes Krumen / Breadcrumbs an.
Es sollte sich jede Position immer zwischen den Werten befinden, die wir ausgerechnet haben.
Als Beispiel nehmen wir uns einfach die ersten 3 Positionen, den Rest kann jeder fĂŒr sich nachschauen.
Damit lĂ€sst sich aber noch einmal ĂŒberprĂŒfen, dass sich unsere Krumen auch wirklich in dem Bereich befinden,
fĂŒr den wir die Krumen auch setzen.
SchlieĂlich können wir auch keinen Lichtschalter auĂerhalb unserer Wohnung anbringen,
anschlieĂend die TĂŒr zu machen und versuchen ihn zu betĂ€tigen đ€Ł.
So in Etwa sollte man sich dies eben auch mit den Krumen fĂŒr einen Bereich vorstellen.
Aber wie gesagt, hier nochmal zum ĂberprĂŒfen.
Ich setze jetzt nur schnell die Werte der einzelnen Positionen zwischen die berechneten Koordinaten
und hoffe, man versteht somit einigermaĂen was gemeint ist đ .
Krumen Nummer 1
727,5
741,294556
742,5
530,9
531,522729
536,5
1223,7
1227,548218
1234,5
Krumen Nummer 2
727,5
741,273071
742,5
530,9
531,522729
536,5
1223,7
1229,310547
1234,5
Krumen Nummer 3
727,5
739,904
742,5
530,9
531,6
536,5
1223,7
1230,51
1234,5
Nun noch zum letzten Teil, nÀmlich dem Aufbau eines "Untergrund" Areals.
DafĂŒr könnte man vorrangig erst mal ein paar Regeln und Grundlagen festhalten,
die ein wenig Beachtung bekommen sollten.
Darunter ZĂ€hlen, dass wie schon erwĂ€hnt, immer ein Startpunkt auĂerhalb angelegt werden sollte oder muss.
Diesen nennt man unter anderem auch "Outer Trigger" oder "AuĂen Trigger". AnschlieĂend und der VollstĂ€ndigkeit halber
erwĂ€hnen wir am besten auch gleich, dass ein Areal mit Krumen ein "Transitional" / "Ăbergang" ist
und alle nachfolgenden im inneren eben die "Inner Trigger" sind oder eben "Innere Trigger" đ .
Als NĂ€chstes und auch da wie schon erwĂ€hnt, sollten ĂbergĂ€nge / Krumen innerhalb eines Trigger-Bereiches liegen.
Wie auch schon erwĂ€hnt, sollte man einen Ăbergang nicht einfach nur ĂŒber eine Ăbergangsgeschwindigkeit
sondern mit den erwÀhnten Krumen erstellen.
Als NĂ€chstes sollten wir wissen, das wir keine doppelten Krumen und ĂbergĂ€nge anlegen mĂŒssen,
da sie in beide Richtungen funktionieren.
Die Krumen selber sollten am besten so Platziert werden, das es Optisch passt
und wir z.B. nicht auf eine Wand zu laufen, es einfach dunkler wird,
obwohl von hinten noch die Sonne scheint.
Am besten also ĂŒber enge Gassen und Ecken platzieren um schöne ĂbergĂ€nge zu schaffen
und viel Experimentieren đ.
Ein Areal welches sich in einem simulierten Untergrund befindet und einen Ein- und einen Ausgang haben,
sollten entsprechend mit Krumen versehen werden.
đ€ mehr ist, es glaube ich auch nicht, abgesehen davon, dass man natĂŒrlich seine Konstruktion
immer nochmal ĂŒberprĂŒfen und nach Fehlern Ausschau halten sollte.
Jetzt kommen wir aber zu unserem kleinen Beispiel des Aufbaus.
DafĂŒr hab ich einen Tunnel mit einer Draufsicht in verschiedenen Abschnitten angelegt.
Der Tunnel selbst, wie Areale und ĂbergĂ€nge angelegt werden können
und sich unsere Dunkelheit verhalten kann.
Es handelt sich nur um ein grobes Beispiel, aber hier wÀre erst mal der Aufbau des Tunnels selbst.
Er hat 2 Fahrtrichtungen, davon jede getrennt, aber durch einen Gang miteinander verbunden
und an jedem Ein- und Ausgang gibt es einen Notausgang.
Die Tunnel selber sind nicht von auĂen zugĂ€nglich
genauso wenig wie 2 der NotausgÀnge.
Wir haben hier also einen Ein- und einen Ausgang so wie die Gestrichelte Linie,
welche darstellen soll, wie wir durch diesen Tunnel gelangen können.
Im nÀchsten Bild sehen wir, wie die Bereiche beispielsweise angeordnet werden können.
Dabei sind zum einen die Werte und Angaben fĂŒr die "EyeAccommodation" und die "Breadcrumbs" Markiert.
Nicht Perfekt und auch der AuĂenbereich fehlen, aber ich hoffe da kann man drĂŒber hinwegsehen,
es soll ja nur eine grobe Darstellung sein đ .
Die "Breadcrumbs" sind hierbei jeweils in den GĂ€ngen Bzw. den TĂŒren, wenn man sich diese ein wenig hinzudenkt.
Der "Trigger" oder Bereich soll hier ein wenig Kennzeichnen, das sich dieser Zwar ĂŒber alle drei RĂ€ume erstreckt,
dieser aber quasi in oder durch die einzelnen "Breadcrumbs" getrennt ist.
Als NĂ€chstes noch einmal das Gleiche, aber nur die "Trigger" ohne Tunnel.
Soll nur noch einmal ein wenig die Einteilung darstellen đ .
Als Letztes haben wir nun noch unsere Tunnel, welche eben in Dunkelheit und ihre ĂbergĂ€nge eingeteilt sind.
Hier geht es mehr oder weniger nur nochmal grob um die Veranschaulichung der Dunkelheit im Inneren
und wie sich die ĂbergĂ€nge auf die Helligkeit in den RĂ€umen auswirkt,
trotz dessen, dass wir bei der Einstellung "EyeAccommodation" den Wert "0" gesetzt haben.
So, aus die Maus, jetzt wird es Duster đ€Ł.
Nein, es sollte es eigentlich auch mit diesem Thema gewesen sein.
Ich hoffe wie immer ich habe nichts vergessen,
bin fĂŒr Ănderungs- oder VerbesserungsvorschlĂ€ge immer offen,
Freue mich, euch beim nÀchsten Thema wieder an Bord zu haben,
bedanke mich wieder fĂŒr Zeit, Interesse, Geduld
und eure Aufmerksamkeit đ .
Bis zum NĂ€chsten Thema đđ