The Twilight Sun

Author Archive

MUSHclient, cont.

by Jonathan on Mar.07, 2010, under Uncategorized

So… Lately, I’ve been playing around a lot with MUSHclient’s source code. It’s pretty interesting to see how a program I’ve used for a long time actually functions (even though he uses the Whitesmiths indentation style, which I cannot abide. I’ve always been a fan of the Allman style, myself). I’ve actually made a few relatively minor contributions, which I’m pretty happy about. :) I also contributed (and I suppose maintain?) a pair of Visual Studio 2005 solution and project files, and helped ease the compilation process under it. Nick uses VC6, which is really old these days, but it’s what he used when he first started, and he’s not exactly willing to shell out hundreds of dollars to update. (I can’t honestly blame him.)

At any rate, there was a discussion about a new protocol Nick had scratched out as a hidden-data-transfer medium for MUDs, similar to ATCP and ZMP. It came about that JSON was a perfect fit for the protocol’s semantics, so I modified MUSHclient to add a scripted interface to a previously-created JSON library (called json-c). I’m really happy with how it turned out. I mean, I only wrote the glue between Lua and the library, but it was pretty interesting designing the glue nonetheless. The interface hasn’t been officially added to MUSHclient (yet?), but it’s in my GitHub fork of MUSHclient. (You can find my additions here, if you’re into that sort of thing)

Here’s an example of the interface in action:

chunk = json.encode{1, 2, 3, {foo = "bar", baz = {10, 20, 30}}}

Output: [ 1, 2, 3, { "foo": "bar", "baz": [ 10, 20, 30 ] } ]

Admittedly, that’s pretty boring. The glue code is more interesting, but the end result is still useful. In my (admittedly very brief and minor) tests, json.decode():to_lua() was faster by 2ms than loadstring()(), which was a little surprising. JSON also has the advantage of being rather well supported by many languages, at least indirectly. The protocol specification Nick originally proposed used Lua itself as the data format, which worked but brought along some odd issues like defining or calling functions within the data. I rewrote a Lua protocol snippet as JSON and compared the two, and they were nearly identical, so there’s really not much to lose by using JSON instead.

With that pretty much done, now I’m working on converting MUSHclient’s help files from .hlp to the .chm format. Is it a lot of work? You bet. But at some point, somebody has to do it… But I’m using an sqlite3 database, Lua, and ltp to autogenerate the files, so at least it’s entertaining.


2 Comments :, , more...


by Jonathan on Feb.14, 2010, under MUSHclient

As you may know, I often play an online text-based game called Achaea, which is one of the deepest MUDs I’ve ever personally played. And unlike most graphical MMOs, there are a variety of clients you can use to connect to any given MUD. Some of the most popular clients include zMUD or Mudlet – and you could even connect through plain telnet – but I prefer MUSHclient by far.

MUSHclient, authored by Nick Gammon, has been in existence for over ten years, and is still constantly developed and supported to this day. One of the main reasons I enjoy it so much is because it exposes an incredible amount of functionality through a scripting interface. You can use any of a number of languages, including Lua, VBscript, and Jscript, so long as they can be installed into the Windows Script Host. (Lua is an exception; support is baked directly into MUSHclient). Plugins, consisting of XML files containing triggers, aliases, script sections, and other items, can be created and distributed, which helps players of a specific MUD to create useful extensions specific to their MUD and pass them around.

MUSHclient is also open-source. You can download the source, compile it, tinker with it, and even (if you so desired) distribute your own version. Nick is great about suggestions, though, and more often than not, sensible suggestions will be incorporated into the next version. And since MUSHclient’s source is hosted on GitHub, you can easily fork the source and create a patch yourself, saving Nick the work if he decides to add the idea. (If he doesn’t, you’ve got your own custom MUSHclient build anyways)

But on to the main point: MUSHclient is also my primary development environment. Sound strange? Well, maybe. But I’ve done more concrete programming/scripting since I began using MUSHclient than ever before, meaning I’m getting a load of good experience even while I have fun with it. I’ve written a simple state machine for telnet sequences. I’ve written a serialization module to pass data between plugins (which might even be written in different scripting languages). I’m even working, albeit slowly, on a GUI framework that takes full advantage of MUSHclient’s “miniwindows” functionality, which allows you to draw graphical elements to the screen. I can honestly say I’d never have done anything like this if I hadn’t heard about MUSHclient.

I’ll frequently be posting about my escapades with MUSHclient, so if that’s your kind of thing, watch this space.

5 Comments :, , more...


by Jonathan on Feb.10, 2010, under Uncategorized

It’s painfully obvious to anyone who’s passed by here that my blog has been neglected for a long, long time. I’ve been caught in the trap of second-guessing what my audience cares about. Most often, I assume that what’s on my mind just isn’t interesting enough to post about. I do a lot of programming and imagining (the latter being a tremendous asset to the former), so I also assume that nobody who reads my blog will care about my technical adventures.

Well, I don’t know if I’m right, and I probably never will. But I’ve decided to start writing about all that stuff I never got around to. After all, posting something is better than posting nothing at all, and just because gets 30k hits a month without even trying doesn’t mean I have to please every one of them. That ends up pleasing nobody, anyways.

