Plato Desktop Client



Overview Link to heading
A cross-platform desktop game client built for Plato Team Inc., supporting Windows, macOS, and Linux. Though now discontinued, the project showcased a modern, multi-window architecture with a primary chat interface and independent game windows.
The application was built in Go, using the Gio immediate-mode GUI toolkit. It interfaced extensively with C and C++ libraries, including ANGLE (OpenGL ES), V8 (JavaScript engine), SQLite, and libwebp for image decoding.
My Role Link to heading
As one of two primary developers, I contributed across the full stack, with a focus on architecture, performance, and cross-platform integration.
-
Reactive GUI Architecture
Co-developed a highly concurrent, fully reactive GUI system using Gio and SQLite. Built a declarative state model with the database as the single source of truth, enabling seamless multi-window synchronization. -
Tooling & Abstractions
Created reusable libraries and tooling (skel) for stream-based data handling and safe inter-window communication. This enabled clean separation of concerns and race-free concurrency. -
Auto-Updater System
Designed and implemented a binary patch-based self-updater for seamless client updates with minimal bandwidth usage. -
Embedded Game Logic
Integrated game runtime logic using V8, communicating over a custom binary protocol with a proprietary backend. -
Deep OS Integration
Delivered native features on both Windows and macOS:- Implemented Windows COM interfaces in pure Go for AAC audio decoding and system toast notifications.
- Used Objective-C and C on macOS for native audio and system notification support.
This project demanded low-level systems programming, high-concurrency architecture, and custom GUI tooling—all within the Go ecosystem. It reflects my ability to deliver production-ready, cross-platform software with deep OS integration and thoughtful abstractions.
Platforms Link to heading
Languages Link to heading
