Is there anything in common between the Computer-Aided Design and game development industries? Can we, as the CAD devs, learn from the gamedev community?
I have never been quite interested in the gaming industry per se. However, CAD and gaming seem to share a common backbone, which is apparently computer graphics and, to some extent, simulation. Another remarkable aspect of games is the efficiency in using computational power. To have a high FPS, you cannot afford to write inefficient code. Not surprisingly, gamedev is full of best practices, tricks, and secrets on how to make the best out of your CPU and GPU hardware. Definitely, there should be something we can take out of this.
At the beginning of summer 2020, I came across a talk given by Chris Taylor in Moscow about game design secrets. Chris Taylor is a legendary game designer. I played his Total Annihilation (TA) back in the nineties, and that gaming experience was somewhat memorable. I used to skip school for literally weeks to gain more time with my favorite game. It shortly outcompeted Dune 2 and even both Warcrafts on my machine. I handed the two CDs coming with the game to my classmates, and they soon became as addicted as I was. Everything was remarkable about this game: the articulation of units, non-deterministic fighting, explosions, wreckage, fire, and music. And, surprisingly enough, all these ingredients are still the thing today.
I have been practicing a lot of TA these days.
TA is all about simulation. Like Chris mentioned once, it was literally a "baseball game" with robots, fire, explosions, and massive armies trying hard to eliminate each other. TA is a 3D game, and that was not given for granted back in 1997. How was it possible to design such gameplay that remains beloved among RTS folks? The game is still played, and these days I have had wonderful hours in the single-player skirmish against three AI Core factions (yep, I am the Arm guy). Although the game is so familiar to me, I even managed to defeat a couple of fights because of the wrong strategic choices. The game requires thinking. To win, you sometimes have to spread your base over the entire map to get the incoming flow of resources.
It was a surprise to discover that my favorite game was driven and developed mostly by one guy. The personality behind titles is always an inspiring thing to find out. It's thrilling to know that even big projects are sometimes done by small groups of passionate people. So here we are, asking Chris questions and learning from this industry veteran's experience. Thanks to Chris for his permission to publish this small interview.
Me: Do you think it's still a good idea in the present days to build up your own 3D visualization engine, like something based on pure OpenGL? Should one learn OpenGL or better start from Vulkan, for example?
Chris: I have always written my own basic graphics libraries, and for my project, I am rendering in WebGL 1.0, which is taken from OpenGL ES 2.0, but am now considering moving to WebGL 2.0, which is taken from OpenGL ES 3.0. I think learning OpenGL has some advantages, as there are a lot of systems that use it, but I'm not 100% sure about that, and I don't know much at all about Vulkan or WebGPU, but I should take some time to learn it. I think it kinda depends on what sort of things you want to render. For example, if you are doing a simple flat shaded 3D model, then it really wouldn't matter much, because you could convert the renderer to use almost anything in a short period of time. However, if you are doing advanced multi-pass rendering, then it might make sense to do some research. It also matters how many different hardware platforms you intend to deliver your game on, because then you need to make sure the API for the chosen graphics are supported on all the different hardware platforms. This is why I think WebGL is such a good choice with shaders. It's pretty darn fast!
Me: You mentioned the "Game Design Document" in the interview for FAF. Is that a document to convince a publisher, or is it something more profound and essential? I mean, do you really need such a document to start a new game project? Will it be used throughout the development process? Or is it more like to write once, make a deal, and then throw the text away?
Chris: The game design document or GDD, is definitely important if you want to sign a deal with a publisher, but it's also very important for the designers own use. It's a place to write down all of your ideas and have other members of your indie team (or a larger team) read about it and give you some feedback. I definitely think there's value there, and if you have never created one, you should try it at least once even if it's very brief... you'll learn a lot about your own ideas and approaches by doing it. Maybe 20 pages?
Me: Do you have any opinion on NURBS technology per se and its possible applications to gaming? Or is gaming always about low polygonal modeling? I'm thinking of ways to bring game-like experiences to a CAD modeling package. Like to design Peewee as a CAD assembly with all these precise surfaces underneath ;)
Chris: I know what NURBS are and where they are used, but I don't have much of an opinion on this. I guess I'd need to understand what you are trying to do with them.
A bit lossy mesh of Peewee (this thing was created by Thingiverse user fnoigy, and is licensed under pd0).
Me: What do you think about the open-source Spring framework that is somehow rooted in TA? Are these guys doing the right things?
Chris: I think the work this team has done is awesome, but I haven't ever tried to use it for anything and have no experience with the technical nature of it.
Me: Any advice for a guy who wants to become an indie developer? How to survive taking on a huge pet project while carrying on family, kids, and regular job. How do you stay motivated and balance your time?
Chris: I think you might already know the answer to this and want to hear it from me. This is a hard road, especially with the family and kids. The reason I say this is because when I did TA as a full time job, I had no family and no kids and I don't know how I would have done it if I had them. I think the family is perhaps too important to sacrifice this time away from them... they need you, and they are the biggest priority in your life. I think the best you can do is to put aside a few hours a night and work on your project, but nothing beyond that until the kids are teenagers and don't want to hang out with Dad anymore :)
Me: How is it, in general, to stay indie? Do customers treat you seriously? I understand that "Chris Taylor" is already a brand, but in general, I have a feeling that freelancers are kind of losers who could not join "dream teams" in successful companies. They have a flavor of autistic, irresponsible, stinky guys who are not command players. Is that a common perception, e.g., in the US? Do you need to develop like a "personal brand" before you go independent? Or is this bullshit?
Chris: I can only partly answer this question, as I have never finished a game as an indie developer. Only when I am done can I call myself that. I think MOST indie developers have no personal brand before they get into the business, and I don't think there is any issue whatsoever of being considered less than a more commercially established developer with a large team. In fact, indie developers are more respected in my view because of how much harder the job is. Indie developers are awesome!!
Me: How many years can a programmer stay productive? I've heard that one should not do coding more than 3-4 hours a day. Otherwise, you get burned out quickly. That is especially important for a freelance guy who lives from productive working and cannot expect to get to a managing position like in a company. Is it viable to stay indie for many years, or would one better try to grow up into a company as fast as possible?
Chris: I think you can code 12 hours a day for 40 years and still have tons of energy. I don't recommend this, and not because of your mind, but because of your body. Sitting all day long, even standing, is not good for you... you should go outside, move around, get fresh air and do other activities to lead a healthy and balanced life. I think if I were to pick a number of hours, I think 6-8 is plenty. While you are outside or doing something else, you can get new ideas, and be refreshed and inspired! This actually makes you more productive when you do get back in front of the computer. And I think you can code till you are 70-80 years old if you always practice your work-life balance and stay healthy in both the mind and the body.
Hopefully, we could get more Chris Taylor in the future. I'd love to go a bit more technical on the gaming, whatsoever, even though it's probably not entirely in line with our discourse here, which is CAD after all. One of the key conceptions I grabbed from gaming for myself was not even related to games. My personal discovery is rather the notion of being "indie." An independent developer does not equal a freelancer. Here’s the thing. An indie man is not a mercenary looking for yet another deal just to make a living. It's a hell of fun to grow up your own "title", bring it to market, and see what's going to happen then.
What I can say for sure is that gaming definitely has something to do with our niche. Let it be yet another harmonic in the pulse of our blog here. And those folks interested in what Chris is doing now should definitely check out Kanoogi.