// the find
cloudwu/skynet
A lightweight online game framework
Skynet is a C/Lua actor-model framework for building online game servers, where each logical service runs in its own Lua state and communicates via message passing. It's been the backbone of a significant slice of the Chinese MMO industry for over a decade. If you're building a game server that needs to handle thousands of concurrent actors without the overhead of OS threads per connection, this is the serious option in the Lua ecosystem.
The core design is sound: a fixed C thread pool drives a Lua coroutine scheduler per actor, so you get concurrency without data races between services. The built-in cluster module lets you span multiple nodes with location-transparent addressing, which most game frameworks make you bolt on later. It ships batteries — Redis, MySQL, MongoDB drivers, sproto (its own compact binary protocol), TLS, websocket — so you're not assembling a tower of third-party packages on day one. The test suite covers edge cases that matter for game servers: dead loops, overload detection, harbor link failures, timer precision.
The documentation is predominantly in Chinese, and the English wiki is a partial translation that lags behind the code — you will end up reading Chinese forum posts and GitHub discussions with a machine translator if you go deep. The framework ships its own modified Lua 5.5 fork (ejoy/lua) which diverges from upstream; if you depend on a Lua library that assumes standard behavior, you may hit subtle incompatibilities. Windows support exists via a compat-mingw shim layer that is clearly a second-class citizen — the socket layer uses wepoll as an epoll stand-in, and production deployments are assumed Linux. There's no structured observability story: debugging a misbehaving actor cluster means grepping logs and using the debug console, which works but won't satisfy anyone used to distributed tracing.