What we've been up to, November 2023

I haven’t been very active on the blog lately, but I wouldn’t miss a quarterly update. Let’s dive straight into the last one for this year.

Unreal news

Let’s first talk about “What Epic has been up to”. And even before that, you can check “What Epic will be up to” in their Forward Looking Roadmap.

New pricing plan

During Unreal Fest’s Opening Session, Tim Sweeney announced that Unreal Engine would be moving to a seat-based licensing for non-gaming industries. No details are available as of yet, but I think it’s worth discussing as driving simulation (and beyond) will most likely be impacted by this change.

I think this change is rather fair and coherent; it never really felt right or sustainable that Fortnite and other game developers were the ones paying for everyone else’s free Unreal. Especially when Epic invested so much resources in features that only benefited non-gaming industries (e.g., nDisplay).

Once the complete terms of this new subscription plan are out, we’ll get a clearer picture of how much this will actually cost us (or you). But I’m not too worried about that: Epic has a very good track record of not overcharging small businesses, as their “5% fee over $1M revenue” gaming policy can attest, or Twinmotion pricing. Plus the fact that we’re a university and mostly do academic research, I’m guessing (hoping) the price will be affordable.

Unreal Fest

Unreal Fest is Epic’s yearly event for Unreal users, and even though this edition took place a few days after the announcement of layoffs at Epic, it didn’t stop the event from offering great content. Below are a few sessions that I really enjoyed.

Those last two sessions were respectively hosted by the amazing Chris Murphy and Ari Arnbjörnsson. They’ve got lots of others talks out there, go watch them!

OpenDRIVE plugin

Not too much happening around the plugin, as we’re focusing on other things at the moment. But still, I added a Scripted Actor Action to align any actor with the OpenDRIVE lane it’s currently in. Not exactly ground-breaking, but still a nice tool to have around.

We’re also working on revamping how OpenDRIVE assets are configured within levels, maybe moving away from using a custom World Settings class, and using a Subsystem instead. Once we’re satisfied with the result, we’ll probably make the first official release of the plugin.

Research projects

NEWMOB

Our most ambitious project should be live any day now! And for us, “live” means that the research experiment is ongoing, and we are recording data from participants driving in our simulator. I can’t share videos of the experiment before it’s over, but my colleagues crafted some really beautiful looking and immersive scenes full of complex yet realistic driving situations. You can learn more by reading our previous entries.

At the moment, we’re working on QA (though we don’t call it that), with internal testing using colleagues not involved in the project. So obviously, lots of last-minute bug squashing, ensuring that we have all the data we need. Who knew that having 150+ Lab Streaming Layer outlets on the same computer would need some tweaking to not kill our framerate? Well, I didn’t, but thankfully LSL is well documented, so figuring which variable to set in the configuration files wasn’t too much of a headache. Or maybe it’s just that I’m used to it in Unreal…

Side note: the static lighting/Precomputed Visibility build kept on crashing for no apparent reason on my build machine. Turns out, 32GB of RAM weren’t enough (though Lightmass wasn’t very explicit about it). And since I didn’t have the time to purchase more (purchasing anything takes a lot of time in our world), I simply asked a colleague to install me an old 500GB SSD which I then fully allocated to swap memory (or whatever that’s called in Windows). And just like that, the build succeeded! So if you need more RAM quickly, just use an old SSD! Or try downloading more RAM ;-)

And when I’m not annoying my colleague with my weird SSD requests, they actually have time to build some amazing toys tools for us. Above you’ll find a picture of the first prototype for our e-scooter simulator, that will use our Varjo XR-3 for visuals, including passthrough. The first tests have been very encouraging, and we’re all eagerly waiting to move onto this phase of the project. But first, we’ve got an experiment to run!

Prévision

This project was briefly introduced in the last post, but work is ramping up here.

This will mostly be pedestrian-centered experiment, so scenes are rather small, but we intend on using a Varjo XR-3, so lots of work is already going into optimization and figuring out the right settings to get the best balance between visual fidelity and framerate.

We’re also exploring the hardware related to pedestrian studies, like the wireless adapter for the Vive Pro or VR treadmills (e.g., Omnifinity, Omni (Virtuix), KAT WALK).

Sérénité

New project alert! Well, kind of: Sérénité actually is a project that’s nearing its end, and that actually already had a major driving simulation experiment (using our previous non-Unreal tools). But to get a bit more data, the researchers in charge of the project wanted to run one last very simple experiment.

“Can we get a boring 20-min highway fully-autonomous drive?” Sure you can!

Above is the very first prototype I implement, and a lot has already changed since. I have a “Workflow in progress” post for this project in the backlog, so expect more about it soon.

Misc.

Reducing packaging and deploying times

One issue we had with testing on our simulators was the time it took to install a new release. Since we use packaged builds, generating a new package and deploying it on the 9-node cluster took over an hour, which prohibits quick iteration.

I managed to get this down to less than 5 minutes by tweaking our BuildCookRun command:

  • Removing the following flags
    • -compressed: removing it will lead to larger packages, but we don’t care about that
    • -pak: disables “paking” of cooked content into a single file
  • Adding the following flags
    • -iterativecooking: only cook changed files
    • -nocleanstage: don’t clean the stage directory (i.e., keep previous one)

Since we use robocopy to deploy, now only the changed assets are cooked and deployed. So the first “fresh” install will take a while (~3h), but any subsequent one will only be a few minutes.

Test track

Our Virtual Driver had some issues maintaining proper steering at high speed in UE5, related to the new Chaos Vehicles.

To debug this, I created a new Blueprint. It has the following features:

  • A spline to draw the trajectory you want for the car. It also adds cones on the sides.
  • A UMG widget that displays the car’s input (or whatever else you might want), using Kantan Charts for plots.
  • A reference to the vehicle to test, so that it can give its Virtual Driver the proper goals to drive on the track. For example the speed, which obviously can be edited on the actor.

That Blueprint was really easy to implement (I already had the widget), and using it I was able to narrow down and fix the instability issue in less than an hour. Once again, Unreal’s vast toolset and features prove to be insanely valuable.

Marketplace

Let’s wrap this up with the traditional “What Unreal Creators have been up to”.

The only product we actually bought is KitBash3D’s Storefronts, which we’ve been eyeing for a while.

Mirrorpolis was announced a few weeks ago:

We help Unreal Engine creators to bring real-world urban landscapes into their experiences. Based on public data, everything is generated procedurally.

I encourage you to check out their free demo, it’s quite impressive that they managed to procedurally generate 1km² of Toronto without any noticeable artefact. Along with CityBLD, those sure are exciting times to be creating virtual cities!

If cities aren’t your thing, and you’d rather simulate nature, Errant Worlds has everything you need. You can find out more on their trailer or their Inside Unreal presentation.

Leartes Studios released a very interesting Ultimate Level Art Tool, and this video shows just how powerful it is.

Richarme, who previously released a very good Cyclist, has now published a pack of two Physically Disabled Characters. We actually created those same characters internally, but the result was much less impressive. Can’t wait to see more from this creator!

And finally, a new pack of modular European Buildings, which is always harder to come buy than their American counterpart. Those will sure look great alongside Quixel’s buildings, the Modular European Buildings and the Archmodels Vol 8 packs from the Marketplace.

Written on November 1, 2023