Archive for November, 2009

Who Command Repaired

Saturday, November 28th, 2009

Some uses of the “who” command would lock up the MUD.  This appears to be fixed now.  Report any anomalies.

Visual C++ For C# Programmers

Friday, November 27th, 2009

At my dayjob, I’m a C# developer. 2.5 years ago I was a C++ developer during the day. When I wrote C++, it was all for multiplatform applications that never touched any of the .NET libraries. When I switched to C#, it was all .NET. Never once did I try or even look into using any of the .NET libraries with C++. I knew there was something like __gcnew available, but I took one peek at managed C++ back in 2003 or so and got scared, running away because it looked so ugly.

I had heard that it was improved, but never bothered to look into it until now. I picked up a copy of Pro Visual C++ 2005 for C# Developers and in the first 50 pages I learned everything I need to know to be able to mix managed and unmanaged code in a C++ application, or to mix C# and C++ applications in a .NET project.  I’m not sure how much I’ll ever use that, since my main usage of C++ is for wxWidgets or Qt-based applications, but it’s nice to know, and the author, Dean Wills, did a damn fine job of explaining the differences between the two languages in a short amount of time.

The remainder of the book explains more of the intricacies and specifics, but any competent C# programmer can be writing C++ in only two hours with this book.

Minotaur Stronghold Added

Thursday, November 26th, 2009

The Minotaur Stronghold zone I mentioned doing some testing with a few days back is now uploaded and connected to the MUD. It’s a scenario where an Orcish army has a Minotaur outpost under siege. Enjoy!

wxWidgets Client Resurrected

Wednesday, November 25th, 2009

As I mentioned in my post yesterday, not being able to support scrollback with the client was a problem in the wxWidgets-based version. This is because it used the Simple DirectMedia Layer (SDL) for the text rendering, and that just has a 2-D panel that text can be rendered to. Adding scrollback to that kind of system would be a large amount of effort.

Since the original development on the client was started back in 2005, wxWidgets has added the wxRichTextCtrl control, which lets you create rich text box — as in, a text box that has color, images, and all sorts of happy goodness like that.

I spent some time ripping out all of the SDL portions of the client and replacing them with the rich text control. The end result is that it does everything it did before, but has scrollback, uses less CPU, and has less memory copying going on (which means fewer possible points of failure). It still needs some tuning, but it already uses five fewer code files than the previous attempt.

WPF Is A Dealbreaker

Tuesday, November 24th, 2009

I spent some time working on the client, only to find that the Windows Presentation Foundation doesn’t support right-click events.  That’s a deal-breaker because I need right-click support.  How could a GUI toolkit not support something so basic?

So, the wxWidgets-based client is being resurrected.  That’s good, because it was further along.  The big problem was that I couldn’t easily support scrollback with the SDL integration.  Well, since then I’ve figured out how I’d make that work.

In case you’ve forgotten or are not aware, THIS was how far along the wxWidgets-based Basternae client was last time we looked at it.

Editor Update (Version 0.45)

Monday, November 23rd, 2009

I added a few more commands to the walkthrough mode in the zone editor.  The commands list, edit, createedit, exits, and version have been added.  It also now understands the short versions of the diagonal commands — nw, ne, se, and sw.  You can get it HERE or via the sidebar link.

As always, this is a relatively untested app, so save often.

Basternae Code Now Stored With Assembla

Sunday, November 22nd, 2009

Code versioning is a good thing. You can rollback changes that make things worse, compare current code to past code, keep backups, and access your code from almost anywhere. It also helps make sure that every machine being used for development is kept current and that changes aren’t easily overwritten. Any serious development should have a source code repository, especially if that development is done on more than one system or by more than one person. I’m only one person, but I used three different dev systems.

I’ve tried to set up a Subversion code repository at home twice. Both times it was on an extra laptop and both times the laptop’s hard drive died within a month of setting up the repository. I didn’t lose the code (every development machine is technically a code backup), but it was pretty frustrating.

The other day I signed up with Assembla for my audio software development (see http://zetacentauri.com) and it’s been so useful that I’ve added the Basternae code too.

I’m debating whether to start using the Trac issue tracking system with Basternae 3. It works well for the Zeta Centauri projects, but the workflow here is far more organic and to-do-list based than issue-and-ticket based. I suspect the verdict will be “no” on Trac and I’ll keep using my got-it-done.com website to track Basternae.

Scan Command Fixed

Saturday, November 21st, 2009

One of the nagging problems I had been meaning to get to was the non-functional scan command. It’s a recursive command, and the C# way is a bit different from the C++ way. It was easier to fix than I had expected and is working now, so scan away.

Editor Update (Version 0.44)

Friday, November 20th, 2009

Made more progress on the editor. The walkthrough window now has basic functionality. There are only a few commands working, mainly the directional commands and the goto command. It’s all in black-and-white, but it is enough to let you walk through the rooms and get a feel for what mobs and objects are where.

Basternae Editor v0.44 Screenshot

Pretty basic, but it will evolve with time.

You can get the latest version HERE (or via the link on the sidebar).

Startup Script Created

Thursday, November 19th, 2009

For the past few days, the test version of the MUD has only been up when I was actively running it from my Linux shell account.

I’ve created a startup/restart script so it should be running all the time now, barring any catastrophic crash-explosions.

Telnet basternae.org port 4502 to connect.