fi, en, (sv, ja, hu, yi) | avatar by https://twitter.com/udonkimuchikaki


libera.chat, irc.sortix.org
nortti
microblog (that is, a blog with small entries)
microblog.ahti.space/nortti

0xabad1dea
@0xabad1dea

Question going around twitter: what’s the most useless piece of video game knowledge you know? (you’re getting more content than twitter is:)

  1. There is a fully functional Arwing from Star Fox inside Ocarina of Time. It was a debug test for the z-targeting system.

  2. Majora’s Mask has calendar support for more than three days and on some days the moon is very far away.

  3. The Imposter Professor Oak pokémon trading card was based on a scrapped plot line for Pokémon Gold/Silver (in fact they threw out the entire plot and world map and started over)

  4. The Paper Mario engine supports having no boots equipped and will accordingly prevent you from using jump based attacks, though there is no way to get into this state without editing ram.


MrGameAndShout
@MrGameAndShout

Oh! I've got one for this! And I was recently replaying this game to finish DLC that I hadn't completed, so it's still top of mind for me! But as with all of my stories, I've gotta build it up a bit. So here goes, and please know that the example isn't exactly the way things work, but it should be close enough to understand why the game designers made this choice.

(And with apologies to folks like EoN and Sabera who are going to absolutely school me if/when I get something wrong.)

TL;DR - In Outer Wilds, you are always at the center of the universe.

There are a lot of ways to store numbers in a computer. Integers (whole numbers) are easy; take a bunch of bits, use one of them to indicate a positive or negative value, and the rest to form a number. Instead of bits, let's use decimal digits, for the non-CS folks in the audience. So if I've got 8 digits, plus a sign indicator, then my range is roughly -99999999 to 99999999. But what if I want to store values with a decimal point, or really BIG numbers? I suppose I could keep adding digits, but that's going to get ridiculous after a while; is there another way to do this, but without taking up any more digits?

Absolutely! The tool for this is something called a "floating-point" value. Instead of using all 8 like we have been, let's divide them up; six digits are in group "a", and the other two are in group "b". The "a" digits form a base value. The "b" digits though are used as an exponent. We're going to take the "a" digits, and multiply them by 10 to the power of the "b" digits. And because we want to be able to go really big or really small, we'll do an offset against the "b" digits, say subtracting 50 from their value. So to translate a series of digits "aaaaaabb" into their value, the math is something like:

(aaaaaa) x 10 ^ (bb - 50)

This is really useful! We can define numbers as small as a decimal with almost 50 zeroes and then our "a" value, or as large as our "a" value with 49 zeroes after it! That's an astonishingly massive range of values, without using any more data than we originally were for our integer!

But as is often the case, there's a trade-off, which comes in the form of precision. In this case, it comes in the form of granularity. We may be able to display a bunch of arbitrarily large or small numbers, but the larger the number we want to show, the larger the steps between each number we can display. Remember we've only got those 6 "a" digits to work with. If you want to show a million, that's fine (10000051). But because you only control the six biggest digits, you couldn't show a million and one; you'd have to jump from a million, to a million and ten (10000151). The larger your exponent gets, the larger the gaps between sequential smallest values, the more distance you have to jump between them.

How is this relevant to video games? Well, a lot of things that need to be known or calculated with arbitrarily high precision (say, the exaction position of the camera) are often stored as floating point values. In the game, everything exists as a position that's calculated relative to the "center" of the game space. If you get too far from this center, you start running into the limits of floating point granularity; your exponent gets too big, and the camera or other objects can no longer move in a way that looks smooth to the player. Most games will solve this by redefining the "center" on the fly as you move between areas, or as the game loads in new parts of the level. If you change where the "center" is, then your player doesn't ever get too far from it, because that "center" keeps moving.

Early in the develop of the game "Outer Wilds" though, this became something of an issue. The entire game is a simulation; the whole Hearthian system has to be active at all times (albeit to different levels of fidelity) for things to work the way they're supposed to. Changing the "center" on the fly was apparently causing issues since everything in the game is in motion relative to every other thing, so moving the "center" may have been causing hiccups as the game suddenly had to recalculate a bunch of positions and vectors and forces. But leaving the center in the middle of the system created other problems, because players visiting the outer-most reaches of the system would run into these floating point issues and start getting jitters.

