The Early Days of Unreal
January 12, 2018 9:12 AM   Subscribe

Carmack had written this really advanced editor on the NeXT. I'd read all about it and I had seen screenshots of it, but I never actually used it. At the time, I thought to myself "Holy shit, Carmack wrote a real-time BSP editor!" What I didn't realize was that it wasn't actually real-time, there was this re-build process and all this other offline stuff. I didn't know that, and so I thought I had to create a completely real-time thing, and so I did.
David Lightbown interviews Tim Sweeney on the first version of the Unreal Editor, the early days of real-time 3D graphics, and the philosophy behind what would become one of the most influential tools in game development.
posted by Sokka shot first (15 comments total) 26 users marked this as a favorite
 
Also of interest are Michael Abrash's Ramblings in Real Time he wrote in early 1996 about how Carmack optimized real time 3D by rapidly computing what surfaces are visible and quickly culling those which are not visible. It was revolutionary.
posted by bz at 10:26 AM on January 12


But still, nobody's really achieved the sweetness that existed back then with Visual Basic. Even the C# User Interface framework is just a massive complicated piles of XML and other craziness that's unnecessary. It feels like every generation that tries to do it does it in a more elaborate way and it gets worse.

While the Visual Basic language certainly has plenty of issues, it's a bit disappointing that now, over twenty years later, Visual Basic still pretty much sets the high bar for ease of use in creating desktop applications. The 'serious' options like Electron have just swapped out the 'massive complicated piles of XML' for massive complicated piles of javascript.
posted by Pyry at 10:37 AM on January 12 [4 favorites]


"A lot of the features in Unreal arose from fallacies of what I misperceived other people did." That's great. It's kind of like music, hearing someone play a riff that sounds impossible but you create something brand new trying to recreate it.

Also, nothing beats Turbo Pascal, even today.
posted by RobotVoodooPower at 10:45 AM on January 12 [7 favorites]


Abrash's article makes mention of Carmack's rapid iteration of engines, and the advances that this enabled. Famously, many of his engine changes would cause previously-built levels or art to become suddenly obsolete. Designers and artists were left scrambling to get back to where they were, and having to use tools that were in flux to do it. Development of Quake was incredibly frustrating for everyone that wasn't a coder. That was the tradeoff - game performance and technical advances over all else, including the efficiency (and health, and happiness) of every artist, level designer, and otherwise non-coder in Id.

A tool-first model of development moves considerably slower, and bad decisions made early on can become severe obstacles that can't be removed. The Id engine-first model made sure that early bad decisions were never a problem, and that performance was never an issue - but that came at a pretty severe cost to pretty much everything else needed during game development.
posted by suckerpunch at 11:04 AM on January 12 [8 favorites]


program TheTruth

begin
     repeat
           writeln('Also, nothing beats Turbo Pascal, even today.');
     until false;
end.

posted by adept256 at 11:39 AM on January 12 [3 favorites]


"So, this was 1995. At that point in time, the state of the art in C++ user interface frameworks was just abysmal. There was Microsoft Foundation Classes which was the most miserable piece-of-shit API you can imagine."

That takes me back... when I made a Windows filesharing app for my final year college project in 2002 I ended up doing it in straight up C++ with no MFC because the MFC networking code made no sense whatsoever. I remember reading CSocket Considered Harmful:
Let’s summarize the story: First we had asynchronous sockets. Then we added a layer on top to make those asynchronous sockets look synchronous. Then we added a layer on top of that that uses synchronous sockets — not the base class’s fake synchronicity but this time real Winsock blocking sockets — to mimic asynchronous sockets. This last layer must override almost all the base class functionality! Clue to Redmond: it’s time to lay off the large lattés.
It's kind of like music, hearing someone play a riff that sounds impossible but you create something brand new trying to recreate it.

I was thinking something similar, like the story of a guy who came up with an amazing way of playing the solo from And Your Bird Can Sing by himself because he didn't realise it was two guitars.
posted by kersplunk at 11:49 AM on January 12 [2 favorites]


I can’t find the story now but I think something similar happened with Bill Atkinson at Apple inventing some graphics technique for QuickDraw because he thought that they had figured it out at Xerox so he believed it was possible, but in fact he solved it for the first time.
posted by rustcellar at 12:02 PM on January 12 [3 favorites]


"So, this was 1995. At that point in time, the state of the art in C++ user interface frameworks was just abysmal. There was Microsoft Foundation Classes which was the most miserable piece-of-shit API you can imagine."

Yeah. I never really could figure out MFC. I eventually just threw up my hands and used VB for the UI for all the engineering software I was writing, wrote the hardcore number crunching stuff in C, and called it from VB.
posted by JeffL at 12:09 PM on January 12


