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.