The Open Virtual Collaboration Environment (OpenVCE) initially created in Second Life and OpenSim along with its I-Room (virtual space for intelligent interaction) have been available for some time as OpenSim Archive (OAR) files and assets available in Second Life and OpenSim for anyone to copy and use under the Lesser GPL flexible use licence.
Tipodean OpenSim OAR to Unity Conversion – OpenVCE
A Unity conversion of the 3D visual elements of the whole OpenVCE region including a sample I-Room and larger I-Zone building was created by Tipodean using their OAR to Collada DAE converter. See two blog posts on this [1] [2] and the Tipodean OAR converter examples, including OpenVCE.
Previous work on an I-Room in Unity using the SmartFox Pro Multi-user Server
A Unity I-Room demonstration was originally built as a self-paced tutorial for me following the book “Unity Game Development Essentials” by Will Goldstone (ed. 2009) and making use of the SmartFox Server multi-user support libraries and a good on online tutorial. More details are in these blog posts [1] [2].
OpenVCE – OpenSim to Unity Project via the TUIS OAR Converter
An OpenSim OAR converter to create textures, meshes and terrain in Collada (DAE) file format suitable to import into a Unity scene has been created by Fumikazu Iseki at the Network Systems Laboratory of TUIS (@Fumi.Hax – @fumi_hax) in Japan. It has been used to convert the OpenVCE region saved as an OpenSim Arcive (OAR) as it currently exists on the Openvue grid.
More details are in this blog post.
ThirdPersonController, Avatars and Oculus Experiments
Some experimentation with Unity standard avatars (Ethan), some free to use or open source rigged mesh avatars (Unity Chan Kei and Blender Sintel) cameras and third person viewpoint controllers, as well as initial trials of virtual reality enabled unity apps are described in this blog post.
Project Steps
So with the background experimentation and assets described above, September 2015 looked like it was the right time to put some of this together and create a multi-user I-Room in Unity with suitable collaborative systems support and communications technologies, with multiple avatar choice and output to VR head mounted displays. This blog post documents some of the steps nand experiments, as well as the tools or techniques used.
Using Windows 10, Unity 5.2.0f3, SmartFoxServer Pro 1.6.18, Oculus 0.7, OpenSim 0.8.2.0 and OAR Converter 1.3.4.
Base new project main camera (removed later) and directional light Add water, ground plane (removed later) and skybox Avatar and thirdpersoncontroller ethan and simple controller standard assets unity chan controller and camera sintel and mix change player model http://answers.unity3d.com/questions/299425/how-do-you-change-a-players-3d-model-via-a-script.html Content from OpenSim via OARConv Active scripting, avatar seating, teleport movement, media screens, shared, presentation screens, links to external intelligent systems. MMO, chat tool, voice options 2D interface elements in 3D space Handle SFS Login scene ion Unity UI Canvas.
MMO Support – Experiment with Smart Fox Server SFS2X 2.10
We previously used SmartFox Server Pro (version 1.6.9) for I-Room MMO demonstrations using Unity. Smart Fox Server SFS2X (version 2.10) was installed to set up for the MMO elements of the OpenVCE and I-Room Unity build.
Smart Fox Pro and 2X Firewall Requirements
9339 SFS MMO (TCP/UDP) 9933 SFS2X MMO (TCP/UDP) 8842 WebSockets Port 8843 Secure WebSockets Port 8080 HTTP Port 8443 HTTPS Port
If there are messages from a Unity/SFS2X application about security policy failing, see http://www.smartfoxserver.com/forums/viewtopic.php?f=20&t=14065
Basic Unity 5 examples provided by gotoAndPlay(), the company behind Smart Fox Pro Server, were used to guide how to build a simple MMO and chat application, similar to that already running with an I-Room and MMO with Smart Fox Server Pro 1.6.9. These applications with several users logged in and a number of NPCs generated by a server side Python extension did occasionally work. But extension calling with the Python examples was difficult to debug and unexplained errors difficult to track down. The system worked at some times and then stopping working with script loading errors that could not be tracked down. gotoAndPlay() staff were helpful on the forums, but did note that some people had difficultly with the Python extensions and examples and they favoured a Java extension approach.
MMO Support – Smart Fox Server Pro 1.6.18
I had originally wanted to switch to Smart Fox Server 2X and its Unity5 examples to get a head start with an MMO basis that already used the new in world GUI elements for Unity 5. Instead, I have returned to using the working Smart Fox Server pro setup, now update to version 1.6.18, and have begun to modify the GUI elements and login screens to the new Unity 5 Canvas in world screen approach needed for effective Unity VR applications.
MMO Support – Photon Cloud
Photon Cloud is another popular MMO server that works with Unity. A blog post describing the steps to use Unity, the Oculus Rift and Photon Cloud to make an MMO game or environment is available at http://www.convrge.co/multiplayer-oculus-rift-games-in-unity-tutorial and via a YouTube Video.
Initial I-Room MMO with VR Application
Progress with temporarily cutting out the initial old style flat screen Login scene has been rapid, and the next image is a view of the modified I-Room MMO demonstration using the Oculus Rift DK2 running with Smart Fox Server Pro 1.6.18 with scripts modified to avoid the old style flat screen login GUI. This will need to be replaced with a “Canvas” in world 3D view to work well with the new Unity GUI approach and VR. The Oculus Utilities for Unity package is added to the application, and the two cameras (Main Camera for the first person controller and the I-Room screen camera) have “OVR Camera Rig” and “OVR Manager” script components added.
Update as at 30th September 2015
The new “in world” UI is mostly in place for both the login scene (based on Smart Fox login scene) and using an in-world viewable canvas within the I-Room itself for the main I-Room scene. Some redirection of in world MMO chat to the screens has also been achieved. Joystick in world control of the movement of the avatar works using an XBox controller and the standard OVR Camera Rig joystick support. But more needs to be done to allow use of the mouse and keys when using the Oculus Rift. A NPC has been placed in the I-Room (based on the Sintel character) with a navigation mesh that allows it to move within the floor plan of the I-room. Its walk target point can be set using an object which can be moved using the Oculus Rift gaze point, using a tutorial from a book “Unity Virtual Reality Projects” by Jonathan Linowes (Packt Publishing, September 2015).