Author Archives: xangis

Client Version 0.24 Released

I’ve released version 0.24 of the Basternae Client.  Use the download link on the right side of the blog or on the basternae.org front page to get it.

This release mainly has cosmetic changes:

  • Changed the font for most things from Segoe UI to Verdana.  It just looks better.
  • Added “show group” and “show equipment” settings to the settings dialog so you can have those always show up when you start the client if you like.
  • Improved the look of the menu bar a little.
  • Reworked the settings dialog so it looks a little more organized.
  • Fixed a crash that would happen if you open and close the about box twice in a row.
  • Improved the layout of the status window.

There’s nothing groundbreaking or particularly complex about this release, it’s mainly just a small update to get me used to the code again, since I’ve been away from it for a while.

ANSI drawing and parsing glitches remain, and that’s the main thing that needs work right now.

Goodbye FindMUD

For a few years I ran findmud.com. It was mainly an exercise in customizing Drupal, but there was no real need for it. The Mud Connector filled the mud listing and community need quite nicely.

FindMUD is gone now. It was time that it was put out to pasture. It was fun while it lasted.

New Client Artwork From John Baker

John Baker, a friend of mine for a long while, did some work creating graphics tiles for me. It was intended for use in two old-style RPG projects I’m gradually working on. I’m sure you’ll hear about them later as they develop. Neat thing is, they were designed with both those projects and the Basternae client in mind.

Expect to see them in future posts and/or releases of the client. Stay tuned.

For now, check out his site:

argofjohnbaker.com

Multiverse MMO Engine

There’s a game engine designed for building massively multiplayer online games.  It’s called Multiverse.  It was originally a proprietary engine, but it went open source at the beginning of the year when the company that created it went out of business.

I played with it a bit back in 2010 before I left Ohio.  When I moved to California in the second half of 2010 I ended up working in the same building as Multiverse, Inc.  They were winding down the company when I arrived and I ended up buying one of their old computers, a monitor, and an office chair.  I met the founder, Bill Turpin, who also happened to work with the database admin where I was working when they were both at Netscape.

A while later they open sourced the project.  I didn’t have the spare attention cycles to dig into it for the first few months, but started tinkering with it again in April.  It’s a lot of fun to play with, but needs a lot of work, especially in the ease-of-use area.

I joined the development team and have been contributing the occasional bugfix.  To find out more visit this website:

www.multiversemmo.com

Back Online

The Basternae site is back online after being gone for six months.   The MUD is also back online at basternae.org port 4502.

You Can Now MUD on webOS (TouchPad)

Much of my not-at-work development time has been spent on webOS lately.  The TouchPad and webOS version 3.x are great fun to work with and the only mobile devices that have APIs that don’t suck to develop for (I’ve worked with Android, iOS, and Win7 and none of them are fun from a C++ developer’s perspective).

Today my Telnet application was published in the catalog.  It’s still not perfect yet, but thanks to that application it’s now possible to MUD on the TouchPad.

Client Update: Now With Alias Support

I’ve pushed another update to the Basternae client today, version 0.23.  Download is available on the sidebar, as always.

Here’s what’s changed:

  • Alias support has been added.  Usage is #alias <keyword> <text that replaces the keyword>.  Aliases are saved when you click File -> Save Settings and loaded at startup.
  • Rendering of surface map sections with T-facing-right road pieces is fixed.
  • Fixed a glitch with closing and then reopening the status, group, equipment, hotkey, and map windows.
  • Improved the initial opening position of the equipment and group windows.

Give the client a try and let me know if and how aliases need to be improved (as in, what you typically do in WinTin or ZMud that doesn’t work here yet).  I used to use aliases, but I never did anything all that complex.  Typical aliases I used were “gc” = “get all corpse”, “ik” = “cast ‘ariek’ thri-kreen”, and the like.

Also note that the client doesn’t nag you about updates.  If you want an update you have to come here looking for it.

Stop Bothering Me About Updates

