Game development is something that I’m very passionate about. I have been working on a new game that I hope to release within the next year using UE4. Throughout this journey before getting into UE4, I created a simple royale IOS game. One thing I have noticed that is very difficult to accomplish is multiplayer. The amount of variables that come into play are many and depending on the type of video game that you make, can be very difficult or simple. On the very difficult end of the spectrum would be turn based games, such as call of duty. These games require player position to be as close as possible to real time. There are many ways to accomplish the desired behavior, either by interpolating or extrapolating the players position. In a sense what I have learned when building the entirely native IOS app is that for a turn based game, interpolating is the best solution. When extrapolating you have to constantly try and predict the remote clients using their speed, direction, current position, etc. This becomes inaccurate as the players are unpredictably turning constantly. This might be a better solution for racing games where the cars usually just go forward so it’s fairly easy to predict where the car will be in the next second or so.
In my royale ios app, I had to design my own server. Initially I used a python server, which worked fine but wasn’t very well developed. So I completely remade it using nodejs with the socket io framework/api. This in combination with an interpolating system, made gameplay very smooth. In a sense you are always viewing the past, but at 30-60 ticks a second. I must say that it becomes almost unnoticeable. This is just the tip of the iceberg however, I learned that the response times (ping) from client to server and vice versa, are a big headache themselves. I am very glad that I took the time to go through all of that before using UE4, which basically does it all for you. You just set some priorities, etc and it just works. Which takes all the fun out of it but makes it all easier. There was little to no documentation on creating a server for IOS that is real time or the illusion of it. I think I will be creating a tutorial or website where I can upload information, user friendly content for beginners to start learning.