Players may have noticed a great deal of crashing during transitions. I have been monitoring this issue and looking for information from Obisidian as well.
My findings are there may be a distinct relationship between the frequency of the crashes and the packet timeout. (* see below for more information on these points) This may be directly related to lag on the server. Some of this lag is also a bug in the server. For unknown reasons the server will randomly flood a client with the same packets over and over (**). This is why lag may be erratic at times. I am certain this happens to us many times a day.
Another issue is that Obsidian did not implement a fix put into NWN1 where DM's joining a server are Subject to the player limit.
In an effort to correct these problems I am implementing a few changes.
1. I am introducing a player location tool. Once complete a player will be able to use the tool to find areas where players are. Not specific players, but you will see something along the lines of "There's one person here, there's a huge group here." and so on. At the same time I will be implementing a tool to set a player anonymous if they are attempting to mask their presence.
The idea behind this change is that players are congregating in locations which -Greatly- increases the bandwidth load (***). The number of people congregated multiplies required bandwidth a great deal. So we will be encouraging players to split up a bit more as to help alleviate this issue. The tool will help people find others to RP with instead of relying on waiting at public areas for large groups to appear.
2. I will be adding a -soft- limit to the server. This means that if a player joins after the soft limit is reached. They will be notified that the server is at capacity and will be removed from the server. The reason for this is so DM's are always able to join the server. So the limit will be inside of the module, not at the screen that shows current population.
3. I may bring the limit for players down if players still congregate in huge groups. There is many locations that barely see the light of players. We encourage people to visit these locations.
Footnotes:
*: NWN and NWN2 use a network protocol known as UDP. In this protocal data is sent as packets with the possibility of being lost during transfer or out of order. It is the software's job the manage the error recovery for this protocol. It is theorized that the crashes may be occurring due to loss of the packets or timeout where the packet may have taken longer than anticipated.
Personally, I would have used TCP/IP and let the operating systems handle negotiation (Games like WoW use TCP). However, NWN2 is built from NWN1 which was designed with older hardware in mind. I'm certain they simply did not wish to redesign the whole network layer.
**: For unknown reasons NWN2 Server will suddenly flood one or more people with the same packet data. This may also be attributed to their packet management of UDP. It will result in nearly a locked up state for all other clients since the network is being flooded. The only work around for this problem known is the client who is being flooded must disconnect (They may not know whom they are) or the server must be rebooted (It happens randomly so reboots out of nowhere is a problem). I am told 1.06 should fix this problem if they figure it out.
***: Packets are pretty much multiplied by the number of people who have to intercept them. For example, two people chatting would happen as this:
Player A and Player B are in a room.
Player A say: "Hi" which is sent to the server.
The server sends "Hi" back to Player A and to Player B.
Now, imagine if 12 people are in the area. "Hi" is sent to all 12 people and then naturally they all respond, hitting all of the 12 people again. Not to mention text seems to flow alot more often and actions when alot of people are indeed around. Therefore it greatly increases required bandwidth if 40 people are on and all generally within range of each other.
My findings are there may be a distinct relationship between the frequency of the crashes and the packet timeout. (* see below for more information on these points) This may be directly related to lag on the server. Some of this lag is also a bug in the server. For unknown reasons the server will randomly flood a client with the same packets over and over (**). This is why lag may be erratic at times. I am certain this happens to us many times a day.
Another issue is that Obsidian did not implement a fix put into NWN1 where DM's joining a server are Subject to the player limit.
In an effort to correct these problems I am implementing a few changes.
1. I am introducing a player location tool. Once complete a player will be able to use the tool to find areas where players are. Not specific players, but you will see something along the lines of "There's one person here, there's a huge group here." and so on. At the same time I will be implementing a tool to set a player anonymous if they are attempting to mask their presence.
The idea behind this change is that players are congregating in locations which -Greatly- increases the bandwidth load (***). The number of people congregated multiplies required bandwidth a great deal. So we will be encouraging players to split up a bit more as to help alleviate this issue. The tool will help people find others to RP with instead of relying on waiting at public areas for large groups to appear.
2. I will be adding a -soft- limit to the server. This means that if a player joins after the soft limit is reached. They will be notified that the server is at capacity and will be removed from the server. The reason for this is so DM's are always able to join the server. So the limit will be inside of the module, not at the screen that shows current population.
3. I may bring the limit for players down if players still congregate in huge groups. There is many locations that barely see the light of players. We encourage people to visit these locations.
Footnotes:
*: NWN and NWN2 use a network protocol known as UDP. In this protocal data is sent as packets with the possibility of being lost during transfer or out of order. It is the software's job the manage the error recovery for this protocol. It is theorized that the crashes may be occurring due to loss of the packets or timeout where the packet may have taken longer than anticipated.
Personally, I would have used TCP/IP and let the operating systems handle negotiation (Games like WoW use TCP). However, NWN2 is built from NWN1 which was designed with older hardware in mind. I'm certain they simply did not wish to redesign the whole network layer.
**: For unknown reasons NWN2 Server will suddenly flood one or more people with the same packet data. This may also be attributed to their packet management of UDP. It will result in nearly a locked up state for all other clients since the network is being flooded. The only work around for this problem known is the client who is being flooded must disconnect (They may not know whom they are) or the server must be rebooted (It happens randomly so reboots out of nowhere is a problem). I am told 1.06 should fix this problem if they figure it out.
***: Packets are pretty much multiplied by the number of people who have to intercept them. For example, two people chatting would happen as this:
Player A and Player B are in a room.
Player A say: "Hi" which is sent to the server.
The server sends "Hi" back to Player A and to Player B.
Now, imagine if 12 people are in the area. "Hi" is sent to all 12 people and then naturally they all respond, hitting all of the 12 people again. Not to mention text seems to flow alot more often and actions when alot of people are indeed around. Therefore it greatly increases required bandwidth if 40 people are on and all generally within range of each other.
Comment