The Long Road
I’m not sure how long I’ve been working on Project Universe. It started as a web game, and then a few initial attempts in Unity, and then back to a web game, and then back to Unity. All in all, I think it’s been something like six or seven years, on and off, since I first decided I wanted to give this game development thing a go.
The idea of having a space trading sim game has been with me for years, then, and for years before that. Post TradeWars, the only games that filled that niche for me were Freelancer and later EVE Online to some extent. The space sim (of any kind) fell out of favor as more money could be had making games with bullets and one-liners, and it was during those times that I decided that if it was going to be, it would be up to me: I had reached the point where I felt I had gotten what I could out of playing games, so the next logical step was to try making games. That put Project Universe front and center.
Being one person with zero game development skills might as well have been one person trying to redirect a river by cupping the water in his hands and walking it to its new course. I had the language skills thanks to my day job, but the mentality behind game development is worlds away from the mentality needed for business application development. Aside from the basest of structures and logic, there’s not a lot of overlap. Learning a language is easy; learning how to use it in service of what you want to accomplish isn’t always so, especially when you also have to learn new paradigms. On top of that is the resurgence of the dreaded maths. I’m able to skirt math of all but the most basic kind on a daily basis, but with game development that’s not a luxury; in fact, it’s worse, as game development requires math plus. Plus geometry. Plus physics. I could also go on about the visual aspects like 3D modeling and UI design, but I think you probably understand where I’m coming from at this point. Game development isn’t as push-button as forum dwellers wish it was, and that’s coming from someone who considers himself fairly intelligent and who works as a career developer.
I’ve tried, and I’ve succeeded in many tasks I’ve set down for myself. I’ve created a rudimentary AI system which saw my NPCs patrolling and moving about. I’ve coded a bastardized pathing system using universally accepted concepts, but modified for my own needs. After years of starts and stops, I have something that kind of works in that you can fly around, dock at stations and leave again, and see life in the universe that goes on about its business regardless of whatever silliness you decide to get up to.
But the thing is, during all the years that I’ve tried various iterations of Project Universe, I have rarely found myself beyond this certain point in this process. I have been re-doing the same work I’ve done several times already for various reasons. Like other aspects, it’s a learning curve, trying to figure out interconnected systems while building and testing those systems and while also making provisions for systems that aren’t even built yet and which might exist only a vague notions. When something doesn’t work, it’s not always just a matter of “fixing it”. Sometimes it’s a cascading failure that shows how ill-advised several other decisions were. The only recourse in a situation like that is to excise that system and rebuild it, taking the chance that anything that it touched would survive the process without the need for additional reworking. But that’s a best case scenario that could probably be survived by those with years of experience in game development. For someone who’s trying to learn his way around the tools and the methods, it’s another molehill that impedes progress.
I’m at the point now where I’ve run into data representation issues again, and those issues are systemic enough that they’re causing major issues throughout what little I have done on the project. I could try and re-work the data structures, which might be doable, but there’s so little “game” around those structures that I can’t see how removing them for review wouldn’t cause the project to collapse to the point where repair would look suspiciously like starting over.
At this point, several years after the idea first started me down a particular road, I think I need to consider that making a space trading sim is not going to work out. It’s ambitious, which is not a word you want to apply to your first foray into a new way of thinking. On the other hand, I can’t bring myself to spend time working on something that I dislike, such as a platformer. I want what I want, and I realize that’s hubris talking: if I ever want to accomplish anything, there’s no reason not to start work on it immediately. Anything less would only delay the gratification, and as an intelligent developer, I should be able to pull it off. That’s what I have been telling myself, but now I think I need to tell myself that it’s not always an application of existing knowledge through perseverance. It’s time. It’s patience. It’s learning. You can’t build a car while driving that car at 90 miles per hour down the highway.
I’ve already learned a lot about development, working with Unity, and a lot of what goes into creating a game. A lot of it is still shrouded in mystery, though, even aspects which I’ve been working with (saving data being the most notable). There’s a lot that’s still left to learn, and everything left to master. I’m going to have to find a simpler project, or a simpler way to approach a more complex project. My goal now isn’t to build something I want, necessarily, but to build something to a point where I can say “yes, this is feature-complete”. It doesn’t have to be be stellar, or even good, really. My early development work was absolute ass now that I look back on it, but those projects were required to get better by learning what not to do as much as it was to learn what to do.