Beiträge von HToneill

    Du musst ein neues NavMesh berechnen. Das wird dann dafür sorgen, dass die KI nicht durch eigene Models rennt.

    Das kannst du entweder via Startparameter des Servers oder an der Skript stelle, wo dein eigenes Objekt geladen wird.

    Suche mal nach NavMesh in Kombination mit DayZ

    - Mit Fifthy ist alles geklärt :)


    Wir sind sehr scharf auf eigene Musik aus der Community


    - Ihr könnt notfalls auch andere Formate nehmen als mp3, aber bitte nichts exotisches.

    Mp3 ist uns am liebsten.


    Nochmal ein kleiner Zusatz: Jede Kassette bekommt ein eigenes Cover, dass auch ingame zu sehen ist.

    Wenn ihr wollt, dass eure Kassette ein eigenes Cover hat, nimmt ihr ein Din A4 Blatt und schreibt mit Kugelschreiber oder

    Stift die Bezeichnung eurer Kassette drauf. Keine ewig langen Texte, diese können nicht auf dem Cover abgebildet werden.

    Kleine Skizzen oder Zeichnungen (auch von Hand) sind ebenfalls möglich, sofern diese auf ein Kassettencover passen.

    Digital erstellte Covers können nicht verwendet werden, da diese nicht in das Konzept passen, es sei denn ihr spielt mehrere Lieder in Masterqualität ein (Qualität von der Performance, nicht der Audioqualität) Dann wäre ein digitales Cover denkbar. :)


    Wie ihr unten im Beispiel sehen könnt, sind ist gerademal oben Platz für einen Text. Die meiste Fläche ist Herstellerdesign.


    Beispiel einer Kassette

    Gomorrha

    Im Grunde Soundshader erstellen und ein Timerevent in der 5_mission starten um Sounds an bestimmten Positionen abspielen zu können, unkomplex.

    Problematisch wird es mit der Logik ansich:

    - Wo kommt der Strom her, den diese elektrischen Sirenen brauchen?

    - Wer oder was schaltet die Sirenen ein?


    Der Freakout Effekt wäre garantiert, aber es ist in dem Fall nicht mehr immersiv :)


    Grundlegend wäre sowas wie eine Public Adress System in Tisy geeignet, Batterie rein, Sirene anschalten. Ton Via Lautsprecher.

    Aber das kann man dann auch via Soundboard machen, wenn die reguläre PAS in Tisy existieren würde (weiß ich gar nicht, ob es da eines gibt)

    Autoradio:


    WIP7.png


    Das Autoradio wurde auf Basis eines Youtube Videos gemacht. Es ist ein altes Toyota Radio aus dem Jahr 1985 und gehörte zu den ersten Radios mit einem LCD Screen. Ingame wird man damit sowohl Walkie Talkie Signale empfangen können, als auch Kassetten mit Musik abspielen. Ein Highlight wird hierbei die exakte Tastenbeleuchtung sein, die sich sogar umstellt wenn eine Kassette drin ist. Natürlich kann das das Teil mit einer 12V Batterie und Draht in Betrieb nehmen ^^ aber wollen wir mal nicht so sein, der Generator geht auch.

    Schwerpunkt hier war nicht das Mesh, sondern die Textur und das Skript.

    Knast:


    20200325070611-1.jpg


    20200325070520-1.jpg


    20200325070539-1.jpg


    20200325070549-1.jpg



    Mein erstes DayZ Gebäude, der Knast - Werdet ihr schon bald betreten können (oder auch nicht mehr verlassen können, was an euch liegt ;) )

    Das Mesh wurde in etwa 8h Arbeit gefertigt. Zeitaufwändig wurde es, da es auf dem "Bunker" aus dem Film "Gesprengte Ketten" basiert.

    Die Architektur musste erst mühsam aus dem Film erarbeitet werden. Ich habe die bekannte Größe der Schauspieler, die in diesem Film mitgewirkt haben auf Fanseiten recherchiert. Dann diese Werte auf die Größe der Wände / Decken etc... übertragen.

    Um Zeit zu sparen, habe ich es nur im Grundriss gemacht und Fensterpositionen gespart.

    Die Textur ist mehrschichtig. Teile sind prozedual generiert, andere wiederholen sich. Insgesamt ist doch alles sehr unikat ( Jedoch wurde auch hier um Zeit zu sparen jedes mehrfach verfügbare Modell z.b Tür mit der gleichen Textur belegt um Ressourcen zu sparen)

    Scripting



    Irgendwann braucht man große Datenmengen in einer Struktur. Da Enforce Script das nicht wie c++ bietet, müsst ihr einen Umweg über das Klassenarray gehen. Das sieht in etwa so aus:

    In der HT_Ent Klasse könnt ihr string, integer sonstwas lagern. Optimal ist, dass ihr die gesamte HT_Ent Klasse via json exportieren/importieren könnt und die Struktur eurer Klasse gewahrt bleibt.










    Beispiele für Projekte:





    Destillerie:

    1.png

    Ich arbeite mit 3dsMax und erstelle im ersten Schritt ein sehr grobes Modell um einen Eindruck für Größe, Teile und Bedienbarkeit zu bekommen.

    Soweit es geht versuche ich das erste Objekt mit "Primitives" (Box, Zylinder, Kugel, Kegel....) zu erzeugen. Wo es nicht geht, nehme ich auch mal etwas mehr. Jedes Objekt, dass im Spiel einzeln erstellt werden muss bekommt bereits eine eigene Farbe. Das gibt einen guten ersten Eindruck über die Komplexität der Mod.


    Gleichzeitig schreibe ich einen Kurzen Steckbrief der Mod, der mir als Orientierung dient.

    Beispielsweise:

    Dieser Thread widmet sich noch unausgeführter Theorie und existierender Praxis des DayZ Moddings.

    Dieser Faden soll als Ideenkiste und WIP Thread dienen, in Kombination mit Informationen in Enforce Script

    Wenn hier CAD Renderings gezeigt werden, dann bitte mit KnowHow und Erklärung, damit ein Mehrwert entsteht.


    Eure konstruktiven Kommentare entscheiden, was ihr auf den Servern als nächstes sehen werdet.

    Gleichzeitig suchen wir auch immer Verstärkung für unser Modding Team.


    Aufgabenbereiche sind:

    - PHP & MySql

    - CAD "Modeling"

    - Audio Design

    - Texture Design

    - Scripting


    Durchhaltevermögen ist wichtiger als die Erfahrung, aber eine gewisse Grundkenntnis wäre von Vorteil.

    Wenn auf Virtuosen gestoßen wird, kann ich auch mal den einen oder anderen bezahlten Auftrag vermitteln.





    Tipps zum Enforce Script:


    config.cpp Tipps:


    repairableWithKits:


    Plug Types:


    Allgemeine Tipps:


    Wenn das Modell falsch in der Hand falsch rotiert ist:



    Wenn das Modell nur falsch rotiert im Inventory dargestellt wird:


    Meine aktuellen Object Builder Einstellungen (File => Options) muss beim ersten mal eingestellt werden



    Welche Software:


    - 3ds Max ( 3d Modelling, unglaublich teuer Alternativ: Blender )

    - Substance Painter ( 3d Modelle Texturieren, über Steam billiger)

    - Audacity ( Audio, Freeware )

    - Notepad++ ( Skript Editor, Freeware )

    - DayZ Tools (Steam, Converter, Compiler, Unpacker... kommt mit DayZ)

    (Es gibt zu allen Programmen mindestens eine Alternative)


    Weitere Software:


    Wo man anfängt:


    - Wenn DayZ in Steam installiert ist, ladet man zuerst die DayZ Tools runter. Diese findet man, wenn man in der Steam Bibliothek sich auch die "Werkzeuge" anzeigen lässt.

    - Wenn man die DayZ Tools gestartet hat, muss man zuerst ein "P:" Laufwerk mounten, ACHTUNG: Hast du bereits ein Laufwerk mit der Bezeichnung P:\, so muss dieses Umbenannt werden, sonst kannst du nicht vollständig modden. Im Reiter: "Tools=>Mount P drive"


    DayZ moutet ein virtuelles Laufwerk, sprich die Dateien werden trozdem auf deiner Hauptfestplatte liegen. Sorge für ausreichend Speicherplatz. Alle Gamefiles werden dann über den Reiter: "Tools=>Extract game data" extrahiert.


    Wenn dann eine Mod erstellt werden soll, einfach im P:\ Hauptverzeichnis einen Ordner erstellen z.B: "MeineSuperMod",

    jetzt existiert P:\MeineSuperMod. Und weiter gehts bei den nützlichen Links "Allgemeine Struktur einer MOD".


    Viele andere Mods anschauen. Der Offline Mode bietet dazu die Möglichkeit. Man braucht ein Gefühl was geht, was besonders ist und was eine Standardmodifikation ist. Manche Mods sind unverschlüsselt. Diese kann man ebenfalls zum Lernen, wie eine Mod Struktur aussieht, hinzuziehen.


    Schaut euch den Link Workbench batch Tools, all in one luxus edition an, bevor ihr loslegt, oder wenn ihr schon lange modded. Wird alles beherzigt, spart ihr enorm viel Kummer, enorm viel. Es erlaubt euch praktischerweise ohne das Spiel neu starten zu müssen neuen Code/ Menüs/ Bildassets zu testen, das ist schon enorm viel und spart sehr, sehr viel Zeit. Ach ja, das ganze nicht Offline sondern in einer Server/Client Umgebung. Und alles mit Hotkeys und Batch Autoroutinen zum kopieren. Das ist das neue Herz des DayZ moddings.



    Nützliche Links:



    Coding:


    - Allgemeine Struktur einer MOD

    - Enforce Script Syntax

    - Erklärung von: scope = 0; 1; 2 (Arma Quelle)

    - Wie Masken, Clutter und CfGSurfaces funktionieren

    - Compile Skript, damit gleichzeitig Server & Client ein Modcompile haben

    - DayZ Skript Github Repo

    - DayZ Skript Lystic (etwas veraltet, aber grundlegend nützlich)

    - DayZ DoxyGen thurston


    Mediengestaltung:


    - RVMAT Basics

    - Multi Material RVMAT - Erweitertes Texturieren

    - Emissive Maps (nachts leuchtende Texturen)

    - Offizielles FBX, 3dsMax Character Rig

    - Offizielle Mod Beispiele (Haus mit Türen, Ofen, Leiter...)

    - Einführung in 3dsMax (erstellen von 3d Modellen)

    - 3ds Max, wie man ein einfaches Haus modelliert

    - 3ds Max wie man UV Maps erstellt (Damit Texturen angezeigt werden können)

    - DayZ Object Builder - Wie man Models in der Engine bereitstellt

    - Einführung in Audacity (Audiobearbeitung, OpenSource)

    - Wie man Kleider retexturiert

    - Image Sets in DayZ (sprites, icons, decals)

    - DXT - Das Standard Texturformat für DayZ

    - Weiterführende DXT Optimierung



    Mapping:


    - Grundkurs Mapping

    - Mapframe Eigenschaften



    Tools:


    - Mikeros Tools (die besseren Compile Tools für Mods)

    - Workbench fürs Debugging Einrichten

    - Workbench batch Tools, all in one luxus edition

    - Satmap Maker (Fürs Mapping)

    - Engine/Torque Rechner (wenn man ein Fahrzeug macht)

    - Online Bildeditor

    - Central Economy Editor

    - Community Beispiele für Mods

    - Descript (Voice als Text bearbeiten)


    Erkenntnisse:


    - Bohemia hat für die Entwicklung 3dsMax verwendet. Bohemia Beispiele enthalten oft .MAX Projektdateien.


    - Object Builder ist für das Einlesen von 3dsMax FBX optimiert. So kann man beinahe alles importieren, LOD Stufen, Selections, und wenn man einen TGA Texturworkflow hat, sogar Texturen und Materialien! (Die Mikeros Tools dann automatisch in gamefiles konvertiert )


    - Persistence auf dem Server ist sortiert: _000.BIN - _011.BIN teilen die map von links nach rechts in 12 Stücke. (Cool)

    hier ist eine Karte dazu.


    - DayZ besteht aktuell aus folgenden Engines:

    1. RV engine (altes Erbe)

    2. Enfusion

    3. Enforce (Zukunft)


    - Es können maximal (etwa) 16 Lichtquellen zur gleichen Zeit gesehen werden. Jede weitere Lichtquelle verursacht extremes Flimmern des Bildes.

    D. h es kann schon hunderte Lichtquellen geben, nur ab >16 ist Disko angesagt(laut BI sind es 32 evtl irgendwo server/client dupecode). (HLSL Implementierungsfehler, evtl Grundlegendes Konzeptproblem in Enforce)



    Folgende C++ Libraries nutzt DayZ intern:

    - Havok Physik Engine

    - NVIDIA GameWorks

    - Ogg Vorbis

    - libcurl

    - OpenSSL

    - rapidjson

    - Speex

    - hashlib++

    - Bullet Physics Library (https://pybullet.org/wordpress/)

    - zLib

    - Recast & Detour

    - AGS

    - Data compression by oberhumer.com

    - SSL Zeug von https://www.digicert.com/  (erstellt Verbindung zu: http://sv.symcb.com)

    - Steam API

    - Treasuredata https://www.treasuredata.com/

    - Qt Widgets https://doc.qt.io/qt-5/qtwidgets-index.html (Wenigstens im Workbench)




    Erschaffung-Von-Adam.png


    "Dann hat man man Kommentare in Englisch, dann wieder in Tschechisch. Ich als Entwicker könnte mich da ewig drüber aufregen"


    Google Translate ist dein Bester Freund bei Bohemia Code. xD Aber der Skriptteil von DayZ ist definitiv Wildwuchs, weshalb da immer wieder was kaputt geht. Nachdem ich den Code halbwegs durch habe, ist es auch kein Wunder.

    Mit dem Inherit Problem hast du recht. Lieber was eigenes schreiben, dann hast du später weniger Kummer, wenn Bohemia was modifiziert. Ich mache nur Inherits von Base Klassen, die ich nicht weiter selbst modifizieren kann.

    z.B ItemBase oder Car.


    Weder der Enforce Syntax von Dayz, noch die Tools, Settings oder Workflows sind dokumentiert. Mir scheint, dass die Bohemia Wiki Tutorials eher für neue Mitarbeiter sind, damit die Workforce weniger Last hat und nur mal etwas kleines beisteuern muss.

    Was später das größte Problem sein wird sind Typos oder Limitierungen.

    Ich z.B bin auch mit GLSL/ HLSL gut dabei. DayZ nutzt auch intern HLSL Shader. Leider kann man keine selbst schreiben.

    Damit könnte man beinahe ein 100% Grafik Overhaul realisieren oder schier unglaubliche Funktionen beisteuern wie z.B einen Game Boy fast ohne Prozessorcode (Der aber schon echte Gameboy Roms laden kann) xD - Nen Chip8 habe ich bereits in GLSL realisiert.


    Alle warten sie auf Bohemia.




    Also wenn du Fragen hast, einfach stellen. Wir mussten uns auch gegenseitig auf die Beine helfen.


    MfG,

    HToneill

    "da importierte Modell oft ewig groß sind"

    Da musst du den Skalierungsfaktor beachten. der liegt meistens zwischen 0.01 und 0.03, je nachdem wie du es in der 3d Software definiert hast. Wenn du diese nicht selbst baust, musst du damit spielen. Ansonsten kannst du 1 Unit = 1 Meter als Referenz nehmen.


    "Dies habe ich im Objekt direkt gemacht:"


    Mache es besser mit der obenliegenden Struktur. Oder schau, was das RPT rausgibt. Es scheint mir etwas problematisch in der Anvil class. Wenn es nicht funktioniert, bestätigt mich das.


    OB = Object Builder

    Geometry Lod = LOD Stufe, der im OB zu deinem beiliegenden LOD 0.000 definiert wird. Da musst du quasi eine vereinfachte Hitbox "Würfel", zeichnen und diese der ComponentXX Selection beifügen, damit diese erkannt wird.


    "bin froh das ich die überhaupt einbinden kann."

    Oh da musst du noch viel machen...


    Fire Geometry, Memory, Geometry, View Geometry.... Diese brauchst du noch mindestens, damit es richtig dargestellt wird. Verstehen wie diese erstellt werden ist essenziell.

    Ach ja, und eine Masse in Kg musst du im OB auch definieren.


    LOD 1.000, LOD 2.000 ..... sind im Grunde für die performance Optimierung.



    "deswegen haben ich auch nicht von Barrel_ColorBase abgeleitet."


    Das ist schon richtig gedacht von dir. Du kannst eine eigene Baseclass erstellen. Willst du dass es sich schwer verhält musst du allerdings in 4_world einen Skript erstellen und die PlayerBase Klasse modifizieren. Dann geht es.


    "was ja heavyItem=1 bewirkt"

    Ne, das ist nur eine Sache die du brauchst. (ohne geht es auch, dass es schwer ist. Ich glaube das ist nur zur Wurfdistanz gedacht in relation zur definierten Masse.)


    - PlayerBase modifizeren, dann das Ergebis posten :)



    Oder komme heute Abend ins TS "ts.germandayz.de" dann können wir zusammen Modden und ich kann dir Schritt für Schritt eine Einleitung geben. Ich schätze dich so ein, dass du dich doch recht schnell zurecht finden wirst, sobald du einmal siehst wie es geht.


    Schreiben ist immer so schwer bei visuellem arbeiten.


    Hitbox Problem hier:

    https://community.bistudio.com/wiki/LOD#Geometry


    Rennen mit Schweren Item:

    4_world skript erstellen und folgendes rein:


    LG, HToneill

    Es wird noch etwas dauern mit dem Motorrad. Gerade ich ein ziemliches gehacke in der Moddinggruppe entstanden um die Teile zu realisieren.

    Was fehlt ist:

    - Zu viel Gas => Wheelie

    - Bremsverhalten

    - Fuß abstellen bei Stillstand

    - Kurvenadaption (Neigung geht schon, aber der Fuß muss auch raus, wenn die Kurve zu harsch ist)

    - Fallen bei Kollision (verschiedene Animationen)


    Was schon geht:

    - Eigene Animation für das Lenken

    - Model Rig für das Sitzen/ Aufsteigen

    - Soundverhalten



    Wohlgemerkt: Es gibt absolut keine Grundlage von Bohemia. Deano und Zeroy haben alles nahezu alleine hingehackt.