this post was submitted on 06 Aug 2025
909 points (99.2% liked)

Programmer Humor

25594 readers
1485 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
top 50 comments
sorted by: hot top controversial new old
[–] frezik@lemmy.blahaj.zone 213 points 4 days ago (9 children)

Rollercoaster Tycoon was the last of an era, not a sudden burst of genius.

Before Doom (1993), almost all games were assembly. Doom was a shock to the industry. You could now write a high performance, multiplatform, sophisticated game in a compiled language (C). When I say multiplatform, I don't just mean how it was ported to everything later. It was developed on NextStations first. DOS was the first port. So it proved all of the above immediately on release.

We take for granted that C is performant now, but that wasn't obvious until optimizing compilers got good and someone tried.

Rollercoaster Tycoon (1999) is the last notable title that used ASM. It's impressive in many ways, but it wasn't as much of a standout as it seems now. Six years earlier to its release, that was just how games were done.

It's notable that the only port of Rollercoaster Tycoon was the original Xbox, which was also x86. Nobody wants to rewrite it for anything else.

[–] NocturnalMorning@lemmy.world 53 points 4 days ago (2 children)

You couldn't pay me to write a game in C today. Our expectations of what games have to be are sky high today. You cant get away with the productivity lost writing in c, maybe c++ since its supported by a number of engines. But, im personally not aware of a single engine that uses C. I tried my hand at writing a game without an engine, and it was a hot mess. Writing low level code to make a button with text, no thanks...been there done that, in my game, you could bump into trees and get stuck...not very fun in my opinion, and thats after a few months of writing code.

[–] lessthanluigi@lemmy.sdf.org 0 points 1 day ago (1 children)

Well, as a curious person myself, what programming language would you use to write a game engine in, or at least a game in?

[–] NocturnalMorning@lemmy.world 3 points 1 day ago* (last edited 1 day ago)

I use Unreal Engine right now, but I've also used Godot and Unity in the past. I dont use Unity anymore, and probably won't ever bcz of some shenanigans they've pulled in the recent past. Also used pygame, and way back before I discovered game engines I tried using OpenGL and SDL directly. (Do not recommend going that route) They are way too low level for you to make any real progress, at least in a timely manner. They are what you'd want to use if you are trying to write your own game engine, but most people aren't trying to do that. Most people just want to make games.

[–] four@lemmy.zip 20 points 4 days ago (2 children)

Animal Well was written in C without an engine and it was a decent hit (for an indie). Although that's definitely an exception, perhaps very similar to the RollerCoaster Tycoon example

[–] Jumuta@sh.itjust.works 8 points 4 days ago

Wikipedia says cpp

[–] TropicalDingdong@lemmy.world 6 points 4 days ago

Animal Well

Animal Well was the shit.

[–] Blue_Morpho@lemmy.world 35 points 4 days ago (2 children)

Before Doom (1993), almost all games were assembly.

Carmack wrote Wolfenstein 3d in C. Star Control and Dune 2 were C.

[–] Rai@lemmy.dbzer0.com 14 points 4 days ago (1 children)
[–] Blue_Morpho@lemmy.world 3 points 3 days ago* (last edited 3 days ago)

I used those as examples but I claim that most everything was C by the early 90's. The statement that C compilers got fast which allowed it isn't true. When a new compiler came out it was always a couple of percentage points faster than the old version. Meanwhile hardware was doubling in performance every two years.

C compilers didn't need much optimization because there wasn't much performance that could be optimized into code on the simple CPUs of 1992 when Doom was being written. CPU's weren't the superscalar multi core monsters they are today. A compiler couldn't take advantage of reordering instructions to use multiple adders because there was only one.

[–] frezik@lemmy.blahaj.zone 5 points 4 days ago (1 children)

Those games didn't have the splash that Doom did for this sort of thing.

https://web.archive.org/web/20010105180900/http://www.gamespy.com/legacy/articles/devweek_c.shtm

Mainstream application programmers switched to C in the early 80's. Game developers were slower to switch, because their small teams and focus on performance kept assembly language viable till the following decade. When id Software released DOOM, they surprised much of the industry by having no reliance on assembly code--despite excellent game performance, and by successfully cross-developing the game (in NeXTstep and DOS), then successfully porting it to an astounding variety of platforms.

