Neuigkeiten rund um LOTUS

  • :flag_ger: Bevor es hier demnächst auch mal wieder mit aktuellen Entwicklungen weiter geht, hier der Hinweis, was seit dem letzten Eintrag hier alles passiert ist – ablesbar an den Patchnotes:


    LOTUS Patchnotes :) - 1.EA.110a


    ---


    :flag_gb: Before we resume with the latest developments, here is a hint what has happened since the last entry - you can read it in the patch notes:


    LOTUS Patch notes - 1.EA.110a

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


  • Push :)

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

  • Es ist soweit!

    Liebe Fans, Freunde und Interessierte,


    wir möchten Euch heute zum allerersten Map-Playtest von LOTUS mit unserer neuen Engine einladen!


    In der aktuellen Version stecken unzählige Stunden Arbeit, Herzblut und Hirnschmalz. Unser Ziel war es, den größten - und berechtigten - Kritikpunkt an unserem Simulator endlich abzuschütteln: die Performance. Darunter fallen die Ladezeiten zu Beginn der Simulation, das Nachladen während der Simulation und natürlich auch die FPS. Und wir denken, wir haben es geschafft!


    Wir sind mit dem derzeitigen Stand auf unseren eigenen Geräten schon zufrieden - doch jetzt kommt Ihr ins Spiel. Schnappt Euch LOTUS und überzeugt Euch selbst. Lasst uns Euer Feedback da, Gutes wie auch Schlechtes. Wir machen in der Zwischenzeit weiter - denn wir wollen mit der neuen Version ENDLICH, das Euer Content das bekommt, was er verdient: Unseren besten Simulator!

    Ja, ich will!

    ...doch wie? Der jetzige Playtest ist ausschließlich auf 64bit-Windows-Systemen verfügbar. Linux muss noch ein wenig warten :)


    Es gibt zwei Möglichkeiten, das neue LOTUS zu starten: Wenn Ihr LOTUS über die Steam-Bibliothek startet, könnt Ihr per Startoption "LOTUS.NG" auswählen oder einfach im Installationsordner von LOTUS zum Ordner "lotus_ng" wechseln und darin die simulator.exe starten.


    Wir freuen uns auf Eure Rückmeldungen und wünschen nun viel Spaß.

    Ekranos

    Marcel Kuhnt

    Janine

  • FAQ LOTUS.NG

    Warum sind manche Texturen einfarbig grün oder rot?


    Rote Texturen bedeuten, dass es sich um dynamische Texturen (Text-Texturen, Tauschtexturen und gezeichnete Texturen) handelt, welche im Moment noch nicht implementiert sind.

    Grüne Texturen bedeuten, dass es sich um Vegetation handelt ;) Nein, es handelt sich um Texturen, bei denen mindestens eine Kantenlänge keine Zweierpotenz ist.


    Wo befindet sich die Logdatei?


    Die Logdatei finden sich in eurem Benutzer-Ordner unter "AppData/Roaming/LOTUS-Simulator/simulator.log".


    Die Tunnel sind weg?


    Sind noch nicht implementiert – also kein Bug, sondern ein Feature! :-D


    Wie wird die Performance mit KI-Verkehr und Co. aussehen?


    Wir erwarten keine nennenswerte Veränderungen mit Implementation wie dem KI-Verkehr. Die neue Architektur ist auf maximale Parallelität, basierend auf Datenabhängigkeiten ausgelegt. Sprich solange etwas nicht die selben Daten anfasst, läuft es parallel. Die Daten schnüren wir extra in kleine Pakete damit mehr gleichzeitig passieren kann.


    Beispielsweise können gleichzeitig folgende Dinge abgearbeitet werden:

    • Rendering
    • KI-Updates (es können auch mehrere KI-Fahrzeuge parallel geupdatet werden)
    • Physik updates
    • Skripte ausführen (es können auch mehrere Skripte parallel laufen)
    • Input einlesen
    • Culling
    • ...

    Die Liste könnte man ewig weiterführen.


    Mehr Kerne = mehr besser

  • Moin allerseits! 😊


    Hier ein kurzer Überblick über die Entwicklungen seit der letzten Release-Version und was aktuell in Arbeit ist:


    Scripting:

    • Rust-Scripting: Scripts können jetzt in Rust programmiert werden. Ekranos macht den Einstieg leicht: Eine umfangreiche, automatisch generierte Dokumentation bleibt stets aktuell. Auch die Schnittstellen sind so gestaltet, dass sie mit wenigen Befehlen ins Projekt integriert werden können, um schnell loszulegen. Weitere Features sind vorhanden oder geplant, etwa ein experimenteller ChatBot, der beim Scripten unterstützt – ideal für Anfänger.
    • Pascal-Scripts: Bestehende Pascal-Scripts sind derzeit nicht direkt nutzbar, aber eine Lösung ist in Arbeit und in Planung – wie man es nimmt... 😉
    • WASM-Unterstützung: Intern erwartet Lotus Scripts im WebAssembly-Format. Dank WASM-Compilern, die es für viele Sprachen gibt, können theoretisch auch andere Programmiersprachen verwendet werden. Falls jemand eine andere Sprache supporten möchte, wendet euch bitte an Ekranos.
    • Scriptaustausch: Scripts werden derzeit separat abgespeichert. Das bedeutet, dass User neue Scripts für Objekte erstellen und veröffentlichen können. Diese können dann von anderen Usern genutzt und integriert werden. Ebenfalls können so Scripts für Fremdobjekte erstellt werden.
    • Content-Vorladen: Scripts können nun Content wie Texturen vorab laden, um Flackern oder Ladeverzögerungen zu vermeiden.
    • Script-Texturen: Scripttexturen funktionieren bereits. Texttexturen sind in Arbeit.
    • Gizmos: Es gibt jetzt die Möglichkeit, Gizmos im Simulator zu zeichnen.
    • Module: Die Kommunikation mit und zwischen Modulen ist integriert.
    • Debug-Tools: Variablenliste und Logging-Funktion direkt im Simulator.
    • Hot-Reloading: Das heiß begehrte Hot Reload ist ebenfalls verfügbar. Das neue Script wird direkt nach dem Kompilieren in Lotus NG geladen – und das in wenigen Sekunden!
    • Steuerung der Simulation: Scripts können Animationen, Sounds und Simulationsvariablen (z.B. Antrieb und Bremsen) steuern. Dafür müssen keine Sounds oder Animationen neu konfiguriert werden – die bereits vorhandenen Variablennamen werden einfach übernommen.

    Fahrzeuge:


    Fahrzeuge können geladen und gefahren werden, inklusive korrekter Animation von Achsen und Drehgestellen. Weichen sind zwar noch nicht implementiert, aber die Struktur dafür steht bereits, sodass man nicht mehr „irgendwohin“ fährt.


    Performance-Optimierungen:


    Ekranos achtet stets auf die Performance. Mit einem mittelstarken System kann man jetzt mit hoher Framerate und Geschwindigkeit über die Karte rasen, ohne dass es zu Rucklern kommt. Besonders beeindruckend: die Berlin-Karte mit vielen individuellen, hochauflösenden Texturen lädt in Sekunden nach dem Start komplett nach.


    Ausblick:


    Es gibt noch einige Features, die vor dem nächsten Release fertiggestellt werden sollen. Wir bitten also noch um ein wenig Geduld! 😊


    Bleibt gespannt! 🚀

  • Moin allerseits!


    Kurzer Stand zwischendurch:


    Neben diversen Arbeiten im Hintergrund (Umstrukturierungen, Optimierungen, Code-Pflege usw.) gibt es nun:


    • Mesh-Animationen im Allgemeinen und
    • Animationen der Weichenzungen im Speziellen – praktisch, wenn man nun nicht mehr die Weichenlage erraten muss! ;-)
    • Dieses leidige Thema mit den "Rissen" im Boden ist nun endlich, nach viel Analyse, behoben.

    Viele Grüße! :-)

  • Tach!


    Das Thema Lichtquellen soll mal irgendwann angegangen werden, da gab's ja noch nicht viel zu sehen. Was braucht man dafür? Nun – zuerst einmal natürlich Dunkelheit! Dunkelheit ist die Abwesenheit von Licht... Die logische Konsequenz ist also die Umsetzung der Bewegung der Sonne, um sie auch mal unter den Horizont zu bekommen.


    Und damit das alles wieder so realistisch wie möglich abläuft, mussten wir uns mit solch sonderbaren Begriffen wie Rektaszension, Frühlingspunkt, Ekliptik usw. rumschlagen, aber nun ist es vollbracht: Einen Sternenhimmel gibt es zwar noch nicht, aber die zugehörige Bewegung desselben erfolgt nun, und auf diesem wiederum bewegt sich die Sonne auf ihrer Bahn um die Erde... äh, naja, alles ist irgendwie umgekehrt, aber das ist ja alles eine Frage des Standpunkts... und der befindet sich natürlich in Berlin! :-D


    Kurz gesagt: Es gibt jetzt eine sichtbare Sonne (die ordentlich "aufgedreht" wird... ;-) ), und diese beleuchtet nun die Karte dynamisch, wenn auch bisher immer mit derselben Farbe und auch, wenn sie "von unten" scheint... ;-)


    Viele Grüße!

  • Anlässlich (bereits seit einiger Zeit) fertiggestelltem Himmel, Sonne und Licht eine kleine Impression:



    Schon längst sind aber auch die Lichtquellen in Arbeit!

  • Moin allerseits! :-)


    Es ist mal wieder viel Zeit und ein neues Jahr ins Land gezogen.


    Und es ist wieder viel passiert:


    • Die letzten Wochen geht es rund um das Thema "Mehrfachtraktion": Es können nun überhaupt mehrere Fahrzeuge aufgestellt werden, sie werden korrekt platziert und – ein neues Feature: Es werden nun explizit Kupplungskräfte simuliert, insbesondere um deren Längsbewegungen zu ermöglichen! Wenn die vordere GT6N-Einheit vorwärts und die hintere rückwärts zieht, kann man das nun sehr deutlich an der Kupplung sehen! ;-) Die Kupplungsanimation nervt jedoch noch herum...
    • Sehr umfangreich: Wir mussten eine Schnittstelle zu einer neue Sound-Engine komplett selbst erstellen, da zuvor pitchende Sounds äußerst merkwürdig geklungen haben ("stufig").
    • Weitere Features für Script-Texturen
    • Flackernde Meshs (speziell bei Transparenzen) beseitigt
    • Karten, die über unterirdische Strecken verfügen, stürzen nicht mehr ab (U-Bahn fahren oder sich in Tunneln bewegen kann man aber noch nicht).
    • ...und es müssen natürlich immer wieder Bugs gefixt werden.


    Nebenbei wird beim nebenbei entstehenden GT6N-Script ein allgemeines Script-Grundgerüst aufgebaut, welches dann alle für ihre eigenen Projekte nutzen können.


    Soweit aus den Werkshallen...


    Viele Grüße


    Marcel

  • Moin allerseits!


    Nach längerer Zeit haben wir nun eine kurze, aber sehr gute Nachricht zu melden:


    Die Features der nächsten großen Release-Stufe sind abgeschlossen und befinden sich in der Beta! Momentan müssen also "nur" noch Bugs behoben werden und die für diesen Stand notwendigen Script-Standards abgeschlossen werden; bei der Gelegenheit werden auch die Basisfunktionen des neuen Scripts für den GT6N fertiggestellt, sodass man den nun auch in der NG anständig durch die Gegend fahren kann. Und Gerüchten zufolge sind hinter "anderen" Kulissen auch schon diverse andere Scripts am Entstehen...


    Seit dem letzten öffentlichen Stand, bei dem man nur über die Karte fliegen konnte, steht diese Stufe unter der Überschrift "Fahren" mit all ihren Facetten:

    • Schienen-Fahrzeuge laden,...
    • zu Zügen zusammenstellen und...
    • auf bestehenden Entrypoints platzieren
    • Beinahe alles zum Thema Scripts - dieser Aspekt würde alleine fünf Stichpunkte verdienen... :-) Aber der Einfachheit halber: Das Einzige, was noch fehlen wird, sind die Interaktionsmöglichkeiten mit Dingen, die noch nicht existieren (FIS, Ampeln, Fahrpläne, so'n Kram) und es ist geplant, dass abgesehen von Rust auch eine andere (einfachere) Sprache offiziell von uns unterstützt wird.
    • Animationen inklusive Fahrzeugteilen und ihrer Beziehung zueinander
    • Sounds
    • Material-Steuerung per Script
    • Gebäude-Nachttexturen, die ohne Script arbeiten
    • Meshsichtbarkeit per Script
    • Meshanimationen
    • Per Script beschreibbare oder austauschbare Texturen
    • Anklickbare Meshs, die Scriptevents auslösen
    • Tastatursteuerung
    • Lichtquellen im Fahrzeug und in der Szenerie
    • Interaktion des Scripts mit der Fahrphysik
    • Die Schienen-Fahrphysik selbst
    • Mittels stellbaren Weichen (ebenfalls mit Meshanimationen) Fahrmöglichkeiten auf dem gesamten Netz


    Außerdem hat man einen Himmel mit Sonne, der über die justierbare Uhrzeit entsprechend auf Wunsch eingestellt werden kann (und natürlich weiter läuft). Hierdurch kommen die Lichtquellen und Nachttexturen ja erst richtig zur Geltung!


    Und wie soll es weiter gehen? Nun, unsere aktuelle Planung findet ihr hier:


    https://lotus-simulator.dev/roadmap/