After some thought about the minor patching to the networking I think that it's not the best approach. Especially since the persistent world is a very popular idea. So with that in mind, I think I'd like to start rewriting the server and networking. It would use the same basic protocols and packet format, but the server itself would start holding world information and player lists. More of a client/server architecture. I want to start simple first, and then build upon it.
For example, chat! Right now every client holds a list of all of the players who are in their current area. Areas are sectioned off by either a specific map or by town. Then clients are in charge of searching through their own list of players in their area and sending packets to everyone in that list. Instead I think that the server should hold these lists, and clients should request the data. Especially when it comes to chat. Another issue caused by this approach is that chat messages can be missed depending on area. If chat were persisted on the server and fetched by the client periodically, then a more complete chat history can be served.
I've been, and will be for the next two weeks, throwing my free time at the Quake Expo. But during August I'd like to ramp up development on this again.
(Note: I've used a lot of the neat FPS/RPG tricks that I learned in the A&A source base to start developing a hexen 2 mod)
Speaking of quake expo, there is this amazing booth that seems really obvious once you hear it. IRC chat support in game! Now I'm not proposing this for A&A but once the client/server chat features are in place it would be much easier to hook in something like this!
https://qexpo2016.com/quakespasm-with-irc-twitch-chat-support/As a last aside, .NET core (a cross platform version of the Microsoft .NET framework) was released recently. So things like the server can be written in C# without causing platform dependence! I've probably said some lame things about not using C# in the past. Well, shame on me because I was totally wrong!