• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

HIVE

Retera
Retera
I took a break and played Diablo 2 Resurrected for a while. It was a good time, but so that way my hobby hours that get spent on Warsmash have not been spent on it for a bit. Also, when I was working on it, I've been trying to do some internal stuff that doesn't show in order to try to prepare for having the "Single Player > Custom Game" menu on the menu screen work as expected (it does not work at all yet and is not available yet on Warsmash).

Last night I was messaging to someone about social media on discord (Warcraft 3 "Factioneers" server) and I ended up telling the guy we should do meaningful things with our lives like working on Warsmash instead of chatting, and then I went and I opened Warsmash after that and played Booty Bay, but it was set to giving me the night elves and there is no Root in the game and no wisp harvesting, so it's not a fun experience and the player can't do anything. So, I went ahead and coded in the wisp lumber harvest, which was fun, and shared a few short videos of that on discord at the time.
  • Like
Reactions: Rui
Retera
Retera
I've not been very deliberate about having a place to share Warsmash updates other than the official Hive forum. I figured that I would promote Warsmash more when it had that feeling of polish that two players could easily join a multiplayer session together and play a map together over the internet using an open source Warsmash server, and that they would be able to have fun for several minutes without disconnecting. The closest I got to that was an in person social event when I set up three computers using the windows CMD to be together in a game of Warsmash and played with people I know in real life for a 2 hour session. It showed that in principle the underlying mechanics of unit commands and such are stable, but the system only worked because it was running over a low-latency LAN. For long distance internet, the current tests that I had created were so incapable of maintaining a game that all attempts I ever made at playing a multiplayer session ended instantly. The game has to be programmed to expect network latency moreso than my first test -- but admittedly I just spent a couple of hours one day hacking that first test together, and I just haven't gotten back to it since then.
  • Wow
Reactions: Rui
Retera
Retera
So I guess where I'm going with this is that I have in mind that maybe I'd make a discord server or something for Warsmash once it's something that non-experienced users could play and appreciate but until it gets to that point, I worry that advertising too much to users would feel kind of like a disrespect and trolling to them.
  • Like
Reactions: Rui
Rui
Rui
Makes sense not to advertise excessively so as to rise people's expectations too much. You did good by laying off a bit and enjoying Diablo II :)

I know nothing about synchronizing multiplayer game state. I think I remember DSG writing something about that. Theoretically, how do you do it? Just send packets with things your computer is doing and have the server acknowledge and distribute them to everyone so all players update the state simultaneously?

I've spotted the wisp lumber harvesting videos. Gonna watch them now :D
Retera
Retera
There are a lot of possible ways to implement state synchronization. I implemented a turn based strategy game of my own in the past that was not Warsmash and that game would send game state every turn and kick players whose state did not match. This meant that disconnect errors always included a relevant description of the reason for the "disconnect" which as far as I know Warcraft 3 desync detection lacks. For example, it would give an error saying "Unit 233 of Player 4 had 23 Hit Points on the server but 24 Hit Points locally!"

So, I think that on an RTS sending this much data is often not possible. Rather than send the entire server state, we assume that network bandwidth cant send that much per frame and so instead the server is sending out a single numeric "hash". It might be the sum of all HP values of all units, summed with their X and Y locations and mana values and other things. Because computer processing is usually much faster than network sending, we do extra processing to reduce network sending and so it makes the system function dramatically better as I understand. Or at least that's my assumption.
  • Like
Reactions: Rui
Retera
Retera
When I say I played Warsmash multiplayer for 2 hours, this was a technical prototype that had no desync detection. So, it was doing a simultaneous game simulation on each computer as though it played a single player game and it just sent the user inputs from each player to the server and from the server back to all players. So if player 2 right clicks, the Player 1 sees the unit move in response on his PC as well.

It still has a long way to go. Even then some people might say simultaneous simulations in lock step is not a good idea. But I am just trying to emulate Warcraft 3.
  • Like
Reactions: Rui
Top