Honeycomb is a proprietary game development kit (GDK), designed and developed for Everi Games Inc., that extends the Unity editor and provides a middleware gameplay framework for the company's game developers. This was a project conducted to move the company from using a proprietary game engine to primarily using Unity.
The framework provides a flexible interface for game developers and other Unity users which connects them to the company's backend service, handling the business and state logic. This allows the game developers to focus on game features unique to their game, and improves quality of life for all disciplines on the team, reducing development time per game. I served as the primary software designer and architect of the GDK in Unity, and coordinated design of the interaction between the framework and system external to Unity.
Messaging System
The messaging system handled the communication layer between the Unity GDK and the proprietary server. This included data marshalling in a multi-threaded environment on a critical path for performance.
After completing initial implementation of the system, which attempted to hook it into the existing server without any changes to the data, I conducted a performance analysis and identified a severe issue with performance spikes at critical points. Working with the VP of architecture, I established benchmarks and designed a refactor of the pre-existing data structure in a backward-compatible way that would compensate for the spikes. While the refactor did require some changes in the server as well as the middleware, ultimately we ended up saving up to 15 ms per frame in the worst case, making the work well worth it the effort.
Data-driven Architecture
The GDK was designed with a data-driven architecture in mind. I designed the system to lean heavily on ScriptableObjects, taking inspiration from Unity Atoms, making it very modular and flexible. Acting as the base for the system, these pieces of data were consistently synced with the server via the messaging system, providing a secure single source of truth for game data.
Quality of Life Tooling
Everything I designed in this framework was accompanied by excellent custom tooling extending the Unity editor, implemented completely using Unity's newer UI Toolkit, which provides an incredibly powerful method of creating both editor and runtime UI using the same methodologies as web development. This world-class tooling was created with all Unity users and disciplines in mind, not just software engineers, so that the framework catered well to designers and artists as well.
Modularity
Each system included with the GDK was designed to be modular and to build upon each other so that any given system could be easily swapped with another implementation if necessary. Not giving away any proprietary details, this was partially accomplished by providing each system as its own package, distributed internally using scoped registries.
Further non-proprietary details can be provided upon request.