HToneill's Mod Thread - Theorie und Praxis

  • 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


  • 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:

    7 Mal editiert, zuletzt von HToneill ()

  • 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)

  • 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.

    2 Mal editiert, zuletzt von HToneill ()

  • Ich hatte vor einiger zeit mal die idee random in einigen mlitärzonen geräusche random.abspielen zu lassen. Leider hab ich keinen gefunden der sich damit auskennt. Ich pack hier mal die links zu den soundeffekten rein:


    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Ich glaube das macht ganz schön panik wenn die umgebungsgeräusche durch sowas überdeckt werden und man kaum noch was anderes hört.


    Falls da jemand weiss wie man sowas macht, wärs echt cool.

  • 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)

  • 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)

    Es gibt eines im Untergrundbunker :)

    "Denn wo der Glaube tausend Jahre gesessen hat, eben da sitzt jetzt der Zweifel."

  • die programmierpraxis sind für mich nur böhmische dörfer... ich hatte dafür nur die idee. Das muss ein anderer machen.

    ...und natürlich hab ich mir auch gedanken über die logik gemacht: mein ansatz war natürlich dass man nicht weiss, wer oder was diese sirenen auslöst. Es könnte ein selbstauslöser sein, der ehemalige wachmannschaften alarmieren soll. Solche militäranlagen verfügen ja nicht selten über notstromgeneratoren. Vielleicht werden die autark angetrieben (solar oder irgendsowas). Es könnte auch ein findiger einsiedler sein, crazy aber harmlos, der den alarm nutzt um eindringlinge zu verscheuchen. Oder gibt es irgendwo unterirdische bunkeranlagen in denen eine restregierung sitzt, oder ist irgendwo ein atommeiler expldoert und die sirenen gehen automatisch los... die szenarien kann man unendlich weiter fantasieren.


    Mir gehts um das gefühl dass mir der ar*** auf grundeis gehen würde wenn ich sowas höre. Gerade an so exponierten orten wie dem NWA oder tisy. Das kann natürlich auch als warnung für andere gelten dass spieler am NWA sind. Dann wärs natürlich nicht random...


    Gedanken über Gedanken...

  • Franks Milchreis


    Eine einfache Mod um uralte Vanilla Items zum Craften zu nutzen. Der Grund für die Mod ist eine Beschwerde von Frank, dass es viele Vanilla Items gibt, die prinzipiell kombinierbar sind, jedoch von BI Seite nicht mit einem Rezept versehen sind.

    Balance mäßig kann zubereitetes essen nicht mehr Energie enthalten wie die Zutaten selbst.



    Mod beinhaltet:

    - Milchflasche

    - Milchreis

    - Milchreis mit Marmelade


    Besonderheiten:

    - Eigene neue Flüssigkeit: Milch (Das war gar nicht mal so einfach...)

    - Spielemenüs Zeigen richtige Flüssigkeit an

    - Rezepte können jetzt mit einem Flüssigkeitfilter verwendet werden (Ermöglicht Cocktails oder weitere komplexe Rezepte)

    - Milch kann in andere Container umgefüllt werden



    Rezepte:

    - Wasserflasche (100% Wasser) + Milchpulver (75%) = 100% Milchflasche
    - Flasche(100% Milch) + Reis (50%) = Milchreis

    - Milchreis + Marmelade = Milchreis mit Erdbeeren



    Was wahrscheinlich nicht gehen wird:

    - Verderbliche Milch



    milchreistisch.png



    Durch das Crafting von Milchreis kann man Zutaten komprimieren.


    Zum Beispiel eine Flasche Wasser hat 1x3 Slots. Milchpulver 1x2 Slots, insgesamt 1x5 Slots.

    Wenn man Milch craftet, bekommt ihr eine Flasche mit dem Wasserwert von Wasser

    und dem Nahrungswert von dem entsprechenden Teil Milchpulver für ebenfalls nur 1x3 Slots
    Das gleiche gilt dann bei dem Milchreis.


    Diese Mod ermöglicht uns viele andere Rezepte. Ich denke da an die Tomaten- und Kürbissuppe.

  • Das ist eine schöne Mod Idee. Bin gespannt, ob wir das auch mal im GDZ Mod sehen werden. :thumbup:


    Ist denn dieser Error:

    mit der Implementierung eine neuen Flüsssigkeit theoretisch zu beheben?


    Flüssigkeiten und ungenutze Items etwas weiter gedacht: Es gibt ja auch einen Oil Kanister und Bremsflüssigkeit als unbenutze Items in den Files. Könnte man damit man nun auch einen Mod bauen, der universell bei Autos die Bremsflüssigkeit und Motoröl als Vorraussetzung hinzufügt?

  • Je nachdem, ob die Medical Attention Mod frei ist oder nicht, kann man den Fehler mit der Sprize beheben.


    Flüssigkeiten am Auto benötigen Einträge in der p3d selbst, das wäre nicht umzusetzen, solange man nicht den verschlüsselten p3ds

    Einträge hinzufügen kann. Bis zur Baseclass der Fahrzeuge kann man kommen, weiter nicht.

  • Ich bin gerade dabei für jedes Item ein Kochmodell zu erstellen:

    Jetzt gibt es mehrere Zustände, die es erlauben die Items zu verfeinern. Roh, Verbrannt und Gekocht sich offensichtlich,

    aber es gibt bereits ein trocken- und verrottet- Zustand und hat somit auf dem Server eine Vergänglichkeit.


    roh.png


    Dieses System erlaubt eine zweite Kochstufe für die Zutaten. Das gibt vor allem bei den Suppen sinn.

    Auch eröffnet es beinahe eine neue Sparte: Die Vanilla Dosen bspw, die Spaghetti auf den Teller zu leeren

    und zu kochen.

    Leider kann ich es nicht im Vanilla Topf kochen lassen und muss den Umweg über die Teller gehen.

    Einmal editiert, zuletzt von HToneill ()

  • food.png


    - Neues LOD Level hinzugefügt für alle 3d Modelle.

    Das ermöglicht einen runden Teller, wenn man direkt dran steht. LOD Stufen werden verwendet um

    die Performance im Spiel zu steigern. Ich versuche immer mindestens zwei LOD Stufen zu erstellen.


    Alle Gerichte sind auf dem Screenshot im Roh- Zustand und daher arm an Details, bis auf die Cornflakes. Die sind im Roh Zustand besser zu geniessen.

    Einmal editiert, zuletzt von HToneill ()

  • Neues Feature für die Rezepte:

    - Flüssigkeitstyp für das Resultat setzen


    Das vereinfacht die Geschichte in dem Punkt, dass ich jetzt keine seperate Milchflasche mehr benötige, die mit Milch spawnt. Jetzt kann man Milch mit jedem Behältnis erstellen. Der Rezeptbaum wird dadurch vielfältiger und die Herstellung von Milch erfoldert keine Plastik Flasche mehr. Auch die Folgeprodukte können dann erstellt werden.

  • tellerregal2.png

    Der Vollständigkeit halber ein Tellerschrank gebaut, der auch die Bierkrüge, die bisher keine Erwähnung gefunden haben, haltet.

    Es wird warscheinlich ein reguläres Rezept werden wie Nägel und Bretter kombinieren um das Teil herzustellen.

    Es fehlen sowieso noch gute storage Items, die keine Waffen tragen können und wenn ihr keine Krüge habt,

    könnt ihr kein Bier trinken. :P


    Aktuell kämpfe ich mit einem Grundproblem, ob ein Teller ein eigenes Item sein soll,sodass die Rezepte nur funktionieren, wenn man diesen Teller hat. Wenn ich das mit dem notwendigen Teller mache, wird ein Tellerschrank benötigt um das Besteck zu lagern.

  • Es fehlen sowieso noch gute storage Items, die keine Waffen tragen können

    Stimme ich dir absolut zu! Und sehr geiler Schrank...so schön rustikal, hätt ich gern selbst in meiner Wohnung ^^


    Demnächst brauchen wir dann aber noch unterschiedlich gestaltete Teller und Krüge, zum Sammeln. Gotta catch 'em all! Oder falls jemand ein komplettes Service zusammen suchen will...oh, die Möglichkeiten sind unendlich :love: