Skip to content
DevMeme
1446 of 7435
Game Development Then vs. Now: 512KB vs. 100GB
GameDev Post #1621, on May 25, 2020 in TG

Game Development Then vs. Now: 512KB vs. 100GB

Why is this GameDev meme funny?

Level 1: Packing Light vs Overpacking

Imagine you have two people trying to carry their toys or games with them. The first person (like the 1996 developer) has a tiny box and somehow fits an entire awesome game inside it – every character, every level, all in that little box. They packed it so neatly and cleverly, nothing is wasted. This is like the game Pokémon Red which fit everything into a very small cartridge (about the size of a few LEGO bricks worth of data!). Now the second person (like the 2020 developer) has a huge box – actually, more like they need a whole car trunk – just to carry one game. That’s like Call of Duty today, which is so big it’s over 100 gigabytes (imagine a stack of 100,000 floppy disks – an old way games were stored – all for just one game!). The meme shows the first person as a super strong, proud dog (because he did something super impressive: a whole game in a tiny space) and the second as a smaller, worried dog asking for “hempl” (help) because his game is ridiculously huge and kinda unwieldy.

It’s funny in the same way it’s funny to imagine someone packing for a trip who only needs a little backpack versus someone who brings 10 giant suitcases for the same trip. The old-school developer is like the smart packer who used every inch of space in the suitcase just right – nothing wasted – so he’s standing there all buff and confident. The modern developer is like someone sitting on an oversized suitcase struggling to close it, saying “uhh help, this thing is so heavy!” We can all chuckle at how extreme that is. The emotional core here is a mix of admiration (wow, the old game was so efficient!) and comic exaggeration (woah, the new game is like an overstuffed bag bursting at the seams). Even if you’re not technical, you get the idea: back then, games were small but still great, and now, games are huge and it seems a bit crazy. The meme exaggerates both for a laugh. It’s basically saying: “They used to do a lot with very little (cool!), and now we do maybe not that much more, but it takes an absurd amount of space (silly!).” Seeing the two dog characters side by side – one strong and proud, the other swamped by the bigness – makes the point in a goofy, memorable way. So, it’s like celebrating a tiny miracle from the past and playfully poking at a big inconvenience of the present.

Level 2: From 512KB to 100GB

To understand this meme, let’s break down the basics. On the left, we have a reference to Pokémon Red (released in 1996 for the Nintendo Game Boy). The developer (represented by the super muscular Doge cartoon) says, “I just fit Pokémon Red in 512KB.” 512KB means 512 kilobytes, which is about 524,288 bytes of data. That is an incredibly small amount of memory by today’s standards – for example, a single high-quality image or a few seconds of an MP3 song can be larger than 512KB. Yet, back in the 90s, that’s all the storage the game had! Pokémon Red’s entire game – its code, graphics, music, and all the Pokémon creatures – had to live in that tiny space because it was stored on a cartridge (a small plastic game cartridge) with fixed memory. Developers in those days had to practice serious performance optimization and memory management. These terms mean they wrote code in a very efficient way and carefully managed how data was stored and used, so nothing was wasted. If you’ve ever tried to pack a small suitcase for a long trip, you know you have to be smart about using every inch – that’s what those programmers did with memory. They often wrote in low-level programming languages (closer to the machine’s native language) because those are more compact and fast. Essentially, every feature or graphic in the game was like a luxury: they could only include it if they found a clever way to make it fit. This made the muscular “1996 dev” in the meme look proud and strong – it’s showing off how tough and skilled you needed to be to accomplish that feat (hence the “buff” physique and the Game Freak logo on his shirt, calling out the company that did it). It’s a nod to GameDev history and an example of extreme efficiency in coding. Many older or more experienced programmers smile at that, because it reminds them of when they too had to work under tight constraints (sometimes we call that era TechNostalgia – nostalgia for older tech times).

