- Players are only identified using their nick/IP adress. This results in regular players suddently starting from the default value which can cause uneven teams.
- The event-driven nature of ATB requires the server to go through its database in a single pass. This can lag the server if the db is large.
- Players joining mid-game are immediately assigned to the weaker team. However, on my server clients tend to wait in spectator mode until another player joins. ATB doesn't recognize this situation which can uneven the teams in case the later joined player is stronger.
- Players reconnecting can cause rebalancing in case the team size difference temporarily exceeds two.
- Insufficient wait time at gamestart, players joining after the initial team sort is done.
Some of the issues might also be caused by insufficient configuration (most likely the last point); however, keeping an overview of the available ATB settings is not that easy (just open its default config file ).
Now, I've first considered modifiying ATB, but soon realized that it's probably best to give it a fresh start and rewrite it completely. I've decided to go with a server-side-only Nexgen Plugin, as it makes sense to use the (unique) Nexgen ID of the players to always recognize them. The above mentioned problems are solved in the following ways:
- Using the Nexgen ID as a unique identifier
- Since the Nexgen ID is not available server-side at the join event anyway, the system can now stretch the database search over several ticks and prevent the server from overloading
- Players joining mid-game will be put into a waiting state before being assigned to a team. This way, several new players can be considered in the team assignment.
- Teams are only rebalanced in case of a size difference after an appropriate wait time if a player just left.
- The system fully utilizes Nexgen's game states and therefore the option 'Let Nexgen handle the gamestart' can finally be enabled - this allows for configuring corresponding wait times.
What's the purpose of this thread?
Bragging rights Jking, I want to use this thread+poll to query the community if there is still interest for such an update. Depending on the response, I may readd missing features and put more focus on the "general applicability" and not only for my needs. There is one limitation whatsoever: Since I'm a Nexgen maniac, this whole rewrite will remain a Nexgen plugin and therefore require the gameserver to run it.
PS: I've finally managed to get most of my UT stuff to GitHub. You can check the ongoing development for NexgenATB here