Beiträge von Ekranos

    Wir benutzen als Backend derzeit nur Vulkan. DX12 support ist derzeit aufgrund technischer Limitierungen leider eher schwierig und keine große Priorität, da Vulkan sowohl Windows als auch Linux unterstützt.


    Dank dem Playtest haben wir das Problem mit den AMD-Karten erkannt. Ich bin selbst davon betroffen und habe nur rund 50% der FPS die eigentlich möglich wären. Dies scheint mit der Vulkan-Implementation zu tun zu haben. Denn an stellen wo ich mit Vulkan ~120 FPS habe, komme ich mit DX12 auf 200+. Gleiche mit 50 zu 100+ FPS etc.


    Fokus liegt derzeit jedoch erstmal an Features wie dem Scripting, damit daran parallel gearbeitet werden kann, während wir uns dann bspw. auch um sowas kümmern können. Es ist schade, aber solange es halbwegs anständig läuft, wird es erstmal keine Priorität haben.

    Letzten endes werden wir dieses Problem aber definitiv fixen wollen, will ja dass es bei mir selbst anständig läuft ^^

    Goodbye Unity


    Hallo zusammen,


    wir verabschieden uns von Unity. Der ausschlaggebende Punkt dafür ist die von Unity eingeführte Runtime-Fee. Die Runtime-Fee an sich ist erstmal nicht das große Problem, jedoch die Art und Weise wie diese eingeführt wurde hat bei uns und vielen anderen zu einem unwiderruflichen Vertrauensbruch geführt. Man kann leider nicht mehr ruhigen Gewissens auf Unity setzen.


    Was dann?


    Seit der Ankündigung der Runtime-Fee haben wir nach Alternativen geschaut und sind leider nicht sonderlich fündig geworden. Am ehesten wollten wir etwas nutzen. wo wir C# weiterverwenden können, damit wir nicht wieder Code portieren müssen. Allerdings hat keine C# Lösung so wirklich unsere Anforderungen erfüllt. Daher haben wir die Suche auf andere Sprachen erweitert. Vor kurzem sind wir fündig geworden.


    Rewrite in Rust


    Auf wenn Dinge in Rust neu zu schreiben mittlerweile ein Meme ist, haben wir uns genau dafür entschieden.


    - Rust kompiliert zu nativen Binaries welche sehr performant sind

    - In Rust zu programmieren ist nach einer gewissen Einstiegshürde sehr produktiv

    - Rust ist sehr effizient bezüglich der System-Resourcen wie CPU und RAM

    - Das Typ-System ist sehr ausdrucksstark

    - "If it compiles, it works"™


    ~ Bevy, Bevy, Bevy, Bevy ~


    Wir benutzen Bevy. Bevy ist Open-Source und bekommt seine Geldmittel von der Bevy Foundation. Auf einen kompletten Open-Source Stack zu bauen verhindert, dass so ein Disaster wie mit Unity passieren kann und gibt uns die Möglichkeit besser auf die Anforderungen von LOTUS einzugehen, da wir in uns den Code anschauen können und ggf. auch Anpassungen und Erweiterungen durchführen können.


    Welche messbaren Vorteile ergeben sich?


    Im Gegensatz zum Unity-LOTUS und auch zum Pascal-LOTUS gibt es deutlich bessere Performance und geringeren RAM-Verbrauch. Aufgrund des Rust-Typ-Systems und Borrow-Checkers kommt es deutlich weniger Bugs und macht Multi-Threading sicherer und einfacherer. Mehr Kerne = mehr besser!


    Bevy liefert von Hause aus automatisches Multi-Threading, Resourcenmanagement und Scheduling. Das heißt wir müssen uns weniger um solche Haushaltsarbeiten kümmern und können uns mehr auf den eigentlichen Simulator konzentrieren.


    Wird damit alles noch länger dauern?


    Ja und nein. Natürlich müssen wir LOTUS neu in Rust anfangen und aufgrund der sehr unterschiedlichen Art und Weise wie Rust im Gegensatz zu fast allen anderen Sprachen funktioniert, lässt sich der Code nicht einfach 1:1 portieren. Ebenso programmiert man in Bevy aufgrund des ECS deutlich anders als in allen anderen Game-Engines. Das hat Vor- und Nachteile. Wir sehen dies jedoch mehr als Vorteil, da wir damit gezwungen sind uns alles in einem neuen Licht anzuschauen und damit einfacheren (damit auch weniger Bugs) und performanteren Code zu schreiben.


    Aufgrund der ECS-Architektur müssen wir uns nicht mehr mit Objekt-Hierarchien und deren Aufbau und Beziehungen herumschlagen, sondern können Datenorientiert arbeiten. Dies macht den Code flexibler und performanter. Dies erhöht die Geschwindigkeit in der wir Features entwickeln können immens. Wir zahlen also jetzt erstmal einen verhältnismäßig kleinen Preis um später auf der Überholspur zu sein.

    Link zum Stream (twitch.tv)


    Datum: 04.02.2024

    Beginn: 18:00

    Ende: geplant 22:00

    Zeitzone: UTC+1 / MEZ


    In diesem Live-Stream werden wir die Grundlagen des WebAssembly-Skriptings implementieren. Dies wird den Skriptteil und die Implementierung in der Engine umfassen. Wir werden mit einem Skript (in Rust) beginnen, das einfache Zahlen addieren kann, und es erweitern, um den Austausch von Strings, Logging und den Austausch komplexer Objekte zu umfassen, bis wir ein Skript implementieren, das Variablen innerhalb des Simulators ändern kann.


    Vielleicht werden wir nicht alles Geplante implementieren, vielleicht geht es viel schneller als erwartet.


    Der Stream wird in Deutsch sein.


    ------------------------------------------------------

    Date: 04.02.2024

    Start: 18:00

    End: planned 22:00

    Timezone: UTC+1 / CET


    In this live stream we will implement the basics of the WebAssembly scripting. This will include the script part and the implementation in the engine. We will start by having a script (in Rust) that can add simple numbers and will expand it to include exchanging of strings, logging and exchanging complex objects until we implement a script which can change variables inside of the simulator.


    Maybe we will not implement everything planned, maybe it goes way faster than expected.


    The stream will be in German.

    Gegrüßt seid ihr, edle Gefährten der virtuellen Reise,


    in diesen Zeiten fleißiger Taten und kluger Erfindungen bringe ich euch Kunde von unserer neuesten Unternehmung. In den Hallen der Entwicklung, wo die Gedanken wie funkelnde Sterne am Himmel des Wissens glänzen, widme ich mich der Erschaffung neuer Skripte. Diese Schöpfungen sollen wie Zaubersprüche wirken und unser Spiel mit Leben und Wahrheit erfüllen. So zeigte sich bereits im jüngst veröffentlichten Bewegtbilde die Lampe, deren Glanz durch mein neuestes Werk entfacht wurde.


    Doch haltet eure Sinne bereit, denn es gibt mehr zu berichten. Wir, die fleißigen Schöpfer, trachten danach, euch, den tapferen Spielern, die Macht zu verleihen, eigene Zaubersprüche zu weben. Mit dieser Gabe sollt ihr alten Geschöpfen, deren Schöpfer längst in den Schatten der Vergessenheit getreten sind, neues Leben einhauchen.


    So harret der Dinge, die da kommen werden, und lasst euer Herz von dieser frohen Botschaft erfüllt sein. Wir danken euch für eure Treue und Eifer.


    Mit vornehmer Hochachtung,

    Marvin


    ------------------------------------------------------------


    Greetings to you, noble companions of the virtual journey,


    In these times of diligent deeds and clever inventions, I bring you news of our latest endeavor. In the halls of development, where thoughts shine like twinkling stars in the sky of knowledge, I dedicate myself to the creation of new scripts. These creations are intended to work like magic spells, filling our game with life and truth. This was already evident in the recently published motion picture, where the lamp's brilliance was ignited by my latest work.


    But keep your senses alert, for there is more to report. We, the diligent creators, strive to empower you, the brave players, with the ability to weave your own magic spells. With this gift, you shall breathe new life into old creatures whose creators have long stepped into the shadows of oblivion.


    So wait for the things that are to come, and let your heart be filled with this joyous message. We thank you for your loyalty and zeal.


    With noble regards,


    Marvin