Dropped items are working well and can be picked back up obviously. This works between clients and all that good stuff.
Smooth Player Movement
What makes this an interesting topic is the number of approaches that can be taken. Below is a video I recorded of two clients on the same network to show the result of my current method of smoothing out movement.
Anyone worth their salt will immediately shout out, "Well of course it was smooth! Both clients were on your computer or local network so there was no latency!" Well that is an excellent point but I only send packets every 50ms to reduce the network traffic and CPU usage of the server. This hopefully will allow servers to take on more players.
The server tick rate can be changed so you can easily allow for less time between movement packets.
Server To Client Instance Sync
What server to client instance sync means is that the client can communicate changes made to instances to the server. For example putting wood into a camp fire. The client can tell the server they put wood in a fire but unless that server is given an ID to refer to, it could be any of the other 100,000+ objects in the world. Now clients are given the exact ID of instances on the server side.
This was very difficult to set up due to the nature of programming networking. The world within the client is all fairly simple and most of it is handled by actual objects in the world. However on the server there are no actual objects. Everything is just memory that is being kept together in an organized fashion. A 2D grid that represents every chunk of the world contains within each chunk, a list of every object. The difficult portion is translating those lists into data that can be sent across the network. You can't just say, "GO MY BIRDS! FLY!" You have to write each variable as a specific data type.
As you can see multiple clients can now connect and run around a server together. This definitely is not that exciting but it is another required step to completing the multiplayer. I'm proud of it and all the other work required to get this far.
I went back and watched a few youtube videos of gameplay. I had completely forgotten just how many people support this game and myself. I honestly cried (not sobbed but you know, manly tears).
A Terrible Promise
When Project Explore first released I had promised multiplayer. There was no way I could have pulled it off at that time. I was definitely not capable of such a thing. I had a bit more of an ego and thought I could do anything. That was a lie to myself and everyone else. I am definitely able to develop it now but prior I was not.
Advice from the wise... do not make promises about features you have never developed before.