You are self-taught in a Basic, C++ and C# programming languages. How much time did it take you to learn programming and what was the most difficult challenge when you were learning?
I started learning programming when I was 11 or 12 years old, and I was doing it on and off ’till I got a job as a programmer. The most difficult thing for me was to get disciplined in researching new stuff, whether it was some coding technique or some API or something else, because I’m always so focused on creating new stuff with what I already know, which is often a good approach, but it depends on how learned in your craft already. Getting employed as a programmer helped me overcome this because I HAD to learn new stuff and I was getting paid learning time, basically.
How did you get your first job as a programmer?
I went to a jobs fair and gave my CV to bunch of companies. Got called back by one of them and did a little demonstration of my programming ability for them and they were satisfied.
How did you go from a self taught programmer to the person who writes software for banks?
Through necessity, I guess. That just happens to be the job that I landed. The code that I wrote, though, almost exclusively dealt with the framework on which the actual banking software was built, so luckily I didn’t have to learn anything about banking.
You said that you were fed up with working for banks and started making the game as a side project because you wanted to do something important. Was this decision gradual or more like a revelation?
Just a little correction – I never worked at an actual bank, only at a company that made software for banks.
I always wanted to make an RPG, so I started working on an engine for it. In the beginning I didn’t think I would be able to make money from it, I just wanted to work on something worthwhile, as I was pretty disillusioned by my day job.
The job itself wasn’t bad at all. It was well paid and comfortable and I was well treated there, but I wasn’t really doing anything meaningful there and a lot of the code that I wrote would ultimately go to waste as project was managed very poorly.
How much time have you been working on a game as a side project before you decided to quit the job at the bank? How sure were you are of your decision back then?
I started working on the engine in 2008. I think and I quit my job in April of 2012. By that time I was getting very close to releasing an alpha version of the game on now defunct Desura. I was pretty tired out from basically working two jobs now for several years and I wanted to focus all my time on this release.
I wasn’t sure of whether leaving my day job would be the right decision and I was very nervous. I remember thinking about it for days. If it was some crap job, it would have been easy, but I had a promising career and I think I could have gone far in this company, or at least in that line of work if I wanted it.
But I figured I had to give game development a good solid try then while I was still young, otherwise I would be wondering all my life whether I could have made it. And, again, I was still pretty young back then so if I failed, I would have had plenty of time to get my career back on track.
Do you think there is a time window when a person is still young after which it’s difficult to try hands at game development? Many artists get worse as they age.
Maybe there’s something connected to the person’s age itself. There probably is. But I was more referring to the fact that when you’re young you can take more chances since you have more time to recover from failures and you usually don’t have other people depending on you financially.
What level of programming skills a person should have to be able to program a turn based RPG? Let’s say we are using an existing game engine like Unreal or Unity.
I’m not sure. I never worked in either of those. Typically, though, RPGs are complicated to make because they have a large number of interacting systems, more so than any other genre. If you’re a novice you should go for something easier – like a platformer.
You have made Underrail engine entirely by yourself. What was the most time consuming thing in creating your own engine and what has it offered that existing engines couldn’t?
I think that rendering engine took the most time and is the most complicated part of the engine. The basics of rendering in isometric view are not that hard, but when you start doing fancy stuff you run into all kinds of incorrect overlapping from various special cases that you have to handle.
Again, I don’t know how my engine compares to others because I never used any other. I didn’t make it because I found existing ones deficient. I made it because I wanted to make one. One important upside to that is that you have full control of the source code and can adapt any part of it to your need.
Was it critical for you to be in a full control of the engine source code to make a game you wanted to make or did you create the engine more as an investment in the future, so when developing future games you would have a tool you know/can modify thoroughly and thus be able to save development time? Something similar to the case of Bethesda’s Gamebryo. Or you just though the idea of making game engine was exciting in itself?
I think it was probably a bit of from the column A and column B, but mostly from column C – that is, I just wanted to do it because it seemed interesting, and it was.
What is easier? Programming turn based or real time combat system? Let’s say that that a level of system design complexity in both cases is equal.
In a way real time combat is easier to design and implement because you don’t have to figure out how to translate what are in reality simultaneous actions into turn based execution without leaving them too open to exploitation. You know, like taking pot shots at stationary enemies like turrets and then running around a corner. It’s not that this is impossible to do, it’s just something that you don’t have to give that much thought if you’re going for real-time combat. Also turn-based RPGs are typically only turn-based during combat, so you still have to have the real-time mode implemented to an extent.
On the other hand, you have to optimize your code more in real-time games to avoid slowdowns and such, I guess, which might even limit you in some ways.
These are just off the top of my head. I guess there are problems regardless of which approach you take.
What you find more difficult? Designing game systems or programming/implementing them?
Well I do a lot of designing during the implementation. I don’t keep any design docs. When I’ve detailed out an idea in my head to a point when I can no longer keep track of the details, that’s usually when I start implementing it and that’s when the hard work begins. Thinking about some cool feature in abstract terms of looking at it from the end-user perspective and thinking “oh, that would be cool” is easy. Anyone can do that.
How did you program combat AI?
I wanted to keep it simple as there were so many other features that I had to work on as well. Then, when mid-development I switched from real-time to turn-based combat, I had to implement a turn-based AI as well so now every creature in the game has two AIs and things can get rather messy. It’s one aspect of game development that I look forward on improving a lot in the future projects.
Why most games have a weak combat AI? Not only that, but NPC AI is also declining in recent years. They don’t make town people like in Gothic anymore.
You might as well asked me why things suck nowadays 🙂 Because everything is getting to be more of a spectacle and less of a “work of art” if you will (by that I mean and proud work of craftsmanship).
What would you recommend to a non programmer who wants to make his own turn based cRPG? What languages and technologies should that person learn?
Forget about it. Learn a programming language by doing something easier. Like a tetris clone or arcanoid. C++ is the industry standard, I think, and it’s probably your best bet. I haven’t look into what APIs are available for a long time, but I would avoid using existing engines for simple 2D projects.
Was there any feature in the Underrail that was cut/not implemented because it was too time consuming to properly program it?
A couple, yes, and a lot of others were simplified, such as health system, which I intended to be much more nuanced than it ended up being. When it comes to cut features – cybernetic implants/grafts, for example.
What will be your next project after you finish making Underrail expansion?
Too early to say. We will be making at least some more content for Underrail, but I’m unsure in which format. After that, we’re likely to move onto a shiny new project.
You said you like programming. Why do you like it?
I like solving programming problems and I’m good (enough) at it. I like making useful software in general, but I especially like making games, because it feels like bringing something new to life, and almost out of nothing. It’s alive in a sense that people can interact with it in a fun way and have that sense of wonder while exploring it because they don’t know where the limits of your creation are.