Now, on the right side, we see a smaller Doge (known as Cheems in meme culture) wearing a shirt with a JavaScript logo, sitting at a modern-looking laptop. The text above him says “Dev in 2020” – so he represents a present-day developer – and below him he’s panicking: “Hempl, CALL OF DUTY USES >100GB-”. “Hempl” is just “help” spelled in a funny, meme-ish way (Cheems is often depicted as talking with cute misspellings, which emphasizes his dopey, struggling appearance). Call of Duty is a hugely popular modern video game franchise, especially known for its large install size. When the meme says it uses >100GB, it means the game can take up more than 100 gigabytes on your storage. To clarify, 1 gigabyte (GB) is 1024 megabytes, and 1 megabyte (MB) is 1024 kilobytes. So 100 GB is enormous – we’re talking over 100,000,000 KB! If 512KB is a tiny box, 100GB is like a giant warehouse of data. In practical terms, downloading a 100GB game could take hours on a good internet connection, and it could fill a significant chunk of a computer’s hard drive or a console’s storage. This huge size in modern games is partially due to higher quality assets: for example, Call of Duty games have very detailed 3D graphics (high-resolution textures, complex 3D models), lots of audio (voice acting, surround sound music), and many levels or maps. All that content requires a lot of space. However, the meme (and many developers) joke that there’s also a lot of software bloat involved. “Software bloat” basically means the software has become bloated or inflated with unnecessary stuff – maybe code that isn’t efficient, or including whole libraries and modules that aren’t fully used, or duplicate data packaged by convenience. It’s the opposite of being lean. Think of it like a backpack that not only has essentials but also lots of random items you don’t actually need – it makes the pack really heavy. In the context of development, sometimes modern tools and frameworks (like using a big game engine, or, in web development, lots of Node.js packages) can cause projects to become much larger than they potentially could be if hand-optimized.

The presence of the JavaScript (JS) logo on the 2020 dev’s shirt is an extra layer to the joke. It’s poking fun at how modern developers (especially web and app developers) often use JavaScript packages for everything. There’s an infamous scenario where even a simple task might involve importing a huge number of dependencies (ever heard jokes about node_modules? That’s the folder where JavaScript/Node packages get installed, and it can grow into hundreds of megabytes with just a few commands!). So the meme is partially saying: nowadays, developers rely on so many abstractions and pre-made components that our software (whether games or apps) ends up much larger and heavier. A Call of Duty game isn’t written in JavaScript (it’s mostly C++ and such), but the JS shirt is more a general symbol of modern coding culture. It highlights that the 2020 dev might not even be as directly in touch with the low-level details; he might be plugging together existing code, which is convenient but can lead to bloat in size.

Putting it simply, the meme contrasts extreme efficiency then vs relative inefficiency now in a humorous way. The 1996 dev had tiny memory limits but accomplished a lot, whereas the 2020 dev has massive resources yet ends up with absurdly large software. It resonates with junior developers as well because you might have experienced something similar on a smaller scale: for example, maybe you wrote a small program but found out the installer was 200 MB because the framework you used bundled a ton of stuff. Or you install a simple text editor app and it’s several gigabytes nowadays. It’s a bit mind-boggling! The meme uses the recognizable “buff Doge vs Cheems” format (a popular meme format) to drive the point home visually: the left side (buff Doge) is strong, competent, “old-school” – representing how we romantically view the old devs – and the right side (Cheems) is weaker, anxious, “newbie-ish,” representing the predicament of today’s dev facing giant software.

In summary, this meme is a tech humor snapshot of how game development (and software development in general) has evolved. Pokémon Red in 512KB shows the peak of efficiency in coding and clever use of limited resources. Call of Duty using 100+GB highlights the software bloat and huge resources of modern games. It’s both a gaming reference (since it name-drops well-known games) and a commentary on performance and size optimization. Even if you’re a newer developer, you can appreciate the absurd scale difference: imagine writing an essay that must fit on a single sheet of paper (old dev) versus having an entire book but still somehow running out of space (modern dev). One situation forces you to be concise; the other might tempt you to be a bit wasteful. That contrast is exactly what makes this meme funny and relatable in the tech community.

Level 3: No Byte Wasted

