Sunday, October 6, 2024

Random: Nintendo Reveals The Player Prediction Methods Used To Cut Zelda: TOTK’s Load Times


Image: Nintendo

We quickly lost track of how many times we muttered “wait, how did Nintendo do that?” in our first few hours of playing The Legend of Zelda: Tears of the Kingdom. The fact that it runs on the Switch at all is a technical marvel, but arguably one of its most impressive feats is the expansive Depths and the nonexistent load times required to get to them.

Until recently, we had chalked up the seamless transition from surface to Depths as some kind of Nintendo wizardry — how else could the Switch possibly load all that so quickly? However, it seems no magic was officially involved as Nintendo has now shared some of the technical tactics used by the developers to keep load times to a minimum (thanks, Automaton).

As reported by Famitsu (and translated by Automaton), members of the TOTK development team hosted a panel at Japan’s Computer Entertainment Development Conference (CEDC) last week, taking a deep dive into the difficulties of developing the Depths.

As you might expect, initial load times when travelling to the underground world were long and regularly resulted in crashes. To combat this, Nintendo developed a neat workaround to predict how much of the environment needed to load based on when/where Link was likely to enter the Depths. According to Automaton’s translation, a select section of the Depths starts to load whenever the player approaches “a possible waypoint to the underground” (be that a chasm or well) under the assumption that the player will dive in. Rather than attempting to load in the entire environment at once, this gets Link’s landing spot all prepared before he’s even taken the leap, resulting in an initially seamless transition while the rest of the loading happens on touchdown.

Pretty cool, huh? So yes, even if you thought heading to the Depths at that particular moment was entirely your call, Nintendo was one step ahead and was already preparing for Link’s arrival.

Of course, this wasn’t the only workaround to getting the Depths seamlessly loaded. The developers also employed a profiling tool (a tool that measures game performance) to work out which objects were taking the longest to load, pushing them into “blank time” when no other loading was underway.

Another neat workaround prioritised only loading objects in the player’s field of view, with anything not currently visible being loaded in later.

All this was to make the initial transition feel that bit smoother — and boy did it work! We’ll never forget the first time we heard that intimidating brass section as Link dives into the Depths…

The development team clarified in the panel that this sense of verticality was integral to TOTK’s design. According to the developers, Breath of the Wild was effectively built on a two-dimensional structure to work with the Wii U’s technical limitations. With TOTK being built solely for Switch, the team was determined to stretch the map’s verticality and show that the ageing hybrid console still had some life in it.

Elsewhere in the TOTK CEDC panel, director Hidemaro Fujibayashi and engineer Kenichi Hirose explained how the team used an internal social media-like platform to help streamline development — it even had Rupees in the place of Likes!





Article credit

FOLLOW US

0FansLike
0FollowersFollow
0SubscribersSubscribe

Related Stories

An Efficient and Handy Guide to Earning from Gaming
Enter your email address and we will send you a 100% free e-book on actionable guide.
Building a Profitable Gaming Channel
GopoGamers.Com
Limited Copy Left

Fatal error: Uncaught ErrorException: md5_file(/home/execinsi/gopogamers.com/wp-content/litespeed/css/cb800615c1b4958abecc0a888c1e2c40.css.tmp): Failed to open stream: No such file or directory in /home/execinsi/gopogamers.com/wp-content/plugins/litespeed-cache/src/optimizer.cls.php:130 Stack trace: #0 [internal function]: litespeed_exception_handler() #1 /home/execinsi/gopogamers.com/wp-content/plugins/litespeed-cache/src/optimizer.cls.php(130): md5_file() #2 /home/execinsi/gopogamers.com/wp-content/plugins/litespeed-cache/src/optimize.cls.php(837): LiteSpeed\Optimizer->serve() #3 /home/execinsi/gopogamers.com/wp-content/plugins/litespeed-cache/src/optimize.cls.php(330): LiteSpeed\Optimize->_build_hash_url() #4 /home/execinsi/gopogamers.com/wp-content/plugins/litespeed-cache/src/optimize.cls.php(264): LiteSpeed\Optimize->_optimize() #5 /home/execinsi/gopogamers.com/wp-includes/class-wp-hook.php(324): LiteSpeed\Optimize->finalize() #6 /home/execinsi/gopogamers.com/wp-includes/plugin.php(205): WP_Hook->apply_filters() #7 /home/execinsi/gopogamers.com/wp-content/plugins/litespeed-cache/src/core.cls.php(477): apply_filters() #8 [internal function]: LiteSpeed\Core->send_headers_force() #9 /home/execinsi/gopogamers.com/wp-includes/functions.php(5427): ob_end_flush() #10 /home/execinsi/gopogamers.com/wp-includes/class-wp-hook.php(324): wp_ob_end_flush_all() #11 /home/execinsi/gopogamers.com/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters() #12 /home/execinsi/gopogamers.com/wp-includes/plugin.php(517): WP_Hook->do_action() #13 /home/execinsi/gopogamers.com/wp-includes/load.php(1280): do_action() #14 [internal function]: shutdown_action_hook() #15 {main} thrown in /home/execinsi/gopogamers.com/wp-content/plugins/litespeed-cache/src/optimizer.cls.php on line 130