Collision Detection für große Gegenstände

  • Hiho,


    ich habe am WE mal wieder etwas gebastelt und musste feststellen, dass irgendwie die Collision Detection bei eigenen Gegenständen fehlt. Explizit meine ich hier größere Gegenstände, in meinem Fall ein Amboss. Aktuell kann ich einfach durch ihn hindurch laufen und wenn ich ihn per Aktion platzieren möchte, landet er zur Hälfte im Boden. Offenbar fehlt hier irgendwo eine Abfrage oder Definition, vielleicht muss das Objekt auch nur korrekt mit dem Server synchronisiert werden. Im gewünschten Fall müsste ich dagegen laufen und drauf klettern können.


    Des weiteren wird das Objekt nicht als "schweres Objekt" in der Hand dargestellt, obwohl ich es als solches definiert habe. Ich kann damit einfach rennen.


    Hat da jemand Erfahrung mit?

  • Ich habe jetzt mal wieder etwas getüftelt, schaffe es aber nicht heraus zu finden, an welcher Einstellung es liegt, dass dieses Objekt keine Hitbox besitzt.


    Objekt nach Spawn: https://www.directupload.net/file/d/5709/ge6inyhs_jpg.htm

    Objekt nach Platzierung: https://www.directupload.net/file/d/5709/xw2x4r27_jpg.htm

    Objekt aus Sicht des Inventares: https://www.directupload.net/file/d/5709/5ssuhvg2_jpg.htm


    Config:

    Ich sehe das Objekt als solches, kann aber nicht direkt damit interagieren. Durch die fehlende Hitbox kann man auch einfach durchlaufen. Wenn ich es platziere versinkt es außerdem zum Teil im Boden. Als Grundlage habe ich den Generator genommen, später die Fässer.


    Das ist irgendwie richtig nervig?(

  • Hitbox Problem hier:

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


    Rennen mit Schweren Item:

    4_world skript erstellen und folgendes rein:


    LG, HToneill

  • Hast du im OB eine Geometry lod gesetzt? Damit der Gegenstand nicht im Boden verschwindet gehört in die Geometry autocenter=0.

    Wenn du sagen möchtest das es ein schwerer Gegenstand ist wie zum Beispiel das Fass, dann schreibe deine Config basierend auf dem Fass.

    Class Barrel_ColorBase;

    Class Amboss: Barrel_ColorBase


    Möchtest du das nicht dann musst du ein Script für dein Amboss schreiben.


    Ich weiß nicht genau was du mit Hitbox meinst.

    Eventuell benötigst du hier eine Fire Geometry bzw View Geometry

  • Gut alles was 3D-Modelle bearbeiten angeht, da bin ich raus. Habe so schon Probleme mit dem Object Builder, da importierte Modell oft ewig groß sind, weswegen ich sie skalieren muss...

    Rennen mit Schweren Item:

    4_world skript erstellen und folgendes rein:

    Dies habe ich im Objekt direkt gemacht:


    Hitbox ist die Größe, wo man z.B. gegen ein Objekt läuft, wo man geschützt ist, etc. Beim Fass ist dies z.B. deutlich, man kann nicht durch laufen und drauf klettern. Ansonsten habe ich schon in anderen Beiträgen keine Ahnung was mit "OB" und "Geometry lod" gemeint ist, 3D-Modelle sind nicht so mein Gebiet, bin froh das ich die überhaupt einbinden kann.


    Der Amboss ist ja kein Objekt vom Typ Cargo, deswegen haben ich auch nicht von Barrel_ColorBase abgeleitet. Es muss ja irgendwo eine Eigenschaft geben, welche jetzt sagt, du bist schwer z.B. (was ja heavyItem=1 bewirkt).

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


  • - PlayerBase modifizeren, dann das Ergebis posten :)

    Gut es in die PlayerBase zu verschieben hat den Vorteil, dass es übersichtlicher wird und man Redunanzen vermeidet aber ansonsten ändert dies nix am Objekt. Hatte hier noch den falschen Namen drinnen btw, ist mir mit aufgefallen.


    Ja müssen mal schauen, es ist schwer in solche Tools rein zu kommen wenn man a) keine Ahnung von dem Gebiet an sich hat und b) keine ordentlichen Tutorials existieren welche genau auf dieses Thema eingehen.


    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.

    Dies kann man gerne machen, es muss nur irgendwie hier ersichtlich werden was passiert ist, es wird sicher auch andere mit dem Problem geben. Man muss es dokumentieren :)


    Nachtrag:

    Ich habe mir jetzt ein Tutorial von Arma3 angesehen, ist ja im Prinzip das selbe. Man muss erstmal wissen was es für Layer gibt und wozu diese gut sind. Macht natürlich irgendwo Sinn das ganze. Zumindest habe ich jetzt die Hitbox, kann damit interagieren und es gibt eine Collision Detection :) Funktioniert noch nicht perfekt aber ein Großteil der Probleme sind damit behoben!

    Einmal editiert, zuletzt von JackHusky ()

  • Aber bedenke bitte das es zwischen Arma 3 und DayZ SA Unterschiede gibt. Nicht alle LODs sind auch in DayZ SA notwendig.

    Geometry Phys ist in SA nicht notwendig. Wird komplett von der Geometry Lod übernommen. Und das ist auch in vielen anderen Bereichen der Fall.

    Grundlegend kannst du alles bei Bohemia nachlesen. Wenn es wissensdefizite gibt.

    Natürlich kannst du auch deine Gegenstände selber als neuen Gegenstand definieren. Aber das macht kaum jemand weil es einfach zu aufwendig ist alles dafür zu scripten. Besonders bei größeren Projekten.

    Also deine Objekte auf der Base Class anderer schon basierenden Objekten abzuwickeln ist keine Schande und spart dir ein wenig Zeit.


    Viel Erfolg mit deinen Objekten.

  • Natürlich kannst du auch deine Gegenstände selber als neuen Gegenstand definieren. Aber das macht kaum jemand weil es einfach zu aufwendig ist alles dafür zu scripten. Besonders bei größeren Projekten.

    Also deine Objekte auf der Base Class anderer schon basierenden Objekten abzuwickeln ist keine Schande und spart dir ein wenig Zeit.

    Dies mag korrekt sein, aber wenn ich dort weiter mache wo die gewütet haben, bekommt man nie Clean Code in das gesamte Projekt :) Ich finde es schon traurig wie viel Code aufgebaut ist, offenbar schreibt dort jeder wie er mag, nicht mal grundlegende Regeln gibt es. Dann hat man man Kommentare in Englisch, dann wieder in Tschechisch. Ich als Entwicker könnte mich da ewig drüber aufregen:rolleyes:


    Aber bedenke bitte das es zwischen Arma 3 und DayZ SA Unterschiede gibt. Nicht alle LODs sind auch in DayZ SA notwendig.

    Geometry Phys ist in SA nicht notwendig. Wird komplett von der Geometry Lod übernommen. Und das ist auch in vielen anderen Bereichen der Fall.

    Das konnte ich mir denken, zwischen den Games wird es natürlich Unterschiede geben. Zumindest haben eure Tips sehr geholfen, danke :)

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

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

    Gut nur weil man es möglich machen kann (oder nicht) heißt nicht das es etwas positives dem Game beiträgt^^ Klar kann man da einige interessante Dinge realisieren^^

    Alle warten sie auf Bohemia.

    Im Osten nix neues, sagt man doch so gerne :P

    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.

    Das ist auch der Grund warum ich eigene Klassen schreibe, die ändere nur ich, nicht die. Wenn Basisklassen verändert werden, muss man so oder so ran, aber bei dem weis man zumindest was man gemacht hat. Ist zwar erstmal ein Aufwand aber es heißt nicht, dass man dies nicht noch irgendwo anders verwenden kann.


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

    Danke, ich werde darauf zurück kommen und mich sicher noch das ein oder andere mal melden. Wenn ich was gutes habe, stelle ich es auch zur Verfügung :)