4 ms·
I've always said: in terms of software complexity, video games are second only to OSs. This book describes Doom (1993), and already goes from low-level hardwar
by delta_p_delta_x 4y ago
I've always said: in terms of software complexity, video games are second only to OSs.
This book describes Doom (1993), and already goes from low-level hardware descriptions (caching, pipelining) to describing 2D and 3D computer graphics (even including a discussion on perspective-correct texture mapping), collision detection, audio and I/O architecture, to the enemy AI. Little wonder that people like John Carmack and Chris Sawyer are absolute legends.
Modern video games ramp this complexity up to a wholly new level: at 144 Hz, games have to accurately output frames in 7 milliseconds or less; a single stutter to 30+ ms is noticeable. Add in the complexity of managing CPU-GPU data transfers, audio and networking, and now hardware ray-tracing. Open-world games have to seamlessly stream data to keep the illusion going (Skyrim is already considered antiquated because of loading screens between even outdoors areas—famously, the gate to Whiterun—not to mention loading screens between indoors and outdoors). They also manage gigantic state machines of NPCs movements and reactions, enemy actions, player data and quest progression, and other miscellanea like day/night time cycles. Players also now expect non-linear, branching storylines, and straightforward moddability.
Multiplayer games have to seamlessly send and synchronise user input and responses between dozens of players networked across the world, within tens to hundreds of milliseconds—a 100 ms ping is unacceptable in competitive CS:GO. A website is allowed to take several seconds to load, but that I fired a headshot at that other player's character and that it registered on that player's computer within a hundred milliseconds is stupefying.
In graphics we now have ML-based upscaling techniques like DLSS and FSR that are barely distinguishable from full-resolution rendering. Just 5 years ago we had to make do with painfully intensive Sinc/Lanczos algorithms, or blurry bi/trilerp. We have temporal anti-aliasing techniques, and rasterisation hacks that are so impressive that they look photorealistic (see Red Dead Redemption 2. Find a bright light source at night when it's raining, and look at the droplets: they refract the light from the light). I've already mentioned hardware ray-tracing that now allows real-time effects we could only have dreamed of just half a decade ago.
I would unabashedly say video games are the zenith of what modern computers and modern software development are capable of.
Given this, it is a travesty that game developers are frequently the lowest-paid programmers.
- djmips 4y agoI think you are mostly correct but there are other fields that would give video games a run for their money in being the zenith. I'm thinking fast trading, machine learning for example. But thanks for the shout out!
- kqr 4y agoOne of the first books on programming I read made this argument too. Why learn programmin by making games? It's one of the most difficult kinds of programs to make successfully, so if you can master that you can do anything. (It also had a rant about how Atari had a "gaming" reputation so people didn't buy them for office work. They would hypothetically have been great for it because video games are more demanding than word processing.)
- vintermann 4y agoWell, in some ways. Those neat home gaming associated computers of the early 80s typically couldn't do 80 columns text, and businesses really wanted that.
- cornel_io 4y agoI absolutely agree that game dev is some of the most nasty programming that's out there. Mid-tier game programmers are worse than mid-tier webdevs, though, having bounced between the two subfields a lot. The most difficult stuff is more difficult in games, which is why the 99% people there are actually better than the 99%ers elsewhere, but the median work is meh, and that makes up the bulk of the work. And the devs...the median in games is not very good, the big companies employ a lot of extremely mediocre devs who desperately need the 99%ers closely managing them to get even passable work out of them. The pay difference is just because it's a more desirable job than doing boring webdev, and young programmers think of it as awesome because they imagine they'll be doing the stuff that Carmack does. But that's what the top folks do. In reality most are going to be writing UI integration code and content-reviewing and fixing up busted PRs from artists.
- retinaros 4y agothat is true but unreal really lowered the bar and with unrealengine 5 we even seen major studios with their own engine state that they were moving to unreal