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.


  1. Nice! I love it so far, keep up the good work! I wish the Sea of Storms well on escaping it's "cycle of being!"

  2. Considered the quintessential casino game, blackjack pits all players towards the dealer. The object of the game is to have the two cards in your hand add as much as} more than the two cards within the dealer’s hand – without exceeding 21. Each quantity card is worth its numerical value, face cards are worth 10 and an ace is worth 1 토토사이트 or eleven.