I ended up giving away my code for free, but it was all a useful learning experience so I'm not bitter ... *cracks knuckles*...
[Aside: I haven't connected to SL for at least a year, so things may have improved. From a casual reading around they probably have not]
I think that Second Life is a good place to start for anyone thinking of programming a 3D environment. Why ? Because it gives you exposure to textured surfaces, rotations, coordinate systems, quaternions and lag. Lots of lag. Second Life allows people to upload their own textures and other people to see them wrapped around objects, this creates lag even when you stand still and someone with lovely clothing walks past you. MMO environments such WoW and Lotro do not suffer from this sort of lag. MMO games have all the visual assets in the game installation on the client hard disk, the only information* travelling to and from the server is distributed physics stuff telling things where to go - more on the whole distributed physics thing in another post (or five) later.
*OK there is some other stuff on the network: Chat, Database flags (you have mail), Auction House data, Trade object info. for inter-player trading and so on. But the distributed physics is the main thing. I include in physics the whole world simulation and sharing of behaviours of objects (thus avoiding the need to separate combat, donning different clothes and spellcasting for example).
So... if you haven't already... download Second Life, program some objects to do something half-way interesting and, breathe...
Back ?
Having done that you have probably encountered some SL specific amusements such as code spread around all over the place - almost literally as misbehaving objects head for (0,0,0) outside your control. If you fancy a laugh then visit a collection of SL sims and look at 0,0,0 ... It is not surprising to programmers how often things end up here, in virtual limbo.
The main problems facing anyone trying to build an MMO in SL - and I did consider it as a platform (No, I wished repeatedly that it was good enough) - is the nightmare itty-bitty-bits distributed code problem. For personal reasons I call this the Smalltalk problem, but it applies to many highly productive environments such as Lisp, Forth, Prolog and so on. It is truly wonderful when programmer A can leverage abstractions to build structures to the clouds... until the resulting houses of cards have to be maintained by programmer B.
The thing is, SL script is not beautiful in the abstract like Lisp. It is not fantastic in its declarative power like Prolog. It is a highly specialised, pretty weird and clever way of allowing developers to implement objects with behaviours. It is NOT a productive software development environment for building anything complex. No doubt with vast hacks and lots of intricate wiring something MMOish could be created. But it would make Little Big Planet seem entirely straightforward by comparison.
But you should go and play with it, so if you didn't last time then off you go !
OK... That's enough Second Life. It is instructive and helps me to reduce the scope of what I want to achieve in Version 1. A Good Thing!
No comments:
Post a Comment