MSG_CREATENODE fails unless I'm stepping through slowly

I’m working on a networked application in which MSG_CREATENODE works in most cases, except when the server moves an object from a non-networked scene into the networked scene. The server sees nothing wrong, but the client appears to corrupt the network message. StaticModel’s “Material” attribute sees an array of 10238 elements with resource names such as “Yj„” and “ÿeo/õ…” The next component creation fails with “Could not create unknown component type CCCCCCCC”.

I’ve recently discovered that if I step slowly through the client’s component->ReadDeltaUpdate(msg) while processing the MSG_CREATENODE message, when I’m done stepping through Connection::ProcessSceneUpdate the entire node successfully appears in the client’s scene.

What could cause symptoms like this? I might guess that stepping through changes the speed and possibly order of received network packets… but I’ve had a previous attribute corruption error that turned out to be caused by calling RegisterObject(context) on a component more than once so I’m afraid it could be anything and thought it would be best to reach out and see if anyone has seen this before.

I can’t comment on the rest of it, as I’ve not used the networking stuff yet, but the unknown component type CCCCCCCC looks like uninitialized stack memory, assuming you’re on Windows.

What urho version are you using? I did some updates regarding network packet optimization a while ago. Basically it sent out updates in chunks to get linear network load when client count increases. I’m pretty sure there shouldn’t be a problem with that, but can check this in the evening.

We’re using 1.7, we made a fork on Nov 03 2018.

You may want to consider syncing.

And maybe you made changes that would make for some nice PRs?

I would love to sync but our team only has a rudimentary understanding of git and CMake; Our fork was done “manually.” We have someone focusing on learning those skills now.

Three of us, experienced with code but unfamiliar with traditional workflows, have spent months searching through documentation in order to get our project to generate and build properly but if someone has a guide to recommend we would love to continue learning. I personally remember many years of programming classes where we learned all about coding with not a single consideration of where the code gets typed into and how it becomes an application.

On a similar note, we do have some improvements and additions, such as Python integration and OpenVR support as seen in this post, but as seen here and here, git and CMake has been our issue.

1 Like