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) or class methods (in the case of macros), changing all char[x] variable declarations to strings, rephrasing all array declaration and initialization, and removing stray const keywords.

Q: How many changes did you have to make?

A: I had to change about 4,000 lines of code, mostly by hand. I love search-and-replace, but it couldn’t do much here.

Q: Did you completely break the heck out of anything in the process.

A: ABSOLUTELY! I know for a fact that I will have to completely rewrite mob tracking (which has always been one of the things I intended to do anyhow). Some of the changes to correct syntax also just pushed the errors later in the process — they won’t show up in a syntax check and will instead show up in a compile.

Q: What are the other 4 stages of this conversion?

2 = Compiling without errors. This is a huge step. After just running the first initial build, there were 7,899 compile errors. A large percentage of these will be pointer errors because I didn’t change any pointer-based code (“Pointers and fixed size buffers may only be used in an unsafe context.”)

3 = Building an executable. This may be moderately complex, but since C# pushes so much of the work onto the syntax checker and compiler, chances are that if it compiles without errors then the program will build and run.

4 = Booting without immediate crashes. This will involve firing up the debugger and making sure that all of the changes didn’t have any unintended consequences. They will, errors are unavoidable in a rewrite of this magnitude. Hopefully debugging will be fairly quick.

5 = Logging a character in and walking around without crashes. Most of the code lies dormant until a player is logged in. This includes things like network code, combat routines, hit/mana/move regen, informational screens, skills, etc.

Completing all of this will get us ready to put up an alpha port of the game so that we can actively start building content.