Gamepipe Networking Framework
Over the semester of my Networked Games class, I worked on a group project that was to be a multi-threaded and easy to use networking framework, primarily for use with games. I volunteered to be one of two leaders, even though I was the only first-year grad in the class. Throughout the term, I worked primarily on the framework, personally designing and implementing most of it myself; while most of the other students worked on small features and demos to showcase them. Eryu, another programmer, was a great help in working on the framework. Together we practiced pair programming and debugged many issues.
Some of the features of our framework include:
- Automatic C++ Structure Serialization
- Three threads with intermediate buffers
- Composition-based Architecture
- Smart Pointers to handle memory management and reduce CPU load
- Peer to Peer networking with a 3-handshake connection protocol
- Unreliable, Reliable, and Sequenced UDP
- Optional Huffman Tree Compression
Also during this class I got hands-on experience with building and using prediction, dead reckoning and convergence to smooth player movement in an imperfect networked environment.