Original Post
I fixed up the majority of bugs I had in my server software last night, so I figured I would post the idea incase others were interested. Basically what I have done is build my game server in unmanaged C++ for the time being and aimed at the Windows Server platform. I thought long and hard about scripting, and after much debate I really felt like using the .NET framework and the C# language for scripting. What turned out as a small test now encompasses my whole server, and I find this technique quite powerful, if not the most powerful I have used yet. When I did was interface the performance critical unmanaged C++/Winsock code server with managed C++ and C#. The scripting language used on the game server is obviously C#, and this has added much benefit. First of all the syntax of the language and the design behind it, I find it probably the best and most intuitive that I have used for scripting on a server. Secondly, the ability to reflect and recompile on the fly REALLY has it's benefits. Right now you are able to make changes in the scripts on the servers and have them recompile on the fly while the server is still running. This was very important to me because I wanted the ability to update while keeping the servers live. The server compiles the scripts to the dedicated files on the fly and without any performance hit (when benchmarked there has been zero difference). Another team has used this approach, the RunUO server emulator for Ultima Online, although they wrote the complete server in C# and I do not believe they support compilation while the server is running, I believe they only allow this at startup. Anyways I just thought it was really cool and that I'd share my latest project. PROS: On the fly compilation of scripts. Ability to change scripts, etc while the server is live. Easy to use OO syntax and structuring. CONS: Microsoft platform licensing fees. (although I have to look into this, I have not yet tried to port my server to FreeBSD/Linux yet. I need to read some more specs on the GNU .NET project to make sure it is fully functional at the moment) Having to interface unmanaged C++, with managed C++, with C#. This isn't very hard and there you don't see a performance hit as it is not at a critical stage in the server.. but it still had to be learned.