Skip to content
OpenArkStudioPublic

Latest commit

 

History

3,251 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English · 简体中文

ark

A C++20 framework for modular server applications.

Compose services. Model entities. Connect processes.

Merge queue CI C++20 Apache-2.0

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.

Built around your services

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.

A module is a C++ class

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 ark

Continue with module lifecycle and interfaces and plugin registration.

Start with an example

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.

Client integration

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.

Contribute

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.

Core developers

Thanks to all contributors.


Apache-2.0 · Copyright OpenArkStudio.

Releases

Packages

Used by

Contributors

Languages