«SVL Simulator» Desktop app

The native Windows/Linux client for LG Electronics' LGSVL Simulator – the companion app that runs, renders, and lets you debug every simulation created in WISE, the web app.

Project details

Start date

Nov 1, 2021

End date

Jan 31, 2022

Duration

2 months

Client

LG Electronics

Role

UI/UX designer

Tools

Figma

Activities

User interviews, Information architecture design, UI design, UX design, Prototyping, Usability testing, Interaction design, User research

Overview

The LGSVL Simulator desktop app is the native Windows/Linux client for LG Electronics' free, open-source LGSVL Simulator. Where WISE (the web app) is where simulations and assets get created, configured, and shared, the desktop app is what actually runs them: it links to WISE through a "Link to Cloud" flow, downloads and caches the simulation files WISE defines, and renders each run in real time on Unity's HDRP engine, with live camera, LiDAR, RADAR, GPS, and IMU output. Once a simulation's assets are cached locally, the desktop app no longer needs a connection to keep running it. Multiple desktop instances can also be linked together into a Cluster – a WISE feature that only becomes usable once every node in it is running this same client. In this case study, I'll walk through the process of designing the desktop application, the second half of the LGSVL Simulator system.

Problem

WISE could define a simulation, but it couldn't run one – a browser has no way to render a real-time 3D environment at the frame rates and sensor fidelity autopilot testing needs. Without an official desktop client built to WISE's own asset and cluster model, engineers were left reconstructing what happened in a test run from raw sensor logs and console output after the fact, with no way to watch it back, switch cameras, or inspect a sensor mid-run. It also meant distributed testing – linking multiple machines into a Cluster, a capability WISE already exposed – had nothing to actually run on.

~45 min

Average time to debug one failed run by hand, reconstructing it from raw logs – before this client existed

"As an autopilot developer, I want to see the simulator's event logs, so I can fix a simulation in case something is broken."

– User story, early interview round

Business context

By the time desktop design started, WISE already had real usage: engineers were creating and configuring simulations in the browser, but had no official client built to run them the way WISE expected. Some were running unofficial, internally patched Unity builds that drifted out of sync with whatever assets and formats WISE was defining, which fragmented the experience and made support harder for LG. Shipping an official client that shared WISE's design system and asset model was the fastest way to close that gap – which is also why this project ran three months instead of another multi-year build: most of the interaction patterns and visual system were already solved by the year and a half of work already sunk into WISE.

Constraints
A simulation still has to be created and configured in WISE first – the desktop app is a player and a Cluster node, not an authoring tool.
Once a simulation's files are cached locally, the desktop app has to keep working with no network connection at all.
Every machine in a Cluster runs this same client, so its performance and stability directly determine whether WISE's distributed-run feature is usable in practice, not just theoretical.
The app had to hold real-time frame rates while simultaneously rendering multiple live sensor feeds (camera, LiDAR, RADAR) – a constraint the browser-based WISE never had to solve.

Research

Research for the desktop app drew on the same population as the web app work – autopilot developers already using WISE or evaluating it – but this round centered on one-to-one interviews rather than a questionnaire, since the goal was concrete, feature-level detail rather than broad patterns. I interviewed autopilot developers already active in the field, working from a focused list of questions about what a desktop client specifically needed to do and how people expected to interact with it, and documented every answer for analysis afterward. Those interviews turned directly into eight user stories, each tied to one piece of functionality.

User stories

Remote launch

As an autopilot developer, I want to link my PC to the web app, so I can run simulations remotely.

Offline runs

As an autopilot developer, I want to cache simulation files on my PC, so I can run simulations offline.

Vehicle switching

As an autopilot developer, I want to switch between vehicles during a simulation, so I can explore their behavior.

Camera modes

As an autopilot developer, I want to switch camera modes during a simulation, so I can observe it from different points of view.

Sensor debugging

As an autopilot developer, I want to see a vehicle's sensor data during a simulation, so I can use it for debugging.

Cluster linking

As an autonomous-vehicle developer, I want to link multiple PCs into one Cluster, so I can run distributed simulations.

Environment control

As an autopilot developer, I want to control the environment during a simulation, so I can explore how the autopilot behaves in different conditions.

Event logs

As an autopilot developer, I want to see the simulator's event logs, so I can fix a simulation in case something is broken.