[–] Ensign_Crab@lemmy.world 4 points 4 days ago

Those games didn’t have the splash that Doom did for this sort of thing.

I would say that Wolf3d would certainly count as proof of concept.

[–] sp3ctr4l@lemmy.dbzer0.com 23 points 4 days ago (1 children)

Just to throw on more factoids:

Wasn't Gabe Newell either the first, or among the first, to port Doom to Win 95?

[–] ChicoSuave@lemmy.world 41 points 4 days ago (1 children)

He was an analyst at Microsoft who was tasked with finding out how many computers ran Windows to determine market share. Part of the question involved asking what other software was installed and the only software used more than Windows was Doom. This made GabeN realize the market potential of games and he left Microsoft shortly afterward.

[–] sp3ctr4l@lemmy.dbzer0.com 19 points 4 days ago* (last edited 4 days ago) (1 children)

See, I've heard that story, that he basically ran ... well, arguably, a worm that did network analysis on what was installed on every computer in the MSFT internal network, realized more people had DOOM installed... than Windows...

... and I have also heard that he actually ported DOOM to... either MS DOS, or Win95... ?

I genuienly do not know which is true, if they're all true, if they're all false... I can't remember the source for each of these, but I know I've heard or read all these semi-close variants from somewhere, over the years.

[–] jqubed@lemmy.world 14 points 4 days ago

Just saw this article recently. Gabe was part of a team trying to convince developers that they would be better off writing their games with more abstracted code/libraries instead of writing their own interfaces (some of which were written by people convinced they were being really efficient but were actually terrible). One thing they did to prove their point was going to id and offering to have Microsoft port Doom to Windows for free. But the experience and seeing the success id was having distributing their own game led Gabe to launch Valve.

[–] jqubed@lemmy.world 11 points 4 days ago

Eventually it sort-of got a rewrite to create RollerCoaster Tycoon Classic, initially for iOS and Android, later for Windows, macOS, and Nintendo Switch. It largely is a rewrite of RollerCoaster Tycoon 2, with the goal of bringing the game to more modern platforms, and the save files for parks and rides are compatible. In this interview with Atari Club, Sawyer says the rewrite was in C++ but even with a team of people still took longer to write in C++ than it took him to write the original in x86 assembly.

If anyone previously paid attention to RCT Classic, it’s been seeing some development work again and is working on Android again. They also made RCT Classic+ on Apple Arcade (basically just the game and all the expansions included) and also updated the regular versions of RCT Classic so they run correctly again (RCT Classic stopped working on macOS when Apple dropped support for 32-bit applications and Atari didn’t release a recompiled game until recently).

load more comments (5 replies)
[–] MonkderVierte@lemmy.zip 38 points 4 days ago (1 children)
[–] lessthanluigi@lemmy.sdf.org 10 points 3 days ago

Best way to play till this day

[–] HugeNerd@lemmy.ca 23 points 3 days ago (2 children)

Have you seen the insane complexity of modern CPUs? Ain't no one hand coding that like a 6502 in 1985.

[–] musubibreakfast@lemmy.world 9 points 3 days ago (1 children)

I wonder if there's anyone alive right now who would be capable of such a task.

[–] Blackmist@feddit.uk 9 points 3 days ago

If the hardware was fixed, I don't see why not.

Might not be as fast as the optimisations compilers do these days though.

If you have to support thousands of types of GPU and CPU and everything else, then fuck no.

[–] skuzz@discuss.tchncs.de 4 points 3 days ago (1 children)

Even if one did, say using x86, it would still just be interpreted by the CPU into the CPU's native opcodes, as the legacy instruction sets are interpreted/translated.

load more comments (1 replies)
[–] humanspiral@lemmy.ca 47 points 4 days ago* (last edited 4 days ago)

is there a NPM package for assembly? I need to keep access to right pad my strings package.

[–] Mobile@leminal.space 56 points 4 days ago (1 children)
[–] Jessica@discuss.tchncs.de 10 points 4 days ago (1 children)

