Super Mario Bros shipped in 40KB. A bare React app ships more before you write a line of your own. What did they know that we forgot?
Super Mario Bros shipped in 40KB. A bare React app ships more before you write a line of your own. What did they know that we forgot?
Stupidly easy answer: compatibility and visuals.
I recently did just that: I made a handheld physiotherapy game console base. The prototype ran on an Arduino Nano I had laying around. 32KB flash and 2KB RAM. That makes the 192kb ROM and 10kb RAM that Super Mario Bros has to work with look luxurous.
You fight for every bit on a platform like that but at the same time it’s also really easy to do so. With that little available resources you can optimize almost perfectly because there is so little code.
That doesn’t explain why a bare React app is larger than a finished Super Mario Bros. The answer is compatibility. SMB needs to run on exactly one platform with exactly one CPU, so it ships compiled.
React needs to run on a multitude of different browsers, so not only does it ship in source, but it also needs to ship hundreds of polyfils to work with different browsers. Not only that though, it needs to ship tons of features that any given app might need.
Which brings us to the next issue: content and visuals.
OOPs blog post formatted in ASCII contains 14.8kb in pure blog post text. At the level of performance these old games had, text was really expensive, which is why even RPGs of that time had very limited dialogue.
The NES had a resolution of 256x240px, or 637 kilopixel with less than 4bit color depth, which means a full screen image would take around 30kB (uncompressed). A full HD screen has 2 megapixel at 24-42bit color depth, so 6MB-10MB per full-screen image (uncompressed).
The 30kB would have been far to expensive on a NES, so in practice graphics were limited to a handful of small sprites moving over a background filled with repeating tiles. On the other hand it’s very common to have large, high-quality images on a website.
Sure, you can still make websites with the same graphics as a NES game, but then it also will look like a NES game.
And we aren’t even talking about animations, videos or anything like that at all.
TLDR: Yes, it’s still possible to program like on NES. The catch is quite plainly visible to anyone who has spent more than 3 minutes programming:
OP’s point is… very uninformed.
The post using NES as a comparison is the main problem, in my opinion, especially given that Quake in 13k of javascript exists (only 3 levels, but still), which is a closer apples to apples comparison.
Besides, “needs to run on a multitude of browsers” is not hard unless you decide to make your javascript do absolutely everything, and even then it’s easy to keep it working on the major browsers, you just aim for the lowest common denominator (usually Safari). The browsers do the heavy lifting of running on a multitude of OSs and architectures.