I Secretly Tricked **Spike** Into An Interview And What Happened Next Is Beyond Belief
How long has FTEQW been in development?
[Editor's note: *tumbleweed*]
What was the initial motivation for developing FTE?
Mostly I just got obsessed with modding quake and moved to quakeworld engine coding. I had a crappy nq engine before that, which is where qclib comes from, hence why its always been separate
What feature of FTEQW are you most proud of?
The cake dispenser.
Is that "sv_cake now"?
[Editor's note: *well deserved silence*]
What are some of your favorite FTE-powered things made by the community?
Anything that's actually finished. :s Most of the stuff I've done with it myself is unpolished stuff that's interesting for 5 mins tops. Which is why it's unpolished. So any time I do see cool stuff, I'm always impressed that they managed to stick with it for long enough to learn all the stuff and then get a working game. TCs are always good, while mods tend to leave me a bit disappointed that it still depends upon buying quake, making it much harder for people to just download+play.
You mean FTE is unpolished in many corners? I am often reminded of my own "I just wanted to prove it is possible, now that I got the proof of concept I could not care less" attitude at times.
The best way I can describe it is as a craving, certainly in the earlier days. I can work on some feature (like q2 support) for 3-7 days or so, but if something takes longer than that, I run the very real risk of not caring about it any more. Hence why I have to develop stuff in multiple stages.
FTE's Quake 2 support had q2bsp, then it had Q2 clients, then Q2 servers, then parts of it actually became usable, then it had some particles, then it had a whole load of bug fixes.
No way could I have done it with a single sitting. So yes, to answer your question, FTE is unpolished in many corners. The stuff gets there in the end, generally, but new features can take a while until they're actually usable. So if something is actually usable when it first appears, it can be quite satisfying. :) Although I still focus on the deficiencies that remain. So yeah, I guess its not that satisfying after all.
I always love it when something fancy is discussed somewhere and you pop out with at least the bare metal in FTE just developed the other day!
Is there a piece of code that you never want to touch again?
Heh, many :) - Physics… Gah, I hate physics. It's the precision issues that really frustrate me. The logic itself isn't that bad, but unless you take care about cracks and crevices, the thing is unusable.
Was that Fallout mod engine your first Quake project or did you do other things beforehand?
Back in the Doom days, I'd actually made a few maps. When quake first came out, my brother found a map editor for it, and I had a go. He'd gotten a few mods off his mates, and I noticed one of them still had the code+compiler in it. He also got the engine sourcecode when that became available (we didn't really use the internet at the time, that's just for emails, right?)
At first all I could get to work was the quakeworld server (with my parents being programmers, getting msvc6 wasn't a problem, but that of course doesn't have masm). I was messing around with qc quite a lot, pretty much obsessed by the ability to create stuff with it, so when I finally got the nq sourcecode compiling (by disabling the asm), I started to focus on various QCey type things. All the time figuring out how to program without shooting myself in the foot too often. Mostly on my own (my bro had gone to uni by then)
I only vaugely remember that nq engine now… Used software rendering, obviously, as I was on a machine with no gpu, and no asm for speed or anything. I hacked up the renderer to draw the game view twice, giving sky rooms (sort of a lame way to do skyboxes) :) Interesting stuff like that. And yes, I'd been messing around with quakec in it. qclib dates all the way back to that nq engine.
I remember making a weapons mod in qc years back. One of my school friends designed one of the weapons, which is the one I most remember: A portable teleporter - fire it and it teleports everything infront of you. Really overpowered, unless the only monster in sight is a fiend. in which case you're probably dead. Overpowered because teleports = telefragging! One enemy, no telefrag. Room full of enemys = you just pwned everything with a single shot. GIBS!!! But yeah, a weapons mod. [Editor's note: Hi negke, yes, there would be one monster left, forever haunting the 100%.]
You just mentioned qclib, what's that?
At some point I wanted to make my own non-quake game (think Star Control 2 if you ever played that - also free to download+play now). I wanted some scripting language for it, and having gotten in to qc, I ported over the quakec vm from my nq engine into it. I had each type of spaceship in this game using its own progs.dat (this is where FTE_MULTIPROGS comes from) with each ship type having its own self contained logic within a larger vm instance. That's where qclib came from, that engine. I even integrated the qcc into the qclib so that the code could also be compiled on the fly.
Eventually I got to university, where I *FINALLY* had an internet connection. In a fit of madness, I joined some QW server late at night and ended up connected to someone's home computer in Alaska who was making a mod - a fallout clone. And I offered to start a QW engine tailored for his mod. And that was FTE (although it only actually got that name when I got sick of seeing my own initial in the filename like I was some egotistical maniac). The first thing I did was to port qclib back over. It was on someone's cvs server for a while, it actually took a while until it ended up on sourceforge. So yeah, FTE is quite old. or at least parts of it are.
What do you wish for in FTE's future? What are you currently working on?
Currently I'm talking to you… muppet…[editor's note: \o/]
The thing I was last hacking on was the downloads menu. FTE has had some menu_downloads menu for ages now. It's just been unknown and pretty much useless, one of those 'wouldn't it be nice if' things that never really got any polish or attention. I still doubt it'll receive enough attention, but hey, at least it should have a few interesting things in it like texture packs. I just need to figure out some extra details. This menu reworking is aimed at the AfterQuake package thing that you can find on this year's qexpo site.
What is that menu supposed/able to do?
Download+install generic stuff easily instead of having to download+extract stuff from 50+ different zips manually as well as deal with mutual incompatibilities eventually which is distinct from that QI thing, as those are 'temporary' gamedir-specific things. The QI plugin is part of AfterQuake, but its not otherwise advertised anywhere, its just on the menu!
I felt a bit bad when you (and Baker in Mark V) integrated QI stuff because it must be such a pain in the ass with that clunky format and imperfect design…
Baker's implementation just downloads+extracts zips, I don't think there's really that much that's QI specific, just assumed urls. Parsing xml is annoying but not too hard (I've written parsers for it before, including in my xmpp/jabber plugin). Trying to figure out what 'type=5' means when there's only two or 3 types actually used is a different matter… I did include an 'fte_hide' property for mods. if you want to hide mods from FTE's version of the QI by the way.
You have steered towards a fork! On the left is a question about unknown FTE features, on the right is a question about FTE documentation. Where do you go (for now…)?
Sometimes there's a reason for features to be undocumented. Undocumented features are ones that I'm free to fix if they're proven to be broken :P or worse - flawed. Plus I'm terrible at explaining stuff (or at least new concepts), so I HATE writing documentation… But to be fair, who does actually _like_ writing docs? Trying to write stuff so that it actually makes sense to people while not confusing them, AND still including each potential pitfall is a nightmare.
Since inventing how things could work is easier for me than programming it, I think I do. After the fact documenting, not so much (re: the short bursts of motivation)…
Documenting how something *does* work is fundamentally different from documenting how something *should* work. >:) When you're dealing with should, its all imagination and idealism. When its how it does, its all boring facts and admitting all the faults. The only imagination involved when describing how something does work, is used when imagining that the reader will have a clue what you're talking about without needing to include all sorts of other concepts, and how to include those concepts without bewildering them even more.
I'm not trying to be rude about anyone specific there by the way… I often find that I also just gloss over when trying to read documentation. The only bit of documentation that I've ever really enjoyed writing was my 'csqc for idiots' text and that's really only because I kept it from being too dry by insulting the reader as often as I could (and also because I didn't bother actually validating any of the code samples I put in there…)
I am currently browsing the specs dir and finally found out about ctrl-space, which will make me be much less annoyed about the FTE console :)
Yeah, FTE's console is both awesome and daunting. :) ctrl+space to force full completion, right click to copy text, emdedded links, all fun stuff. ^b to make stuff blink by the way. :) It's great for annoying people.
Would you say FTE is more like vim or emacs?
I've never used emacs. So I would be unlikely to compare it to either
FTE runs on Linux, Windows, MacOS, Android, in browsers, on 32 bit, 64 bit, ARM I guess, with Software rendering, OpenGL, Vulkan, DirectXs and what not. I am happy if things barely work on my own machine, how do you manage to support so many platforms?
It doesn't really have software rendering and I don't target Mac OS myself, any support there is thanks to SDL only. Regarding the various different ports… A C compiler compiles C. that makes multiple ports really just an extra few files to wrap stuff into something the engine can use. Once you've written that support, you don't really have to do anything else with it and often, more ports = more chances to find obscure bugs. On that subject most people use the windows port, but the linux port can be much more valuable for debugging thanks to valgrind. <3 valgrind
The additional rendering APIs take more work to first implement, but how easy they are to maintain depends on how well they're abstracted from the rest of the engine. FTE pretty much just uses trisoup for everything, so in the worst case all the different renderers just have to provide trisoup+basic q3 shaders, and they're sufficient for all but the most advanced stuff. FTE is written to be aware of various hardware limitations, like gl1.1 support meaning no rtlights, or gles2 supporting only glsl, so the renderers don't need to implement everything to still be viable. And besides, most people don't expect much more from them than is required to play a 20-year-old game. I do hope to hack at least the gl+vk renderers to cope with texture arrays and instancing at some point, but the d3d renderers which I'm too lazy to work with will still be able to use fallbacks anyway (hurrah for gles2 etc not doing texture arrays/instancing). The only real problem is that very few of these builds are actually tested. at all. :P
If someone wants to use FTE for their project, where could they best start discovering its feature set? I mean it supports vastly more modern and sane options than all the ancient modding tutorials for Quake around the web suggest…
It depends what they're trying to achieve at the time! For qc modding, fteextensions.qc is supposed to be a complete set of stuff. For mapping, that's often limited more by their choice of toolchain. For console hacking, start with the apropos command. There's a whole load of other things, of course, like particles, which is documented in fte's 'specs' directory. Sometimes you just have to use the source.
<font style="Comic Sans|<i>So, let the reader get to know the person behind the coder. Apart from coding, what do you enjoy doing in leisure time?</i></font>
I do play through mods occasionally, but it can be hard to properly get into them when you're half expecting the renderer to bug out, or the mod to use some bad arguments, etc. I guess that's why I keep faling back on the engine instead of polishing any mods of my own. Leisure time: sleeping, and playing computer games which I don't expect to have to fix to continue playing… and sleeping.
Lies! That's blackmail that is! Slander!
When can I finally play the whole Diablo 2 or maybe even Subculture on FTE?
No, its basically just the intro movies and even that requires two different plugins. Getting more to work would require a whole lot of gamecode
Damn you for answering that stupid question sincerly!
Spirit, July 2016