4 bytes of integer is always better than 9 characters of string… multiply times number of components * number of objects… it makes a huge difference.
Sim-ethereal already does this for standard things like position and provides the tools to do it efficiently for other things. That’s why I can fit a whole object position update in something like 22 bytes.
Which sim-ethereal already does. Plus you have tools for client-side interpolation.
Sim-ethereal already does this, too.
The “physical position” lives on the server. The client is only a view and it’s indexing into the interpolation of known good data.
Only because you didn’t read it.
Probably not… unless you want to slow things down further.
Most people who want to solve the same issues will use (at least as a starting place) the tools already provided.
4 bytes of integer is always better than 9 characters of string… multiply times number of components * number of objects… it makes a huge difference.
9 characters of string = 18 bytes of UTF-8.
Ok, I’ll play along… but this is getting ridiculous so this will be my last reply.
{
myPosition = {
x = “123.56”
y = “456.78”
z = “901.23”
}
}
Is always always always going to take WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY more space than three floats stored as binary: 3 * 4 bytes.
Moreover, you can often pack those even smaller like Sim-etheral does and fit it all 5 or 6 bytes.
JSON/XML/etc. are nice when you must embed the structure in your data because you will be interoperating with 100 different types of clients and servers. But it’s SLOOOOOW. Dog slow. Butt slow. Snails are running circles around it.
If you control both ends of the channel then there is no reason to waste space and time with the structure. Both ends already know the structure.
Your entire server architecture is based on enterprise-style development practices that just don’t work for real time gaming.
You should read about GAME network synchronization and specifically “entity component systems” as a game architecture. If you want to scale up more than 1000 players at a time you are very much going to need something like an entity system.
That’s it. I’m out. It’s up to you to fail or succeed now. You’ve already got failure in the bag… so hopefully you can come to your senses soon.
@pspeed, why pointing to your libraries when he doesn’t give a shit on them anyway? In my opinion, he rather should learn the basics of the JME networking api first before going on with those advanced libs.
However, I have the feeling that he is not really talking us seriously anyway…
Did you read last Paul’s post? he provide you a tool to solve your issue. do you really want to write your own?
and yes, this topic is useful. It provide a good understanding of synchronization in multiplayer, since experienced developers point to that so many times, that it is very hard to miss that.