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. :)

Wednesday, June 24, 2015

The Wheel is waiting for your thread.

So here we are, working on a resurrection of the MUD that most of us have put significant portions of our lives into. This is a labor of love for those of us who do it, not exactly a job even though it may feel like it at times, but it is something that we come back to because of our memories from our time here. We look back on to those memories and smile, the great times that we have had coming back, the comraderie of being in a guild and meeting new people, the thrill of combat against both NPCs and other players, the glory of being the best at the moment of your particular talent or trade, the friendly competition between fellow players, and most of all the escape from reality into a world of your imagination. As the staff here at the Sea of Storms we also return so that we can help another generation of players and their characters through these same experiences and hope that they will find as much enjoyment from them as we have.

We have a multitude of things going on right now, mostly behind the scenes. Our lead coder, Kimadi is currently working hard on Project Soulcage. This will give our mud the stability and features that we need to continue evolving into the future. Once this is completed we will begin working on several new features and updating a few things from our current systems. These are not easy things to accomplish and will take a couple of months before you as a player see any difference.

Fortunately though, you do not need to wait for any of this. These are things that we have in store for the future, but there is plenty for you to day today. We are on the precipice of all the excitement that Robert Jordan's world can entertain.

The real question now is: what is your role going to be?

You are the player. You are the reason why we are here. You are the reason that we work so hard fixing our code. You are the reason that we run these events and put together plot lines and story arcs. You are the lifeblood of our MUD, the future of our universe that people will speak of doing amazing things and the role models that people strive to become.

We are currently putting together two story arcs that we will run together, one building off of the other. These arcs will be all inclusive. Everyone will have the ability to participate in one form or another. It does not matter how high or low you are in skill in any particular thing. All you have to do is show up and get involved. You will be included no matter your strength, skills, anything. Everyone is important and we want everyone to get involved. This is your chance to get involved in the history of our MUD, where down the line you will be able to tell people that you were there when amazing things happened.

We will be continuing this with another overarching storyline after this particular thread has reached its end and it is time to weave another into the fabric that makes up the Sea of Storms. But, this is not to say that your experience here has to be limited to staff ran events or our plot lines. This is your world. Go out there and interact with others. Have aspirations and go after them. Go on a journey with your character and see how it turns out. Get involved with other people. Create your own story lines. This is your story, as the staff we are here to help you and all the other players enjoy your time here and create that story.

So, don't be afraid to reach for something, to have aspirations, to build your own story line. That is what you are here for. Go for it, it may work out just as you have envisioned or it may not, but the fun is in the journey, not the destination.

Its time for your thread to join the rest of those in the Pattern.

Tuesday, June 9, 2015

The Chrysalis of Storms

It has been a long time since I posted here. For that matter, it has also been a while since this blog saw some activity, although that isn't that long in comparison.

As of late, the Sea of Storms has been going through yet another revival. It is as natural to us as breathing: be active for a while, work hard on the game, and then real life takes over and things slowly slump away again. My own return to this place was a happy accident combined with a few other immortals popping their heads in, and as such another period of arduous activity has been born. Truly, we are like day and night, a rhythm akin to the Wheel that keeps turning...

Okay, cheesey jokes aside. What's our plans? I could not tell you, dear readers, but I can tell you what _my_ plans are. At its core, I will do what I can to improve this game. Simple as pie...

In practice, this means I will try to address the problems I come across. As a coder, the majority of those things will involve coding, although I am not blind to our other issues. But I cannot solve everything alone, and I leave those things to those who are more qualified to deal with them, just like how I am amongst those more qualified to deal with The Code.

As for how I have been 'improving' the game... I want to draw your attention to the recently implemented 'whatsnew' command and that which was involved in its creation. When executed, it gives a small list of recently implemented changes to the codebase: that is, the majority of stuff that makes up skills, weaves, movement, crashes and so forth.

But it was not a simple command to implement. The Sea of Storms is an old game - it dates back to the 90s! - and it shows in all aspects of the game. Dozens of file backups, dozens of people who touched the code with varying degrees of code quality applied, many bugs and memory leaks.. all things considered, I often feel it is a miracle this game keeps running. (OK, it has been crashing way too often, but the majority of those were actually due to the machine cutting out! ... and hopefully we'll be able to get to the bottom of that sooner than later, too.)

Worse, the other internal ports we have available for the purposes of testing changes and building new areas ran on completely _different_ code than the public version everyone was playing on. They were created once upon a time, but not kept in sync, so nobody knew what bugs were hiding in those. All things combined, this means we were dealing with complete chaos. For example, only the public game would successfully start after one of those unexpected server reboots. This left our builders incapable of doing any work whatsoever.

Thus, what was done first was to find out the latest state of the code. This was placed into source control; I opted for 'git' because it is easy to modify to suit our needs. After that, the development version of the game was made to always mirror the latest modifications. This in turn required I re-work the antiquated Makefile to build the game, as well as consolidate our startup script to handle some issues it did not properly handle beforehand.

Okay, so I technobabbled you into oblivion at this point. Sorry! Generally speaking, all of this was intended to streamline development and make it easier for me, Vandread and other (future) coders to add to the code, test-deploy it to the server _and_ be able to look back in history to know who made which changes for whatever reason. In essence, this automates a lot of house-keeping that nobody ever did to begin with!

After all this was done and found to be working out as well as I was hoping for it to be, I moved our other ports of the game over to a similar structure as well, although these are (obviously) not subject to automatic updates. Rather, these will be manually triggered when we deem them ready. Tests are important, and you seriously do not want to suffer 3+ reboots in an hour because Kimadi is hunting down some obscure bug. :-)

At this point in time, everything has been stabilized, and there is finally a more-or-less consistent environment for us coders to work in. A lot of work with very little to show for it... other than a certain 'whatsnew' command. This command goes straight to the source control that I have set up and displays the summaries for everone to see.

Besides the fact that we now don't need the inconsistently maintained 'help changes' document any longer, it is my hope it will also serve as a gateway of transparency to the players that things are happening behind the scenes, even if it may take a while for the code to be considered stable enough to be subject to player abuse!

Not all work is sexy. Some things simply need doing. And if the the Sea of Storms is to escape its own cycle of being, we cannot afford to carry on as we did in the past.