I will never not upvote an Ahoy video. The guy is a legend in video game documentaries. Check out his Monkey Island video as a follow-up

[–] ProfessorProteus@lemmy.world 7 points 4 days ago (1 children)

Another really good one that I've watched at least 4 times is his Polybius video. He's an incredible documentarian and an equally great researcher.

I'm sure some of the Polybius one was dramatized a little (apart from what was clearly labeled as actors reading the transcripts), but it makes for an unforgettable watch. And the music!!

load more comments (1 replies)
[–] Kyrgizion@lemmy.world 42 points 4 days ago

Dude got millions for it. Well deserved imho.

[–] Klear@lemmy.world 22 points 4 days ago (1 children)

Hello everyone and welcome to another video.

[–] NeatNit@discuss.tchncs.de 15 points 4 days ago

The YouTube algorithm works in mysterious ways.

Because I'm nice, to anyone who doesn't get the reference: https://www.youtube.com/@MarcelVos

[–] SubArcticTundra@lemmy.ml 38 points 4 days ago* (last edited 4 days ago) (3 children)

And most startlingly: no git

Edit: y'all're right, version control is for wimps. What's life without some adrenaline?

[–] PhobosAnomaly@feddit.uk 46 points 4 days ago* (last edited 4 days ago)

Who needs git when you have a B: drive and a Save As command for tycoon43.asm

Version control? You mean this?

[–] potoo22@programming.dev 12 points 4 days ago* (last edited 4 days ago)
./src
./src_1998_11_05_added_people_swimming
./src_1998_11_06_added_death_mechanics
./src_1998_11_06_0_removed_swimming_lol
[–] qjkxbmwvz@startrek.website 10 points 4 days ago (1 children)

Did the developer use any version control though? SCCS has been around since the early 70s, RCS and CVS since the 80s. The tools definitely existed.

Also, it was a single dev, which makes SCM significantly simpler!

[–] bandwidthcrisis@lemmy.world 7 points 4 days ago

In my experience (some games in z80 and 68000 in the early 90s), version control wasn't considered until mid-90s sometime, and at first wasn't trusted. There were network backups, but I don't know if they had revisions.

Merging seemed like it couldn't possibly work well, so we would try to have separate ownership of different files. Although there would be only a handful of programmers on a team, so that was easy.

Prior to that, backup and versioning was manually handing a floppy or two to someone each week.

[–] henfredemars@infosec.pub 24 points 4 days ago (1 children)

This looks like a screenshot in the background of the C++ OpenRCT version because the resolution is too high and not supported by the original assembly release.

[–] Kazumara@discuss.tchncs.de 6 points 4 days ago* (last edited 4 days ago)

The original goes to 1024 x 786 and has different zoom levels. I've played most of the original parks this year and that does not see to be too high res to me. Give me a sec I'll take a screenshot of mine in a minute.

Edit here it is. It's the GOG version, which launches fullscreen, so the 1024 x 768 are stretched onto the center of my 1920 x 1080 screen.

[–] yucandu@lemmy.world 20 points 4 days ago (1 children)

Epic Pinball was another game that I recall was written in assembly. When your old 286 struggled to run games at a decent framerate, Epic Pinball would run in a smooth 75fps or whatever you set your CRT monitor to.

[–] ZILtoid1991@lemmy.world 12 points 4 days ago

Epic Pinball, if I recall correctly, also used some ModeX trickery, meaning it had most of the pinball table in VRAM, and then modified the VGA framebuffer pointer for scrolling, then only moving as much data as it was needed (ball, flippers, etc)

[–] jwt@programming.dev 19 points 4 days ago (1 children)

"Try writing it it in assembly"

[–] leftzero@lemmy.dbzer0.com 8 points 4 days ago

I want to get off Mr. Bones' Wild Ride.

[–] neidu3@sh.itjust.works 13 points 4 days ago* (last edited 4 days ago)

Chris Sawyer is an absolute legend

[–] FuglyDuck@lemmy.world 9 points 4 days ago

Also know as “how to keep a coder busy”

load more comments
view more: next ›