Now lets just see if I can stick to the plan… and maybe get a new blog template.

EDIT: New template! Not too shabby, hmm?

1 Comment more...

Tesla Coils

by Jonathan on Aug.03, 2009, under Uncategorized

This is too cool not to share. Two solid-state Tesla coils were set up some time back in 2007, and they were controlled by another unit to play MIDI-format sound by modulating the electical charge.

I guess one of the colloquial names for these awesome things is “Zeusaphone”. Considering that those things are loud – and I’m sure we all know Zeus is famous for flinging lightning bolts from the sky – I think it’s pretty fitting. I think it’s just cool to see big flashes of electricity making music!

4 Comments more...


by Jonathan on May.31, 2009, under Uncategorized

I’m vacationing in Florida right now, so excuse the delay. The forecast for this area is thunderstorm after thunderstorm, and so far the weather seems to be following that trend. I’m also sunburned… it happened during one of the few sunny spots earlier today. Great, isnt it?

I’ve got a new map up on my maps section, this one on the village of Eleusis. I’m finally extending my cartography into mainland Sapience, beginning with the areas most familiar to me. I’ll be moving outward from Eleusis, beginning with maps of the three sections of the Ithmia forest, and proceeding to the Prelatorian Highway and Tasur’ke. I also have an unlisted map of the triton kingdom of Lothos up, but I’m still experimenting with the color scheme. Underwater rooms are color-coded a dark blue, and entirely underwater areas like Lothos look terrible: like yellow on white but with dark colors. Feel free to view it, but excuse the dust while I work on it.

My good friend Dylan has started his own blog at, so if you’re feeling charitable, give him a few of your page views. We’re both pretty techy, but he’s more varied interests, as you can see by reading his first post. I’m sticking a link to his blog in on the sidebar, also… and I’ll probably end up finding out where he got his Twitter widget so I can steal one for myself.


1 Comment more...

Blogging & Current Projects

by Jonathan on May.05, 2009, under Uncategorized

I know I don’t really post much… I feel like, if I’m going to make a post, it may as well be about something worth reading. And maybe I just can’t see it, but I never feel like much goes on in my life that everyone would be interested in reading about. That’s not to say my life is boring! I just doubt anyone needs to see a blog all about it.

I do use my website, though, even if you can’t see anything straight from the front page. It’s all hidden away, in little directories nobody knows about. My secret stash, you could say. ;) And at some point, probably soon, I want to at least add links here, that go to those areas. I guess I could explain a couple of them, though. Maybe that’ll be something worth reading? - I’ll go into more on the game Achaea later, but for now, just know that this is where I make my maps available. “Maps?” you ask? I create text representations of areas in Achaea, layout maps that show you how an area is physically laid out. Achaea is a MUD – a kind of multiplayer text adventure – and its areas are laid out in rooms, each room having various exits to other rooms. All my maps do is help you find your way around in the areas.

One of my fellow mapmakers of Achaea, Asara Eslofe (that’s her character’s name, not her real one), also makes maps, and they’re very high quality too. They’ve also been around a lot longer, so more players use hers, and she has a lot more areas mapped then I do. There’s several reasons why I prefer mine… but I’ll let you decide. - Another recent project, except there’s really nothing to see here yet. I’m working with a friend on building something called Atom, which we will be using to create our own highly extensible MUD (again, a text adventure), but could conceivably be used for many other things. Stay tuned…

Wait, am I actually implying I’ll make another post? Hmm!

12 Comments more...

The Blizzcon Tickets Catastrophe

by Jonathan on Aug.13, 2008, under Uncategorized

I can’t explain the entire event very easily, it’s best to have actually been involved yourself. But here’s to trying…

On August 11th – my 16th birthday, yay me… – Blizzard began to sell their Blizzcon tickets. Things happen, and around noon they say they’ve fixed the problems we’d been having for a while. And that no tickets had been sold yet. Problems continue, and they close the site at 9pm the same day, promising to bring it up sometime in the morning the next day. Reportedly, some sales had been completed during this time, but “few” tickets had been sold overall.

August 12th. The tickets store isn’t brought up again until noon due to various issues, and the moment it returns, the world floods in and tries to buy tickets. In less than fifteen minutes, the Buy Tickets box is replaced with “Sold Out”. People try for ages, being told that tickets were being sold in waves. Three hours later, a Blizzard employee posts, stating that the tickets had nearly all bought the moment they were put on sale. (First gripe, I have more to come: This communication is terrible. Three hours to be told they really were gone? I might add that the “selling in waves” information had been spread by Blizzard’s customer service people at the phones.) They state that the remainder will be sold at 8pm that night.

Come 8:55, their store goes down again. Well, I can’t say it was unexpected. Ten minutes later, it’s back “up”. Guess what? When you enter your credit card information and hit submit, it returns you to the credit card information box. The problem is the three-digit confirmation number on the back of the card. It doesn’t seem to acknowledge the existance of the three digits you entered into the field. Great. So now pretty much everyone who wanted tickets couldn’t buy them. Come five/ten minutes later, they’re sold out again, for real this time. And they’re prompt with letting us know, for once.

