What we've been up to, August 2023

It’s the middle of summer, everything is going much slower than usual, so let’s take that time to look back at the past three months, shall we? I’m not going to lie, I wasn’t very productive… But still, some interesting things happened.

OpenDRIVE plugin

One of the most common feature request for our OpenDRIVE plugin is pretty understandable: having the ability to visualize the road network within the Unreal Editor. I never took the time to implement it since we already can do that in RoadRunner, which was good enough for us (and also, I’m very lazy).

However, a gamedev student recently joined our team and started working on that. Even though it’s not quite ready yet, it looks to be quite promising! Along with the viewer, we’re also working on overhauling the handling of OpenDRIVE assets within worlds, so lots of changes to come.

And beyond that, we’re also exploring more new features for the plugin, like an OpenDRIVE to ZoneGraph conversion, or an OpenDRIVE sampler for the new Procedural Content Generation framework. But at this time, it’s more wishful thinking than actual planned development, so don’t hold your breath on that!

NEWMOB

NEWMOB continues to be our main focus, with the experiment scheduled to start in a few months. Most of the work now revolves around polishing, optimizing, cleaning. And most importantly: on-simulator testing. Those tests actually lead to some interesting new features, and I’ll present a few below.

Experimenter UI

During development of our scenarios, we added multiple spawn points along the route to be able to test any part of the scenario without having to start from the beginning. This worked great while in-editor, but how to handle it in a packaged executable running on an nDisplay cluster?

The answer is a custom user interface, created with Unreal’s UMG. It was really fun and easy to implement, and it’s proven incredibly valuable to quickly find and select any spawn point in any of our scenario. Testing a specific event became much faster.

Cockpit StreamDeck

The custom UI is nice, but when testing in the simulator, most of the time we’re actually seating behind the wheel, and not in the control room where all the experimenter controls are located. So how can we avoid having to go back and forth between the driver and the experimenter seats?

The solution for that had actually been planned for a while: add a StreamDeck in the cockpit. The most useful action so far has been to simply pause the simulation, either to take a note of something, a picture of a visual glitch, or just take the time to check that everything looks ok in the scene. Another great shortcut is the ability to restart the scenario. And we’ve got lots of unbound buttons, so if another need arise, we’ll just bind it!

Log fetching

During early testing, especially when it’s the first time running a large experiment on our largest simulator, crashes are to be expected. Unreal has many built-in features to help with that: attaching the debugger, logs, minidumps, etc.

However, when running an nDisplay cluster, errors and crashes can come from any node, and finding the culprit can become tricky. To help us narrow down those issues, we wrote a simple script that fetches logs and minidumps on all cluster nodes (using Veyon’s CLI), stores them on a server, and notifies us of the event via a Discord webhook. Currently, the process is triggered manually, but we probably could even automate that…

Prevision

This new project started earlier this year, and we’re just getting started with the simulation side of things. So nothing fancy to show off just yet, but new people are joining our team to create more Unreal things.

Prevision will be our first project using Unreal Engine 5, so we’re really excited about that. I think we’ll also get to use our Varjo XR-3 with all its mixed-reality features, so that’s another good news here.

More news about this project in future updates!

LIGHTING NEEDS TO BE REBUILT

Since our main project at the moment, NEWMOB, is still running on Unreal Engine 4, we don’t have access to fancy features like Lumen. This means we’re still using Lightmass to build our static lighting. This kind of is a new process for me, so I had to figure some things out along the way.

Being as lazy as I am, the first step was to write a script that builds lighting from the command line, and then to teach my nice Discord bot how to run said script. Along the way, the bot also learned to run nightly builds, which is always a good thing to have.

Having automated all the things, the next step obviously was to debug why nothing was actually working as intended, and why Lightmass kept on crashing for no apparent reason.

So here are a few things that Lightmass really doesn’t like:

  • Conflicting materials GUIDs, which apparently we had a lot of. Many thanks to laggyluk for their SwarmGuidFixer that fixes all of that in one click, truly saved me headaches here.
  • Mesh components with null scales, which for whatever reason we also had a whole bunch of. To track those down, I made a simple Editor Utility Widget, which also supports Instanced Static Meshes.

While I was at it, I also added the option to list all lights to check for their mobility, because, you know, maybe having 100+ dynamic spotlights inside a shopping mall isn’t really that necessary? By the way, if you’re on UE5, you can use the really cool Light Mixer interface.

SIMAX

On the hardware side of things, a lot of work is being done around SIMAX, our flagship simulator.

One of the most important upgrade being implemented during this maintenance is the addition of AC within the car, which should really help alleviate simulator sickness. When our “jack of all trades” mechanic said that he would have to cut a hole in a stretched screen, we weren’t that confident; but shame on us for not trusting his expertise, because the end result is perfect.

We’re also dealing with hardware issues on our recent upgrade of all cluster nodes (i.e., computers), which means more work and delays, but it should all be solved in a few weeks.

And finally, we’re still working hard on a more thorough upgrade of this simulator, but once again, it’s too early to get into details about that. I hope things work out for the best and I’ll have more exciting news to share soon.

Marketplace

As usual, we’ll end this post with some highlights from the Marketplace.

It’s not out just yet, but the CityBLD plugin from WorldBLD looks simply incredible. There already are a few procedural city products on the Marketplace, but this one seems above and beyond all others.

Our favorite creators also are hard at work with new products. Meik.W added two Car Dealerships. Der Sky added a must-have Smart Road Markings, a Parking Garage, Shelf Storage and is also starting a new shop collection with an Electronic Store.

Crafting immersive and realistic environments has never been easier, and Marketplace creators have a huge role in that. Many thanks to them for their work!

Written on August 1, 2023