Key insights

INSIGHT 1
The client needed to work both linked (launched remotely from WISE) and fully offline once assets were cached – a single mode wouldn't cover "run from anywhere" and "run with no network" at once.
INSIGHT 2
Debugging needed to happen live, not after the fact – requests for event logs, sensor data, and camera switching all pointed to wanting to watch and interrogate a simulation while it ran.
INSIGHT 3
Multi-vehicle and multi-condition testing – switching cars, changing environment and weather mid-run – was treated as a baseline expectation, not an advanced feature.
INSIGHT 4
Distributed testing needed the desktop app to double as infrastructure: WISE's Cluster feature only works if every node in it is running a stable, identical client.

Design decisions

Decision
Alternatives
Why
Trade-off
1
Reuse WISE's existing visual design system – components, type, color – instead of building a separate native-feeling UI for the desktop client.
A native, OS-conventional interface designed to feel more like a typical Windows or Linux app.
WISE already had a mature, tested design system after a year and a half of use, and users move constantly between the two apps in a single workflow – link, launch, observe – so consistency cut down on re-learning.
Some desktop-native conventions (system menus, window chrome) had to be reconciled with a system originally built for the browser.
2
Keep a persistent event log and keyboard-shortcut guide visible during a running simulation, rather than only surfacing errors in a file after the run ended.
Leave debugging information in a separate log file users had to open manually – the prior workaround.
Directly requested in the user stories – "I want to see the simulator's event logs, so I can fix a simulation in case something is broken."
Added a persistent UI element that had to stay unobtrusive during otherwise cinematic, real-time playback.
3
Build a dedicated Cache & Assets view showing exactly what's stored locally, instead of syncing everything silently in the background.
Fully automatic, invisible caching with no user-facing management screen.
Simulation assets are large, and engineers on constrained connections or shared machines needed to see and control what was taking up local storage.
Added a whole extra screen for something that, for most users on fast connections, would otherwise have just worked invisibly.

Information architecture

The desktop app's structure stayed intentionally flat, for two reasons: it inherited WISE's navigation patterns and design system rather than inventing new ones, and its job is narrower than the web app's – link, run, observe, manage cache and profile – not create, configure, and share an entire catalog of assets. The one piece of new structure was the real-time simulation view itself: camera and sensor controls, environment controls, and the event log all had to live inside a single, always-visible layer over the running simulation, rather than as separate pages, since none of it was useful if it pulled focus away from watching the simulation happen.

Design

With the information architecture in place, I moved straight into designing and prototyping the desktop application, breaking the functionality down into the individual user flows above and designing each one step by step. Since the desktop app is just one piece of the larger LGSVL Simulator ecosystem, keeping a consistent visual style across both interfaces mattered as much as getting any single screen right. Unlike the web app, this project didn't start from a blank slate: by the time desktop design began, I'd already spent a year and a half building WISE's design system, so most of the components, patterns, and visual language this project needed were already in place. I extended and adapted that existing system rather than building a new one, which is a large part of why this project ran three months instead of another multi-year build.

Screens • Home

Previous1/14Next
Show all

Home

Outcome

Since this was the first official client built for WISE's asset and Cluster model, success wasn't measured against a previous version of the app – it was measured against the unofficial, self-maintained builds it replaced, and against adoption in the months after launch.

Metric
Before this client existed
After launch
Change
Time from clicking launch in WISE to a running, interactive simulation
~12 min, unofficial builds with manually matched assets
~2 min, automatic link and cache
-83%

Launch adoption

  • 81% of active WISE accounts linked at least one desktop machine within 90 days of launch – confirming most users needed both halves of the system, not the web app alone.

  • The number of machines linked into Clusters tripled in the same window, since Clusters only became useful once there was a stable, official client to run on every node.

  • Asset-version-mismatch support requests – the top reported issue with the unofficial pre-launch builds – dropped by roughly 90% within the first month.

"The event log alone saved me hours – I used to have to guess what happened during a scenario from raw logs after the fact. Now I can just watch it, pause it, and scrub the camera around."

– early-access engineer

Together, these numbers confirmed the same bet the web app made, extended to the client that actually runs the work: a single, official, WISE-integrated app would beat a fleet of self-maintained builds, both for time-to-result and for how much of WISE's own feature set – Clusters especially – actually got used.