First there was Windows Update. Not a big deal, it only nagged once a week at most, and you could easily turn it off if it became too annoying.

Then Adobe Update. It’s a damn document viewer, why should it need to be updated if I’m having no trouble viewing documents?

Then Flash. Java. iTunes. Web browsers. Updates for Linux, for MacOS. Even my phone goes on and on about updating itself. Every asshole program seems to have a need to whine about updates. Look, I don’t care. I know that as soon as I install an update you’re just going to start bugging me about the next update. Shut up and update yourself if you feel you must, but don’t bother me about it. Blah blah security blah blah. I don’t care. Unless a program isn’t working right for me I neither need nor need to know about updates. I don’t care how insecure my text editor is. It’s for editing text. It’s not like I store bars of gold in the damn thing.

I do not need to be nagged about a thousand stupid little programs every time I start a computer (no matter the OS). Just shut up and go away.

GTK+ Is A Very Good SDK

GTK+ is a user interface toolkit for Linux.  It serves a similar purpose to WIN32, Windows Forms, WPF, Qt, Carbon, and Cocoa.

Until recently I had only used GTK+ indirectly, through wxWidgets, which is a wrapper around the UI toolkits for Windows, Linux, MacOS, and others.  Ordinarily I’d just stick to wxWidgets so I don’t have to write similar code multiple times, but I’m working on a project with a significant download size restraint and have to keep it minimal.  The overhead wxWidgets adds is a no-no.

I have a copy of Foundations of GTK+ Development by Andrew Krause and picked up the basics through that.  As in introduction it’s a good place to start, but the book itself is all over the map and examples tend to be somewhat incomplete.  It’s obviously written by someone new to writing tech books.  I’m still glad it exists — saved quite a bit of time getting started.

GTK+ uses container-based GUI sizing and layout and relies pretty heavily on macros, but you don’t have to deal with populating tons of cobbled-together custom structs and incomprehensible parameter lists (WIN32) or deal with an ass-backward programming language like Objective-C (Cocoa).  Binding event callbacks is straightforward and you don’t need to create an event map or do any strange run loop management.

It’s quite sensible and has a well-thought-out API.  Any time you want a function to exist or want to have a control type available it’s probably there.  I was able to build four working dialogs in a day’s work and at no point was there a head-scratch “How the heck does this work?” moment.  The docs are also pretty thorough and easy to read on the gtk.org site.

Well done, GTK+ team.

Win32 Visual Styles

Nothing to do with Basternae, this is just a reminder to myself how to enable the visual styles for controls available in Windows XP and newer in a WIN32 project in Visual Studio 2010.  Had to do this at work and it’s a little tough to look up.

1. Edit Project settings.
2. Under Linker->Manifest File edit “Additional Manifest Dependencies” and add:

type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*';%(AdditionalManifestDependencies)

Suddenly Win32 controls will stop looking like they’re from Windows 3.1.  The modern control styles were introduced in ComCtl32.dll version 6, and Windows apps use version 5 by default unless you tell them not to.

Map Improvements

It took a while, but I have the road tile changes done and in place.

In addition, the surface map shows markers for the following zones that were attached but didn’t have markers:

  • Autumnglen (Centaur Hometown)
  • Court of the Muse
  • Sarmiz’Duul
  • The Minotaur Stronghold
  • The Ice Tunnel Shaft

The client still has a few map rendering glitches that need to be cleared up — for instance, things get wonky if there’s a T-intersection with roads going north, south, and east on screen.

Client Improvements

Basternae Client version 0.22 is available now, with the following improvements:

  • All map tiles supported now. Anything before version 0.22 will look stupid on the overland map.
  • Better starting window positions — they don’t pile on top of each other now.
  • Hotkeys can be saved with File -> Save Settings.
  • You can control whether the hotkey window shows up on client startup and the number of buttons via the settings window. Be sure to save settings after you make changes for them to stick.

