Search…
Space Overview
A general overview of things to consider when creating a Space.
Before moving on we need to look at some of the differences between building for standard games, and building for web based experiences like Mona. For that we need to look at WebGL.
If you need any help with this process, Join our Discord and we'll help you through!

WebGL Limitations

Mona uses WebGL in order to run in the browser. This limits some of the functionality that you would usually find in a standard game. You can find a detailed overview of WebGL's graphical capabilities here. If you don't know what these are that's perfectly fine as the Template has all this set up for you. But for those who are interested we have the following : The following is used for Mona :
  • WebGL2.0
  • Forward rendering
  • Linear Color Space
The following have limitations with WebGL :
  • Custom Shaders (see Below)
The following cannot be used :
  • Realtime Global Illumination (but baked GI can be, and is recommended)

Custom Shaders

Mona uses the Unity rendering pipeline, however, the Universal Rendering Pipeline Shader Graph cannot be used.
Some builders choose to create their own shaders through a variety of methods for WebGL. We will add additional information soon.
Many builders opt to use 3rd party tools such as, Amplify, which is an node based shader graph that is available for purchase on the Unity Asset store. This Asset can make custom shaders for Mona, as long as they are WebGL compatible.

Hierarchy Best Practices

Your Unity hierarchy should be structured like the screenshot below.
Example hierarchy for Template V2.0

Space Scene

Your Space scene should be at the top, set as the Active Scene if not already (right click - set active scene) and all environment assets that you would like to be minted with your NFT Space should be inside the "Space" Layer / GameObject that must have the Space tag on it.
Do NOT delete the Space gameobject. If the Space Scene or Space gameobject (with Space Tag) are not present, it will not work in Mona.

Spawn Point

The SpawnPoint is best kept as the first object under the Space GameObject / Layer. If your SpawnPoint is placed incorrectly the spawn location will be set to 0,0,0 in the space scene.

Populating your space

The FloorPrefab(DeleteMe) in V1.0 of the template and DeleteMe in Version 2.0 can be deleted and replaced with your own assets. This was placed just as a simple floor example.
you can make assets in external 3D Creation programs such as Blender, 3DStudio MAX, Maya, Rhino, Gravity sketch or any other application that supports Unity supported assets.
.FBX is the most common format for 3D objects within Unity.

Portals

The Portal scene has objects that allow a player to connect to other Spaces in the Mona network.

Artifacts

If you would like future Space owners to have the ability to remove (using Unity to do so), you must include them in your Artifacts scene. There are currently two different types of artifacts :

Artifacts (New name incoming!)

If you want to include assets in your Space that act as hyperlinks to other websites you can use the Artifact Prefab.

Canvases

If you want an object to display an media in the space from an external location (such as an image) you can use a Canvas Prefab. The canvas can be set to autoscale to the media that you assign it during the submission process. Testing this cannot be done in the Playground. Currently only .png and .jpg are supported media types for Canvases. More will be added soon.

Polycount

  • For polycount, we recommend keeping your Space below 100k. If you want to go higher, it may impact performance for the viewers unless you have highly optimised your assets. That said if your space runs well on the Playground (and tested on low end systems) it is acceptable to mint. It is not recommended to test on a high end system and assume it will work well on a low end system however. We are looking at ways to help with this process.
  • Test your build early and often in the MoNA Playground.

Textures

  • The recommended size for textures is equal to or less than 2048x2048, we have found this to be the optimal size to provide a reasonable file size and quality experience. Once you have completed your space and have some room to move in both filesize and framerate, then it is possible to adjust these if need be.
  • A similar category to this is the baked textures from Lightmapping and reflection probes. You have control over how many and what size these are, so find the right balance between number, size and quality for your Space.
  • It is possible to change the size of textures easily inside Unity by selecting the texture and adjusting the size in the Inspector. use this to help optimize textures for filesize quickly.
One way to considerably reduce the filesize of textures is to use the 'Use Crunch Compression' at the bottom of the Inspector on selecting the texture in question. Adjust the setting and apply to test the difference in quality to see what works best for filesize VS quality reduction.

Animation

Animation can be done within the 3D Asset creation tools like Blender and Maya, or within Unity. If the animation is done in Unity then that particular animation is limited to Unity Spaces for now. However if an animation is done in an external application then that may be able to be used in other spaces in the future.
For more information on animating in Unity you can use the tutorial here.

Interactivity

It is possible to create interaction using the Reactor tool. It is currently experimental, but certainly has a lot of potential even in it's current state. You can find more information on this here.

Purchased Assets

It is possible to use assets from other sources, such as the Unity Asset store or other websites that sell 3D Assets. That said, make sure that the Object is designed for low to mid tier game assets rather than high end assets in order to ensure the best experience for end users of your Space. It is possible to optimise high polygon assets using methods like retopology and baking textures to project high polygon detail onto lower polygon detail, but this would add an extra step in the development pipeline. Tutorials on this well be added in the future, but can be found on Youtube easily enough.
If you use any asset, object, or file in your Space that you did not create, or do not have license to use, you must obtain all required permission to use before minting your Space. Make sure to read all license files carefully.
​

Moving forward

Now that we have looked at some key factors of creating a space that works well in most situations, lets get to actually making the space!
Last modified 1d ago