Beginning my Descent
After several months of development, Influence is headed towards the trash heap, I think. It was a cool idea that I wanted to take a swing at getting out, but there comes a point at which you realize that the amount of effort you are putting into something just isn’t worth the results you are getting out of it. For me, as a hobby developer, there are really only two reasons I can think of to program at home at all. One is because I enjoy it, the second is because completed projects look really good in a portfolio :).
The truth is, if it weren’t for the latter benefit, I would have stopped Influence a long time ago. I don’t really like making 3D games that much. If it were in a corporate environment, it would be great, as I’d get to code at work and then draw when I got home. As it is currently, though, if I’m making games in 3D the majority of my off time at home is going to be dedicated to coding, with some 3D modeling. My sketchbook and tablet suffer terribly. With 2D games, though, I get to do plenty of painting and drawing without taking any time away from development, as I need to be doing that anyways just to further the project. It’s a clean, easy, stress-free fusion of my passions.
So why continue if I wasn’t enjoying it? Because 3 months of development just thrown out the window is three months of development that I can’t present to a company and wow them with. The problem is, I realize more and more as I go on that even if I were to finish this project, I wouldn’t be able to use it for that purpose either. The code is, quite frankly, a mess. Not in the sense that it isn’t clean, good heavens no, I think it’s fairly robust and easy to read too. The problem is that it isn’t right. The entire project is coded in C++, and I’m using a custom XML parser to read in level data from files. It’s incredibly difficult to maintain as a lone developer. There is no embedded scripting language either, so every little custom thing needs to be either hard-coded into the C++ code or else the XML parser needs to accommodate some generic form of whatever functionality I want to script in. Like I said, it’s a mess. Any development studio that saw that would probably bolt the other way.
So, in the trash it goes. But it’s not a complete washout, as the importance of a lot of the stuff I mentioned several months ago regarding scripting and good editing tools has been seriously solidified in my mind now. I’m going back to the enhanced version of Splashmap. Only it’s not going to be made in Java, but D, Python, and Lua.
For those of you that haven’t been exposed to it yet, D is a simply fantastic little systems programming language. It adopts a more Java/C# style syntax (and a garbage collector!), but compiles directly to machine code and even allows for inline assembler. It’s really tight and easy to code in, and it’s used by a lot of big-time indie developers. Kenta Cho makes almost all of his games with it, for example.
The only real problem with D is, the environment support for it is still pretty flaky. With that in mind, I’ve joined the Descent project, which is really just three guys at this point (including me) building an Eclipse plug-in for D. So far it’s coming along really well, with most of the big JDT editor features largely completed. There is semantic analysis of all source, syntax highlighting, tooltip documentation, go-to declaration functionality, a simple insane formatter, and a whole lot more. The big thing it lacks right now is a builder, and that is where I’m stepping up. With a solid builder and what we have so far, I really think Descent will fill a huge gap in the toolchain for D, and go a long way towards helping out wider adoption.
Once that is done (actually, while that is being done), the Splashengine will be be developed in earnest. I’ll be developing the engine backend, the player executable and most likely the editor in D. Then, as I laid out before, the games themselves will actually be created in the editor with most of the logic being coded in Lua. You will, of course, be able to define further extension modules for Lua with whatever language you like if you need to replace some scripts that would otherwise be computationally prohibitive.
And then I’ll probably open-source it :).
So that’s it. A little more effort up front for Descent and building an engine and tool and the actual game creation should be significantly more enjoyable, and much more sensible.