Overview
I’m a longtime SL user (March 2006), and I think the 1.x and 2.x codebases are becoming an evolutionary dead-end. I think the community will face a day of reckoning, and developers will show a way forward. In some ways, this mirrors the situation of the LL server versus OpenSim. The Unity development tool would seem to be a very attractive avenue forward.
The server side has been reinvented by OpenSim. The client side needs a huge reset.
1.x and 2.x Codebases
The current situation with SecondLife / OpenSim viewers is that we have two codebases: 1.x and 2.x. The overwhelming majority of users are on some variant of the 1.x codebase (SL Viewer,
Imprudence, Phoenix). The 2.x users are, for the most part, on the SL Viewer 2, or on Kirstens Viewer.
Another factor in the current situation is that Linden Lab has put all development effort into 2.x. They know that the UI issues for the 1.x users are pretty significant. Since most of the community doesn’t want anything to do with the 2.x interface, Linden Lab will have a hard time attracting much unpaid developer effort to their side.
The other trend affecting LL is that they have some features coming up that will require the 2.x viewer (meshes come to mind). It’s an unfortunate mix of variables.
For some time to come, the 1.x viewer community will thrive. They have made significant progress in giving the community what it wants (double click teleports, area search, inventory mirroring, better LSL editing options, more convenient Windlight UI access, just to name a few). If LL were to pull support for 1.x viewer access [1], it would backfire in a big way — it would be an event that would lead to mass migration. Whether they like it or not, they are somewhat forced to keep the 1.x viewer community connected. They have clearly painted themselves into a corner.
[1] nah, they wont — I have a backchannel on this, as well as what was stated on The Developers List and also this one
In short, the 1.x UI is clearly the winner, but on the server side, the way forward will require 2.x. The LL server / client situation is messy.
… And… neither viewer stream could hope to compete with an AAA level game engine within, say, the next year or two. My concrete example is that the Unity engine is far ahead in many areas.
Enter the Unity Game Engine
What of true advancements? What would have to happen to the viewer to bring it up to the standard of a AAA game title?
Looming on the horizon, there are significant walls for the 1.x and 2.x codebase. To explore but a few areas, what can be done about Graphics, Animation, Sound, and Terrain?
Let’s focus on the positive for a bit :)
Graphics – A quick look at Unity demos (for instance, Tropical Paradise, Shadows, and Butterfly) gives a strong hint as to its power. Observe more lights in one scene, dynamic shadows on older hardware. Custom shaders that can be written by 3rd parties. Unity 3.0 will be released soon, and goes even further:
Physics – Physics in Unity are very advanced:
Animation – Unity has advanced object and character animation:
Sound – so much control as to mixing and where the Audio Listener is positioned
Terrain – very powerful from the built in editor, as well as from scripting, and a very well done extension (Terrain Toolkit)
Editing (3.0) – Snapping & Marquee Selection — also note that there is a lot of scripting support (in JavaScript, C#, and Boo) which could be used to develop in-world editing.
Deployment – Here is the Overview for 2.6. Unity is very well suited for Windows (Direct3D 9), Mac (OpenGL), the Web, Nintendo Wii, and the iPhone. They are working on deployment for the Android, Xbox 360 and the PS3.
Where To Go From Here
It should be pretty clear that the 1.x and 2.x have little hope of catching up to something like Unity 2.6. In the year or two it would take to get close, Unity and other game development engines will be that much farther along. To me, it seems clear that there is a choice:
- Keep advancing the 1.x and 2.x codebases, picking up some of the features of Unity, but still being limited to Mac, Windows, and Linux
- Freeze current codebase (Linux will have to stay where it is…), and take the things about SecondLife and add them to an app built with Unity. This will pick up additional platforms, and will tap into a much larger development community.
I note that there are at least two OpenSim + Unity projects underway:
Enjoy the links, ponder it, and think about where you want to put your development efforts for the next 2 years ;)