Tim Sweeney on the First Version of the Unreal Editor
gamasutra.com
gamasutra.com
Regarding the Haskell love. I believe Unreal contributed to the design of a research functional programming language prototype called Cayenne back in the day:
Cayenne—a language with dependent types
https://dl.acm.org/citation.cfm?id=289451
I think another historical note is how everybody developed on SGI machines in the late 1990s. Primarily, due to Maya modeling. But the 3D graphics API wars were certainly a factor:
Direct 3D and OpenGL by Paul Hsieh
http://www.azillionmonkeys.com/windoze/OpenGLvsDirect3D.html
And, yeah, MSDOS ZZT from 1991 is still playable via Internet Archive ;)
I remember UnrealEd from the Unreal 1 and Unreal Tournament 1 disks. That's how it looked like: https://www.gamasutra.com/db_area/images/blog/309414/ide1.jp...
Back in the "engine war" between Quake 3 Arena and Unreal Tournament, the map community loved UnrealEd, it was definitely easier to use and was just-in-time, no seperate minute-long build-process to build the level and try it out, in UnrealEd you could just try it out. Visual Basic 4-6 were incredible RAD product (rapid application development). Before Github, before GoogleCode, before Sourceforge, there was PlanetSourceCode and it was the go to place for Visual Basic dev community. For everything you could find little programs and code. Windows 95/98 era and Visual Basic was the perfect symbiosis. Very sad when MS announced the vision of .net and stopped VB6 in 1999 (it took them until 2003 to show up with something, yet many devs faced a wall with no support, and were forced to moved on to Java/PHP/etc). Anyway when I first read about UnrealEd was coded in Visual Basic 5 or 6 I couldn't believe it, it had an outstanding performance and integrated the C++ renderer perfectly. Though it was a bit unstable (which was common also for Word 97 and Excel 97 back then), so one had to save a lot, and use "save as" to not correct files. I would say the next evolution of game editors was certainly Sandbox editor of Cryengine 1 from Far Cry 1 disk (2004). Creating tropical islands with its landscape editor was never easier. Of course other tools soon reached parity.
Sadly Borland lost their way, and their key architects to Microsoft, so.
Even today, C++/CX with XAML is not as productive as C++ Builder, and it took all the way to Windows 8, for Microsoft to start taking .NET AOT compilation seriously.
Meaning VB 6 probably still produces better executables than VB.NET.
I'm glad you think that - I work on C++Builder, and work hard to improve its strengths. Productivity is a key one compared to other C++ tools. These days it's not just Windows, but iOS and Android too, and you will hear more good news about platforms and C++ standards support sometime soon. Not all the team left for MS, by the way: we have some truly incredible people on staff.
From the article, re Turbo Pascal, the precursor to Delphi,
> You would be typing code, and then several seconds later it would be compiled, and you'd be running it.
That's still true of Delphi today! There's a video on Youtube of a million lines of code compiled and linked in about six seconds. It's hard to overestimate the productivity that kind of round-trip speedy development brings.
German companies are still into Delphi, with a few yearly conferences.
I have an ancient version of Borland C++ Builder - actually the first one - which i got off ebay some years ago (i like collecting old develpment tools [1]). I like that it basically works everywhere and is stable, even in Linux through Wine [2]. I used it mainly to make a few things for fun, like some patches for old games [3] (because it makes very small executables - like 250K or so), a small 3D editor [4] and a WinLIL [5] - a PyWin inspired shell for my LIL [6] scripting language (mainly an excuse to make yet another thing that uses LIL :-P).
Normally i use Lazarus [7] (on which i wrote the more serious alternative for WinLIL, LIL Studio [8]), but there is value to being able to use C and C++ code directly from a very easy to use RAD GUI builder. For example it took me like a couple of hours to make WinLIL and 99% of that time was making the graphics routines - for LIL i just dropped the lil.c and lil.h files into the project and it worked out of the box. Also when a new version of GLEW was released, i thought "well, this is C right? Let's see if it works with BCB" and it did, although i had to remove the C99-isms (only a few changes here and there) [9]. For comparison to actually access OpenGL 4.6 through Lazarus i had to write an entire custom generator (basically reimplement GLEW) [10].
Some people have actually suggested me to try Qt Creator and i did... and it sucked. Ok, not exactly sucked, but it was way less "integrated" and more kludgy than what you'd get with classic VB, Delphi, C++ Builder or Lazarus. It is certainly a step above than the dialog editors you get in other toolkits that feel like glorified Win16 era resource editors (actually scratch the glorified bits because you can't even embed actual resources in them, only edit the dialogs). But even Delphi 1.0 on Windows 3.1 feels better.
So yeah, C++ Builder can be a great thing to have...
BUT!
As i wrote above, the last time i tried Embarcadero's stuff, they seemed to be heavily infested with DRM crapware. I really detest DRM - notice how i actually have Borland C++ Builder running from its original disk basically 22 years after its original release from a company that practically doesn't exist anymore? I am certain it'll work even 22 years into the future - even if Microsoft goes braindead and kills Win32, it'll be Wine or even some emulation layer like DOSBox.
But can i expect the same from modern C++ Builder? Does it still have the DRM? There have been several changes since the day i wrote the article at [1] (and even tried C++ Builder a year or so later and found that it addressed some issues i had with the UI that i mentioned at the bottom - although the bloat issues were still there, but those are minor issues that will solve themselves with time - after all i have tried BCB1 in an old PC from late 90s i have and it isn't exactly fast either :-P) and AFAIK the company has changed hands again so things might have changed on that front too.
Personally i wouldn't like to pay $700 for a program that goes away in 3-4 years and shuts down their DRM servers making it impossible for me to use that again. And lets be honest, Embarcadero has changes hands (and names!) so many times over the years that their future prospects aren't exactly trustworthy.
EDIT: i just saw that C++ Builder now costs $2k... well, FWIW i wouldn't be able to buy it even without DRM :-P. When did the cost change? I remember it being much cheaper.
[1] http://runtimeterror.com/blog/borland-c-builder.html [2] https://i.imgur.com/rInEdBY.png (that is XFCE with a Win95 theme) [3] https://i.imgur.com/eZ44J8y.png [4] https://i.imgur.com/zRguUf8.png [5] http://runtimeterror.com/tech/lil/winlil.png [6] http://runtimeterror.com/rep/lil [7] http://www.lazarus-ide.org/ [8] https://i.imgur.com/laBbvww.png [9] https://i.imgur.com/JiQHAwz.png [10] http://runtimeterror.com/rep/gl2unit/index
In terms of price: Starter is completely free. Pro's cost is on par with VS, and if not, feel free to reply why, always worth revisiting.
UnrealEd on the other hand inverted that paradigm, instead of building your level a void you carved your map out of a solid mass. The geometry was much easier to work with and led me to really embrace Unreal's engine over Quake. I still loved Quake as the better game but Unreal's technology shined brighter for me as a young map maker.
FYI Unreal still had leaks (which lead to major performance issues if uncontrolled, due to the PVS being too inclusive), but it was not as pronounced as the negative space still allowed the map to finish building the BSP (Quake just failed, sometimes without a clue as to why).
Note that this was most likely an issue with the editors people were creating at the time. AFAIK nobody has managed to build the original QuakeEd's source code and that one didn't had those issues (mainly because it didn't allow much manipulation in the first place - most brushes are axis aligned and neatly arranged on the grid).
> UnrealEd on the other hand inverted that paradigm, instead of building your level a void you carved your map out of a solid mass
Which is funny because this is also what Doom did: like Unreal, Doom had you carve up negative space in a huge solid world. This approach was also used by other engines at the time, like the Sith Engine by LucasArts which was used in Jedi Knight (in that engine all world geometry is made by sectors creating negative space pretty much the same way like in Doom).
Although personally as a programmer i tend to favor positive brushes for their simplicity. I have written a 3D world editor that has both negative and positive brushes and the code to handle the geometry generation for negative brushes is like 10 times more than the positive brushes (i don't use BSP) due to all the edge cases from floating point precision.
I remember the next version (UT2003?) put more emphasis on imported models to populate a sparse UT-style carved-out map, which I imagine made things a lot easier for most people, but sadly was the end of my level editing days. I never got into 3D Studio Max (or Maya?) enough to be able to create maps as nice as those of others.
Still, good times.
Yeah, there are two editors, JED and JKEdit. AFAIK the latter was much easier but also it was shareware whereas JED is (or became) open source but harder to use but on the other hand it has more features. Also it is extensible and i think it uses some sort of text-based API to communicate with external programs since i've seen extensions being made in different languages. As the end result the entire community focused on JED (although there are still a few people using JKEdit).
But both editors work with the negative sectors directly while i think LucasArts' editor (Leia) had a more high level interface that was more similar to UnrealEd's subtractive BSP. The engine uses per-vertex lighting and i've seen some "artifacts" in the geometry that give me the impression that the geometry was generated through BSP subtraction instead of the more "hand-made" approach that JED has (i don't know about JKEdit).
(Also FWIW this was a similar case with the original DoomEd for Doom - unlike most editors made at the time and even later, in DoomEd the sectors were implicit and assigned through some sort of "floodfill" algorithm that found the connections between them, but in most Doom editors you had to manually create vertices, linedefs, sectors, etc)
> I remember the next version (UT2003?) put more emphasis on imported models to populate a sparse UT-style carved-out map, which I imagine made things a lot easier for most people, but sadly was the end of my level editing days. I never got into 3D Studio Max (or Maya?) enough to be able to create maps as nice as those of others.
Actually it made things harder for people since it added the requirement to use an external tool to create the assets - this was always (even today) was seen as a major drawback when it comes to modding. It isn't a big problem for big game studios because they have dedicated artists for making environment props and the level designers simply have a ton of premade props at their disposal so they don't need to actually make them themselves, but it is harder for solo and small team modders.
This is probably the reason why you see a lot of maps for games that come with in-editor tools (like Valve's games, despite having a clunky interface in Hammer, the brush tools are top notch and a ton of maps are made with that) or with a ton of premade modular assets (like Bethesda's tools which also encourage people to create reusable assets for others as mods as opposed to special single purpose assets).
I also remember fiddling with surfaces to get nicer lighting, and being happy that I didn't have to do that for UT editing.
> Actually it made things harder for people since it added the requirement to use an external tool to create the assets - this was always (even today) was seen as a major drawback when it comes to modding.
Yeah, it was exactly why I stopped modding. I was more interested in level design than fiddling in a 'proper' 3D editor and I never got around to understanding 'skins'. Was a bit saddened by that and didn't like the idea of relying on other people to provide models for my levels.
BTW Carmack released the source code for QuakeEd back in the mid90s [1], however it was written against the "traditional" NextStep APIs which were incompatible with OpenStep or GNUstep and AFAIK nobody ever ported it to anything nor managed to compile it.
EDIT: also id did release an editor before QERadiant - in fact this is how QERadiant came to exist :-P. They released QuakeEd 4 (i don't know what happened to the other 2 :-P) which they used for Quake 2 [2]. They also released the code for that which is what Robert Duffy used to make QuakeED 4 Radiant that actually made id hire him (you can read an interview with him here before he was hired [3]). The original editor was written in C and used straight Win32 API with a bunch of floating windows while Radiant converted it to C++ and MFC. AFAIK even though it was converted to Gtk through GtkRadiant, the MFC branch survived even in Doom 3 (which was embedded in the game and launched through the console).
[1] http://www.gamers.org/dEngine/quake/QuakeEd/source.html
I think most of my love with editing as a kid was for the Build editor and Duke3D - you could make some impressive levels with a mixture of laying out walls/zones in 2D, and adjusting heights and textures in first-person 3D. Opening the existing levels was also possible and a great way to learn how they had been made. I swear I’ll remember parts of the sector ID tag list until the day I die.
It’s kind of a pity that with the increased complication of engines and design that this is a much harder process to get started on. Though perhaps I’m underestimating the wonder even now of loading up a box room and the feeling of I made this...
In both the programming and business world, I've observed this trait in successful people. I know I've had ideas that were ahead of their time, but was held back by that damn voice saying it can't be done or I don't have the resources. I wish there was some way I could "fix" that wiring in my own brain.
On the one hand, my skepticism has saved me more times that I could count from being conned or from bad deals. But it also has held me back by focusing on the problems instead of just blazing forward.
I can't decide if it is a form of stupidity or intelligence that allows people to confidently throw themselves behind their own ideas.
I think a good method would be to share that idea with others, and work on it with help.
Unfortunately, it can be difficult to find other interested people.
https://www.codeofhonor.com/blog/starcraft-orcs-in-space-go-...
"At some point I talked with Mark and Patrick about how Dominion Storm knocked us on our heels, and they let us in on Ion Storm’s dirty little secret: the entire demo was a pre-rendered movie, and the people who showed the “demo” were just pretending to play the game! It would be an understatement to say that we were gobsmacked; we had been duped into a rebooting StarCraft, which ultimately led it to be considered “the defining game of its genre. It is the standard by which all real-time strategy games are judged”
(So I indeed remembered a few things wrong: It was about a read- and write-FIFO, not about a flip-flop and latch. And the speed improvement factors were not mentioned.)
The European demo scene was very important in the development of computer graphics (e.g. early 3d shading techniques) and music (e.g. music trackers which can be considered predecessors to modern DAWs), every now and then I go and watch those demos and I am amazed by what a bunch of teenagers was able to achieve on very limited hardware such as an Amiga 500 or an Atari ST. Many classic demos are now visible on Youtube so you don't have to go through the chore of installing emulators.
It was released a bit later (1998) but for its time it has some very impressive lighting effects.
And the joy of reading electronic magazines (diskmag) like Hugi.
I think if you have people who are naturally inclined to be toolmakers, and they've got a problem which can be solved in two ways - repetitively, or with tooling - the deciding factor on whether they build a tool or not will be how much autonomy of decision-making they have. Tightly focused "agile" sprints will result in small packets of work, no one of which will be big enough to justify any tool building, so there won't be any space for introspection and planning, and it probably won't happen.
Tooling tends not to evolve from refactoring. It has a similar genesis - seeing repetitive work - but the approach requires a couple more clicks up the abstraction stack to plan out.
As the Unreal Editor evolved it just got better.
The best part of the early Unreal editor was the "skybox" hack that you would have to create basically a small box placed somewhere in the map with the inside painted as the sky (or whatever panorama you wanted players to see when they looked at the sky).
There was no better feeling to me as a kid than opening up a map like DM-Deck16 in the Unreal Editor, and investigating how the genius mappers had created this or that part of the map (especially the toxic zones).
> There was no better feeling to me as a kid than opening up a map like DM-Deck16 in the Unreal Editor, and investigating how the genius mappers had created this or that part of the map (especially the toxic zones).
That's the thing I really liked about the game back then. You could just open the included maps in the editor and look at how they've been done. Usually the maps are either no longer in the format the editor supports and have to be decompiled (id games) or things were stuffed away in some large nonstandard archive file (I remember trying to find the Starcraft campaign maps and couldn't). Back when internet access was only sporadic and short I tended to give up where I couldn't figure things out further on my own instead of searching for tools.
Also There were so many pieces of advice out there on how to prevent them or if they occur, how to get rid of them that I was convinced at some point that half of that must have been cargo cult like.
Seeing the screenshot with the gridview from QuArK brings back nice memories in any case: https://en.wikipedia.org/wiki/Quake_Army_Knife
http://www.jaruzel.com/apps/quake2/
I recently tried to get Qoole back up and running, but it really hasn't aged well. Making levels in it now, seems like way too much hard work.
--
[1] Qoole Screenshot: http://www.cs-h1.do.am/_ld/2/50880145.jpg
I then went on to make multiplayer maps for half-life (can't remember which editor I used), I still play those maps with friends.
After HL1 I went to college and couldn't afford a PC capable of running the newer games/engines, and that's where my map building hobby stopped, unfortunately. Nowadays the engines and tools are so complex, that it just takes too much time to build maps for a hobby IMO.
What tools? I can't think of a single recent AAA game that actually has an editor besides Unreal and Unity and those are, IMO, just as easy to use now as they were back then. The processes are a little different but the basics are still pretty similar.
Now that's a name I haven't thought about for a long time. The gamer in me wishes Rebel Boat Rocker had worked out because their game had some promise. I only talked with Billy a couple of times and he seemed a good guy.
I met John Romero once in the Ion Storm tower, I would agree with the interview as he seemed a nice guy. Although there's a bit of a rep there. Shame Ion Storm was such a mess.
Met Jay Wilbur as well. Seems I've met quite a number of people in the industry during that time, wish I had capitalized on that a bit better.
Never did meet Carmack or Sweeney, that would have been nice to add to the collection.
Personally, I actually preferred Half-Life level development for a long while simply because the output was so nice. It was all about the lighting for me. Once the level building tools evolved a bit from the first crude Quake1 tools, dealing with them wasn't as bad as people seem to remember. It was those tools that instilled in me that the concept of making things more efficient and to look for more efficiency was well worth the effort.
Eventually a common thing for Unreal, probably UT, level development was to start with one large empty space and then fill it as necessary. As I remember it anyway. Especially with the usage of meshes and instances, it was simply more efficient.
My favorite editor was always DromEd for the Dark Engine used for Thief. The concept of designing levels with real-world units, that lighting had serious gameplay implications, and having to consider sound throughout the level was a nice change of pace.
While I'm going all nostalgic, anyone remember playing UT on Linux? There were so few good Linux games back then. I think I played it until the hard drive platter was thread-bare.
Not the original UT, but 2004 had a Linux version. Damn, that's a long time since I tried that game the last time. Gotta get myself a real licensed one though, back when I was younger we shared a serial key and well, someone got the serial banned on most servers somehow...
What wondered young me was that UT2k4 was able to run without any compilation or whatsoever on any Linux system no matter which kernel version, distribution, driver version, xorg version, ... Older me knows it's due to static compilation, but still absolutely awesome given that the only binary that does the same is busybox in static compiled mode, everything other will break when crossing distribution boundaries.
'make CXX=g++ -k' for any other linux ue4 users
I'm considering switching to pure blender/godot even though it's not even close to feature parity with ue4, at least it's a gpl license and linux is a first class client.
So they are paying attention to whom gives them the bucks.
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.
It basically goes to show you nothing's impossible until someone says it is. Had Tim thought, "There's no way you can write a real-time BSP editor on current hardware", he would have never done it.
What is lightmap space?
It was too slow to calculate lighting in real-time, so a process executed at design-time in Unreal (at build-time in iD engines) that calculated how lights lit the level geometry and then baked those changes on to the textures that were applied to the geometry.
It's like painting the glow of a torch on to the wall once before playtime rather than actually doing it every frame. Lighting doesn't typically change every frame, so it works.
If he would have "painted it on the lightmap" then the effect would not have changed based on your viewpoint, since it's just baked into the lightmap.
http://www.flipcode.com/archives/Texturing_As_In_Unreal.shtm...