So the developers implemented an ingenious solution - The player character is always at the same point relative to the "center", absolutely unmoving, and any time the player "moves", the game pushes everything else in the opposite direction to make it appear that the player character is moving. The planets, the sun, EVERYTHING. Any time you jump, your player character is completely stationary; instead, a force is applied to everything else in the goddamn game to push it away from you before gravity brings it all back. From a mathematical perspective, the calculations have the same result. And the processing overhead was minimal since they were already doing a bunch of physics calculations for the other objects in the game at all times.

I've always been a fan of clever hacks, and this one absolutely takes the cake for me. One of the key design philosophies of Outer Wilds is that you as the player aren't at the center of the world, but technically, the exact opposite is true.


You must log in to comment.

in reply to @0xabad1dea's post:

I think my most useless piece of video game trivia has to be knowing that the "Sonic Crackers" prototype of Knuckles Chaotix doesn't run on real hardware unless you absolutely mash the buttons to start the game, because the title screen has no music and the sound driver crashes if it isn't told to play something.

In the GBA port of A Link to the Past, if you use Bombos or Ether on a screen that has a tree with an exploding bomb in it (not the dark world talking ones, the ones that fall out when you pegasus bonk them), then knock the bomb out of the tree, it'll be an exploding head instead. This replaces a glitched sprite that looked kinda like a necklace in the original.

In World of Warcraft (lol) there is an achievement to complete a certain large number of daily quests. Daily quests got largely phased out of the game in Warlords of Draenor to be replaced by world quests in Legion (shame imo but that is an entirely different thing) but they still used daily quest technology, with hidden auto accepted and auto completed quests, to manage some things behind the scenes. This is particularly noticeable if for some reason you were tracking your daily quest completion achievement, have a death knight with legion flying, and simply fly from acherus to the broken shore and see the counter increment, once per day. Now... I do not know exactly what this is used for. My best guess would be resetting daily loot eligibility from all rares on the broken shore at once. But it is how they chose to implement something.

Ocarina of Time has invisible items that you pick up when you walk on them. Most of them are rupees, like when jumping across the squares in Kokiri Forest, or up on top of the drawbridge.

There's exactly one invisible magic refill in the game. It's on top of the rotating cyclops statue in Gerudo Training Grounds, reachable by hover boots. And it doesn't even refill your magic, it just pops up with no effect!

Also, the invisible rupees on top of the biggest rock in Zora's Fountain changed values between different prints of the game. AFAIK this is the only level design version difference.

The Gerudo who gives you the Gerudo Token in Ocarina of Time wears the same color of clothing as Link. Even if you switch to a different tunic while looking at her, her outfit will immediately change color as well.

and if you pull out a bomb, her clothing starts flashing black and red in sync with it! I think they copied Link's tunic model for the clothing, which has dynamic coloring, but then never set the color so it uses whatever dynamic color was set by a previous object.

I'll share one you (generic "you") might already know, and one you probably don't:

  • You can watch the entirety of To Kill a Mockingbird in The Darkness. There's even an achievement for it.
  • Hanako Ikezawa is the only protagonist in Katawa Shoujo who doesn't go on the roof in her own story. (She goes up there in Lilly's.) Rin Tezuka is the only one whose parents are 100% irrelevant to her story.

My favorite bit of useless trivia is from Twilight Princess. It was originally supposed to have a magic meter like wind waker and ocarina of time, but it got scrapped late. But you can still "refill" the non-existent magic meter with green chu jelly. Green chu jelly isn't supposed to exist either, but you can get it by mixing a yellow chu and a blue chu, which appear together on one or two levels of the 50-floor cave whose name I forget.

You can cast Spell on the Bots in the Great Palace in Zelda 2 that King Bot splits into. This turns them into Bots. (You can however tell the difference because the King Bot splits have more health than normal ones.)

in reply to @MrGameAndShout's post:

Oh this is cool! For an example of what goes wrong at the limits of floating point precision, look at the campaign of Halo Infinite. You spend a lot of time far enough from the center of the game world, and it messes with the rigging of your character, especially the hands. They writhe around in the glove like some sort of alien.

a lot of games do this actually! I believe Kerbal does, and it has similar visual glitches in the map to Outer Wilds when the player's camera gets sufficiently far away from the solar system. I also know my friend's runner game does it, which makes sense. and probably some untold number of other games that I'm forgetting at the moment...