Normcore

Laila Gamaleldin, March 2021

Background

Normcore is a Unity plug-in that makes projects multiplayer. Normcore works on Windows, Mac, iOS, Android, PlayStation, Xbox, and Nintendo Switch. Normcore is built by Normal, a virtual reality company. Whereas most multiplayer Unity solutions use RPC to synchronize states across players, Normcore uses a type of database called a datastore. The datastore saves all of the information about the state and shares it with each of the players. One large pro of Normcore is that unlike other plug-ins, it's built with VR/AR specifically in mind.

Community

Normcore is relatively new so it doesn't have the same cult following that some other plug-ins do. They do however have a pretty substantial Discord server.

Documentation

Normcore documentation can be found here. Due to its novelty, not many documentation resources exist outside of Normcore's website.

Some other helpful tutorials:

Pricing

  • Prototype

    • Free version

    • 30 concurrent users

    • 10 rooms

    • 1-hour session limit

    • 50 room hours

    • 120GB of bandwidth

  • Pro

    • $49/mo

    • Unlimited concurrent users

    • Unlimited rooms

    • No session limits

    • 1000 room hours ($0.01/hr after that)

    • 3TB bandwidth ($0.1/GB after that)

  • Private

    • Pricing unclear

    • Lets you host on your own servers or a private version on Normal's cloud infrastructure

    • Automatic scaling

    • Custom plugins

    • Fully manages (devOps team)

    • Host on any machine

    • Source code access

Features

  • Automatic Sync

    • You can add a RealTimeTransform component to any object for automatic transform synchronization without writing any code

  • Physics

    • Normcore offers interpolation and robust networked physics. This makes sure that movement is seamless across all connections.

  • Persistent Spaces

    • Multiplayer objects are consistent between sessions

  • Voice Chat

    • Provides industry-standard VOIP and audio streaming capabilities

  • XR Compatible out of the box

    • Instant avatars

    • Voice chat

  • Automatic delta updates

    • Only the minimum information needed to keep players in sync gets stored. Normcore tracks what needs updating and takes care of it while leaving anything that doesn't need it alone.

  • Low latency

    • Normcore lessens latency through the way it sends packets. Typically, a networking plug-in will establish a maximum packet size and try to send information in the smallest number of packets possible. Packets need to be transported along several steps, each of which can have its own maximum packet size. If a packet is too large at any point it ends up being broken down and put back together, which adds to latency. What Normcore does is they make their largest packet the exact size that it needs to be to avoid having to restructure along any step. This helps with latency.

    • industry-standard VOIP compression and buffering

  • Intelligent Serialization

    • Normcore only serializes fields that have changed. Normcore pre-allocates the buffer that will hold data for an outgoing packet This reduces CPU use and. optimizers runtime.

  • Secure Transport

    • Normcore encrypts all packets by default

  • Server Scaling

    • Normcore has a large pool of available servers that implement intelligent autoscaling

    • Normcore has servers around the world and makes use of Google's fiber-optic network

Disclaimer

This information was largely gathered from the Normcore website, so it may not be the most objective.

Review (Jennifer Wang, May 2022)

Advantages of Normcore:

  • beginner-friendly - there's no need for scripts to integrate Normcore and the set up for a multiplayer app is pretty straightforward. If you want to add Realtime properties and model to objects in scripts, there is also a lot of code that is automatically generated for you to simplify the syntax.

  • built-in components - Normcore's package library comes with several built in components, including avatars and voice chat, as well as Realtime Transform which you can add to any object to synchronize it across states

  • persistent data - Normcore users have the ability to maintain the multiplayer objects across sessions

  • smooth synchronization - Normcore lessens latency through the way it sends packets. All the changes are updated realtime, and there isn't much delay between a user's action and the visuals.

Disadvantages of Normcore

  • lack of flexibility in assigning roles to different users - every user has the same view, as they are all considered to be the same realtime player, and so it's difficult to customize views for specific users

  • vague documentation - the documentation could be more specific with examples, though it is very organized.