service framework for game server using libatbus, libatapp, libcopp and etc.
atproxy : proxy for logic server to communicate with each other
- using etcd for service discovery and online detection.
atgateway : gateway for client to communicate logic server
- Using DH/ECDH for key establishment(directly send key or no encryption are also supported)
- Traffic control and handshake timeout available for each client
- Support for routing switching
- libuv -- libuv is a multi-platform support library with a focus on asynchronous I/O.
- msgpack-c -- MessagePack is an efficient binary serialization format, and msgpack-c is a c and c++ driver for it.
- libiniloader -- a small and lightweight ini loader code.
- libcurl -- libcurl is a free and easy-to-use client-side URL transfer library
- libcopp -- Cross-platform coroutine library written in c++.
- rapidjson -- A fast and header only json library.
- flatbuffer -- A simple pack/unpack library. It's used in atgateway's inner protocol.
- Install etcd. (It's used for atproxy to connect to each other.)
- [opional] Install redis. (DB services.install it if used)
- [opional] hiredis, redis (if using redis, full_sample branch has use redis)
- cmake 3.7 and above
- [optional] python-setuptools/python*-setuptools/mingw-w64-x86_64-python*-mako
- [optional] python-pip/python*-pip/mingw-w64-x86_64-python*-pip
Framework Code Tree
- 3rd_party: all dependency 3rd_party libraries
- atframework: atframework projects and libraries
- export: exported libraries, used by client
- libatframe_utils: framework utility codes
- libatbus: communication library used between servers
- libatapp: server application framework, used to build a specified server type
- services: inner services of atframework
- component: inner services common codes
- atproxy: proxy server, used to connect difference service group to each other
- atgateway: gateway server, used to manage client connections
- doc: documents
- install: all resources and configure templates
- project: project script, used to detect build environment and generate build scripts
- sample: sample codes to show usage of some libraries
- src: all real projects
- echosvr: the simplest server instance, just send back all data receive from client
- [others]: other services
Logic Code Tree
- src: all real projects
- server_frame: server common library
- config: server configure defines and excel configure data structures
- data: game data layer
- dispatcher: decide how to deal with each type of messages and manage coroutine tasks
- logic: game logic layer
- rpc: all remote procedure call APIs, include server to server message, DB message and so on
- utility: all shared utility codes
- tools: tool projects
You need to prebuilt all dependency libraries such as openssl/mbedtls, libcurl, libuv and so on. Then run
cmake [SOURCE PATH] -G "Visual Studio ... Win64" -DLIBUV_ROOT=[LIBUV INSTALL PATH] -DOPENSSL_ROOT=[OPENSSL INSTALL PATH] ...
Please see 3rd_party to see which libraries is required.
Unix like system
sh cmake_dev.sh [options] ...
Such as sh cmake_dev.sh -su to enable all unit test and samples, or sh cmake_dev.sh -a to use clang-analysis. You can also directly run cmake [SOURCE PATH] [options...] just like in windows, use your own prebuilt libraries or not. It depends to you.