Features

How Epic’s Unreal Engine powers a major Star Wars theme park ride

Inside a special behind-the-scenes Disney Imagineer presentation and quick trip to Disney World to ride Smugglers Run

Smugglers Run cockpit

When you think about the use cases for Epic Games’ Unreal Engine, a few things might come to mind.

Most notably, you’ll likely think of video games like Fortnite, Final Fantasy VII Rebirth or the Canadian-made Gears of War series. You might even be aware that it’s used in the production of the popular The Mandalorian Disney+ series.

But what you might very well not know is that Unreal Engine also helps power a major Disney theme park attraction. Indeed, Unreal Engine is used to power none other than Smugglers Run, the Star Wars: Galaxy’s Edge ride that features a real, life-size Millennium Falcon that also features an interactive experience in which you and other guests control a virtual version of the iconic ship.

Smuggler's Run Millennium Falcon

At Unreal Fest Orlando 2025, Epic Games and Disney offered a behind-the-scenes look at how Unreal Engine 4 was used in the making of Smugglers Run.

“When we first started developing Star Wars Galaxy’s Edge, we knew from the very get-go that we wanted to create a place that was unlike anything that we had necessarily done before in Disney Parks — a place where we were truly inviting guests to step into and live their very own Star Wars story,” explains Asa Kalama, vice-president executive of Creative & Interactive Experiences at Walt Disney Imagineering. “One of the things that we knew we had to deliver on for our guests was the ability to not only look at the Millennium Falcon or ride in the Millennium Falcon, but really get to control the fastest ‘hunk of junk’ in the galaxy.”

This meant that Disney couldn’t rely on one “linear” film that might play in other rides; it had to be something interactive, not unlike a video game. On top of that, he notes that there’s an “incredibly high expectation of the level of quality of the overall sort of visual presentation” of the experience, given the pioneering work done by Star Wars visual effects studio Industrial Light & Magic (ILM). “So we evaluated a number of potential opportunities, but ultimately settled on Unreal and formed a really wonderful partnership with Epic Games,” he says.

Smuggler's Run family

If you’ve never ridden Smugglers Run, the ride has guests taking on different roles in the Falcon, including pilots who alternate between horizontal and vertical steering, gunners who fire at incoming enemies and debris and engineers who repair the ship. It’s meant to create a dynamic experience that reacts to how you’re performing.

To create that, Kalama says Disney Imagineers leveraged Unreal with a 30-foot projection dome that’s lit up with five projectors that show a game computer to every single cockpit in the experience. Within that lie eight graphics cards that work in parallel to drive the five projectors, plus a custom projection blending solution that marries everything seamlessly.

However, he notes that this unique project setup wouldn’t work with many existing Unreal assets, resulting in Disney working closely with Epic to develop “a custom fork” of the engine that would be compatible with effects that Disney and ILM felt were “cinematic.” One of the benefits of converting film assets to Unreal, he says, is that they could then be playtested to settle on the optimal experience for guests.

Smugglers Run hyperdrive

Outside of that, Kalama says that Unreal actually allows his team to further shake things up in Smugglers Run by adjusting the time of the experience on the fly.

“You may have ridden an attraction before that might back up at the end of a sort of ‘load-unload’ station. We wanted to take advantage of rendering this media in real time and not having any of those moments where you’re just sort of sitting there statically. So we actually, over the course of the mission, are constantly calculating the estimated time by which you will arrive back at the load station, and we’re actually dynamically changing the duration of the overall experience,” he explains.

This could come in the form of lengthening or shortening individual scenes, like the one where you’re in the middle of an asteroid field and have to fix your broken hyperdrive. “We want you to be as immersed as possible for as long as possible. Again, that’s something that’s super unique and something that we’ve never been able to do before,” he says.

I certainly see what he means. As part of this opportunity, we went to Galaxy’s Edge at Disney World to test out Smugglers Run. I’ve done the ride twice before at Disneyland, but I definitely felt like this time was longer for demonstrable reasons: my co-pilot, a Disney employee, was sitting there recording us. Therefore, he wasn’t listening to fan-favourite Star Wars character Hondo’s repeated orders for him to flip certain switches or steer us in the right direction. While his inaction didn’t result in some “game over” state, it definitely made the experience go a bit slower versus the other times I’ve done it with actually responsive teammates.