Since the hotkey window’s buttons are set to wrap, you can resize it to show buttons in any arrangement you like — 2×10, 4×4, 3×6, etc.

Check the right sidebar for a download link.

Another Editor Update

In the process or editing roads on the surface map to set each section of road to the right tile (east-west, corner pieces, t-intersections, etc.) I found that the editor needed some updates to accommodate the tile system.

I’ve released version 0.57 of the editor today, with map terrain editing (not useful for regular zone editors), faster room grid drawing, and better coloration for the room grid. The download link is on the right sidebar.

Road editing is about 1/3 done so far and won’t be uploaded to the server until it’s done.

Basternae Client 0.21

The first download, version 0.21 of the new WPF-based Basternae Client is now available for Windows. Check the right sidebar for a download link. I can post a version that will run via Mono on Linux or MacOS if anyone wants it.

It’s still needs a lot of work, but at least it exits properly now.  I expect you’ll find glitches. It’s a work in progress.

Tiu Has Killed The Dragon

Brave Tiu was one of the first adventurers to sally forth on the quest to kill the dragon in Dragon Wilds.

A whole village worth of corpses and some bugfixes later, the dragon lies dead at his feet.  Congratulations, Tiu, on being the first one to win the game.

Authentic8

In case anyone is curious about what I work on during the day, check this out:

http://authentic8.com

Sign up for the beta.  Surf the web securely, circumvent firewalls, browse anonymously, and do all the wonderful things you can do with a disposable remote browser.

Works on Windows, Linux, and MacOS.

You can even use it to create a secure shortcut that will auto-login to Dragon Wilds.  And most other sites too, of course.

First Very Broken Version of the WPF-Based Client

Here’s a screenshot of the Basternae Client, version 0.20:

There are some things missing and in a few ways it’s a step back from the previous C++-based client (version 0.18 — 0.19 was never released).  However, it does work with the new map graphics.  Roads still need a little work, but that’s a server-side change.

There are some very broken things about version 0.20 of the client, and I wouldn’t recommend installing it (which is why there’s no download link).

– Aliases aren’t in yet.
– It leaks memory like a sieve.
– A bunch of ANSI color things need work.
– It doesn’t even exit properly.

It can only get better from here.

New Game: Dragon Wilds

http://dragonwilds.com

I built this oldschool over-the-2400-baud-modem game in my spare time over the past week using Python and Django (it’s about 500 lines of source code, 500 lines of HTML templates). I don’t know whether I’m going to spend more time on it, but it was fun to build and a nice break from the to-complex-to-work-on-with-the-brainpower-I-have-left-after-work state Basternae 3 is in. If people like it I’ll probably make more of them or improve the existing game. First time I’ve done a web-only game.

Let me know if you can break it. As can be expected, there’s really not that much depth to it and you may well get tired of it quickly.

Back to WPF

A while back I made a start on building the client using WPF, the Windows Presentation Foundation. It only made sense to give it a shot since the whole MUD is based on C# and .NET.

That effort stalled due to a roadblock or two, probably because I didn’t know about routed events and partly because I didn’t understand RegEx very well. I have a better handle on regular expressions thanks to spending some time with the Django web framework.

In the process of trying to rework the C++/wxWidgets-based client to support the new tiled map graphics I’ve experienced a lot of pain. The kind of pain that can only be explained by the fact that a string is not a first-class object in C++ and that text parsing can get to be unbearable when you have a complex stream over TCP.

That has prompted me to take a look at the WPF version of the client again. Rather than being based on some ugly recursive character-by-character text processing code, it’s based primarily on regular expressions — one to parse out the ANSI codes, and one to process the XML tags for the various client data (life meter, map info, room description, etc.). The first one was done when I left off, but the second piece hadn’t been started yet. Well, it’s in place now and I can continue building the rest of the newer client.

Getting the WPF version up to and past the usability of the wxWidgets version will probably be faster than untangling the text parsing in the spaghetti code.