Friday, June 26, 2015

The perspective of a four-year-old: "Why?"

The word has been 'officially' out for about a week on the front page of the website at this point... although I am a blabbermouth who has mentioned it here and there prior to that. xD Reactions appear to either be positive or of the 'do not know what to think' kind. Which is as good as I might expect, because there is truly very little to say about Project Soulcage that can be easily quantified for PR purposes. Besides the timeless 'it's not a race, it is a marathon' and 'progress is slow, roadblocks are everywhere' thoughts that guide me in this undertaking, I've found it hard to do a post on it on this blog, even though I very much intended to do this on a weekly basis since I started. Alas.

Let's 'waste' this weeks blog post on an easy subject: Why?

"Why what?" is probably the question my rebelling four-year-old has to innocently offer in response, so let's get that out of the way right here and now.

"Why is it named Soulcage?" I needed a name that did not have 'tsos' in it so I wouldn't randomly wipe out our currently functional source code by habitual typing during the actual devving, and 'soulcage' seemed apt of the frustration and work that is ahead of me during this summer.

"Why bother?" There are a load of little and big reasons. While I kind of arbitrarily decided 'I am gonna do this ' at the start of June, the dream of a mystical rewrite has been around for far longer than that. In terms of documentation, the subject of 'TSoS Alpha 2.0' goes back at least three years when an immortal-only forum section was created for this purpose with some features we'd truly like to have if it happened.

"Why rewrite as opposed to fix and improve?" Most obviously, there's the fact that there have been a lot of cooks in our kitchen. I've blogged on that subject two times at this point, so I'm not going to go off on another rant (I hope!) but suffice it to say some bugs have been around for many years, even if they're invisible to mortals and merely result into spam for us immortals to sort through. I am currently the most active coder, and I simply do not know the internal logic of Smaug well enough to try and figure out meaning: the initially shoddy fixes I did to the forms code as of recent show very clearly that I lack an understanding of the bigger picture. My belief is that this understanding is more quickly gained by rewriting than by studying it, which is probably the argument that worked as a tipping point in favor of my starting this ordeal.

"Why doesn't Vandread explain things to you?" Nobody will ask me this, but I'm going to write it down anyway. He explains things a lot, but he has a job during the times I am around, and even then his ability to remember all of it is not perfect. It comes down to saying 'Oh, I saw Sally with your pen', and then you'll just give up on it because Sally is the biggest hoarder you've ever seen. :) Besides that, Vandread has on more than one occasion heard me rant about the codebase with thoughts he himself remembers having whilst trying to figure out the answers; all those things combined show that there is very little 'knowledge' of our codebase amongst current staffers. Sure, some of us know the commands really well, but the knowledge to change or improve is non-existent for as far practical terms goes.

"Why not?" Exactly. Why not?! My thoughts precisely. There are so many things to be gained from this project, most of which have been given up on and delegated to a 'it would be nice to have some day, but it won't ever happen'. Those ideas and dreams are at the core of Project Soulcage: things that a modern mud codebase ought to have to inspire joy not only amongst our players, but amongst our staff as well. There is also the fact that this codebase is based on an incomplete understanding of the WoT universe: the channeling system in particular is messy and incomplete.

The very first phase of Project Soulcage has been underway for nearly a month at this point. It has been extremely slow at places: at the time of writing this I have 'consumed' about one weeks worth of not touching it in order to pace myself after running face-first into the implementation of one issue that was very well on its way of souring me on this project: I ended up discarding 4 days of work after I went down the 'wrong' path. And despite my attempts to put Soulcage off my mind for a few days, my mind is still whirring with the thoughts and plans on how to tackle future phases in the most responsible and dependable manner!

What exactly is involved in this first phase and what other phases there are will be the subject of a future blog post. :)


  1. I am dealing with the consequences of a rewrite like this right now. This is almost always a terrible idea unless the codebase being replaced is an absolute steaming pile of crap.

    I'll just go on ahead and mention that it is highly unlikely that you will ever finish this rewrite, and it sounds like you've got some questionable rationale to do it. "I don't want to learn Smaug in greater detail", basically.

    I don't play your game, but I'd caution against doing this, especially given the flimsy reasons posted above. This very well could kill your game if you don't handle it perfectly.

  2. You make some good points, and I definitely considered whether or not starting from scratch would be worth it before we started. There is a chance the project may end up failing, but what is the alternative? Carry on as we have been? History shows us that won't get us anywhere.

    We have been around for twenty years and have had a bunch of very different visionaries design the game as they went, combined with what amounts to zero documentation. These twenty years have seen many slumps where we hibernated for a while until resurrecting with a vengeance, only to repeat history again.

    Today, we have well-meaning people who cannot make a dent into the things that need doing: the bug hunts are endless in a way that those alone cause coder burnout. Then there's the fact that in those 20 years, the series of books this game was based on was completed, and some of our implementations are lacking with regards to how the books revealed things to work.

    At this point, I may have implemented source control, but at its core, we're still dealing with a monkey-patched Smaug 1.4 codebase. On some occasions a few modern snippets were applied, but even those don't fix half the stuff that's 'wrong'. No matter how many fixes we try to pile on, they cannot hold a candle to the most recent SmaugFUSS releases.

    Also, I wish to point out that I am VERY willing to learn Smaug in greater detail. That is in fact the majority of the reason I am doing this project in the first place: I need to learn the assumptions Smaug operates under whilst I also need to learn how well our modifications actually hold to those assumptions. The fact I do not know these rules is one of the primary reasons fixing some bugs has been near impossible for me in our old codebase!

    In the long term, the goal of this project is to actually leave behind a game that can actually be maintained more easily. It is as much of a rewrite as it is a documentation effort. Sure, I'm going to be implementing some new features along the way as well, but those are going to be the polish that will make this entire project worth it for those who actually play the game and aren't stuck maintaining it. )

    Thus far, I consider project Soulcage to be going well. Slow but steady wins the race. Hopefully, I'll end up proving you wrong. :)