On the left side of the meme, we see the buff Doge proudly representing a 1996 developer (specifically wearing a Game Freak T-shirt, the studio behind Pokémon Red). The caption boasts: “I just fit Pokémon Red in 512KB.” This is a flex of extreme performance optimization and efficiency in coding. In the era of cartridges and limited hardware, no byte was wasted – if you only had 512KB of ROM total, you literally had to make every bit count. Developers back then often wrote in low-level languages like C or even straight assembly, squeezing out every drop of performance and compressing data to absurd degrees. The buff Doge is like a veteran game dev bragging, “Yeah, I packed an entire epic adventure into half a megabyte. Top that!” And honestly, that is epic: 512KB is tiny – roughly the size of a single high-quality JPEG image today – yet it contained an entire world of Pokémon, from the code for game mechanics to graphics, music, and all 151 Pokémon data. These old-school devs exercised serious memory management kung fu: reusing tiles and sprites, limitizing palettes (only a few colors to save space), and composing catchy chiptunes that were just kilobytes in size. They didn’t have the luxury of bloated frameworks or endless storage, so the code was lean and mean. It’s no wonder the Doge is buff; the meme implies you had to be a code heavyweight to work under such constraints. Many senior developers feel a pang of TechNostalgia seeing this – recalling an era when they had to manually count bytes, optimize loops in assembly, and perhaps store save data in 8KB of SRAM. It was tough, but it produced extremely streamlined programs. There’s a shared camaraderie (and a bit of trauma) among those who’ve done this kind of “size-budgeting” work: whether it was fitting a game on a floppy disk or squeezing code into an embedded device, it required discipline and creativity that today’s endless memory might not demand as often.

Now, on the right side, we have the small “Cheems” doge – representing a 2020 developer – wearing a black shirt with the bright yellow JavaScript logo. He’s hunched over a laptop, whining in that classic Cheems broken English: “Hempl, CALL OF DUTY USES >100GB-” (translation: “Help! Call of Duty uses over 100GB!”). This captures the modern dev (or gamer) in disbelief and panic over how colossal today’s software can be. The contrast is played for laughs: our 2020 dev looks feeble and overwhelmed, almost crippled by the sheer size of a contemporary AAA game install, whereas the 1996 dev is strutting after conquering a microscopic memory limit. The 100GB figure for Call of Duty is only slightly exaggerated — in reality, some versions of Call of Duty: Modern Warfare/Warzone around 2019-2020 indeed ballooned to 150+ GB for a full install, which was infamous among gamers. This meme resonates with anyone who has watched game install sizes skyrocket and wondered, “What on earth is in there that needs hundreds of gigabytes?” It taps into the frustration of modern computing where software bloat is commonplace: applications bundling entire browsers, countless high-res assets, and layers of dependencies, such that even a simple program can become unwieldy. The JavaScript shirt on the Cheems is a tongue-in-cheek jab at contemporary development practices: JavaScript (and its ecosystem, like Node.js) is notorious for pulling in massive numbers of dependencies (just do an npm install on a new project and watch your disk fill with thousands of files in a node_modules folder). It symbolizes how modern devs might casually use powerful frameworks or libraries that abstract away the details – but those conveniences come at the cost of extra megabytes (or gigabytes). In other words, the meme hints: today’s devs might rely on heavy tools and as a result, our software has gotten, well, overweight.

This humorous juxtaposition of GameDev eras underscores some real industry insights. Why is it funny (and a bit painful)? Because it’s too true. We’ve gone from an age where developers aggressively optimized for file size and performance (partly because they had to – hardware limited them), to an age where it’s often acceptable to assume everyone has broadband, multi-terabyte drives, and powerful CPUs, so trimming a few gigabytes might not seem worth the developer time. The meme exaggerates it: obviously, modern games are doing far more (true 3D graphics, multi-language voice acting, online features, etc.) which legitimately consume more space. But even taking that into account, 100+ GB feels outrageous, and many of us suspect there’s a lot of inefficiency or redundant data in there (for instance, some modern games have been caught including duplicate versions of assets, or not compressing textures enough, or packing in debugging info). It’s a running joke that every update to such games forces you to download tens of gigabytes — leading devs/gamers to ask, “Did they accidentally bundle the entire game engine twice or what?” Meanwhile, the Pokémon Red devs shipped their whole game once on a tiny cartridge and it just worked (no day-one patch, because in 1996 there were no patches you could download easily!).

To put the size difference in perspective that even senior devs find jaw-dropping (and darkly funny):

