Epic's Sweeney On the PC Shareware Revolution
simoniker writes "Over at Gamasutra, there's a massive new interview with Epic (Mega)Games founder Tim Sweeney, the guy who's still a key technical figure at the Unreal Engine/Gears Of War developer. He discusses his early programming days, the story behind classic shareware game/tool ZZT, the origins of Epic, the '90s shareware business, and even a bit about the future as well. Particularly neat is his revelation that you can still order ZZT via mail, with orders fulfilled by his dad: 'My father still lives at the address where Potomac Computer Systems started up, so he still gets an order every few weeks... he's retired now, so he doesn't have much to do. Every week, he'll just take a stack of a few orders, put disks in them, and mail them out.'"
He's going to get thousands now it's on /.
Epic is just assume I will have to read the rest of the interview. Just the first page brought back memories of things I had forgotten like "Epic Pinball."
Think Deeply.
Man, I used to love ZZT. It honestly had a decent OOP programming language built-in. Too bad it didn't allow you to extend it... WiL ftw!
Friendly fire isn't!
The reasons why shareware exploded into growth in the 90s were because of a number of reasons. Hardware was expensive, today if a game doesn't work because you have too little RAM all you need to do is spend less than $20 and get a gig of DDR2 RAM, likewise if you don't have enough storage, you can move some pictures or movies onto a few GB flash drive for less than $20, if you don't have a fast enough graphics card all you need to do is spend $100 and you can get one that will handle most games (well, perhaps not Chrysis but other than that....), if your CPU is the bottleneck you can get a decent enough box for less than $500, back in the 90s an upgrade like that could be a thousand dollars or more. Shareware gave you a chance to make sure the game ran decently before you spent $50 on it. It also curbed piracy, by giving away part of the game for free pirates had something to distribute other than the full game. On the other hand shareware was as annoying as heck and still is especially on non-PC platforms such as Windows Mobile, iPhone (though due to the app store its a lot better than on Windows Mobile), or the generic cell phone.
Taxation is legalized theft, no more, no less.
"My father still lives at the address where Potomac Computer Systems started up, so he still gets an order every few weeks... he's retired now, so he doesn't have much to do. Every week, he'll just take a stack of a few orders, put disks in them, and mail them out."
Odds that his dad just got slashdotted?
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
From page 1 of the article: "Try to find a programming language in Windows. Your computer's a million times faster, but you can't do a damn thing with it." But Windows has JScript and VBScript.
I remember playing ZZT on an old DOS 3.0 box. It was my first programming experience - being a kid, being able to do some programming inside of a game was very, very cool. I had no idea that ZZT was still alive. I think I'm going to go order myself a copy. (o:
Love sees no species.
It's not like it's that hard to *get* a programming language for Windows, though.
Just download a copy of Visual [C++|C#|VB] and you can do all kinds of fun stuff.
Windows doesn't have a programming language at boot because it's an OS for the masses, and the masses would get confused by a "READY." prompt.
"Dude's Dad cashed my check, Asshat, so I'm cooler than you!"
"Will this run on XP?"
rofl...
Truth isn't Truth - Guliani
does he get orders every week or does he have a huge backlog to hold him over:
"...he still gets an order every few weeks... Every week, he'll just take a stack of a few orders..."
As opposed to the one in DOS?
"They were pure niggers." – Noam Chomsky
I do recall some of the computer stuff from the 80s and 90s having some emphasis on programming, compared to today where it's never mentioned outside of a specific class for it.
But then, it's like cars. They don't teach auto-repair and other mechanical stuff. Most people will never even think about that kind of thing.
qbasic?
ZZT had (and still has) some absolutely awesome stuff in it. I remember, it was the first game I actually got for my computer. It was also my introduction to programming and dicking around with "how do you make a playable game?" as well. There were some absolutely awesome fan-made worlds which really pushed the in-game programming to its limits - "Operation: Gamma Velorum" comes immediately to mind. It did some stuff which the in-game engine allowed, but I don't think it was expected to be used in -quite- that way...
You can still find a bunch of fan-worlds at http://zzt.belsambar.net/ (among other places), but it actually looks like they're trying to close down the page. If you're getting into the classic stuff, get it while the getting is good. _
As far as other games, it's funny, I was discussing this on IRC the other day - Epic Pinball, Jill of the Jungle, Jazz Jackrabbit 1 -and- 2, Traffic Department 2192, Solar Winds, One Must Fall 2097, Kiloblaster, Overkill, and Zone 66, all games I (think I) got under that label when I was just starting out, and picked up again for my collection of classic games. :D
Of course, I'm not 100% sure they were -all- by Epic, and I'm not opening them all just to check, but I'm pretty certain that most of 'em were.
if you have .net, you have the c# and javascript.net command-line compilers.
Do you even lift?
These aren't the 'roids you're looking for.
First, that wasn't until DOS 5.0.
Also, if Qbasic counts then, taking internet access for granted, there are literally hundreds of superior alternatives (at least for learning) available for free... why bother with the crud microsoft may or may not provide?
"They were pure niggers." – Noam Chomsky
When someone wanted a Windows version of one of my programs recently, I tried the latest Visual C++ Express edition. After changing the one line of GNU specific (and it was even already documented as such) code, I could get it to compile but I never did figure out how to get it to run on a computer that didn't have Express installed. Googling provided lots of answers for older versions that apparently don't work with the current version and eventually I gave up and tried MinGW which just plain worked. You wouldn't happen to have a link to instructions for taking a pre-existing cross platform code base and getting the current version of Visual C++ Express to produce a binary that actually works, would you?
Remember RFC 873!
They probably just need the C++ runtime:
http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf
There's a separate download for x64, but express won't usually target that.
Or, if you're doing games on Windows, you might want Microsoft's XNA instead, a game development environment, with the advantage that if you pay a little bit of money, you can play them on your Xbox360. It's effectively a sanctioned way to do homebrew on the 360.
...though someone should tell his dad that we don't use 5.25" floppies anymore.
As well as Visual Basic.NET and MSIL assembly (for the hard core). That's 6 different programming languages that come with Windows - 7 if you want to include PowerShell.
DOS had QBasic and debug.exe to do some assembly stuff (which was even more hard core).
I am assuming people pay for their orders ;)
sorry, couldn't resist.
When all else fails, try.
massive new interview with Epic (Mega)Games founder Tim Sweeney
You wouldn't happen to have a link to instructions for taking a pre-existing cross platform code base and getting the current version of Visual C++ Express to produce a binary that actually works, would you?
Find your c++ settings and change the runtime library option to be something without DLL's. That way the C++ runtime gets linked into the application.
I didn't order the week before last week, and I still haven't received my copy. Should I call and complain, and if so, what should I complain about?
Very interesting point. I wish they'd gone into more detail around programming languages...
debug ;)
ZZT sucks, Megazeus FTW
Hey Sweeney, where is the fucking UT3 for linux?
Not really; it's the same opinion you'll get from anyone who has used C++ and any other language (with the occasional exception of C). The vast majority of people who advocate C++ do so because they don't know any other languages, or only know them to a superficial level.
I am TheRaven on Soylent News
Perfectly Realistic Game Graphics 10-15 Years Away
...
That part of his interview was most interesting to me.
http://gamasutra.com/php-bin/news_index.php?story=23742
Some pretty funny quotes:
Gamasutra: Does it scare you when you see Crysis... or, I don't know. What's the biggest competitor in the game engine market? Is it id's stuff, or is it another company?
Sweeney: Today, it's Crysis. Because Crysis is doing some things on high-end PCs that we're not doing ourselves. That's a tricky case though, because we could do vastly more than we're currently doing if we focused on supporting dual high-end video cards, which have about 10 times the graphics horsepower of a console today.
Gamasutra: So you'd have to create a perfectly realistic virtual human first to have perfectly realistic graphics.
Sweeney: Yeah, you'd have to simulate the brain and nervous system in the computer.
I remember Tim answering snail mail personally and to great lenght even tough I didn't have much of a product: just a few unfinished levels. Yet his long answer explained me what I should do to make it more attractive, what he was doing to make his games funnier to play, etc.
And he subscribed me to the (snail mail) Epic MegaGames newsletter containing disks/previews without me asking anything.
A very very nice person.
And, yup, I also programmed in second generation languages (directly entering hex opcodes) :)
Thanks again Tim!
Speaking of great shareware games, can anyone tell me where to get a copy of Carl Ericson's 'Race'?
I loved that game but now can't find it and the 3.5" floppy I had it on died before I got around to buying a USB floppy drive.
Conservation of angular momentum makes the world go round.
In fact there's an archive of Tim Sweeney of posts and interviews out on the web.
As an aside, I remember reading an article Tim wrote about the programming languages back in 2000...
1) GW-BASIC came with versions of MS-DOS prior to 5.0.
2) Not back then there wasn't.
MegaZeux beat ZZT in every way. Programming language and everything was much better. I was just looking into this half a year ago, MegaZeux is still in development.
Windows /does/ have a built-in programming language. It's based on Visual Basic and the file extension is .vbs. I think at one time (and it may still) it supported Jscript, which was Microsoft's version of Javascript.
Hail Eris, full of mischief...
E pluribus sanguinem
DOS had QBasic and debug.exe to do some assembly stuff (which was even more hard core).
Ah, I remember using "debug" to actually debug some old DOS programs of mine. Specifically, I was debugging a simple TSR (terminate and stay resident, essentially a daemon in DOS). It had a very unfriendly interface, but once you learned to use it, it was quite helpful.
The best part about debug was that it ran in DOS 16bit real mode. That meant that you had access to anything on the machine you wanted. You could give debug any address you wanted. Addresses in segment:offset format, of course, since you can't access it all with a single 16bit pointer. This let you look at DOS code in memory, BIOS data, other TSRs, or anything else lurking in memory.
Palm OS pre-version 5.x also had a free 3rd party debug program you could download. Since the m68k chips were also 16bit, you could use it to poke around anywhere in memory. It also has a decent interface that would let you jump right to offsets in memory where programs were stored. And, since Palm's used RAM for everything on the m68k devices, there was usually always more interesting stuff in RAM than on a machine with DOS. :)
Elrond, Duke of URL
"This is the most fun I've had without being drenched in the blood of my enemies!"-Sam&Max
Wow, I know its been just about a decade now, but I thought a few might be interested in this story:
I used to frequent the Washington, D.C. DWANGO network to play Doom2 multiplayer. It was an old dial-up, correctly titled Doom Wide Area Network Gaming Organization. Guess who else used to game on there during the day too (as I had ample time still in grade school)? Yup, it was the Epic team. I think a few from Bethesda Softworks would play some too, but I got to chat with one of the Epic team guys after a game one day. Epic is an amazing company, and I wish I could remember the name of the guy who I was talking to... Because a week later I ended up having all their pinball games mailed me (yes, with the box and manual and everything). Just for asking. I mean, I was a kid and didn't think I they would ever send their game for free... 10 years later and I can't get over it. Anyways, that was the story -- hope you liked it.
The vast majority of people who advocate C++ do so because they don't know any other languages, or only know them to a superficial level.
Citation? I suspect that this is just as much true of any language, given that most people only mainly know one language, and the one they use and hence are most likely to advocate is going to be the one they know best.
Personally I like C++, and I know other languages such as Java.
And I suspect that most C++ programmers know C...
It's effectively a sanctioned way to do homebrew on the 360.
Yeah, in the sense of "trade sanctions" or something, maybe. Pay to play? Fuck you, I still have an original Xbox and the XDK is everywhere.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
I feel that I owe Mr Sweeney quite a lot. I was one of the people who ordered the full version of ZZT and Super ZZT back in the golden days, and I have to say that those two 'games' had a direct impact on me.
I always thought it would be nice to have a game editor that was similar in concept to ZZT, but with graphical capabilities. So, that's what I did (http://rpgtoolkit.com).
And I wonder who else owes him the same thanks for the inspiration he sent out on those 3.5 inch disks
Its so good to hear someone getting this message out. I've been saying this for a long time. Cellulosic ethanol is in this category, too!
-Chris (aka Lenwood)
Jscript has extension .js. But don't forget the venerable batch language. If you're comfortable with self-modifying code you can write arbitrarily complex programs. Here's a prime number calculator (save as primes.bat):
:start :eof
:start /A limit=%1*%1
:repeat /A square=%value%*%value% /A remainder=%%1-%%1/%value%*%value% >>primes.bat) & (echo if %%remainder%%==0 GOTO :EOF >>primes.bat)) /A value=value+1 :checkprime %value% :repeat :eof
:checkprime
@echo off
if NOT [%1]==[] goto
echo primes n
echo Calculate primes up to n
goto
set
set value=2
set remainder=1
set
if NOT %remainder%==0 (echo %value%) & (if %square% LEQ %1 (echo set
set
call
if %value% LEQ %1 GOTO
goto
I think the elder Mr. Sweeney is having some unshipping issues. If you do receive your copy within 6-8 weeks of not ordering, you should probably send him a letter of non-complaint.
It may also be a good plan to include a photo of yourself with a goatee* drawn on.
* Please do not include photo with drawn goatse, as he is retired and less forgiving of trollish frivolity.
What I remember hating most about transitioning from C to C++ was the change from printf to COUT. For the longest time, streaming output just did not *click*, probably because it didn't give the same level of control over string formatting.
download a copy of Visual [C++|C#|VB] and you can do all kinds of fun stuff.
I prefer the Qt SDK - yeah, it works on Windows (as well as Visual C++ does), and after you've invested 3000 hours learning the tool, you're not locked in.
there was a qbasic in most CP/M system disks. yes, it came from Microsoft
-Kz-
To be fair - even that is fairly recent (maybe past 5 years). For the longest time, you had to actually go looking for a free Windows C++ compiler.
It's fine if you just avoid using the operator overloading, inheritence, polymorphism, virtual functions etc. The // for comments feature is really worth the change.
The fact that you regard Java and C as sufficiently different from C++ to give you a relevant perspective only reinforces my point. Even though Java is closer to Smalltalk and C++ to Simula, most C++ programmers I've encountered write Simula-style Java and so manage to miss much of the point of the language.
most people only mainly know one language,
Good programmers know a dozen or more languages, and know at least three or four from different language families well enough to solve any given problem.
I am TheRaven on Soylent News
// for comments comes from BCPL. C, as a cut-down version of BCPL, omitted them originally, but reintroduced them with C99. They have been valid C for a decade; maybe you need to update your C compiler...
I am TheRaven on Soylent News
Every week, he'll just take a stack of a few orders, put disks in them, and mail them out.
Hope he's remitting sales taxes accordingly!
https://www.eff.org/https-everywhere
I miss the days where a game demo had 9 or 10 levels to play. These days, you're lucky to get one *complete* level in a demo. Its a testament to how far game quality has gone down hill in the past 15 years.
This is an interesting ad-hominem metacriticism of anyone who disagrees with your subjective opinion of C++.
Bytecode compilation, a VM, and large set of libraries is a characteristic of the programming environment, not the language. Both Java and C++ derive from Simula, because they have the same semantics - you call a method from an object like you call a function, whilst in Smalltalk and ObjC (a direct descendant, BTW) you send a message to a given method in a given object. That screws with microbenchmarks when you have complicated behaviour, because virtual functions run through RAM, instead of the CPU cache, but you at least keep the main working set there, making for a overall more responsive program. Sometimes, this is my tax-deduced $0.02, purely IIRC, YMMV.
I know tobacco is bad for you, so I smoke weed with crack.
And you don't need to tell me Objective-C is a Smalltalk descendant; I've implemented code generation for compilers for both languages.
I am TheRaven on Soylent News
Eh, I don't have any programming experience outside of some C, but as you can judge from the timestamp on my post, I wasn't at my best. Sorry for flaming you like that, everybody (in the "obscure forum in the middle of the night" sense) keeps saying Java is almost like C++, so I was sort of confused. Or did I read it in Wikipedia?... Whatever, thanks for the info BTW.
Aaaa, may I ask, which object system do you find the coolest/most useful? For me it's Io, Lua, and whatever Lisp uses.
I know tobacco is bad for you, so I smoke weed with crack.
Io is pretty nice, it's basically a pure COLA in the Self style, but the scoping rules are just insane. I've not used Lua much. Lisp doesn't really have an object system, but CLOS is incredibly powerful as a metaobject protocol (a tool for building object systems). I've recently done some work adding prototype-based object orientation to Objective-C, and my Smalltalk compiler (which targets the same ABI and object model) benefits from this too, and so we've been working on a JavaScript-like front end for it, and I think someone is planning on adding Self too.
I am TheRaven on Soylent News
Have you thought about using ObjJ from the Cappuccino project? It's pretty much ObjC on top of JavaScript. Technically, you just have to make a JavaScript frontend to the LLVM compiler system to get it running like a normal language. Lua is quite similar (in the use of associative arrays for the object model), and was able to target it. Heck, a JS->Lua source converter shouldn't be much trouble, and you get Lua's C heap and interface as a bonus. Though you'd need to bolt on a descent typing system, ala ActionScript...
BTW, I looked it up, and Io's scoping seems reasonable, apart from using dynamic scoping in methods. That may be problematic for people experienced in other languages, but is not bad by itself, though they should have taken the Perl route, and made it optional.
I know tobacco is bad for you, so I smoke weed with crack.
Take a closer look at Io's scoping. There are a few dozen weird corner cases where it does some deeply strange things. It's almost as bad as the semantics of 'new' and 'return' in ECMAScript (you'd think they'd be simple, but read the spec and prepare to be confused).
ObjJ is irrelevant to what I am doing. I have built a compiler infrastructure on top of LLVM that compiles a Smalltalk-like AST to native code with the same object model as Objective-C, allowing us to subclass Objective-C classes in Smalltalk. Someone else has been working on a JavaScript front end, and the prototype works very well; you can use Smalltalk or Objective-C objects as prototypes for JS objects.
I am TheRaven on Soylent News