I'm on this crazy coding kick right now. For some reason I decided to go dig up Stringbean and see how it was doing. It's doing fine! Well, except for the fact it wouldn't start up. So I did some fixing and now it's fine and starts up and everything seems hunky dory. I have no clue what I was working on last.
Anyhow, for anyone interested, here's a tarball of a working, but very lacking, version of Stringbean. I release it under the GPL. I might at some point work on it some more, but if not, there it is.
I finally finished the complete overhaul of the Stringbean driver. It's now separated into a driver and a mudlib. I have everything implemented as a series of hooks and managers. Some portions are a bit awkward, though and could probably be re-written. Some components are implemented simplistically for now until I (or someone else) design and implement a more sophisticated version. All in good time, though.
Currently implemented: commands, emotes, heartbeats, lookables, exits, simple NPCs, connect, disconnect, and some other stuff.
It's true. I started to add Callout functionality, but also started splitting the driver into a driver and a mudlib, renaming driver.world to driver.engine, adding a mudlib.world module with a World object in it (and moving functionality from the old world to the new world), and a series of other things. All of this will take some time to sort through. I'm also looking into adding a series of hooks to the driver to tie the mudlib into the driver. The good news being that Strinbean will be pretty nice once all this is done.
I got my Python Cookbook in the mail and I've been reading through it and as I've been doing that I've been revising bits of Stringbean accordingly.
I also finished up a basic emotes module, adjusted the startup code, added handling for multiple names, added drop-in modules, added a command manager, added commands on objects/rooms, and started a driverapi module for abstracting driver code from its own implementation.
I redid exits, command handling, descriptions, word wrapping, and a few other things. Then in the tavern I'm working on, I added tables, a hatrack, a guestbook, a grandfather clock, and Neil who sits at his bar and waxes philosophical about the old days.
All in all it's coming along very very nicely. There are a few things I need to change to improve command handling and looking at things. Then to work on more complex issues.
I added NPCs with heartbeats, adjusted the command handling a bit to account for exits a bit better and fixed a bunch of little things. I'll probably build a list of things I want to do which will probably hinge around adding new things to the world.
So I was putzing around overhauling old Varium code which I haven't really touched in a couple of years when it occurred to me that the code I'm overhauling involves features I don't really care about--at least not at this stage of the game. This sudden realization caused me to re-evaluate what I was doing and take a new approach.
I took the testserver I wrote for Lyntin and expanded it into a series of modules and 1300 lines of code later I now have a working mud that has multiple rooms, heartbeats, multiple players, and a series of other things. More importantly, it gives me a good base to add on new features as I need them--giving me time to architect things as I go along rather than doing the whole thing up front.
I need to do a few more things before it has enough of a a critical mass to be interesting.
There isn't much progress on Stringbean yet. I do want to re-tackle it when Lyntin 3.0 is released and development dies down to a slow murmer. The first thing I'm going to do is overhaul all the Varium code and include a lot of the changes that I made for Bluemud (ansi parsing, word wrapping, ...). Then build an online tavern from that. It's not going to be much of an adventure mud from the beginning--I just want somewhere I can hang out with cool people (online).
Copyright 1996 to 2013, Will Guaraldi Kahn-Greene, under the Creative Commons BY-SA 3.0 license
Will's Blog by William Kahn-Greene is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.