- Windows
I'm going to pretend to know what you guys are saying and go along with it.
Awards
- â’¸ 6.9 from
person
Comment: Yeah that's what most of us do - â’¸ 1 from
[WUT] Adam
I'm going to pretend to know what you guys are saying and go along with it.
I think you should worry about a smooth game play one you figure out the how to make it work first.
Ya know, focus on one thing at a time.
Varrience Yeah, I've quickly discovered that it is really easy to hit that rate limit.
Captain_Jack_Sparrow Smoothness is a priority.
Letti42 That is almost exactly what I am doing, however it fails utterly and completely when changing directions.
DragonFireGames is there some way to offload player position data to another source outside of cdo?
peptobepto Well, before the free repl shutdown on new years, you could offload it to a repl with a hacked JSON request using loadImage().
DragonFireGames poo
DragonFireGames use glitch or netlify , same thing
DragonFireGames i had issues with that too, what exactly isnt working with it?
Letti42 It is hard to predict how the player will turn in the future and then do it smoothly while still making it feel responsive.
DragonFireGames well you need a buffer there.
think of it like a live stream on twitch or youtube. Videos are sent in chunks. When the video is received, you don't play it immediately. Otherwise, if there's any sort of delay there won't be a seamless play of the live stream for when the next chunk arrives.
In order to prevent this, Twitch and YouTube have a delay in their live stream of anywhere between just 2 seconds up to a whole minute! You need to have the same with your multiplayer game.
So, instead of immediately showing player movement, have the program wait around half a second. This creates the same "buffer" that live streaming utilizes. This may increase your latency (affect the responsiveness), so it's important to not keep it too high.
You're gonna want to append the movement in an array that, like I said before, is being run through a TIMED LOOP, so when you're mirroring user movement it appears seamless.
here's a codepen i made that might help you visualize it. Notice how the first array doesn't get too big or too small. That's because of that loop i mentioned
https://codepen.io/Letti42-the-lessful/pen/dyrMqdP
Letti42 But then the other players appear way behind where they actually are. Sure, I can do it with an buffer, but makes it too outdated for any type of useful multiplayer.
I've been planning out an online multiplayer game for a while now, and I thought I'd share my ideas. It's a platformer game, so if you're still planning on making a slither-type game this probably won't be very helpful, but I'll put it here anyways.
My idea is for a platformer game where 2-5 players are put in a small level with a few obstacles, and it's a race to get to the finish first. The player can take different paths to try and get to the end first, before the other players, and there are various objects that can be interacted with in different ways.
For the online multiplayer aspect, the player's movement and collisions are entirely local. All of the keyboard inputs and movements the player makes are processed the same way as a traditional single-player game, so there is no lag between inputs and movement for your own player. In a different part of the program, there's a loop that continuously uploads your player's data, and then reads the other players' data. The data includes x and y coordinates, velocity, and other metadata (such as player username and costume). When this data for another player is read, the game immediately updates the corresponding sprite with the coordinates and velocity.
If this was the all for the multiplayer network, the other players' movement would be extremely laggy and the sprites would jump from place to place. I came across this project on KA that is able to predict the future movement of a player by looking at the current velocity and anticipating future collisions. This could be implemented into the game so that when given a player's last known coordinates and velocity, it can project the player's current coordinates and velocity with relative accuracy. Collisions are also predicted. How far the model predicts future movement can be adjusted, so the program could calculate latency between when the data is updated and read, and use this to change the prediction time of the model.
Right now I don't have any proof-of-concept for this, it's just a theory, but I do think it's possible if done correctly.
Binary_Coder Which is what I am doing for a different game. I predict using velocity.