English · 简体中文
Compose services. Model entities. Connect processes.
Get started → · Documentation · Examples · Roadmap
ark provides the application structure around your C++ services: plugin composition, module lifecycles, entity data and communication between processes. Use it for game servers and other modular server applications on Linux, macOS and Windows. Core components and official plugins live here; business plugins live with their application.
| Compose | Model | Connect |
|---|---|---|
| Plugins and modules | Entity data | Process communication |
| Register services behind interfaces and participate in initialization, updates and shutdown. | Describe properties, tables and containers through metadata, configuration defaults and change callbacks. | Use TCP, WebSocket, HTTP and RUDP through arknet, with bus identifiers and message routing. |
Protobuf messages, Excel configuration generation, native C++ regression tests and optional benchmarks support the development workflow.
Override the lifecycle stages the service needs. This module counts application updates; a plugin registers it with the manager.
#include <cstddef>
#include <ark/module.hpp>
#include <ark/plugin_manager.hpp>
namespace ark {
class sample_module final : public module
{
ARK_DECLARE_MODULE_FUNCTIONS
public:
bool update() override {
++update_count_;
return true;
}
private:
std::size_t update_count_ = 0;
};
} // namespace arkContinue with module lifecycle and interfaces and plugin registration.
Build the example applications with a C++20 compiler, CMake 3.21 or newer, and vcpkg. The installation guide covers dependencies and platform-specific commands. Windows requires Visual Studio 2022 or newer.
After building and preparing the runtime directory, start sample1 from build/:
./bin/app --busid=1.0.1.1 --name=sample1 --app_conf=conf/sample1.app.conf| Next step | Guide |
|---|---|
| Run the bundled applications | Quick start |
| Understand the framework | Architecture · Entity data |
| Connect application processes | Networking · Message bus |
| Reproduce validation results | Tests · Database benchmarks |
Dependencies are managed with vcpkg and Git submodules. The arknet revision is pinned in CMakeLists.txt.
The legacy Unity client has not been verified against the current ark server. Restoring it and testing the client and server together is planned follow-up work.
Bug reports, discussions and pull requests are welcome. See the contribution guide for coding style, tests and the protected-branch workflow. Find us on GitHub Issues and Discord.
Thanks to all contributors.
Apache-2.0 · Copyright OpenArkStudio.