Smuggler's Run cockpit

Kalama also teased that the latest version of Epic’s development tool, Unreal Engine 5, is being used to develop new content for Smugglers Run. As revealed at the recent Star Wars Celebration in Japan, a new Mandalorian-themed mission is being added to the ride on May 22, 2026, day and date with the theatrical release of The Mandalorian and Grogu. 

Besides having greater fidelity thanks to UE5, Kalama says this new mission will have much more variety in how it plays out. That’s because it actually has multiple paths, allowing you, the player, to chart your course. This includes going to Bespin, the wreckage of the second Death Star, or Coruscant. On top of that, he teases that engineers will be able to communicate with Grogu.

“Every time you ride Mission 2, you will have the opportunity to have a entirely sort of different branching experience. And then even within each of the level environments themselves, we’ve worked with our partners at ILM to develop levels that have considerably more branching so that even if you return to the same destination, there’s a new route or new sort of secrets to uncover,” he says.

Overall, it was a neat look at how cross-disciplinary something like Unreal Engine can be, as well as the sort of thought process that goes into harnessing it across different media.

Smugglers Run is available at Galaxy’s Edge at Disneyland and Disneyworld. The Mandalorian mission will roll out to both parks on May 22, 2026.

Image credit: Disney

MobileSyrup may earn a commission from purchases made via our links, which helps fund the journalism we provide free on our website. These links do not influence our editorial content. Support us here.

Related Articles

Fatal error: Uncaught Aws\S3\Exception\PermanentRedirectException: Encountered a permanent redirect while requesting https://ms-staging-baselayer-static-assets.s3.ca-central-1.amazonaws.com/?list-type=2&delimiter=%2F&prefix=uploads%2Fwpcf7_uploads%2F. Are you sure you are using the correct region for this bucket? in /var/www/html/vendor/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php:49 Stack trace: #0 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(209): Aws\S3\PermanentRedirectMiddleware->Aws\S3\{closure}(Object(Aws\Result)) #1 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\Promise\Promise::callHandler(1, Object(Aws\Result), NULL) #2 /var/www/html/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() #3 /var/www/html/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(163): GuzzleHttp\Promise\TaskQueue->run() #4 /var/www/html/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(189): GuzzleHttp\Handler\CurlMultiHandler->tick() #5 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\Handler\CurlMultiHandler->execute(true) #6 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\Promise\Promise->invokeWaitFn() #7 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending() #8 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList() #9 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending() #10 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList() #11 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\Promise\Promise->waitIfPending() #12 /var/www/html/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): GuzzleHttp\Promise\Promise->wait() #13 /var/www/html/vendor/aws/aws-sdk-php/src/ResultPaginator.php(151): Aws\AwsClient->execute(Object(Aws\Command)) #14 /var/www/html/vendor/aws/aws-sdk-php/src/functions.php(52): Aws\ResultPaginator->valid() #15 /var/www/html/vendor/aws/aws-sdk-php/src/functions.php(69): Aws\map(Object(Aws\ResultPaginator), Object(Closure)) #16 [internal function]: Aws\flatmap(Object(Aws\ResultPaginator), Object(Closure)) #17 /var/www/html/wp-content/plugins/s3-uploads/inc/class-stream-wrapper.php(695): Generator->valid() #18 [internal function]: S3_Uploads\Stream_Wrapper->dir_readdir() #19 /var/www/html/wp-content/plugins/contact-form-7/includes/file.php(362): readdir(Resource id #734) #20 /var/www/html/wp-includes/class-wp-hook.php(322): wpcf7_cleanup_upload_files() #21 /var/www/html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #22 /var/www/html/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #23 /var/www/html/wp-includes/load.php(1280): do_action('shutdown') #24 [internal function]: shutdown_action_hook() #25 {main} thrown in /var/www/html/vendor/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php on line 49