Skip to content

ludus::runtime::game_api::HostServices

Ludus Wiki · API overview · Browse API

Struct

The host service table.
One pointer is handed to Create and stays valid for that instance's generation. Each entry is noexcept. A module must tolerate a null function pointer for optional services it did not request.

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

#include <ludus/runtime/game_api/services.h>
struct ludus::runtime::game_api::HostServices final

Fields

StructSize

uint32 ludus::runtime::game_api::HostServices::StructSize = 0
sizeof(HostServices) on the host; negotiated.

Related types: uint32

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

Reserved

uint32 ludus::runtime::game_api::HostServices::Reserved = 0

Related types: uint32

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

Context

HostContext* ludus::runtime::game_api::HostServices::Context = nullptr

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

Log

void(*) ludus::runtime::game_api::HostServices::Log(HostContext *ctx, LogSeverity severity, const char *text, usize length) noexcept(HostContext *ctx, LogSeverity severity, const char *text, usize length) noexcept = nullptr
Diagnostics: route a bounded UTF-8 message through host logging.
The host never lets a logging failure propagate into gameplay (AGENTS.md).

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

AllocateBytes

void *(*) ludus::runtime::game_api::HostServices::AllocateBytes(HostContext *ctx, usize size, usize alignment) noexcept(HostContext *ctx, usize size, usize alignment) noexcept = nullptr
Bounded allocation owned by the host.
Freed only via FreeBytes with the same context. Returns nullptr on exhaustion; the module checks.

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

FreeBytes

void(*) ludus::runtime::game_api::HostServices::FreeBytes(HostContext *ctx, void *ptr) noexcept(HostContext *ctx, void *ptr) noexcept = nullptr

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

ResolveResource

uint64(*) ludus::runtime::game_api::HostServices::ResolveResource(HostContext *ctx, uint64 logicalAssetId) noexcept(HostContext *ctx, uint64 logicalAssetId) noexcept = nullptr
Resource identity: translate a logical asset ID (stable across reload) into the host's current resource generation handle.
Returns 0 if unknown.

Related types: uint64

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

AcquireWorkLease

bool(*) ludus::runtime::game_api::HostServices::AcquireWorkLease(HostContext *ctx) noexcept(HostContext *ctx) noexcept = nullptr
Optional appended service entries.
A deferred callback/job must acquire a lease before publishing any module-code reference, and release it after its final use. Quiesce must also join workers: a worker releasing its lease is not proof that it has returned out of module code. Acquisition is gated during Create/staging, pause and retirement; start work from Update or Resume after activation, never from Create/CreateCandidate. These two calls alone may run on worker threads; other services remain host-thread calls. Check StructSize before accessing this appended tail.

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h

ReleaseWorkLease

bool(*) ludus::runtime::game_api::HostServices::ReleaseWorkLease(HostContext *ctx) noexcept(HostContext *ctx) noexcept = nullptr

Declared in modules/runtime/game_api/include/ludus/runtime/game_api/services.h