Beiträge von Tomura

    Dazu wirst du deine eigene Damage Logik schreiben müssen.

    Mit Apply Point Damage hättest du vielleicht die Möglichkeit eine Komponente im HitResult zu haben und zu verarbeiten. Aber es wäre hier wahrscheinlich sinnvoller eine eigene Apply Damage Funktion zu entwickeln und eine Komponenten die Damage abbekommen kann, oder ein Interface welches entsprechende Komponenten implementieren können falls es keinen gemeinsamen Parent gibt.

    Ja soetwas kann Sinn machen.

    Etwas abstrakter gesagt synchronisitert du nicht den Actor, sondern du hältst nur das Datenmodell (also welche Karten order gar nur wie viele Karten hat ein Spieler) synchron, während deine Actoren in jedem Client lokale repräsentationen des Datenmodells sind.

    So handhabt man z.B. gerne Special effects wie Particles und Sounds, hier müssen diese ja z.B. auf einem Dedicated Server gar nicht spawnen da gar nichts angezeigt wird, jedoch aber auf Spielerseite.

    Bis auf längere Render Zeit beim Lightmap bake sollte es keine Probleme machen (Lightmap Resolution hätte einen Einfluss)

    Aber eine richtige Map in Production Quality kann auch bei 1 ein paar Stunden benötigen wenn man in Production Quality baked.


    Eine Frage um es mal auszuschließen. Mit welcher Qualität startest du den bake? Den Fehler bekomme ich (unter anderem) auch hin und wieder wenn ich im Preview Mode bake, jedoch geht es meistens weg wenn man auf höherer Qualität den bake laufen lässt.

    Kleine Korrektur. 4.27.1 abgespeicherte Projekte lassen sich wohl in der Tat nicht öffnen. Da sagt er nur, dass das Projekt mit einer neueren Version gespeichert wurde. Aber ältere Versionen sollten halt gehen.

    Hier zu mal etwas mehr.

    Die UE5 Preview Version is Kompatibel mit UE 4.26 projekten.

    Die UE5 Release version soll jedoch dann näher an UE4.27 dran sein als an UE4.26 und mit UE4.27 Kompatibel sein.

    So zumindest die Ankündigung.


    Das ganze ist aber wie gesagt eine Preview Version, die man nicht für ernste Projekte nutzen soll. Ich habe auch so einige Bugs gehabt was Materials in Kombination mit Nanite angeht.


    C++ Projekte benötigen einiges an Arbeit, wenn man etwas tiefer eingreift (Ich habe z.B. eine Routine irgendwo gehabt welche aus Maps die World-Settings ausließt, ohne das Level wirklich zu laden oder innerhalb aller Content Pakete, also theoretisch auch solche die als Mod hinzugefügt werden nach Blueprints eines bestimmten Typs sucht) in solchen Fällen gab es einige Änderungen (die aber sinnvoll sind). Auch einige Funktionen wurden umbenannt, meistens auch um deren Bedeutung verständlicher zu machen, jedoch gibt es hier relativ klare Compiler Warnings, die sagen was zu tun ist.

    Nein soetwas gibt es nicht, ist auch nicht sehr praktisch, da Input zu Logik eine 1 zu N Verbindung (ein Input kann in mehren Charakter/Pawn Klassen implementiert sein) hat, während ein Form-Event (z.B. ein Button) eine 1 zu 1 Verbindung hat (Das dem Form-Button zugewiesene Event gehört nur der einen Instanz des Buttons).

    Es sollte dort irgendwo einen Blueprint Ordner geben, dort gibt es einen Character oder Pawn Blueprint. Darin müsstest du auch die Events finden können.


    Edit: Hier ist ein Bild. In dem Blueprint findest du die Events und die programmierte Logik dahinter.


    Ich weiß nicht wie Stormland funktioniert, aber im Allgemeinen:


    An sich funktioniert das ganze genauso wie in nicht-VR Spielen. Die Inputs in den Settings werden gemappt auf Actions oder Axis.

    In Blueprint werden dir hierfür Events bereit gestellt.


    Mappst du also in den Settings die Action "Fire", so kannst du auch in deinen Blueprints über Rechtsklick ein entsprechendes Input Event erstellen, am besten den Character Blueprint oder dem PlayerController Blueprint (falls du z.B. eine Ebene vorher Inputs an den Character abfangen willst). Als Anfänger sollte es im Character Blueprint am besten aufgehoben sein.


    Ein nicht Teleport Movement musst du selber programmieren. Dabei musst du beachten dass in VR etwas mehr Berechnungen nötig sein können als in traditionellen games. z.B. gibt es ja selbst beim einfachen Analog Stick Movement eine Unterscheidung ob man Controller Based Movement (Controller gibt die Drehung des Koordinatensystems vor, etwas natürlicher da man sich in die Richtung des Sticks im Raum bewegt) oder Head Based Movement (Kopf gibt die Drehung des Koordinatensystems vor, unproblematischer, für Spiele bei denen man viel mit den Händen machen muss während man sich bewegt, wie z.B. eine Waffe halten/schwingen) umsetzt.


    Es gibt auch noch ein Plugin https://vreue4.com/ was ziemlich gut für VR ist, aber es ist nicht selbsterklärend und ein ziemlicher Brocken, falls du wenig Erfahrung hast.

    Theoretisch wäre es möglich Windows auf deiner XBox zu installieren. Ich weiß aber nicht wie gut es der Konsole und MS gefällt.


    Für ID@XBox und Devkits musst du schon ein wenig was zu bieten haben (gutes Konzept, einen Publisher oder schon ein paar Releases auf PC), außer es hat sich in den letzten Jahren was geändert. Und selbst dann weiß ich nicht wie viel Aufwand du haben wirst, da du eine Crossplay und Serverlösung programmieren musst.


    Wenn es nur ein Dedicated server ist, reicht eine Maschine ohne GPU, also z.B. auch ein Laptop.


    Und wie gesagt geht es auch lokal, Falls der GPU dein Bottleneck ist dann einfach mal die Auflösung verringern. Mein Video läuft z.B. auf einem Laptop mit einer GTX555M den ich damals als Studen hatte. Du musst halt einfach das Projekt ohne den vollen editor starten (-game als option)

    https://docs.unrealengine.com/…nes/CommandLineArguments/

    Dazu müsste ich etwas mehr wissen wie genau du es gelöst hast, aber falls jedes Mesh sein eignenes AnimBP hatte, dann war es wahrscheinlich der Fall, dass nicht alle Instanzen, das Event aus dem Interface mitbekommen haben.

    Wahrscheinlich (ich kann da nur raten) hast du nur einmal entsprechendes Event für das Main AnimBP aufgerufen. Du hättest aber dies auch für die Restlichen Meshes machen müssen.


    Der Rest ging wahrscheinlich, weil dein AnimBP den Rest über den Tick des AnimBPs gemacht hat, von daher hat jedes AnimBP für sich seine eigenen Variablen gesetzt.


    Wie gesagt ist die Lösung die ich vorgeschlagen habe in jedem Fall besser, da nur ein AnimBP pro Character ausgeführt werden muss, somit läuft deutlich weniger redundanter Code mit.

    Ausgehend dass alle deine Skeletal Meshes das gleiche Skeleton haben, würde ich folgendes Vorschlagen:

    - Dein Main Skeletal Mesh, führt das Anim Blueprint aus, die Restlichen folgen dem Main Mesh indem zu dieses aus Master Pose Component zuweist.


    Das sollte ein gutes Stück komplexität rausnehmen und somit Potential für Fehler. Wenn es damit nicht geht, dass ist etwas an den Meshes selber nicht richtig.



    Edit: Das ist natürlich kein direkter Fix für dein Problem, sollte aber das ganze Lösen, denn in die Hocke geht dein Character ja, von daher funktioniert zumindest die Kommunikation mit dem AnimBP des Main Meshes. Da ist es einfacher einfach dafür zu sorgen, dass die Sub-Meshes einfach nur derBewegung des Main Meshes folgen zu lassen.

    Das Problem ist halt, ich hatte vorher eine Maus von Razer. Die hat nicht wirklich lange gehalten. Die war auch nicht gerade ein Billigheimer und mir ist vorher noch nie eine Maus kaputtgegangen. Deswegen hatte ich mich eigentlich gegen die Qualität von Razer entschieden. Wobei die Qualität von Corsair, zumindest bei Keyboards, ja auch nicht besser zu sein scheint.


    Wenn man zwar gerne relativ schnell tippt, aber ständig am Korrigieren ist, dann hilft auch die schnellste Schreibtechnik nicht viel. Bei einem Beitrag vielleicht nicht ganz so wichtig, weil den einen oder anderen Fehler verzeiht der Leser ja auch mal. Aber beim Programmieren ist der Compiler nicht so nachsichtig.

    Das könnte jetzt anders sein, mit den optischen Schaltern, die sie in neueren Modellen verbauen, da die mechanischen Microschalter, welche bei fast allen Mäusen dauernd kaputt gehen, jetzt optisch funktionieren. Ob die Lösung wirklich robuster ist, wird sich aber wohl nur über die Zeit zeigen, denn Teile, die mechanischen Verschleiß erfahren gibt es da ja trotzdem.


    Bin mit meiner derzeitigen Corsair Tastatur und Maus Kombination von vor 5 Jahren recht zufrieden. Habe aber das Gefühl, dass die Firma was Qualität angeht ziemlich nachgelassen über die Jahre. Eine mechanische Tastatur gefällt mir schon besser von Tippgefühl, aber man sollte einen Satz Dämpferringe dazukaufen, um sie etwas leiser zu machen.

    Also dein dedicated server würde in der realität nicht auf einer Konsole laufen, sondern auf einem Windows oder Linux Server.

    Falls es dir nur ums testen geht, dann kannst du Dedicated/Listen Server und Client einfach auf dem selben PC laufen lassen (wie hier

    Externer Inhalt www.youtube.com
    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.
    ), was Verbindung testen angeht macht dies im Internen Netzwerk wenig Sinn, da die Bedingungen viel zu ideal sind. Dann frag lieber einen Freund, der willig ist zu testen.


    Es gibt paar Einstellungen in der Config die zu machen kannst um, lag, package loss, etc. zu simulieren, das kann auch hilfreich sein, falls du Lag-Kompensationstechniken programmiert hast.

    So wie ich es gelernt habe, ist allerdings auch schon 25 Jahre her, ist es allerdings recht unsauber eine Funktion quasi mit "Return" oder Schleifen mit "Break", oder was auch immer, abzuwürgen. Ob das noch immer Gültigkeit hat weiß ich allerdings auch nicht. Auch da gehen viele Meinungen auseinander. Heutige Compiler generieren aus solchem Code wahrscheinlich auch von sich aus schon das Richtige. Aber so tief bin ich in der Compilermaterie nun auch nicht drin.

    Ja, das ganze hat heutzutage immer noch Gültigkeit. Hat aber eher etwas mit Clean-Coding zu tun, von daher komplett optional.

    An sich sollte man die returns einer Funktion minimal halten, sodass jemand der den Source Code ließt, im unteren Teil der Funktion herausfinden kann was zurückgegeben wird, ohne Gefahr zu laufen, dass ein return irgendwo mitten in der Funktion übersehen wird. Somit ist der Execution Flow deutlich einfacher verständlich.


    Es gibt ausnahmen, wenn es z.B. dafür sorgt dass man mehr Code schreiben muss nur um die Regel zu erfüllen, was natürlich auch nicht die Verständlichkeit verbessert.


    Eine Regel die ich selber noch nutze und mit dem Ausgangspost etwas zu tun hat:

    Falls ich checks habe, welche die Funktion abwürgen sollen, schreibe ich diese möglichst oben und breche die Funktion mit "return" ab, gerade wenn die alternative wäre über viele if-then-else Blöcke zu viele scopes zu erzeugen und somit wieder die Lesbarkeit verschlechtere.

    auto sorgt automatisch dafür, dass spätestens zur Compile time der richtige Typ eingesetzt wird.

    In diesem Fall sorgt ja die Cast<AWaffe> funktion dafür, dass ein AWaffe* pointer rauskommt. Aus


    auto TraceHitWeapon = Cast<AWaffe>(TraceHitItem)


    wird also automatisch


    AWaffe* TraceHitWeapon = Cast<AWaffe>(TraceHitItem)


    Der Vorteil ist, sagen wir mal irgendwann später merkt du du musst doch eher zu AAndereWaffe casten.

    So musst du nur den Teil zwischen den <> ändern. Das verringert den Wartungsaufwand, da eine einzige Änderung sich auch automatisch auf die "auto" Variablen auswirkt, anstatt dass du alle lokalen Variablen manuell Nachziehen musst.


    Der Nachteil ist dass der Typ einer auto Variable nur implizit bekannt ist und nicht explizit. Du weißt also nur aus dem Kontext welcher Typ sich hinter TraceHitWeapon verbirgt. In diesem Fall ist es einfach zu verstehen, also ein recht guter Einsatz von auto, bei komplexerem Code könnte es jedoch die Verständlichkeit deines Codes verringern.

    Ich muss auch sagen, dass CPU seitig AMD echt aufgeholt hat, was GPUs angeht liegt NVidia definitiv vorne, was die GPUs an sich anbelangt und auch die Features drum herum wie CUDA, etc.

    An sich macht man aber auch bei Intel CPUs keinen Fehler. Beide Firmen bieten gute Produkte an.


    Was Hitze Probleme angeht, musst du mal genauer nachschauen. Einige Reviews referenzieren dabei den mitgelieferten Kühler. Das ergibt auch Sinn, denn man sollte schon erwarten, dass, wenn Intel einen Kühler mitliefert, dieser auch den CPU ausreichend kühlen kann. Seit einigen Jahren ist die Wärmeentwicklung bei i7 aber so, dass man immer einen anständigen Kühler dazukaufen muss und der mitgelieferte Kühler kann gleich in die Tonne. Da ist AMD ein Stück vorbildlicher und liefert mit Ryzen recht anständige Kühler mit. Normal sollte aber ein Gehäuse mit gutem Airflow und anständiger konventioneller Kühlung ausreichen.


    Was AiO Wasserkühlung angeht, ist die Leistung vergleichbar mit einem guten konventionellen Kühler, bei ausreichend Airflow. Meiner Meinung nach lieft der Vorteil - den ich eher schätze - beim sehr komfortablen Einbau von AiO kühlungen und dass der Wärmetauscher nicht direkt auf der CPU sitzt, sondern am Gehäuse.

    Andererseits sorgt man jedoch dafür, dass der Wärmetauscher typischerweise oben am Gehäuse hängt, und die warme Luft auch nach oben hin rauskommt, anstatt nach hinten. Falls der PC unterm Schreibtisch steht, merkt man das deutlich mehr.

    Kannst du mal in der Normal Map Textur prüfen ob diese als Normal Map (sowohl Texture Group als auch Compression Settings, etc) importiert ist? Zusätzlich kann es sein dass du im Material den Sampler Type auf Normal umstellen musst.


    Rein vom Aussehen der Screenshots sieht es aber eher nach fehlendem Skylight aus. Da ja auch was von Lighting needs to be Rebuild steht, wär es vielleicht mal was Wert einmal neu zu builden.

    Tomura


    Wie macht ihr dass mit der Arbeitszeit Erfassung ?

    Habt ihr Vertrauensarbeitszeit oder irgend ein Zeiterfassungssystem ?

    Im Grunde trage ich im Home Office im System manuell ein wann ich anfange und aufhöre. Habe Gleitzeit, von daher bin ich flexibel wann ich ein-/ausstempel, es muss aber natürlich dokumentiert sein für die Zeitberechnung (sonst fallen ja keine Gleitzeitstunden an die ich zum zusätzlich frei nehmen nutzen kann). Im Büro ist es natürlich mit Ein/Ausstempeln über ein Terminal mit dem Werksausweis.

    Ihr seid offensichtlich recht gut ausgestattet. Und wie man an diesem Beispiel sieht, klappt es offensichtlich sehr gut.


    Ich denke, es ist eine einmalige Aufbauinvestition die viele Firmen noch scheuen. Ich glaube nicht, dass das Internet das große Problem ist, auch nicht die eigentliche Sicherheit oder so. Nur die Firmen müssen natürlich erstmal die Möglichkeiten bereitstellen. Das ist natürlich erstmal eine Investition, die man bereit sein muss zu tätigen. Ich denke die Erweiterungs- und Wartungskosten werden dann relativ überschaubar sein.


    Ist aber auch ein wenig wie das papierlose Büro. Davon habe ich schon Anfang der 90er gehört, wie toll usw. das werden wird. Inzwischen habe ich aber eher das Gefühl, dass es damals nicht so viel Papier im Büro gab wie heute.

    Das sehe ich auch so. Am Ende ist es eine Investition die getätigt werden muss und auch die richtigen Personen müssen dafür da sein, die überhaupt den Antrieb haben sich mit dem ganzen auseinander zu setzen und natürlich muss das ganze auch irgendwie ausgerollt werden über Schulungen, etc.

    Das sind ziemliche Hürden und dann noch in einer Zeit, wo es mit dem Geld vielleicht schwierig ist. Wobei es vielleicht auch die Zeit ist zu investieren, damit man stärker aus der Krise rauskommt, als die Konkurenz.

    Sleepy und Tomarr

    Ich glaube den Rest könnt ihr per PN erledigen, oder? Sleepys Qualitäten als professioneller 3d Artist, hat nicht viel mit Home Office zu tun und ist eher ein Streit zwischen euch beiden, den sonst keiner Lust hat mitzulesen.


    Was Security angeht ist es bei mir ähnlich wie bei Bralligator


    Arbeite aber in einem großen Unternehmen mit vielen Standorten Weltweit, von daher gab es bei uns auch schon entsprechende IT Infrastruktur vor Corona, da man Weltweit zusammenarbeiten muss und das ganze ja auch auf Dienstreisen oder sonst wie mobil funktionieren muss. Regelmäßige Schulungen, Awareness Kampagnen und Audits gibt es natürlich auch.

    Auch Home Office an sich war eine Sache bei der ich einfach einen Tag vorher oder morgens einfach meinem Vorgesetzten kurz per Mail oder Chat Bescheid sagen konnte, wenn ich es machen wollte, außer natürlich es gab irgendwas wo es wichtig war, dass man präsent ist.


    Was Home Office an sich angeht. Das ganze ist ein zweischneidiges Schwert. Es gibt Dinge die gut funktionieren, vor allem, wenn es Arbeiten sind die man alleine macht und Konzentration erfordern wie Programmieren, Recherche, Berichte/Präsentationen machen, etc. Was etwas fehlt ist das spontane sich eine Meinung von Kollegen holen, etc. Was auch etwas fehlt ist z.B. auch die Möglichkeit, wenn z.B. etwas gemessen oder im Versuch erprobt wird, dass man mal kurz rüber kann, um sich davon ein Bild zu machen, statt nur die Zahlen und Daten zu sehen.


    Meetings im allgemeinen finde ich im Home Office fast besser, zumindest seit ich ein wireless Headset habe und auch mal stehen oder mich bewegen kann. Das ist bei dem ganzen Sitzen echt angenehm und man sitzt im Home Office einfach mehr, da man keine Laufwege hat. Was Skype/MS Teams oder sonstwas angeht, bin ich es schon gewohnt, da ich auch viel mit dem Ausland zu tun hatte.


    Auch gebe ich 2 Mal im Jahr eine 2-tägige Schulung, die jetzt natürlich Online stattfindet (dann an 3 halben Tagen), das funktioniert an sich gut, aber das Netzwerken während der Kaffee oder Mittagspause geht nicht mehr und es ist etwas schwer Kontakte zu knüpfen mit Leuten aus ähnlichen Fachrichtungen aus anderen Unternehmensbereichen, mit denen man in der Zukunft Erfahrung austauschen könnte. Auch ist es bei Online Schulungen eher so, dass ich nun ein weltweites Publikum habe und von daher 30-60 Teilnehmer statt 10 habe. Dadurch wird das ganze eher eine Ein-Mann-Show und geht ziemlich auf meine Stimme. Ist aber schön, dass eine Schulung, die ich ins Leben gebracht habe so viel Interesse findet.


    Es ist aber mal nett ins Büro zu gehen, und ein paar Kollegen zu treffen, auch wenn es gerade ziemlich leer ist.

    Wenn du dir mal die Definition der GetViewportSize funktion anschaust wirst du sehen, dass diese keine Variable als Input hat, sondern eine Referenz. Irgendwie sowas:

    Code
    GetViewportSize(FVector2D& ViewportSize)


    Was also in die Funktion übergeben wird ist eine Referenz auf die vorher erstellte Variable. Diese wird dann innerhalb der Funktion gesetzt.


    Warum man das macht hat etwas mit optimierung zu tun. Anstatt dass der Struct also 2 Mal existiert (Im Stack der Aufrufenden Funktion und im Stack der aufgeruften Funktion) wird einfach eine Referenz übergeben, und direkt auf der Speicherstelle des einen Structs geschrieben.

    Die Optimierung kann bei Structs oft Sinn ergeben (und ist nach UE4 Coding Guideline empfohlen), da es sich hier ja um Typen handelt die mehrere Variablen enthalten und somit einiges an Speicher durch die Gegend kopiert werden muss, wenn man nicht mit Referenzen arbeitet. Bei einfachen Typen sollte man es eher nicht machen, da diese meist einfacher als eine Speicheraddresse sind, gerade im 64Bit Systemen.