Camobiwon
Camobiwon
NNormal
Created by Camobiwon on 12/3/2024 in #🤝ask-a-question
Best way for syncing data "generically" in Normcore?
I have a strange use case where I basically want to reuse the same model type but allow different types of data. The best way I can think of off the top of my head is via byte[], however I'm unsure if this is ideal and additionally I'm curious what methods you guys may be using to quickly covert to and from a byte array?
9 replies
NNormal
Created by Camobiwon on 9/4/2024 in #🤝ask-a-question
How does RealtimeTransform's new SnapTo exactly work?
Pinging @Max silently since I assume you know, but as the title says, how does it work? (Bot won't know for sure lol). Based on decompiling it seems like it sets a _skipInterpolationProperty which seems to skip interpolation for the next frame. My question is how exactly does this work? As it's an unreliable property so it's of course not guaranteed to happen, is it that case so it goes out in the same packet as the other unreliable updates? My guess is that it is the case and by doing so, when clients receive the new updated position, it also receives the property at the same time telling it to skip, which then teleports it immediately. Basically I just want to know how the data is working in that case, as I want to add it to my own rigidbody networking component, and want the details to be right.
6 replies
NNormal
Created by Camobiwon on 8/1/2024 in #🤝ask-a-question
Did the Normcore timeline change in recent updates?
Hi there, wondering within recent updates of the past few months or so, has the timeline class changed? I know it's probably not suggested to use it externally, but I do, and while I expect no support with it, I mainly just want to know if it did change to see if I broke something, something changed there, or if I am going insane hahah.
6 replies
NNormal
Created by Camobiwon on 7/16/2024 in #💭feature-request
Toggleable warning for reset RealtimeView GUID
No description
3 replies
NNormal
Created by Camobiwon on 6/13/2024 in #🤝ask-a-question
Disable welcome message on startup?
No description
24 replies
NNormal
Created by Camobiwon on 3/24/2024 in #💭feature-request
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 the same, since there is no additional parameters, name changes, or whatever.
4 replies
NNormal
Created by Camobiwon on 3/12/2024 in #💭feature-request
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 nightmare, and ideally I'd like to be able to use these in a non-networked context, such as a main menu or something else. If this could be possible / implemented that would be awesome and save countless hours for if I ever needed this case.
13 replies
NNormal
Created by Camobiwon on 3/11/2024 in #🤝ask-a-question
Are model value updates all received at the same time?
As stated in the title, if I updated multiple values on a model at the same time (Reliable ones for context), would it be guaranteed that on the receiving end that all these values would be received at the same time? I know for unreliable this isn't the case (At least I believe so, correct me if I am wrong), but if this is the case for reliable ones this could help drastically simplify some of my existing code around, which would be great. As an example, if I had a transform and my model contained position, rotation, and scale. If I set all 3 of these at once, could I consistently expect that they would all be received at the same time?
18 replies
NNormal
Created by Camobiwon on 3/11/2024 in #💭feature-request
Auto-Requesting RealtimeTransforms (Rigidbody) on connect
No description
10 replies
NNormal
Created by Camobiwon on 3/11/2024 in #💭feature-request
Network Profiler
No description
1 replies
NNormal
Created by Camobiwon on 3/7/2024 in #💾sample-code
GUIDManager
I posted a very old version of this a long time ago (https://canary.discord.com/channels/393839515074297858/677646675560366141/981127682437836812) but have improved this script a lot over time and figured I would share a much better version of it until we get some official GUID component. This is intended for you to add a GUID int to your model, syncing it on start, and registering it to the GUIDManager's dictionary. Using it is extremely simple, let's say you had a Ball component reference you wanted to sync, first you'd make your ball component either derive from the simple GUIDModel pre-implemented one, or simply add your own int to your existing model (Check GUID model for how to set it up in OnRealtimeModelReplaced). Then in some other script that wants to send a reference to the ball, simply send the GUID of it (Typically ball.GUID as the ID reference), then when it is received on your local or remote client, simply do GUIDManager.FetchComponent<Ball>(guidOfBall) or alternatively GUIDManager.TryFetchComponent(guidOfBall, out Ball ball) if you prefer the bool return type for if it was found in the dictionary. My old implementation used to use strings of GUIDs to send for reference but I found this was very inefficient and changed it over entirely to ints. ints are 4 bytes compared to the GUID string being about 80, dictionary lookup hashing is literally free as the int is it's own hashcode, and many other efficiencies are gained over strings, and still allows for about 4 billion entries which is a crazy high amount. Hopefully you get some use out of this and find it useful :)
5 replies
NNormal
Created by Camobiwon on 3/7/2024 in #💭feature-request
GUID Component
This has been discussed in the past and AFAIK is planned to be added but figured I'd add it as a thing to this new forum. Basically, the idea of some standalone component that you could add one or multiple of to a game object and it would sync some ID across all clients when the object is awake / spawned. This is extremely useful for keeping a shared reference over network of some object you want to keep track of. An additional very useful addition would be the case of the GUID Component having a component reference on it, something like "assigned component", so when you receive a reference to that GUID component over network you could perhaps do guidComponent.assignedComponent to fetch the component it's bound to over network, saving a GetComponent call and allowing for multiple of the same component type to be synced via this component. Would be a great official addition as doing it manually right now is kind of a pain. Hope it can get added at some point and happy that it's already being considered!
32 replies
NNormal
Created by Camobiwon on 3/7/2024 in #💾sample-code
Primitive Models
These are stupid simple but help me with some fast prototyping, just when I need a networked script with a singular synced and primitive variable.
2 replies