Tiamat Open Source RPG Framework


It's hard to acknowledge defeat, to say "I tried but couldn't do it". I've been putting off just such an admission for too long now. It's time to quit dodging the inevitable - my ambitious Tiamat project is dead. In the back of my mind I've attempted to deny it but no longer. I still believe I could complete it, maybe that's delusional but I do. It really comes down to not having the desire anymore. The general idea of Tiamat is still intriguing, but this implementation of the vision is over.

How did this happen? How could a project I was so excited about, so committed to completing, become something I dreaded to even think about? It would be simple enough for me to write "dead" across the project page and be done with it. Instead I'd like to offer a cautionary tale to those who may be considering their own crusading solo project.

The plan

On the Tiamat page I did a pretty thorough job recording my motivation so I'll pass on the specifics here. Let's just say, I've wanted to develop an RPG system for a long time. With graduate school complete I finally had the mental energy to try it in mid-2004. I must be one of those sickos who can't stand not being busy. Normal people would give their minds a break but I had to find some new challenges to tackle.

I suppose I could focus this excess energy on my actual job. Heck, I could probably weasel my way up to an impressive-sounding title in a few years if did so. I don't hate my job but at the same time it doesn't give me the sense of satisfaction I get from independent work. The feeling of working on something I truly enjoy, even if not profitable, is almost serene. Working for "the man" is great for the pocketbook but always leaves me wanting more.

Of course there's family competing for my time. I devote more energy (physical and emotional) to parenting than to any of my half-baked ideas. My "leisure project" time has to be wedged in during quiet moments.

After parenting, work, sleep, and hygiene I have about 10 hours a week to spare. It might not sound like a lot but I make the most of it. For starters, I don't watch a lot of TV. It's amazing how much you can accomplish when you stop shutting your brain off for 2-4 hours a night. I figured this would be enough time to slowly work on Tiamat. It wouldn't get done quickly, but steady progress seemed to be the route to go.

For the development platform I chose Java. I'd been working on a .NET project for a couple of years and thought it would be a way to keep my Java skills honed. Plus I was serious about porting it to J2ME (Java Mobile Edition) which, at the time, was more mature than the Windows Mobile CE SDK. I also just kinda liked the concept of platform independence.

Oh, and to top it off I had a great idea for an RPG. I don't mean one of these "wouldn't it be cool if" ideas but one with an actual design, plot, and characters behind it.

The slow death

Dr. Joseph Dolan: You know, it's a shame about Ed.
Fletch: Oh, it was. Yeah, it was really a shame. To go so suddenly like that.
Dr. Joseph Dolan: He was dying for years.
Fletch: Sure, but... the end was very... very sudden.
Dr. Joseph Dolan: He was in intensive care for eight weeks.
Fletch: Yeah, but I mean the very end, when he actually died. That was extremely sudden.
Fletch, 1985

The last official Tiamat release was on 8/30/2006, the last local build on 12/20/2006. There's more to the story that just dates of course..

If I ever went to a doctor I'm sure I'd be diagnosed with attention deficit disorder, I prefer to call it "restless brain syndrome". Right now on my hard drive I have 5-6 small projects or articles in various stages of completion. I'll work on one for 1-2 hours one day and a different one the next day and so on. Professionally, this has been an advantage as I've been able to juggle numerous tasks efficiently. For something like Tiamat, it had some detrimental effects.

Each component of Tiamat needed about 10 hours (1 week of free time) to complete. At first it was no problem, I'd create about one a week. After a while my brain kicked-in and starting saying things like "You know we should do? We should write an article about the last game made for various systems." and "I bet it would be fun to redesign that Phantasy Star III site!" Soon the 10 hours dedicated to Tiamat became 2, a new feature a month. This loss of momentum was difficult to recover from.

The other thing that made me lose interest was, well, lack of interest. In the time working on it I had exactly one person express any interest in the project. That either meant it was crap or I should have done a better job promoting it or both. I can easily say I prefer the volumes of hate mail I receive in response to snappy comments than total silence. My web stats don't lie, Tiamat gets less than 10% the traffic of some video game articles I thought were barely so-so when I posted them. I started to second guess whether it was worth the effort.

I also began to second guess the choice of platform. It became increasingly apparent that Java was a difficult platform for game development. The sprite animations are a prime example. I put hours and hours into making them look smooth with practically no success. I resorted to trying code from examples and books with equally poor results. Keep in mind, I have led development for some large J2EE projects - thousands of users, high availability and so on. I grew increasing dissatisfied and started thinking that Java just wasn't the right technology to build this in.

Speaking of large J2EE projects, I was lead developer for one 2007. After working on Java code for 50 hours a week it wasn't exactly something I wanted to do in my free time.

