Month: June 2007

Just Past Halfway

The compiler tells me: “You have just passed the halfway point in the journey toward your next codebase.” Errors are now quite a bit less thant the halfway mark (which would be 37,571). We now have 35, 542 errors to resolve. We’re making pretty good progress so far.

Under 40,000

We’re down to 39,610 errors now. Even though that’s a stunningly huge amount, it’s still progress. My brain’s starting to hurt, I should probably work on a different project for a few days.

Significant Progress

We’re down to 44,773 errors. That’s 12,486 fixed for today. Visual Studio 2005 has become noticeably more responsive. It’s still a little slow and clunky, but each error corrected is a slight speed increase.

Final Total For The Day

17,883 errors squashed. I doubt I will break that record anytime soon. I deserve a cookie. Too bad I don’t have any.

New Personal Error Correction Record

Yesterday I mentioned that I had 75,142 second-pass compile errors in the codebase. That’s a lot no matter how you describe it. Aside from spending a couple hours reading Heinlein’s Revolt in 2100, all I’ve really done today is hammer away at the code trying to reduce that number. This has been a little slow

I Broke The Compiler

Seriously. I cleared up all the first-pass compiler errors (the remaining 1,447). It was tedious, but not too terrible. That means that the compiler made it to the second pass. It churned away for a while, and then gave me a “build failed message”, which I expected. It then proceeded to show me every last

1,447 Errors

That’s a good thing. Down from 7,899 errors. Everything that could be fixed via search-and-replace (about 5,000 errors) has been, and the rest (about 1,400) have been edited by hand. There’s still a lot more work to do in stage 2, but the number of compile errors is steadily decreasing. Soon we will have a

C#: Stage 1 of 5 Complete

Stage 1 is done. Q: What is stage one? A: Hammering the code into C# syntax so that Visual Studio gives no complaint before trying to compile to code. Q: What’s that involve? A: Placing all of the functions into classes, eliminating all global variables, converting #define statements into variables (in the case of constants)

The Idea Evolution of Basternae: Technical

Over the past few days I’ve spent a while working on rewriting the Basternae source code in C# (even though the original code is not completely object-oriented yet).  Ideally I’d like to have it run as a standalone application linked to a SQL server for data storage.  This is doable in C++, but in C#

Global Domination

Or more like, “getting owned by globals”. As part of the conversion to C++ one of the major tasks is moving all of the global functions into classes. There are a lot of them – each spell, command, skill, bard song, et cetera has been handled by a global in the past. Even with all

String Conversion Update

I’m still working on converting char * strings to std::string strings. Here’s the recent progress: Reference 5-27-07 5-29-07 6-1-07 6-4-07 6-10-07 6-15-07 strncat 772 723 641 605 606 581 snprintf 1199 1166 1096 1079 1064 1032 const char * 343 287 317 330 341 330 MAX_STRING_LENGTH 2404 2313 2062 2011 2000 1955 MAX_INPUT_LENGTH 471 446

Inheritance = A Good Thing

No, I didn’t just have some rich relative kick off and leave my name in the will. The closest I have to a rich relative is an uncle who can afford to buy a new pair of shoes every two years. In the original MUD code and in most C-based codebases I’ve seen, mobs have

Visual Studio 2005

I’ve been using Visual Studio .Net 2003 for a long time. I’ve finally upgraded to 2005, and some of the changes are interesting. One of the things I’ve been doing is converting a lot of the c-string functions to STL std::string. It turns out that the old string functions I’m gradually eliminating have been deprecated:

Combat Bug Fixed

It was far easier to fix than I had expected. Here’s what I was doing: std::list<CharData *>::iterator it; CharData * wch; for( it = CharList.begin(); it != CharList.end(); ) { wch = *it; <stuff happens to wch here, and during combat wch could potentially be killed and deleted> } When there was a death in

SourceMonitor Update

Ahh, the joy of code metrics. Files: 132 Lines: 113,584 Statements: 58,853 % Branches: 29.2 % Comments: 8.8 Class Definitions: 52 Methods/Class: 6.86 Average Statements/Method: 14.7 Max Complexity: 477 Max Depth: 8 Average Depth: 1.86 Average Complexity: 11.47 For the first time, the number of lines of code has gone down.  This is because MobProgs

XML Objects!

It’s done – objects save and load as XML data rather than some ad-hoc text format.  I’m sure there will be a few extra details to work out, but the saving and loading of basic objects works now.  The change cleared up a bug or two that would come up once in a while due

More XML Conversion

I’ve started tackling the conversion of all object saving to XML. Player saving was easy, since players tend to be pretty much the same and have all the same data fields. However, with all the different types of objects, nesting, affects, extra descriptions, etc. objects are a bit more of a project to convert. Objects

Goodbye Mobprogs

Mobprogs – a neat idea, but mostly useless. The idea was to have a scripting language that could be used to write actions and triggers for mobs and objects that would give them a little more life. They weren’t ever used much, and I think I may have been the only one to write one.

Plenty To Fix

I’ve ran some testing of this new rewrite-in-progress. As expected, there were a few problems with some of the string functions. Those were easy enough to fix. But, it’s now time to break out valgrind, because there are a few things that need some re-engineering and I need to see exactly how they’re broken. One

Server Options

I know it’s a little premature at this point, but I’ve started to think a bit about server options. There are a lot of different things I could do, with various cost/reliability/control considerations. The primary decision is broken into one of four options: 1. Host it from home. This would require configuring dynamic DNS and