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.

Tuesday, November 20, 2012

The Role-Players New Groove

Here on the Sea of Storms there has always been a strong culture of quality RP since the very beginning. The majority of newbies are inducted into RP by senior players wielding emotes and poses that are often well written and highly descriptive. Another mainstay of RP on our MUD has been posting length. The standard to which most players hold themselves is about four lines at a minimum. Anything less than that has often been considered lower quality, while anything more than four has been considered higher quality (up to a point at least). In pursuit of this 'higher quality' RP, styles like turn-based role-play were born to enable longer posting length and mitigate the problem that can arise with players interjecting themselves repeatedly when another players long posts. Turn based role-play has never been a policy of the MUD, far from it! It has, however, been encouraged by many players and staff  through personal preference as a way to manage larger RPs involving more than two or three people. The downside of this has been a rise in scenes which are  beautifully written, take forever (and a day) to play out, and have very little happen in them because the players zone out due to the inevitable 15 - 20 minute wait times between rounds.

The Staff is, of course, dedicated to quality RP, and we're always on the lookout for areas where we can tweak things.  Part of our recent batch of improvements is to add several new RP commands to be used in  harmony with emote and pose. These commands are whisper, think, and feel (along with some changes to say and sayto). Some players who have been to other MUDs, may recognize these as commands often seen on RPI MUDs. This is no accident, as these commands are inspired by good experiences staff members have had over the years playing on other RPI MUDs.

Enough build up though, lets get into the nitty gritty! These new commands are often used in something called real-time RP. This style of RP is one where no order exists and characters/players react to the posts of others as they come. Length is not a focus, but descriptiveness is. An easy way to look at the difference between turn based and real-time is this: Instead of writing a large post with several actions and segments of dialogue, players will instead write smaller posts with less actions and more immediate dialogue to which the other players in the scene can quickly respond to. This allows for the flow of RP to be fast paced and immersive. You know, for things to actually happen in a reasonable amount of time.

Link: https://docs.google.com/a/tsosmud.org/document/d/16nor8LTqfrlTepST4yOflX63kuWqWrRrE_ZTs0VBHH4/edit

The link above shows a brief RP where a staff member used the new commands to animate both Master Varian of the Feast of Lights Inn and Lord Kiriak Riatin, a member of a leading Cairhien house. This scene took very little effort to run and moved at a very fluid pace. One can easily see the way pose/emote were used in conjunction with the say and whisper commands.

The last two commands, think and feel, are primarily for individual players to deepen their own role-play experience. The output from both of these commands display only to the player using them, along with any staff member that happens to be in the room--allowing them to have a better understanding of the characters and motivations if they are running an Event (for example). Players might be surprised how occasional use of these commands can change how they role-play their characters. I highly encourage everyone to give them a try at some point.

Wednesday, November 14, 2012

Winds of Change are Blowing

I'd like to welcome everyone back to TSoS's Developer blog. It has been awhile since any posts have been put up here, but that will change going forward. In fact a lot of things on TSoS have been changing lately (albeit, lots of them behind the scenes) and thus we have our theme for today, change! We would like to let all of our players know what we have recently implemented, as well as give some idea what is still on the docket going forward.