1996: Pokémon Red (Game Boy) 2020: Call of Duty (Modern PC/console)
Game size: ~512 KB (kilobytes) total – fits on a tiny ROM cartridge.
(That’s about 0.5 MB.)
Game size: 100+ GB (gigabytes) – occupies a huge chunk of a hard drive.
(That’s 100,000+ MB!)
Hardware constraints: 4 MHz 8-bit CPU, 8 KB RAM, tiny 160×144 pixel screen, limited color palette. Every routine had to be efficient. Hardware target: Multi-core ~3.5 GHz 64-bit CPU, 16+ GB RAM, 4K resolution support, millions of colors, 3D graphics. Plenty of horsepower to spare – usage is less restrained.
Content: Simple 2D graphics (tiles and sprites), chiptune music, text dialog. No voice, minimal animations. Content was constrained by memory limits. Content: High-res 3D models and textures, CD-quality music, voice acting, cinematic cutscenes. Huge amount of high-detail assets (each of which takes lots of space).
Code style: Hand-optimized C/assembly. Custom game engine tailored to do just Pokémon. No extra fat – if a routine wasn’t absolutely needed, it got cut. Devs managed memory manually. Code style: Large general-purpose game engines (C++ with scripting). Likely includes physics engines, generic systems not fully used by the game, and possibly even web tech for UI or cross-platform libraries. Lots of third-party code and middleware adds inevitable overhead.
Distribution: Physical cartridge. Shipping an update or a patch was nearly impossible, so it had to be polished and memory-tight from the start. Distribution: Digital download or Blu-ray disc. Patches of several GB are common; devs can fix or add content later. This sometimes leads to rushing things out (less optimization) since updates are expected.
Developer mindset: “We have to make this fit and run fast on extremely limited hardware. Cut anything unnecessary. Find clever hacks!” Constraints bred creativity. Developer mindset: “Storage is cheap and players have fast internet (hopefully). We can afford high-res everything and convenient tools. Just make it look amazing!” Less incentive to slim down.

From this comparison, you can see why the buff Doge vs Cheems format nails it: the “Dev back in 1996” had to be a resourceful wizard of optimization (hence a buff, glasses-wearing intellectual Doge holding the tiny Pokémon cartridge like a trophy), whereas the “Dev in 2020” is portrayed as a bit hapless – drowning in a sea of huge assets and bulky frameworks, whining about how massive things have gotten (hence the smaller dog with a JS shirt, overwhelmed by the 100GB Call of Duty install on his laptop). It’s a playful exaggeration, of course. Modern devs are incredibly skilled too – they tackle complexities like realistic physics and global online infrastructures that weren’t a factor in ’96. But the type of skill (and hardship) has changed. Instead of squeezing bytes, today’s pain points might be debugging a tangled web of hundreds of thousands of lines of code or managing legacy code in a huge codebase – different kind of “gains and pains.” Still, the meme’s core joke lands because so many of us have thought, “How did old games do so much with so little, and why does my new app which does far less use so much memory/disk?” It’s a relatable lament in software circles. The humor comes with a side of admiration (for the past devs) and a side of exasperation (with the current state of software bloat).

In summary, the meme uses the buff Doge vs Cheems format as an analogy for tech progress (or regress, in terms of efficiency). It’s poking fun at the drastic inflation in software size over time. Seasoned developers chuckle (perhaps a bit bitter-sweetly) at this because they’ve lived through that change: the old war stories of fitting apps on a single floppy disk vs now needing gigabytes of RAM for a web browser. It’s the classic “back in my day” flex — except back in 1996, it was Pokémon in kilobytes, and today it’s Call of Duty in tens of thousands of megabytes. Software bloat has become the norm, and this meme captures that absurd reality in one glance. The next time you cringe at a 50GB day-one patch or see your node_modules folder swell like a balloon, remember the buff 90s dev and ask, somewhat facetiously, “Would he have let this happen?” 😅

Level 4: Memory Bank Sorcery

Back in the mid-90s, game developers were performing memory bank sorcery to make games fit into ridiculously small storage. On the original Game Boy, for example, the CPU could directly address only 16 bits of memory (~64KB at a time), yet a game like Pokémon Red shipped on a 512KB cartridge. How? The devs used bank switching – essentially dividing the cartridge into segments and swapping those segments in and out of the addressable memory window as needed. It’s like having a tiny viewport into a much larger memory space, and the game had to juggle which part of the program or data was visible through that viewport at any given moment. This demanded careful planning: each bank (maybe 16KB chunks) contained code or assets for certain game areas or features, and the transitions between banks had to be seamless so players never noticed the magic happening under the hood.

Beyond hardware tricks, the 1996 devs employed tight compression algorithms and data encoding techniques rooted in theoretical limits. They were inching toward the bounds of Kolmogorov complexity – trying to express the game’s content in the shortest possible binary representation. Every Pokémon’s data, every tile of the map, every music track was stored as efficiently as humanly (and algorithmically) possible. Think Huffman coding for text, custom compressed tile maps for graphics, and reuse of assets everywhere: one 8x8 pixel tile might be used dozens of times to draw the world, and dozens of similar monsters might share one small sprite with palette swaps. This was a real-life exercise in information theory: maximizing entropy usage of those 512KB so that nothing was wasted. Every bit had to pull its weight.