Now, about five hours later, their “BlizzCon 2008 Tickets Sold Out” forum topic has almost 1000 posts. In fact, at the time of this writing, it had just broached 900. (Also at the time of this writing, the 46th page seems to be glitched. No surprise.)

Let me repost here two quotes I think describe the situation in a nutshell very well. The first is one I wrote:

It was not this bad last year. Tickets took three days to sell out – and this is with less tickets than this year! – and buying them went as smoothly as you could ask for. Something went seriously wrong here. I don’t believe 12k tickets were sold in such a short amount of time, with limited amounts of buyers being able to complete an order, along with all of the downtime.

Not to mention, the first day this time, supposedly very few orders were processed earlier. That gives us an even smaller window of time for more tickets to be sold on a bugged, glitched, and biased webstore.

I think someone has some explaining to do.

The second, humorous but very accurate, is this post someone made. I’m sorry I didn’t write their name down.

How many Blizzard employees does it take to change a light bulb?

There are no light bulbs. There may have been light bulbs at one point, but all the light bulbs spontaneously disappeared 7 minutes after you walked into the store. There will be no light bulbs for a long time and the world will be cold and dark, and then we will sell all the light bulbs we’ve managed to find, in one store at one time. We are not responsible if the store gets crowded, fights break out, or any light bulbs get shattered.

No, I didn’t get any tickets. It’s not that we didn’t get tickets that makes us (us being the people who raged on the forums) mad, but the shoddy handling of the situation by Blizzard. Well, at least I have the Wrath beta to keep me company, which I got into by use of my beta key from last Blizzcon.


4 Comments more...

Bluetooth Party

by Jonathan on Jul.20, 2008, under Uncategorized

Intriguing title, isn’t it? You’d expect that to mean some kind of party revolving around the Bluetooth wireless technology, right? If so, you’re way off! The guy who does it (every two years) is a dentist… and he bought some land to make his own wine. They have a big barn, and it has a giant billboard of a molar above the door. Painted blue – is that at all surprising? It’s also a private party, so generally only relatives of the dentist are invited, and people who they know, and such. I’m lucky enough to be related to them because my aunt by marriage is related to the dentist’s nephew. I think I got that right. I’m sure one of them will comment here if I didn’t. (Right?)

I’ll skip over the boring parts (in my opinion), and get right to the barn dance. That sounds a bit like some wacky wild west dance, doesn’t it? Well, remember that blue-tooth barn? They’ve got it rigged up with speakers and a DJ’s station, and a dance floor. I had met some people earlier – shout-out to Anthony and Sandra if they read this! – and they danced a bit while I, ah, stood back a bit. I really never thought I was good at dancing, and Anthony’s “eccentric” style (in his own words) was a lot better than my tapping foot. But I kind of got into it eventually, and he told me that I was actually pretty good! Talk about surprising.

The music was great dance music, for the most part… and I hope you know I’m not talking about ballroom dancing or anything formal like that! O_o. No, it was mostly techno-ish stuff, which does make good dance music. There was a song that was so dull, with absolutely no beat, that – I’m totally serious – everyone in the barn just kind of stopped dancing and stood around during that song. It was a little funny!

I had a lot of fun there, and it was great to meet Anthony and Sandra. Anthony’s ears were really bothering him in the barn, loud music and all, so I didn’t see him too much later on. I hope he’s okay now, I know my eyes AND ears were bothering me after I left. =\. It was great dancing with Sandra though, and we all swaped numbers/e-mail.


As an aside, I know I haven’t gotten around to reposting my GameDev journal posts here. It’ll get done, I’ve just been swamped with work lately.


4 Comments more...


by Jonathan on Jul.08, 2008, under Uncategorized

I re-found a game yesterday, called Motherload, where the goal is to dig as deep as you can and bring up as many minerals as possible. I haven’t found a concrete “end” yet (pun not intended!), but it’s actually pretty fun drilling through the Martian soil for minerals, digging out mining shafts and tunnels, and upgrading your mining pod (higher fuel capacity, larger storage bay, et cetera).

XGen Studios, the creator of Motherload, has plenty of other fun games as well. Take a look at some of their stuff!

While I’m on the subject of games (and associated gaming sites), have you ever heard of Jagex? No? They created RuneScape, that game [other] people talk about in hushed whispers or open derision. Jagex just so happens to have opened a gaming portal called FunOrb, and while it doesn’t have as many games as some others I’ve seen, there are some great games like Shattered Plans and Miner Disturbance, the latter of which reminded me of Motherload.


6 Comments more...

by Jonathan on Jul.06, 2008, under Uncategorized

Up until now, has been redirecting to, which in turn redirected to a blog I had hosted under the Squarespace blogging system. Recently, though, I finally got around to setting up the WordPress blogging system under my own server, so now I’m not paying a monthly fee.

I’m also going to be re-posting my game-development journal entries, from my journal at That’s where I’ve been posting for the past few months, unfortunately neglecting my blog here. Look for posts here under the “GameDev Journal Entry” category!

2 Comments more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...