BrickPlayer
Unity • C#
BrickPlayer was a custom game client for Brick-Hill. It featured improved performance, better visuals, and extra features for game creators such as sound effects and custom asset support.
It was created in the Unity game engine, with low-level TCP networking programmed using .NET's built-in TCP networking services. This was my first foray into writing netcode for games. I had to work with the low-level TCP library that .NET offers, as the client had to be fully compatible with the original game servers, which were written for a GameMaker-based game client. Though mostly functional, my client had frequent issues with network packets going missing due to bugs with my packet buffer splitting/joining code. This project was discontinued before I ever got around to fixing the issue.
It also featured a procedural meshing system that aimed to render the thousands of bricks a level might contain in as few GameObjects as possible, greatly increasing performance. This allowed for levels with tens of thousands of bricks to render at hundreds of frames per second, versus the single-digit framerates of the official game client.
Because the official game client simply ignored unsupported packets, I was able to add in support for extra features that level creators could take advantage of. "Resource Packs" could be sent to the client upon joining, including audio files, textures, and models. The servers could then send special packets telling the client to apply the custom models and textures to objects, as well as play sound effects in 2D or 3D space.
I eventually discontinued the project after a few months of development due to burn-out from all the network issues, as well as disinterest in the platform.
Courtesy of user OMGDude
Courtesy of user SmartLion
Performance test of 10,000+ brick level, created by user Illusionism