Fast forward to a 2020 Call of Duty title tipping over 100GB, and the paradigm is inverted. Modern hardware (PCs, consoles) has virtually gigabytes of RAM and terabytes of disk to play with, and 64-bit CPUs can address exabyte-scale memory spaces. In theory, there’s little immediate pressure to minimize a game’s footprint. In fact, modern devs sometimes choose space over computation as an optimization: for instance, they might ship uncompressed high-resolution textures or pre-computed data because decompressing or calculating it on the fly would cost CPU/GPU time. This is a trade-off guided by the physics of storage vs processing: disk space and download bandwidth are abundant (if not infinite), but players hate low frame rates or long load screens. So games balloon in size to deliver instant high-fidelity experiences — one person’s “bloat” is another person’s performance hack. It’s a bit of Moore’s Law meets Parkinson’s Law: as storage and memory grew exponentially, software expanded to fill it. The underlying theory is that abstraction layers and rich content naturally add overhead. Each library, each middleware (physics engines, audio engines, high-level scripting in, say, JavaScript for game UI) contributes convenience at the cost of extra bytes. Modern games are built atop countless layers of frameworks and engines (written in high-level languages or using generic engines like Unity/Unreal), which means tons of helper code, metadata, and redundancy that a handcrafted 90s game simply didn’t have. Essentially, if 1996 devs were coding with a scalpel and microscope, 2020 devs are building with prefab modules in a world where the ceiling on size is sky-high. The meme finds humor in this extreme contrast born from fundamental computing growth: tight constraints as a catalyst for ultra-optimized code vs. vast resources enabling (and even encouraging) monstrously large software. It’s the tale of two eras — one of clever compression and one of comfortable (if sometimes sloppy) abundance — each a logical outcome of the technologies and theories underpinning their time.

Description

This is another 'Swole Doge vs. Cheems' meme, this time comparing 'Dev back in 1996' to 'Dev in 2020'. The left panel shows a muscular Swole Doge wearing glasses and a 'GAME FREAK' t-shirt, holding a Pokémon Red cartridge for the Game Boy. The caption reads, 'I just fit Pokemon Red in 512KB'. This highlights the incredible feat of engineering required to fit a full-fledged RPG into such a small amount of memory. The right panel shows the smaller, crying Cheems dog wearing a t-shirt with the JavaScript 'JS' logo, sitting in front of a laptop. The caption reads, 'Hemlp, CALL OF DUTY USES 100GB>'. This humorously contrasts the resourcefulness of past developers working under extreme hardware constraints with modern developers who work with an abundance of resources, yet applications and games have grown to enormous sizes. It pokes fun at the perceived lack of optimization in modern software development

Comments

7
Anonymous ★ Top Pick In 1996, we debated every byte. In 2020, we just add another 8GB of RAM to the minimum requirements
  1. Anonymous ★ Top Pick

    In 1996, we debated every byte. In 2020, we just add another 8GB of RAM to the minimum requirements

  2. Anonymous

    1996: “We shaved bytes off sprites to slip Pokémon into 512 KB.” 2020: “Sure, Call of Duty ships at 100 GB - but hey, at least my 3 KB config file pulls the entire Chromium build system in post-install.”

  3. Anonymous

    Back then we optimized for cartridge ROM limits; now we optimize for how many node_modules folders we can fit on a 2TB SSD before running out of inodes

  4. Anonymous

    Back when fitting an entire RPG into 512KB required actual engineering prowess and bit-level optimization, versus today where we casually npm install 300MB of dependencies just to center a div - and somehow the game that fits on a Game Boy cartridge is still more fun than the one requiring a dedicated SSD

  5. Anonymous

    1996: fit Pokémon in 512KB; 2020: 100GB of assets and 700MB of node_modules - we traded byte squeezing for dependency graphs and now the optimization is buying a bigger SSD

  6. Anonymous

    Pokémon Red packed a universe into 512KB; modern CoD's JS sourcemaps alone could fill the entire Game Boy library - tree-shaking optional

  7. Anonymous

    1996: bank‑switched tiles and hand‑packed ASM; 2020: 80GB textures, a 20GB day‑one patch, and a 200MB JS bundle just to render the progress bar

Use J and K for navigation