A friend and I are making a multiplayer space dogfighting game. It’s going very well but at some point, we’re probably going to want more room. It’s not really a problem for now to be confined to a 4km cube (physics), we’re not even using physics, so until we do, we can even go a bit larger than that without any real issues.
However, our maps are mostly empty space, so it’s got to be possible, somehow, to use more coordinate cubes and have a larger multiplayer game area. No?
Are there any example projects, plugins or tutorials on this subject?
I would use world composition but to my understanding that is intended for landscape maps and doesn’t give you any extra height. Is this correct?
Could I use level streaming and then always load 27 (333) cubes, so you always have the level you’re in and all the adjacent ones? With the very empty levels, the server or even the clients, should easily be able to hold many of them in memory simultaneously.
Origin rebasing only works in singleplayer, world composition wouldn’t help you either since that’s just content streaming.
Ultimately you’re running into the constraints of the engine; unless you want to make modifications to the engine, you’re going to have to work within those limits. Games like Freelancer broke their universe up into sectors separated by warp portals for this reason.
I don’t want to modify the engine. I was not aiming for something as large as Freelancer. It’s not a “world” or “universe” concept I am aiming for. I just want good scenarios and multiplayer.
I was hoping that there might be a way to extend the play area a bit, so it was possible to have slightly more room, so distance could be more of a thing. The speeds involved are probably going to around 200m/s.
I guess I will just try to stay away from using physics then, so maybe I can be okay with 4-20km “single cube” levels. 20km should be good enough. That would give a few minutes from end to end, definitely enough to matter in terms of tactics.
20km is the absolute maximum size right? I can’t just go: “Oh, but I am fine with 10cm inaccuracy!” And then go up yet another digit?
Hi Strombonni, sorry I did not see your reply sooner!
The scaling trick doesn’t necessarily work so well. It does give you something but the view itself doesn’t really scale down. We tried this and are using scaling to an extent but the effect doesn’t feel like it’s a 1:1 relationship (subjective, I know). If you scale down speed as much as size, it has a tendency to look like what it is, i.e. small objects moving slowly, rather than big objects moving quickly but further away.
Mostly, the tricky bit about high speeds seems to be keeping the accelerations in check, so you’re not all over the place. This is more a problem of frame rates and server tick rates and latency. If something moves X times its own length in one direction one second and then Y times its own length in another direction the next second, you need very frequent updates.
Map size and precision does not really seem to be an issue for our project. Here the high speed and player size actually helps a bit, as low precision mostly affects you at low speeds and with small objects. You basically end up in the same place regardless of scale, as the precision you need is dependent on the size of the objects you have to know the position of. So far I am unable to find any precision issues for my purposes. I currently believe that we can have a play area for our project of roughly +/- 1000km without issues, which is more than enough for us.