posted on Monday, December 18, 2006 6:37 AM
by
Endie
Multiverse language options
My first couple of weeks or so with Multiverse were spent doing stuff. This is the way I initially learn things: I jump in to actually doing them, preferably with some sort of reference manual with which to overcome stumbling blocks and obstacles. However, this can lead to a somewhat idiosyncratic view of things, and I'd already begun to notice a few errors in the way I'd launched into stuff. So over this weekend I started reading a bit more and doing a bit less, in order to provide a bit of context and order to what I'd learned.
One fun thing I picked up is that I'd missed a lot of the technologies that can be used to customise the product. For instance, I knew that I could script various aspects of the game (for instance, the behaviour of mobs) with python in py files. What I hadn't realised (even though I'd actually been doing it at times!) is that Javascript can be used here, too. Considering that I can use js in my sleep (our current big project is loaded with server and client-side javascript, as well as being sprinkled liberally with AJAX), this was a mixed blessing: I'd been hoping to be forced to learn a bit more python in the process, but that will neeeeever happen now that I know there is an easier, faster way.
I knew about (and have been playing with) the ability to add new functionality with server-side plugins written in Java or Python. For me, this is the really cool stuff: the ability to change the fundamental ways that the virtual world works and the rules that govern its operation. The scripting element may let me say how much damage a zombie hits for, but the plug-ins let me decide that the result of my needless cadaver-focussed rage is measured in location-based damage as opposed to hit-points.
One technology that surprised me a very great deal was that the multiverse client can be customised with (amongst other things) C# code. What an odd choice. I mean, fine by me: I started learning C# before the compiler was even available, when the language was just in the specification stage (and this site, which I tinker with, is written in C#). But I'm intrigued enough to want to take a look at this. There is nothing obvious on the wiki (which breaks a bit when searching for "C#"), and the client installation page itself does not state a .net runtime requirement, but the use of C# would seem to then require the presence of the .net run-time environment, which is (a) substantial and (b) still very much windows-only (open source efforts notwithstanding). Of course, the client is currently windows-only, and it's just another option that they seem to have made available, but the site says that other clients are planned, and it would certainly add complexity to any attempt at cross-platform compatibility when one wanted to look at *nix or Macs.