Hi! Tell me, please, what do you think about creating an open world / MMO in PlayCanvas? For example, creating an MMORPG primarily in space, like, for starters, a simpler version of EVE Online?
As I understand it, a similar project can be implemented on PlayCanvas. What do you think? What approaches are better to use in this case?
1. For example, the “Move the world, not the character” approach? So that the character (spaceship or unit that will leave the spaceship at the station) is always in zero coordinates, and so for all players, and only the server knows the absolute coordinates, which translates the local coordinates of individual players into absolute ones and back.
I think this approach will reduce the load on calculating coordinates with gigantic values. As I understand it, in this case there are no miracles and for PlayCanvas / JS, as well as for Godot / GDScript, it is more difficult to operate with numbers in the billions compared to operating with numbers in the thousands, right?
2. I can create virtual chunks, that is, divide the galaxy into star systems, and divide the star systems into separate cubes-chunks. But taking into account, if we apply the approach that I described above “Move the world, not the character”, this, as I understand it, is not so important for the client part, that is, there is no need to create a separate scene for each chunk, because each player will always be in one scene of space, into which other objects will be loaded and unloaded.
But creating chunks will be useful for the server part, so that the server does not use billions of coordinate values, the server can issue coordinates inside chunks.
Please tell me what you think about creating chunks, is it justified for an open world or are there any alternatives?
3. To prevent cheating, it turns out that we need to use the approach “Actions are transmitted to the server, not numbers”. That is, from the client part it is transmitted, for example, where to what coordinates the user wants to fly, for example, he clicked the mouse to some part of space. Only a certain vector is transmitted to the server, along which the user wants to fly, but the server determines what the exact coordinates will be and at what speed the ship can fly to these coordinates.
Well, here, of course, some values can be transmitted from the client to the server, for example, at what speed the player wants to fly, but the server will check whether such speed parameters are available for this ship. But in this case, so that the client does not wait a long time for a response from the server, it is necessary to implement the “Prediction & Rewinding” approach.
Tell me, please, are there any recommendations and any libraries for implementing “Prediction & Rewinding” in PlayCanvas?
4. Apparently, distant objects that are far from the player do not need to be loaded into the scene. Apparently, it is necessary to create a 2D sphere in the background (although this sounds strange), in general, create a 2D layer in the background, on which to display marks of distant space objects, which in fact will not be there, only marks will be shown. And when the player approaches this object, the object will begin to appear, gradually increasing its level of detail.
I have not yet understood how Level of Detail is implemented in PlawCanvas. I have not yet found any information about this in the documentation. If anyone has information on this topic, please provide a link.
So far I have only found an old topic, from which I understood that the old implementation does not work [SOLVED] Level of Details System