khoi
NNormal
•Created by khoi on 5/10/2025 in #🥂project-showcase
Punch Party Open Beta
https://www.tiktok.com/t/ZTjy4EDRX/
a glorious homecoming of a launch week to the start of me and @kyle’s journey back into the world of VR. we were deep in VR from 2016-2021, shipping games, research experiences, and even enterprise training software. i worked on the apple vision pro and kyle worked on meta horizon worlds. we even saw max’s talk at OC3! after a few years away from vr we felt the call again.
punch party started as a goofy grinding boxing simulator game inspired by roblox and has evolved into a multiplayer bonanza filled with physics based punching combat, hide and seek, and soon pve quests.
we’d love you to hop in and try it, and drop a 5 star written review on the store if you like it!
2 replies
NNormal
•Created by khoi on 5/6/2025 in #🤝ask-a-question
If multiple clients run the following code to clear a RealtimeDictionary, what happens?
foreach (var kvp in model.playerPoints)
{
model.playerPoints.Remove(kvp.Key);
}
Where
[RealtimeProperty(1, true, true)]
private RealtimeDictionary<PlayerPointsModel> _playerPoints;
5 replies
NNormal
•Created by khoi on 5/1/2025 in #🤝ask-a-question
Syncing existing data in a model to a new joiner
When a new person joins and connects to Realtime, I want them to be able to read data from an existing RealtimeDictionary that already has data inside a RealtimeComponent. Where do I do this? In OnRealtimeModelReplaced? If so, how do I access the existing data / when do I know that the local sync has the remote data?
5 replies
NNormal
•Created by khoi on 4/30/2025 in #🤝ask-a-question
Is didConnectToRoom realtime different from the original?
In this example:
class OfflineModeExample {
[SerializeField]
private Realtime _realtime;
private void Start() {
// Notify us when Realtime successfully connects to the room
_realtime.didConnectToRoom += DidConnectToRoom;
// Connect to "My Room" in offline mode
_realtime.Connect("My Room", new Room.ConnectOptions {
offlineMode = true
});
}
private void DidConnectToRoom(Realtime realtime) {
if (realtime.room.offlineMode) {
Debug.Log($"Connected to room in offline mode!");
}
}
}
There is _realtime and then in DidConnectToRoom realtime. Why are these different? I am logging both and they give different room.name results...8 replies
NNormal
•Created by khoi on 4/30/2025 in #🤝ask-a-question
Getting player count before connecting
Is it possible to poll all connected rooms and see how many players are in each so I can Connect a new player joining to a room that is not "full" (eg below a threshold I set)? I saw there is a Lobby API in testing last year, as well as a Rooms API in beta?
7 replies
NNormal
•Created by khoi on 4/29/2025 in #🤝ask-a-question
OnRealtimeModelReplaced what happens if I don't initialize fresh model?
In OnRealtimeModelReplaced, what will happen if I don't initialize the values of a fresh model?
if (currentModel != null)
{
if (currentModel.isFreshModel)
{
Debug.LogError("FRESH MODEL");
currentModel.leftIndexTriggerNormalized = LeftIndexTriggerNormalized;
currentModel.rightIndexTriggerNormalized = RightIndexTriggerNormalized;
Eg, what if I leave a bunch of currentModel.[FIELD] values uninitialized?4 replies
NNormal
•Created by khoi on 4/10/2025 in #🤝ask-a-question
Avatar Physics Interactions
I'm building a VR game where you can push/hit someone and make them move (similar to Orion Drift ball where you can push someone and make them fly backwards).
What is ideal architecture for this? Thinking about using an RPC to send a rigidbody.AddForce event to your client when I intersect your avatar on my side. Considered having your local avatar have networked physics on them but not sure that makes sense from a multiplayer PVP perspective (eg the person hitting should be the source of truth).
So proposal is: I push your avatar on my client, trigger collider event happens, then it sends an RPC to your client which does the physics on your side. Your avatar maps to your rig, which just got pushed on your client, so everyone sees you move.
34 replies
NNormal
•Created by khoi on 2/8/2025 in #🤝ask-a-question
RealtimeComponent has been replaced with RealtimeComponent<TModel>

20 replies