Normal

N

Normal

Join the community to ask questions about Normal and get answers from other members.

Join

🤝ask-a-question

💼jobs-and-opportunities

💾sample-code

🥂project-showcase

💭feature-request

✨normcore

💬chat

🚧wip-and-updates

Control instantiation rate on connection?

So if you have 30-50 rigibodies when connecting to a room there is a pretty heavy duty hiccup. A way to stagger that instantiation burst that was built in would be pretty nice.

peer 2 peer mode

this one is a bit out there but maybe we can get a peer 2 peer mode with the normcore servers acting as lobby and relay only if a direct connection is not possible. Save server costs while keeping the same codebase....

Add an event for when a whole model is updated after each property is done updating

A common issue people have is that they check the first property update event but find that the 2nd property hasn't been updated yet. A more useful event would be when the whole model is done updating then you wont get so many noob mistakes....

Possible option to force firing updated model event

Not sure if there are technical difficulties with doing something like this, but to have an event (or maybe just a property setting) that would fire the event if the model was sent an update even if the model didn't change value. This would make it so you could easily use a simple int to continously play various sound effects or trigger various animations from just an int becuase it could keep firing?

Custom update rate for far away models

We have a large scene that has many RealtimeTransforms throughout it, including avatars. We would love to have all models update less frequently if the player if further away from them. For example, if Ann is on one side of the scene while Bob is on the other, their avatars shouldn't update for each other at all until they get closer. In addition, they shouldn't be streaming each other's audio because they wouldn't be able to hear each other. You can get around this by sectioning off the scene into smaller rooms but then you increase you room hours and thus increase the cost of Normcore. Not ideal....

Support for all primitives

Why can't we sync something like a long over the network?

Undeprecate IsOwnedX

Just a nitpick, but ownership flags ending in "Self" (i.e. "isOwnedRemotelySelf") was really confusing when I was getting started. I understand the purpose is to differentiate from hierarchal ownership, but hierarchal ownership flags already end with "InHierarchy" (i.e. "isOwnedLocallyInHierarchy") so the distinction already exists. It simply confuses newcomers searching for the proper flag.

Disable Local XR Avatar

It would be nice if there was a tick box to not create a local avatar. If you try to disable the local avatar (destroying or setting inactive) other avatars do not work for some reason. My current solution is looping through the renderers in the local avatar and disabling those. This is a useful feature in the case you want: - Your local player to be independent from the avatar system. I wanted models on my local player prefab so that they are visible in single player without the avatar manager. - Also, it's useful to only have one player 1 running around the scene in multiplayer, instead of one bodyless player 1 and one avatar for player 1....

Let me optionaly pick a server to join

At the moment Normcore pings clusters and picks for me but I want to see all the servers and pick myself. Maybe you are playing with a friend in another country and want to pick a place in between or maybe certain servers just work better for you. In any case, more choice and control is better....

player management

Being able to ban people in your game or giving moderators into your game. I’ve been trying to see how to kick people but I don’t know how

Clear a RealtimeArray

I understand that we can't have a remove for a RealtimeArray to avoid race conditions, but clearing the entire array is a very useful operation for this powerful structure! Clearing it would make the structure even better! Let's clean data! 🧹

Overridable Model methods

As the title says, being able to override some model methods by having them be virtual, such as RequestOwnership, SetOwnership, and ClearOwnership would be very nice as I cannot do this on my own. Yes I know I can abstract them out, but it can be confusing to other's in the project when they see RequestOwnership still available and bypassing perhaps any potential safety checks / additional calls. I believe this should be pretty simple and AFAIK not break anything as the signature would be...

Dedicated server option for unlimited?

No idea how technically difficult it is to allow it but even if it was just for data and not audio it could make running AI's considerably easier. And we would be talking about drastically smaller amounts of data than enterprise customers.

Micro-optimizations to allow more dynamic objects

When profiling my game, normcore's Realtime.Update is consistently the most expensive part of my update loop. Even in a best case scenario, when idling in my game, when most objects are not moving, and we're not spawning any synced objects.
The most expensive method when idling is RealtimeModel.OnWillWrite. Within that, the most expensive OnWillWrite is RealtimeTransformModel, and within that RealtimeTransformRigidbody.OnLocalModelWillWrite is most expensive. A quick look at a deep profile sample shows some micro-optimisations which could shave a signficant percentage of the CPU cost of updating RealtimeTransforms.
From the call counts in this screenshot, you can see there are: ...
No description

More server regions

I know you weren't going to add China servers but I'll add a request for one anyway 😛

Server state website

Having connection issues? Check straight away if it's a server issue or something else. Usually we have to ask on discord if anyone else is having connection issues and then wait for an update on the situation....

Offline Mode

This has been pitched before for sure, but I am gonna make a thread here so it's more known that it'd be a wanted feature. Basically the ability to have Normcore components still be able to function even without a connection to a server. I am not sure of the underlying technical implemenations for this, but I'd like to believe it'd be theoretically possible. Stuff like my player / interaction / world objects are so tied into network stuff that getting it working in singleplayer would be a nigh...

Auto-Requesting RealtimeTransforms (Rigidbody) on connect

I do not believe this is a base feature currently, but having Normcore automatically take ownership of a RealtimeTransform with a rigidbody attached when you are the first joiner would make some additional logic a lot more simple and save new developers the headache of wondering why their objects are floating in midair on first connection. (the image may or may not have been faked for dramatic effect)
No description

Auto-Reconnect

This is pretty simple to do yourself but I've seen lots of questions about this on discord. Also if it were a built-in feature you could enforce your own back off rate to prevent servers from getting slammed when they come back online. Just add a toggle for auto-reconnect and maybe a callback in case there are things you need to happen on reconnecting....