WormNET (Worms Unlimited)
From Worms Knowledge Base
I believe that I'm not the only one who's thinking that WormNET could be much better. (todo: insert more cricitism here). To implement even a part of the ideas I stated here would mean rewriting most of the network code from scratch. Many of the ideas stated here were taken from the way Sallos is done. Sallos is an Internet gaming lobby, currently featuring IRC-like chat, and some games: a Gunbound clone, Chess, TetriNET and MasterMind. The network code is scalable and quite well-organized (considering that Sallos is a network application in the first place). The whole system connects to one cental server, which hosts the chat and all of these games as one single service. The system utilises a built-in smart update feature, that automatically updates the client software by downloading patches from the server (again, through the very same protocol).
About the protocol, Currently Wormnet uses IRC and HTTP. A proper protocol for gaming sould be used, a example of a gaming protocol is Open Gaming Protocol. Another issue about Wormnet is that currently for quitting Wormnet, you must wait until the Wormnet traffic finish, but in Worms Unlimited, you could quit Wormnet without waiting. Another useful feature of Wormnet would be File Sharing: you would be able to download maps, schemes, soundbank and other kind of files from other players in the network channels, in the host-join lobby and in running games.
Ranks should be based on ranked channels: when you beat players in a one of these channels, you get points, and when you get enough points for enter in a ranked channel, you can enter in it.
The scoring system should be a ladder system, as that would encourage people to play the strongest players.
And finally, there should be ranks for various gametypes: shoppa, proper, bng, wxw...
Instead of making the players connect to each other, it would be better to make them connect to the server, which will route the data across other players. This will allow onybody to host a game, avoiding any router / firewall problems.
This will also reduce the number of network drops - if the host drops out, the game will go on, and the game will close as soon as the round is finished.
In the case somebody wants to, there would be the possibility of the traditional hosting method, for the players who can do it. Alternatively, there would be Direct Ip and LAN games, in the case Wormnet is down.
Often it is desired to join or spectate a game already in progress. I'm not saying that this will require a new team to be added directly to the field - the player will be able to simply spectate the game until the round is finished, after which he can add his team. All players(including spectators) should have the ability to send team messages to all teams. Also, spectators should be able to be ignored with the /ignore command, as the rest of the players.
As well, an ability to show players that are currently playing a game. Combine this with the ability to locate a player in all running games, and it should eliminate the chaos of trying to find your buddy on WormNET. A checkbox/button could be added to the lobby to toggle showing already running games.
Also, there should be the possibility of continuing running games from a replay file. For using this option, all players would have the same replay file and all would have to agree with it. Before starting, the game would check the replays of all players to check if all the replays of them are the same and if they are not corrupted.
Another typical problem in wormnet is the player that goes away from the computer and forgets to use the /away. This could be solved with an auto-away feature. When the player acumulates some idle time, the /away command is activated automaticly. Only the turn time and hotseat time would be counted, as this is the other players would spend waiting. In case the players reaches the idle time limit in the middle of a turn, the game would apply this feature after the turn has finished. The time limit would be selected in the menu that is before Wormnet, and it would be decided by the host.
There should be multiple channels, and you should be able to create your own channel, which could be private or public. You could configure it to have forced schemes or maps, and you could upload these. Of course, in the server there would be a size limit, and you could also upload the maps/schemes to a remote URL and tell the server to use them. When a player hosts a game, the maps/schemes will be downloaded from that URL to the computer of the host.
For the case of ranks, there could be channels which you can access with a determinated rank.
There could be a channel where only classic options from w:a can be used.
Also, there could be a channel where only determinated options can be used(Infinite full-Powered Rope, Rope Knocking, No Rope..) and channels with prefixed schemes, like WxW, Proper, Shoppa..
With the new maps, the file sizes for those maps would increase significantly. Some kind of map cache, which would store all downloaded maps in a folder (and perform clean-up occasionally). Then, when a map would be downloaded from the server, the client would compare hashes of the map with the maps in the cache - thus avoiding re-downloading of the map.
A buddy list would make possible the following features: -The text from buddies and games hosted by them would be highlighted -When hosting a game, you would be able to pick betweem public game, private game or buddies-only game
You should be able to send private messages in the lobby screen without having to type the /msg command. The problem is that if had to be made by clicking in the name, how would the host do it, if clicking in a player's name is now used to boot a player from the game. The solution would be to put a "kick button" near the name of the player, so when click it, the player gets booted and when you click on his name, you can send a private message to him.
Also, with the new editors, the host would get lost in the sea of option and players would be left waiting. The solution to this would be to have a chat window in all those menus, that could be opened and closed as the in-game chat window. And for avoiding the player having to select the player reselecting the same scheme every time he has to host, by default the selected scheme would be the last hosted scheme.