Category Archives: Client

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.

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

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.

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.

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.

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.

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.

Client Work

John Baker has delivered a new set of artwork for the client and I’ve spent some time working on integrating it into the code.

What I’ve discovered is that the client code is rather brittle and prone to explode.  It will need some significant work before a new version is ready to release.  Testing with valgrind has helped a bit, but it still requires some heavy lifting to get right.

I started working on the client 6 years ago, long before I knew C++ very well (I’ve known C a lot longer, but it took a while to get the hang of C++ and the OO world).  The client was originally written to use the Simple DirectMedia Layer (SDL) and has had some bizarre things done to it over the years.

So — there are significant changes coming with it, but no idea when they’re coming.

Some Text Fixes

I made a couple minor text fixes, the most noticeable of which was a map rendering glitch that would cause mobs to show up as P’s and the map to be strangely distorted in the client.

I also released a minor update to the client (now version 0.18), with a map fix and a couple window focus improvements.

Client Version 0.17 – Attack of the Programmer Art

This update adds worldmap support.

Here are some examples:

Map Window Screenshot 1

Plains between the southeastern swamp and the blast crater.

Map Window Screenshot 2

On the road in the western forest.

Map Window Screenshot 3

Underground near the river crossing.

Map Window Screenshot 4

East of the mountains where the desert runs north into tundra and then glacier.

Map Window Screenshot 1 in Wintin

As a reference image, here’s the first map location in WinTin.Net

I guess the first three aren’t too bad aside from some tile banding and edge mismatches, but the fourth one looks like hell. I could do better if I spent more time on creating the tiles, but there’s probably a pretty solid limit to what I can do. If you’d like to try your hand at replacing some of the uglier tiles, you’re certainly welcome to.

If you download and install the client, there’s a “tiles” directory that contains the graphics for the map tiles, the equipment screen background, and the health/move meters. They’re loaded at startup, so if you replace any of the images with those of the same name and dimensions, they’ll be used instead.

This doesn’t do much good yet since no zones are attached to the map yet, but they will be soon.

You can download it here.

EDIT: I tried the client on Fedora 12 and it gave some library mismatch errors, so I created a static build. The new Linux build was created on Ubuntu 9 and ran fine for me on a clean install of Fedora 12. Let me know your results if you try it.

Client Version 0.16 Update

I spent some time with window layout, changing where windows open so things aren’t stacked on top of each other.  Now they open in locations that make more sense when you run the app.  You can still move windows elsewhere or close them if you want.

I also worked on the group window.  Now it should display info about the group you’re in, if any.  Here’s what it looks like now:

Basternae Client v0.16 screenshot

All of these extra windows — status, group, room, and equipment — don’t refresh unless the server sends data to refresh them.  The status window works pretty well because it updates every time the prompt is sent and the room window works pretty well because it updates every time you enter or look at the room.  For equipment and group windows, it’s only when you type the “eq” or “group” commands, which may not be often at all.

At some point I’m going to make these update more regularly, probably on a timed interval for the group window, and probably when you “wear” or “remove” equipment for the equipment window.

You may notice from the screen layout that the client works best on systems with a resolution of 1280×800 or higher.  You can probably use it on systems with less, but I wouldn’t recommend it.

You can get it here.

I’ve also posted a Linux binary. It was built on an Ubuntu 9 system and requires wxGTK. I haven’t learned how to create a .deb or .rpm installer package yet, so it’s just a gzipped tar. Please report any problems/glitches.

Testing With Multiple MUD Clients

Tiu mentioned in a comment the other day that text was all goofy and formatted wrong via telnet, so I did some investigation.

Bad:
Using telnet from a Linux box, everything looked screwy just like he said.
Using telnet from a Windows box, everything looked screwy just like he said.
Using Gnome-Mud, everything looked screwy just like he said.

Good:
Using Tintin++ from Linux, everything looked OK.
Using WinTin.NET (normally my main client), everything looked OK.
Using Mudlet, everything looked OK.
Using the Basternae Client (becoming my main client as it evolves), everything looked OK.
Using Zeta Telnet everything looked OK, but is in black-and-white.

Plain old telnet reacted differently to a carriage return / linefeed pair than MUD clients did.

After figuring out what the deal was I changed line endings in the server code and it looks like all terminal programs behave correctly now. Your mileage may vary.

Version 0.15 Client Update

I’ve spent some time on the client. Here are the changes for version 0.15:

* Fixed a bug with alias saving and loading.
* Added hotkey saving and loading to alias save/load.
* Improved room/map window, adding zone name, exits, and better word wrap for room description. It doesn’t show color yet, though.
* Added some fixes to the equipment window and it works now. It doesn’t show color yet, though.

In the process of working on the equipment window in the client, I fixed a bug on the server with the equipment command and one with the wear command.

You can download the new version here.

As always, let me know if and which bugs you find.

A Linux Build of the Client

I have no clue how to build a .deb or .rpm package yet, so it’s just a .zip for now.

Though I have it working on my own Ubuntu 9 machine, I haven’t the faintest idea whether the client will run on other Linux boxen. At the very least, you’ll probably need to have the wxWidgets 2.8 libraries installed to run the client on Linux. I suppose at some point I’ll figure out how to build installer packages.

Version 0.14 of the client for Linux is now available for download. Hopefully there’s someone who can try it and let me know the result. In this case, it’ll probably be “I had to add libraries X and Y and Z before it would run”. Then again, since wxWidgets is so widely used on Linux (VLC, Audacity, etc), chances are good that most people will already have the necessary pieces installed.

Initial Mac Version of the Client

I fixed the “can’t send text” problem in the client for the Mac and Linux versions.  There are still some text problems that only show up in non-Windows versions, but I was able to log in and play for a bit without much trouble.

Though I have it working on my own machine, I haven’t the faintest idea whether the client will run on other Macs.  I’ve created an application bundle and compiled it in a way that it should supposedly run on OSX 10.5 and 10.6, but I only have 10.6, so no idea whether it will work.  And, since my machine is set up as a developer machine I have no idea whether a “normal” user’s machine will have all the libraries it needs.  That’s the trouble with being a Mac “noob”.

Version 0.14 of the client for Mac is now available for download.  Hopefully there’s someone who can try it and let me know the result.

Another Client Update

I tracked down a nasty threading problem in the status window that would explode things horribly at random intervals. Version 0.14 of the client is now available.  That’s not to say there isn’t the possibility of other horrible explosions lying around just waiting to leap out… so let me know if you find any.

A Minor Client Update

Version 0.13 of the client is now available.  Cleaned up one or two things with text processing and added command scrollback (where you can push the up arrow to retrieve previous commands).  As always, let me know of any glitches you find.

Small Client Update

I’ve made a couple minor updates to the client.  First, the status window wasn’t clearing the tank and enemy condition bars when there was no tank or enemy combatant.  That’s fixed.

Next, I’ve added what appears to be working support for aliases.  They’re created accessed using the “#alias” command (#al for short).  They cannot yet be saved/loaded, but they do stay in memory as long as the client is open.  Saving/loading is probably the next thing I’ll work on.

Here’s an example:

Aliases in the Basternae Client

You can download it here.