like the story of a guy who came up with an amazing way of playing the solo from And Your Bird Can Sing by himself because he didn't realise it was two guitars.

Hell, when you hear what The Edge is playing half the time vs what's coming out it's absolutely astounding how few notes he plays.
posted by Talez at 12:16 PM on January 12 [2 favorites]


Yep, that story is on folklore.org: Smalltalk didn't even have self-repairing windows - you had to click in them to get them to repaint, and programs couldn't draw into partially obscured windows. Bill Atkinson did not know this, so he invented regions as the basis of QuickDraw and the Window Manager so that he could quickly draw in covered windows and repaint portions of windows brought to the front.

This is also related to "Don't worry, Steve, I still remember regions."
posted by RobotVoodooPower at 12:31 PM on January 12 [2 favorites]


I heard that it was John Squire who did the And Your Bird Can Sing thing, topped with him asking Harrison himself how the hell he came up with it ("It was two guitars, mate"). I'm given to understand that then he went on to program a 3D engine in assembler.
posted by Quindar Beep at 12:40 PM on January 12


I like the two cases of him matching someone else's achievement only to find he'd matched something that didn't exist.

There's a story that Emu Systems built their early analog modular synth to meet or exceed all the published specs of their rivals like ARP. It was years before they found out their rivals had been exaggerating. It shows the power of a stretch goal, particularly if you think someone else has already done it, so you don't think it's impossible.
posted by w0mbat at 1:00 PM on January 12 [1 favorite]


I heard that it was John Squire

Or Joe Walsh, Lenny Breau...
posted by zamboni at 2:10 PM on January 12 [1 favorite]


In the mid 90's, I worked at a company called Newfire (ne Axial). It was built on a technology designed by our CTO when he was looking at Doom and asking himself why it couldn't by real 3D. He worked on it in his spare time until he quit his day job and switched to full time. He had a pretty decent proof of concept demo that ran well on a 486/66 he named Herbie. He shopped it to VC's and the ones that funded him went as far as having him open up Herbie so they could verify that it was a stock machine.

After slogging on it for a while, Quake came out. Newfire's focus was now on VRML with the goal of getting Quake performance in your web browser. Eventually, we too had BSP code, perspective correct textures, dynamic and static lighting, 3D accelerator support, and so on.

We built it, but funding ran out and we didn't have enough customers for the product. We built a demo using our engine that was a multi-player FPS in a 10,000km^2 world with permanently deformable landscape that ran at a decent frame rate on a 200MHz pentium. It took YEARS until the rest of the world caught up on faster machines. The game itself was written in Java, IIRC. We shopped it to game studios and the response was uniform: game designers would look at the demo and respond with "HOLY CRAP! I CAN MAKE THE GAME I'VE ALWAYS WANTED!" so they'd bring in their game engine engineer who would look at it and shit a brick while responding, "oh, we have something in development that can do that" successfully protecting their job.
posted by plinth at 2:16 PM on January 12 [10 favorites]


Or Joe Walsh, Lenny Breau...

It's a trope! Of course it is. I do know one real example - Melodyne (pitch correction/editing software) was like a fancy Autotune where you could modify recorded notes up and down, but modifying individual notes of a chord from a guitar or piano was essentially like trying to unbaking a cake. The inventor found a way to do just that, and there was a great interview with him where he said "obviously this was impossible in theory, but I thought what if it was possible in practise".

I've been thinking a bit about these kinds of meta-problems that crop up all over the place in every field lately - I'm trying to get a big new project over the line in work, but in the meantime I needed to backport a chunk of the new improved pipeline to the old one (where the old one is the absolute core of how a multi billion dollar company does what it does). So how do you tell someone that doesn't know the code that it's a big job? Apollo 13: "We gotta find a way for this to fit into the hole for this using nothing but that". Those people are my heroes. I'd like to think that if my problems carried the risk of people I knew dying rather than just a company going out of business I'd keep a cool head but I'd rather not find out.

Incidentally (slightly more connected to the OP) one of my best friends works in the games industry (worked for big company, did startup etc) and has said that John Romero is an interesting and warm person who brought him out for dinner. He revealed he was obsessed with Disney Land for example and promised to bring him the next time he was in California, because what is Disney Land is not a collection of game levels with scares, rewards etc?
posted by kersplunk at 3:41 PM on January 12


« Older It's like a fastfood pancake: same round structure...   |   "It’s uniquely American. We exported it. It’s like... Newer »


You are not currently logged in. Log in or create a new account to post comments.