Every single stroke of the keyboard depressed me for some odd reason.
I usually reach this low-point months into a project.
I originally decided to program the server in java+Project Darkstar. I've used in once before, but on a small-scale java only project. After looking at the C-API, I metaphorically gave an oath that I shall never release a game or application that sucks.
The API was heavily underdeveloped, with examples far and few in between. Usually, I am pretty good at deciphering functions of a language/api for which documentation has long ceased to exist. Yet, this API, untop of being written in pure C with no C++ wrapper was nothing more that a thin plastic wrap over Winsock.
Although I have used Winsock plenty of times, I admitted to myself that I am a one man team. The more middle ware I used, the quicker I could focus on other tasks. I decided to go with the very popular Raknet.
After looking at all its features, I decided many of them were not compatible with the high-stress and high-bandwidth requirements that the game would require. I decided only to use the most fundamental service offered by raknet - the Peer interface.
I was impressed. After looking at the source code, it was apparent to me that the developer knew what he was doing. I am hoping that it will be able to handle the the highend requirements that I have set forth for the networking side of the project.
So far it has held up its end of the bargain.
Early on, I decided to just use Raknet's basic interface. But the allure of the NetworkID manager was just too great for me not to use. I set it up to coincide with my object classes, and set it to use.
Something odd was happening. Players were disappearing from inside the game, odd errors which I have not see before. It occured to me to look at the source code of the NetworkIDManager.
Apparently, the ID's were not as unique as I would have thought. Even though it had a maximum limit of around 65,000 simultaneous objects (Although that limitation could partially be removed by commenting out a line from the header file), I decided to remove the NetworkID supported and go back to using the nice and simple unsigned long.