That’s not why we were able to get Apollo 11 onto the moon using only 8 kilobytes. The real reason is because we used the most batshit sorcery mankind may ever know to eek out every last ounce of usefulness we could muster from those 8 kilobytes.
There was some sorcery involved, yes. But that does not mean it wasn’t a fundamentally easy problem. Orbital mechanics are the easiest and cleanest physics around. That’s why classical mechanics was so incredibly useful: it’s a near perfect predictor for movement in the sky. There ain’t no friction no nothing. Just clean positions, gravity, and propulsion.
Games were impressive in this way too. Computers and consoles didn’t have much CPU power or memory, so they had to squeeze every little bit.
This was still happening even with 5th gen consoles. Crash Bandicoot couldn’t fit in the Playstation’s memory so they ended up overwriting system memory and memory allocated to features of Sony’s standard library they weren’t using.
These days, game development is more “boring” in that aspect. Systems are powerful and frameworks like Unreal Engine handle all the core stuff. That’s not necessarily a bad thing though - it lets the game developers focus on the game itself.
And they had bugs that were a direct result of limitations. The Minus World in Super Mario World, for example, comes from a combination of uninitialized values, how data structures are packed, and imperfect collision detection.
People don’t talk about the problems that result from doing things that way.
Most regular players didn’t encounter these bugs though, as often they’re edge cases that don’t occur during regular gameplay. A lot of them were found by people intentionally looking for them.
I’d argue that games today are bugger than games in the past, just due to how complex they are now. Sure, they’re a different class of bug (and arbitrary code execution via buffer overflows isn’t really a thing any more thanks to ASLR and the NX bit), but I don’t think there’s fewer bugs at all.
If you’ve played SMB a fair amount, there is at least one that you’ve almost certainly ran into at random. It is exploited by speedrunners, but you’ve probably hit it just playing the game normally.
Pirhana plants only check the hitbox every other frame. Obviously, this is a speed optimization. At some point, you’ve probably gone right through a piranha plant that should have hit you. Speedrunners can and do exploit this, as well, of course.
An extension of this idea in other games is when you have split-screen multiplayer. In games like the OG Mario Kart, player inputs are processed on alternating frames. Which means the game has an average of 0.5 frames of input latency in multiplayer before anything else gets calculated in. (And people say retro games don’t have input lag on CRTs; these people are wrong for a lot of different reasons).
Anyone who wants to know more about the exact craziness in retro game code should read “Racing the Beam: The Atari Video Computer System” by Ian Bogost and Nick Montfort.
Yet, some of the most anticipated titles released are streamlined, soulless and boring. Every edge has been rounded off to such a degree, it makes Disney look gory.
Putting shit on the moon is very easy from a maths PoV
That’s not why we were able to get Apollo 11 onto the moon using only 8 kilobytes. The real reason is because we used the most batshit sorcery mankind may ever know to eek out every last ounce of usefulness we could muster from those 8 kilobytes.
There was some sorcery involved, yes. But that does not mean it wasn’t a fundamentally easy problem. Orbital mechanics are the easiest and cleanest physics around. That’s why classical mechanics was so incredibly useful: it’s a near perfect predictor for movement in the sky. There ain’t no friction no nothing. Just clean positions, gravity, and propulsion.
STOOOPPP, you’re breaking my narrative that Chrome tabs ought to fit in 8KB.
Games were impressive in this way too. Computers and consoles didn’t have much CPU power or memory, so they had to squeeze every little bit.
This was still happening even with 5th gen consoles. Crash Bandicoot couldn’t fit in the Playstation’s memory so they ended up overwriting system memory and memory allocated to features of Sony’s standard library they weren’t using.
These days, game development is more “boring” in that aspect. Systems are powerful and frameworks like Unreal Engine handle all the core stuff. That’s not necessarily a bad thing though - it lets the game developers focus on the game itself.
And they had bugs that were a direct result of limitations. The Minus World in Super Mario World, for example, comes from a combination of uninitialized values, how data structures are packed, and imperfect collision detection.
People don’t talk about the problems that result from doing things that way.
Most regular players didn’t encounter these bugs though, as often they’re edge cases that don’t occur during regular gameplay. A lot of them were found by people intentionally looking for them.
I’d argue that games today are bugger than games in the past, just due to how complex they are now. Sure, they’re a different class of bug (and arbitrary code execution via buffer overflows isn’t really a thing any more thanks to ASLR and the NX bit), but I don’t think there’s fewer bugs at all.
If you’ve played SMB a fair amount, there is at least one that you’ve almost certainly ran into at random. It is exploited by speedrunners, but you’ve probably hit it just playing the game normally.
Pirhana plants only check the hitbox every other frame. Obviously, this is a speed optimization. At some point, you’ve probably gone right through a piranha plant that should have hit you. Speedrunners can and do exploit this, as well, of course.
An extension of this idea in other games is when you have split-screen multiplayer. In games like the OG Mario Kart, player inputs are processed on alternating frames. Which means the game has an average of 0.5 frames of input latency in multiplayer before anything else gets calculated in. (And people say retro games don’t have input lag on CRTs; these people are wrong for a lot of different reasons).
Go with Unity at least. I know no Unreal game without stuttering.
I’m not a game developer so I just used the first example I could think of.
Downside to that is there isn’t a ton of people putting effort into efficiency/performance. And they sort of seem to be a dying breed at this point
Anyone who wants to know more about the exact craziness in retro game code should read “Racing the Beam: The Atari Video Computer System” by Ian Bogost and Nick Montfort.
Thanks for the recommendation!
Constraints are amazing for creativity.
Yet, some of the most anticipated titles released are streamlined, soulless and boring. Every edge has been rounded off to such a degree, it makes Disney look gory.