Camineet demo
The malaise led to a change in direction. Instead of trying to create a "Phantasy Star like" overworld I shifted to creating what I generically called an "adventure game". By this, I meant a game with an interface like Shadowgate, or the dialogs in Spellcaster, or even Snatcher. I figured static images took a lot less work than animation. I created a demo that I thought was alright (although the number of downloads is pretty shabby) and started working on an "adventure studio". Instead of an RPG library I was now making a game development tool.

If I just started this adventure studio idea from scratch maybe I wouldn't be writing this now. I tried to incorporate the existing code and designs into something they weren't intended for. A decade of professional software development should have tuned my senses to detect this bad idea. I'd been on far too many "just make it work with the old stuff" projects, how did I let Tiamat become that? Soon it felt more like a chore than something I enjoyed, the death spiral began.

Of course every good "adventure studio" needs a demo. I started working on a new one and hit a major roadblock. I can write code well enough, but can't draw or compose music to save my life. I tried to solicit some (unpaid) artists to help with the demo and got the usual "Sounds awesome! I'd love to help!" reply followed by nothing. Without a demo that looked respectable I lost all desire to continue. I kept the self-deception going that some day I'd start on it all again.

The final nail in the coffin came when I started working on Aridia in late 2007.

NET vs. Java debate settled (for me at least)

It was simple enough, I got an email one day to the effect of "hey, a few of us on the GameFAQs Phantasy Star III message board have been working on hacking the ROM and wanted to know if you knew how to do [x]?" I've written quite a bit about hacking Phantasy Star III save states but never went after the ROM itself. I joined the discussion and found they'd already uncovered how to hack many aspects of the game. I volunteered "I could write a simple ROM editor application that did all this in a few days". There was some interest so I started cranking something out in C#. I hadn't written any C# code in a little while and thought it would be a nice change of pace.

Character editing
A miraculous thing happened, I started enjoying programming again. I expected Aridia to be a one-time deal. Something I'd crank out to see if I could and then abandon it. Instead it became something I actually looked forward to working on. Heck, I put off writing this a few weeks because I was eager to add a new feature.

Why was Aridia a blast and Tiamat stagnant? Simple, C# is just plain more fun to develop in. All the things that were a pain to do in Java (and I'm looking directly at you Swing) are a cinch in C#. Constructing a UI in Java is an arduous task, something I hope to never do again. Everything that takes hours in Java takes seconds in C# or VB.

Let's not forgot this little treat, every time there's a new Java release my UIs broke. Well, they'd function but suddenly were misaligned or resized or plain crappy-looking. Meanwhile, the VB6 programs I wrote in 1998 look perfect on XP and Vista.

The Java and .NET toolsets are simply not comparable. I have spent equal time in Eclipse and Visual Studio so don't accuse me of being misinformed. I have no reservation saying that Visual Studio does everything, every single thing, better and faster than Eclipse. I think Eclipse is a great IDE, and an admirable project, but it has a lot of catching-up to do.

Java is not without its virtues. I still manage some WebSphere (J2EE) development in real life and the platform is working out fine. As a tool for recreational development, I give it a D-. I'm certain there are some ivory tower types who wish Microsoft would abandon console applications and Windows Forms. They fail to recognize that rapid application development has a place in the software ecosystem. The code in Aridia isn't something I'd write at the office, but it's simply perfect for what it's intended to do. It's hard to imagine working on another side project in anything other than Visual Studio now.

What will become of the work-in-progress?

I'll leave the Tiamat page up for a while, just hitting the "delete" key on it all is still too depressing. Besides, there are a few worthwhile bits 'n pieces in it. Some classes will be ripped-out and posted on my code library page. It desperately needs new content anyway. The more complex parts could end up on my Java programming/tutorials section which also desperately needs something new. I hoped that Tiamat would one day "give birth" to many other projects and I suppose it still can, albeit not how I planned.

There's a chance, a very small one, that I'll port the Adventure Studio work to C#. It remains an idea I'm interested in but is now behind a few other things I'd like to work on. The thought of creating a "Shadowgate/Deja Vu" player and studio definitely inspires me. If anyone is interested in collaborating...

There's an even smaller chance I'll scan SourceForge for a similar project and contribute to it. I won't totally rule it out but it's at best unlikely.

In terms of my nerdy RPG idea.. it's still on paper, err on my hard drive. If I decide to pursue it again I'll just develop it in RPGMaker.. after I find an artist and musician interested in the project. I wouldn't entertain trying something like this without a small team that was as equally committed. Needless to say I'm not looking at the moment. After wrapping-up a few smaller projects perhaps, but for now it's an enterprise I need to let rest a while longer.

So farewell Tiamat, I've learned more from your failure than from any success I've enjoyed.