Sine.space by Sine Wave Entertainment is a multi-user virtual world based on Unity3D. A previous blog post showed early experiments while the system was in test mode in 2015.
The platform is now available to all, and users can add one free “region” using an addon Unity3D “unitypackage” merged with custom content.
The OpenVCE region is “live” in Sine Space and can be visited in any WegbGL compatible browser via http://go.sine.space/openvce or http://sine.space/locations/openvce
Other tests of Sine.space for Gerry Anderson’s Black Rock Laboratory (Supercar) and Space City (Fireball XL5) regions, RGU Oil Rig and NASA International Space Station (ISS) are in separate posts. These are not publicly accessible and are mounted on development servers for testing only.
Sine.space regions can be accessed via a WebGL capable browser such as Mozilla Firefox or Google Chrome, or via an installable desktop application (download via link at http://sine.space).
An avatar can be moved using the usual WASD or arrow keys, and F(ly) mode can be toggled with “F” and then the E and C keys move the avatar up and down (Page Up and Page Down as alternatives may be added soon).
It may be worth noting that Alt+U toggles the interface elements on and off in the viewers, if you want a clear image for snapshots.
Sine.space Creator (Live) and Curator (Preview and Test) Servers
Previews and testing is done in http://curator.sine.space and live regions are served via http://creator.sine.space. There is a limit of 128MB on the download size of a region on the live server for the free account. Larger region downloads are available via paid subscriptions on the sine.space platform. The region size is reported when a region is uploaded from Unity3D to the review “curator” server so you can see if it will be within the size allowed for free or paid accounts..
Trial using the OpenVCE Region
A test of adding a region into sine.space was done using the OpenSimulator OpenVCE region converted via OARConv tool to Collada meshes suitable for import to Unity3D (see this blog post for details of that conversion).
Register a sine.space user as a space developer “creator” (http://sine.space/creator/) to get access to the relevant SDK and Unity3D package required.
Create a region API key via that account – via the API keys link at https://curator.sine.space/
You need to create a Unity3D application incorporating the sine.space Editor unitypackage available via a link accessible only to registered and logged in creators at https://sine.space/creator/resources/ (EditorPack-08p1.unitypackage as at 15-Nov-2016). Instructions for the process involved can be found in these two YouTube videos.
Create a new Unity3D base application using the following process, which you can save and reuse for any specific sine.space region creation. The process is as follows:
- Load in the sine.space Editor unitypackage (EditorPack-08p1.unitypackage as at 15-Nov-2016) using Assets -> Import Package -> Custom Package. This adds an extra menu item to the Unity3D editor menus – “Space”.
- Use Space -> “Install Editor Pack Settings” and then Scene -> “Scene Settings”. This will add a “Scene Export Settings” item to your Unity3D project. Click on that and set fields appropriately. The content type will be “Region”. Give it a name. You can “reserve” a URL for the region for when it goes “live”.
- Make sure you have some sort of ground plane which has collisions set so avatars do not fall through the floor. This can be removed when your region content is added if that incorporates its own ground terrain or floor.
- Add the sine.space provided “PlayerChar” (a blue male avatar) to allow local testing of the region in the Unity3D editor.
- Add a sine.space “Landmark” to act as the spawn point when avatars enter the region in sine.space. In the project hierarchy use Create -> Create Other -> Landmark. Then select that object and tick it as ‘Spawnpoint’ and select its Type as ‘Landing Zone’. Place it so that its baseline is a metre or so above the ground level. So when avatars spawn their feet are definitely above the ground plane and fall gently onto it.
- Remove the Main Camera as that will interfere with the “PlayerChar” avatar or live avatars when the region is used in sine.space.
- [OPTIONAL] In the Unity3D editor Window -> Lighting settings swap the Ambient Source from Skybox to Gradient, and raise Ambient Intensity from 1.0 to 1.75 to prevent over harsh shadows and lighting. If you want WYSIWYG between Unity3D editor and sine.space creator make sure Linear lighting is on via Edit -> Project Settings -> Player, under “Color Settings” there is an entry for Color Space – make sure it’s set to also Linear, not Gamma.
- Save this setup as a Unity3D scene and save the Unity3D project as a base for future region creation.
Now you can add your own region content into the project, testing it with the incorporated temporary “PlayerChar” to walk around it.
Lighting was a bit harsh when the OpenVCE region was first tested as the region content. Adam Frisby at Sine Wave Entertainment suggested to use Unity3D editor Window -> Lighting settings to swap the Ambient Source from Skybox to Gradient, and raise Ambient Intensity from 1.0 to 1.75. He also found a specific issue with a shader on the “Tweet Bubble” object, which was subsequently removed in the Unity3D project.
If you want WYSIWYG between Unity3D editor and sine.space creator make sure to switch to Linear lighting too via Edit -> Project Settings -> Player, under “Color Settings” there is an entry for Color Space – make sure it’s set to Linear, not Gamma.
Upload to sine.space Servers
You might want to make a fresh Unity3D scene into which these changes can be made, prior to upload, so your base project and content remains intact for continued revision and testing in the Unity3D editor afterwards.
- Remove the PlayerChar character from the Unity3D project inventory before uploading the region to sine.space servers. Note that just unticking the box which shows the PlayerChar in the project is not enough as hidden objects are still included in the final result. This is because components can activate hidden objects via scripts, etc.
- Add into the project hierarchy a new empty game object and name it something like “Space Post Zone”. Open it in the Inspector and add a component called “Post Zone”. This gives many options for settings that will be applied to your region and how it is rendered. In here, for example, you can turn off depth of field blur with a tickbox. These are only applied on sine space servers not locally in Unity3D editor player, and may cause errors there.
- Check the “Scene Export Settings” settings to ensure the content type is “Region” to check the region name, URI and other details are correct, etc. Most defaults for the various settings should work for testing purposes. You can add in the custom icons, etc if you wish, or test without these.
- Login via the Unity3D editor Space -> Upload Settings” to allow for the upload to take place. This will fill in your API key which you should have previously created via https://curator.sine.space/.
- Scroll down to the bottom of the “Scene Export Settings” in the Inspector and you will see the button for “Automatic Submission”. Hit this to begin the region packing and upload process.
The OpenVCE region, unoptimised and with all the OpenSimulator region content intact was reporting a 226.24MB size.
After the processing feedback messages provided by email@example.com are provided, the final message indicates the size of the download required for the supported delivery platforms. These are the sizes that will be needed for the live delivery sine.space platform. So the LARGEST of the sizes reported is the figure to use when calculating if you can fit in a free region (limit 128MB). For OpenVCE this was…
webgl (92mb), win32 (172mb), android (171mb), ios (169mb)
In the “Scene Export Settings” settings, this can be optimised, especially for texture quality. WebGL has a smaller download size as its textures are less detailed. The “Standalone” size is larger by default as it uses higher quality settings. Try adjusting these to change the download file size that will be required. E.g. I changed the max texture size to 512 from 2048 for the standalone. make sure you hit the “Apply Compression Settings” button under Tools in the “Scene Export Settings”.
You can also remove objects from the project. You must really delete them from the Unity3D project hierarchy since just unticking the box which shows the object in the project is not enough as hidden objects are still included in the final result. This is because components can activate hidden objects via scripts, etc.
A suggestion might be to create a new Unity3D scene from the full project and only delete the PlayerChar and unwanted items in that scene.
After this the upload file size was 213.68MB and the download file settings were lowered to:
webgl (78mb), win32 (127mb), android (64mb), ios (62mb)
Reducing Texture Size in the Downloaded Region
Advice from Sine.space developers to reduce texture size in region downloads was to set was to use the “Scene Export Settings” “Texture Compression” section. Allow Crunch and set the Crunch Level to 50 (100 is lossless, 0 is maximum compression).
Working on Multiple Development Computers
To be able to upload to the same region name and URL reservation name, you can copy the Unity3D project folder to another and make changes there. This will also work across development machines. This has the effect of copying the scene file with the scene settings component in it then it will resume automagically and allow the same region name reservation. Otherwise in a new Unity3D project folder, you need to use the ‘Resume ID’ in the Scene Export Settings, and fill in the Resume ID from either Space -> Items & Settings, or http://curator.sine.space/
Entering the OpenVCE Region on sine.space
Look in Standard Assets -> Environment -> Water -> Prefabs… and add WaterProDaytime set at 0,0,0 and scaled to 300,1,300 (to extend beyond a 256mx256m OpenSim region). Then also add WaterProNightime set at 0,0,0, rotated to flip it upside down to act as a surface water layer when viewed from underneath 180,0,0 and also scaled 300,1,300.
For each type of water make the Water Mode be “Simple” rather than the default “Refractive” or the other “Reflective” option, as that will look better in the various Sine.space viewers.
Scripts, Seats and Furniture