Jump to content
Unity Insider Forum

Life Is Good

Members
  • Content count

    692
  • Joined

  • Last visited

  • Days Won

    16

Life Is Good last won the day on January 5

Life Is Good had the most liked content!

Community Reputation

90 Excellent

About Life Is Good

  • Rank
    Advanced Member

Profile Information

  • Gender
    Male
  • Location
    Köln

Recent Profile Visitors

5,302 profile views
  1. Life Is Good

    Noch so ein Unity-Entwicklerblog

    Passend dazu, und auch zu Unity's ECS, lass ich mal diesen exzellenten Artikel hier liegen https://www.gamedev.net/blogs/entry/2265481-oop-is-dead-long-live-oop/
  2. Life Is Good

    Schöner oder kurzer Code?

    Dann bin ich wohl der einzige hier, der die Klammern des öfteren auch ganz gerne mal weglässt
  3. Life Is Good

    Paralleles Parsen von Textdateien

    Verstehe. Ich hab zu erst vermutet, dass es dann vielleicht am RAM access liegt, aber habe dann mal jemanden um Rat gefragt, der mehr Ahnung von sowas hat als ich. Seine Antwort: Vermutlich ist die Arbeit pro Thread einfach zu klein. Dementsprechend ist die Schleife selbst dein bottleneck. Das kannst du ganz einfach testen, indem du deinen Threads jeweils mehr Arbeit zu teilst. Ansonsten performed dein Importer.ReadFromTextReader eventuell Synchronisation, worauf die Threads dann warten müssen. Viel mehr kann ich dazu leider auch nicht sagen
  4. Life Is Good

    Paralleles Parsen von Textdateien

    Ich bin kein Multithreading Experte, aber hier ein paar Punkte, die mir dazu in den Kopf kommen (Unter der Annahme, dass deine Dateien sich auf einer HDD befinden): Parallel.For teilt die Arbeit automatisch auf so viele Threads auf, wie sie vom schedular bereit gestellt werden. Dein MaxDegreeOfParallelism limitiert also bloß die mögliche Anzahl an gleichzeitigen Operationen. Die Threads können natürlich bloß genutzt werden, wenn sie verfügbar sind. Falls also sonderlich viel Aerbeit im Hintergrund verrichtet wird, stehen sie vielleicht schlichtweg nicht zur Verfügung Von HDDs kann man meist nicht wirklich parallel lesen. Die Leseanfragen werden vom HDD Controller / Treiber geordnet und der Reihe nach abgearbeitet (was meist aber dennoch einen performance boost bringt) HDDs erlauben weniger Leseanfragen als SSDs
  5. Life Is Good

    Berufliche Zukunft

    Mir ist dein anderer Thread dazu aufgefallen, also dachte ich mir, ich lass auch mal ein paar Worte fallen. Was das Alter angeht haben die anderen ja schon einiges gesagt. Das ist ziemlich irrelevant. Aus meiner Erfahrung ist das eine Eigenschaft von guten Programmierern. Die nehmen meistens Worte sehr genau. Ansonsten ist ein guter Programmierer meiner Meinung nach kein professioneller "Code-Schreiber", sondern ein Problemlöser. Probleme elegant und effizient zu lösen erfordert zum einen die Fähigkeit abstrakt zu denken, vor allem aber erfordert es Kreativität. Die guten Programmierer, die ich kennengelernt habe, denken oft outside of the box. Selbstreflexion ist ebenfalls eine wichtige Eigenschaft eines solchen Programmierers. Dabei geht es darum zum einen offen zu sein für neue Ansätze. Viele Programmierer, die leider oft auch in Senior Positionen sind, glauben, weil sie das seit 20 Jahren machen wissen sie alles. Aber man lernt niemals aus. Zum anderen treibt sie einen an sich selbst zu verbessern. Die besten Programmierer, die ich kenne, beschweren sich nicht bloß über fremden, sondern meistens über ihren eigenen Code Erfahrung ist natürlich viel Wert und über Programmierung gibt es viel zu wissen, aber im Endeffekt ist die Programmierung bloß eine weitere, anlernbare Fähigkeit, die auf solche Charaktereigenschaften aufbaut.
  6. Life Is Good

    Static und Nicht Static

    Achso, ja dann macht das mit dem Parameter natürlich keinen Sinn. Also die lange Lösung lautet: Vermutlich ist static hier eben einfach nicht angebracht. Das ist halt eine Frage von Architektur. Die kurze Lösung: Du kannst das ganze ein bisschen dribbeln, wenn du unbedingt willst, und halt ne separates statisches Feld anlegen und dann irgendwann iconSprites dem zuweisen. Z.B. in der Start Methode.
  7. Life Is Good

    Static und Nicht Static

    Die einfachste Lösung: Übergib iconSprites als Parameter. Ich seh keinen Sinn dahinter, dass sprite überhaupt in der Methode ist, also nimm das am Besten raus. public static Sprite MinimapSpriteIcon (int icon, Sprite[] iconSprites) { // iconSprites[icon] macht genau das selbe wie dein switch statement.... return (icon < iconSprites.Length) ? iconSprites[icon] : null; } Die Initialisierung von iconSprites da oben mit public Sprite[] iconSprites = new Sprite[0]; Ist auch überflüssig. Unity initialisiert serialisierte Felder von selbst. Falls dein Code ziemlich genau so aussieht, kannst du auch einfach direkt iconSprites[icon] wo auch immer machen, und dir die ganze Methode sparen.
  8. Life Is Good

    Mac oder Windows?

    Metal soll tatsächlich ziemlich gut designed sein und laufen. Ist also eine gute Alternative zu bestehenden Grafik APIs. Ansonsten läuft auch Vulkan mitlerweile auf MacOS. https://github.com/KhronosGroup/MoltenVK Bei dem Preis würde ich aber persönlich auch eher zu nem Windows PC greifen
  9. Life Is Good

    Entity Component Systems & Data Oriented Design In Unity

    Hab das repository mal aktualisiert, und die 3 Themengebiete auf 3 unterschiedliche PDFs aufgeteilt. Ich glaube das wirkt einfach besser, und überfordert nicht so sehr. https://github.com/LifeIsGoodMI/ECS-And-DoD-In-Unity Hier auch nochmal im Anhang. ECS_StartGuide.pdf ECS_Unity_Article.pdf The_Core_Of_Unitys_ECS_Documentation.pdf
  10. Ich hab einen nicht so kurzen Artikel über Unity's Implementation eines Entity Component System (ECS) Model & Data Oriented Design (DoD) geschrieben. Es ist keinerlei Vorwissen über ECS oder DoD erfoderlich. Der Artikel behandelt die Prinzipien von ECS, DoD, beinhaltet eine eigene kleine Dokumentation über die fundamentalen Konzepte von Unity's ECS und enthält einen kleinen Start Guide, indem ich Stück für Stück zeige wie man ein sehr simples "Spiel" umschreiben kann. Am Ende kommt dann noch ein kleiner, kritischer Kommentar zu Unity. Sowas muss man natürlich nicht am Stück lesen, man kann da durch springen wie man will. Ihr findet den Artikel und das Unity Projekt auf meinem GitHub Account: https://github.com/LifeIsGoodMI/ECS-And-DoD-In-Unity Ausserdem scheints so, als würde GitHub's PDF Viewer keine Hyperlinks unterstützen, also hab ich die PDF hier noch einmal zusätzlich angehangen. ECS_DoD_Unity.pdf
  11. Life Is Good

    Lightmaps Größe

    2048^2 * 64 = 268435456 bit = 33,5 mb Was wird dir denn im Explorer, und in Unity angezeigt ?
  12. Life Is Good

    Lightmaps Größe

    Das hängt auch sehr stark von deiner Szene ab. Je komplexer deine Geometrie und je spärlicher beleuchtet diese ist, desto höher die Auflösung die du haben willst. Tatsächlich sinds nach der Rechnung bloß knapp 33mb Ich schätze mal, dass texels & scaling da auch noch irgendwie in die Rechnung mit reingehen.
  13. Ich hab den Algorithmus ein wenig angepasst, um das Problem mit den weichen Ecken zu lösen. Im Grunde schau ich mir einfach die vertices an, die nicht ganz korrekt sind, addier alle Normalen zusammen (nennen wir das Ergebnis einen Vektor A) und interpoliere dann von diesem Vertex aus in die Richtung A bis die SDF an diesem Punkt = 0 ist. Ich musste allerdings einen kleinen Bias einbauen, aber ich denke das sind einfach bloß Genauigkeitsprobleme, da die Implementation aktuell komplett auf floats setzt. Die schwarzen Linien am Ende zeigen das Ergebnis der Normalen (Vektor A) bei den Vertices, die zunächst gesmoothed wurden. Ich werd noch mehr testen müssen, um zu schauen, ob die Lösung so allgemein aufrecht erhalten werden kann.
  14. Life Is Good

    Profiler (Memory)

    Ich glaube tatsächlich, dass Unity EditorWindows auch als Mesh zählt / rendert. Wenn man ein EditorWindow bewegt (z.B. der Profile) steigt die Anzahl an Meshs sofort an (also genau dann, wenn für das EditorWindow OnGUI aufgerufen wird) Ansonsten schätze ich mal, das Unity auch ein bisschen subdivision betreibt. Vielleicht wenn ein Mesh beispielsweise nur teils im View Frustum ist.
  15. Life Is Good

    Lightmaps Größe

    Klingt relativ normal. Wenn es um Effizienz geht willst du grundsätzlich lieber einige wenige große Dateien. Einige größere Dateien können schneller geladen werden als haufenweise kleine Dateien. Das merkst du besonders, wenn du z.B. mal den Fehler machst, beim hoch / runterladen eines Projektes den Lib Ordner mit zu nehmen
×