Skip to content
modkitv0.2

multiplayer.h

#include <modkit/multiplayer.h>36 functions · 15 structs · 7 enums · 30 typedefs · 9 macros

Optional server-authoritative RPC, input, and snapshot sessions.

Direction checks are routing policy. They do not authenticate a peer or authorize a gameplay action; handlers must validate both.

Functions

mk_input_stream_desc_initfunction

void mk_input_stream_desc_init(mk_input_stream_desc_t *desc)

Initialize an input-stream descriptor.

ParameterTypeDescription
descmk_input_stream_desc_t *Descriptor to initialize.

mk_multiplayer_capabilitiesfunction

mk_multiplayer_capabilities_t mk_multiplayer_capabilities(mk_multiplayer_t multiplayer, const mk_peer_t *peer)

Query effective capabilities for a peer or session.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to query.
peerconst mk_peer_t *Peer to inspect, or NULL for common host capabilities.

Returns ORed mk_multiplayer_capability bits.

mk_multiplayer_connectfunction

mk_result mk_multiplayer_connect(mk_multiplayer_t multiplayer, const char *host, uint16_t port, mk_peer_t **out_peer)

Connect a client session to a host and port.

ParameterTypeDescription
multiplayermk_multiplayer_tClient session.
hostconst char *Remote hostname or address.
portuint16_tRemote port.
out_peermk_peer_t **Optional destination for the peer.

Returns MK_SUCCESS when connection startup succeeds, otherwise an error.

mk_multiplayer_connect_urlfunction

mk_result mk_multiplayer_connect_url(mk_multiplayer_t multiplayer, const char *url, mk_peer_t **out_peer)

Connect a client session using a transport URL.

ParameterTypeDescription
multiplayermk_multiplayer_tClient session.
urlconst char *Remote transport URL.
out_peermk_peer_t **Optional destination for the peer.

Returns MK_SUCCESS when connection startup succeeds, otherwise an error.

mk_multiplayer_createfunction

mk_result mk_multiplayer_create(const mk_multiplayer_desc_t *desc, mk_multiplayer_t *out_multiplayer)

Create a client or server session and all configured transport hosts.

ParameterTypeDescription
descconst mk_multiplayer_desc_t *Session configuration.
out_multiplayermk_multiplayer_t *Receives the session handle.

Returns MK_SUCCESS or an error result.

mk_multiplayer_desc_initfunction

void mk_multiplayer_desc_init(mk_multiplayer_desc_t *desc)

Initialize a multiplayer session descriptor.

ParameterTypeDescription
descmk_multiplayer_desc_t *Descriptor to initialize.

mk_multiplayer_destroyfunction

void mk_multiplayer_destroy(mk_multiplayer_t multiplayer)

Destroy a session, its hosts, peers, streams, and pending calls.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to destroy.

mk_multiplayer_disconnectfunction

mk_result mk_multiplayer_disconnect(mk_multiplayer_t multiplayer, mk_peer_t *peer, mk_disconnect_reason_t reason)

Disconnect one peer with an application-visible reason.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
peermk_peer_t *Peer to disconnect.
reasonmk_disconnect_reason_tDisconnect reason.

Returns MK_SUCCESS or an error result.

mk_multiplayer_effective_deliveryfunction

mk_delivery_t mk_multiplayer_effective_delivery(mk_multiplayer_t multiplayer, const mk_peer_t *peer, mk_delivery_t requested)

Resolve requested delivery against a peer's transport.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to query.
peerconst mk_peer_t *Target peer.
requestedmk_delivery_tDesired delivery mode.

Returns Effective delivery mode, strengthened when required.

mk_multiplayer_get_statsfunction

bool mk_multiplayer_get_stats(mk_multiplayer_t multiplayer, const mk_peer_t *peer, mk_multiplayer_stats_t *out_stats)

Read aggregate or per-peer counters.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to query.
peerconst mk_peer_t *Peer to query, or NULL for aggregate counters.
out_statsmk_multiplayer_stats_t *Receives the counters.

Returns True when statistics were available.

mk_multiplayer_host_desc_initfunction

void mk_multiplayer_host_desc_init(mk_multiplayer_host_desc_t *desc)

Initialize one multiplayer endpoint descriptor.

ParameterTypeDescription
descmk_multiplayer_host_desc_t *Descriptor to initialize.

mk_multiplayer_max_unreliable_payloadfunction

size_t mk_multiplayer_max_unreliable_payload(mk_multiplayer_t multiplayer, const mk_peer_t *peer)

Get the effective unreliable application payload budget.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to query.
peerconst mk_peer_t *Target peer, or NULL for the safe host minimum.

Returns Maximum payload bytes.

mk_multiplayer_now_msfunction

uint64_t mk_multiplayer_now_ms(mk_multiplayer_t multiplayer)

Read the session's monotonic scheduling clock.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to query.

Returns Current time in milliseconds.

mk_multiplayer_peer_countfunction

uint32_t mk_multiplayer_peer_count(mk_multiplayer_t multiplayer)

Count peers currently owned by a session.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to query.

Returns Current peer count.

mk_multiplayer_peer_firstfunction

mk_peer_t * mk_multiplayer_peer_first(mk_multiplayer_t multiplayer)

Begin iteration over session peers.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to query.

Returns First peer, or NULL when empty.

mk_multiplayer_peer_nextfunction

mk_peer_t * mk_multiplayer_peer_next(mk_multiplayer_t multiplayer, mk_peer_t *peer)

Continue iteration over session peers.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to query.
peermk_peer_t *Current peer.

Returns Next peer, or NULL at the end.

mk_multiplayer_pollfunction

uint32_t mk_multiplayer_poll(mk_multiplayer_t multiplayer, uint32_t timeout_ms, uint32_t max_events)

Service all owned hosts and dispatch events on the calling thread.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to poll.
timeout_msuint32_tMaximum wall-clock wait; shared host I/O blocks at most once.
max_eventsuint32_tMaximum transport events to dispatch, or zero for the default.

Returns Number of dispatched transport events.

mk_multiplayer_register_inputfunction

mk_result mk_multiplayer_register_input(mk_multiplayer_t multiplayer, const mk_input_stream_desc_t *desc)

Register a client-to-server input stream before polling or connecting.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to configure.
descconst mk_input_stream_desc_t *Stream description.

Returns MK_SUCCESS or an error result.

mk_multiplayer_submit_inputfunction

mk_result mk_multiplayer_submit_input(mk_multiplayer_t multiplayer, mk_peer_t *peer, uint32_t stream_id, mk_multiplayer_encode_fn encode, void *user, uint32_t *out_sequence)

Encode and stage the newest client input for a stream.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning client session.
peermk_peer_t *Server peer.
stream_iduint32_tRegistered stream ID.
encodemk_multiplayer_encode_fnPayload encoder.
uservoid *Encoder context.
out_sequenceuint32_t *Optional destination for the assigned sequence.

Returns MK_SUCCESS or an error result.

mk_rpc_callfunction

mk_result mk_rpc_call(mk_multiplayer_t multiplayer, mk_peer_t *peer, uint32_t method_id, mk_multiplayer_encode_fn encode, void *encode_user, uint32_t timeout_ms, mk_rpc_completion_fn completion, void *completion_user, mk_rpc_call_t *out_call)

Start an RPC request and register its completion callback.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
peermk_peer_t *Recipient peer.
method_iduint32_tRegistered method ID.
encodemk_multiplayer_encode_fnOptional payload encoder.
encode_uservoid *Encoder context.
timeout_msuint32_tWall-clock timeout, or zero for the session default.
completionmk_rpc_completion_fnTerminal completion callback.
completion_uservoid *Completion context.
out_callmk_rpc_call_t *Optional destination for the call handle.

Returns MK_SUCCESS or an error result.

mk_rpc_cancelfunction

mk_result mk_rpc_cancel(mk_multiplayer_t multiplayer, mk_rpc_call_t call)

Cancel a pending outgoing RPC request.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
callmk_rpc_call_tPending call handle.

Returns MK_SUCCESS or an error result.

mk_rpc_method_desc_initfunction

void mk_rpc_method_desc_init(mk_rpc_method_desc_t *desc)

Initialize an RPC method descriptor.

ParameterTypeDescription
descmk_rpc_method_desc_t *Descriptor to initialize.

mk_rpc_notifyfunction

mk_result mk_rpc_notify(mk_multiplayer_t multiplayer, mk_peer_t *peer, uint32_t method_id, mk_multiplayer_encode_fn encode, void *encode_user)

Send a one-way RPC notification to one peer.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
peermk_peer_t *Recipient peer.
method_iduint32_tRegistered method ID.
encodemk_multiplayer_encode_fnOptional payload encoder.
encode_uservoid *Encoder context.

Returns MK_SUCCESS or an error result.

mk_rpc_notify_allfunction

mk_result mk_rpc_notify_all(mk_multiplayer_t multiplayer, uint32_t method_id, mk_multiplayer_encode_fn encode, void *encode_user)

Send one shared RPC notification to every peer.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
method_iduint32_tRegistered method ID.
encodemk_multiplayer_encode_fnOptional payload encoder.
encode_uservoid *Encoder context.

Returns MK_SUCCESS or an error result.

mk_rpc_notify_all_exceptfunction

mk_result mk_rpc_notify_all_except(mk_multiplayer_t multiplayer, mk_peer_t *except, uint32_t method_id, mk_multiplayer_encode_fn encode, void *encode_user)

Send one shared RPC notification to every peer except one.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
exceptmk_peer_t *Peer to exclude.
method_iduint32_tRegistered method ID.
encodemk_multiplayer_encode_fnOptional payload encoder.
encode_uservoid *Encoder context.

Returns MK_SUCCESS or an error result.

mk_rpc_registerfunction

mk_result mk_rpc_register(mk_multiplayer_t multiplayer, const mk_rpc_method_desc_t *desc)

Register an RPC method before polling or connecting.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to configure.
descconst mk_rpc_method_desc_t *Method description.

Returns MK_SUCCESS or an error result.

mk_rpc_reply_deferfunction

mk_result mk_rpc_reply_defer(mk_multiplayer_t multiplayer, mk_rpc_reply_t reply)

Retain an incoming reply handle for asynchronous completion.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
replymk_rpc_reply_tLive reply handle.

Returns MK_SUCCESS or an error result.

mk_rpc_reply_errorfunction

mk_result mk_rpc_reply_error(mk_multiplayer_t multiplayer, mk_rpc_reply_t reply, uint32_t error_code, const char *message)

Complete an incoming RPC request with an application error.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
replymk_rpc_reply_tLive reply handle.
error_codeuint32_tApplication error code.
messageconst char *UTF-8 error message.

Returns MK_SUCCESS or an error result.

mk_rpc_reply_sendfunction

mk_result mk_rpc_reply_send(mk_multiplayer_t multiplayer, mk_rpc_reply_t reply, mk_multiplayer_encode_fn encode, void *encode_user)

Complete an incoming RPC request with a success payload.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
replymk_rpc_reply_tLive reply handle.
encodemk_multiplayer_encode_fnOptional reply encoder.
encode_uservoid *Encoder context.

Returns MK_SUCCESS or an error result.

mk_snapshot_frame_ackfunction

bool mk_snapshot_frame_ack(const mk_snapshot_frame_view_t *frame, uint32_t input_stream_id, uint32_t *out_sequence)

Find an input acknowledgement in a snapshot frame.

ParameterTypeDescription
frameconst mk_snapshot_frame_view_t *Snapshot frame to query.
input_stream_iduint32_tInput stream ID.
out_sequenceuint32_t *Receives the acknowledged sequence.

Returns True when an acknowledgement exists.

mk_snapshot_registerfunction

mk_result mk_snapshot_register(mk_multiplayer_t multiplayer, const mk_snapshot_stream_desc_t *desc)

Register a snapshot stream before polling or connecting.

ParameterTypeDescription
multiplayermk_multiplayer_tSession to configure.
descconst mk_snapshot_stream_desc_t *Stream description.

Returns MK_SUCCESS or an error result.

mk_snapshot_samplefunction

bool mk_snapshot_sample(mk_multiplayer_t multiplayer, mk_peer_t *peer, uint32_t stream_id, uint64_t client_now_ms, mk_snapshot_sample_t *out_sample)

Sample buffered frames at synchronized server time minus interpolation delay.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
peermk_peer_t *Source server peer.
stream_iduint32_tRegistered stream ID.
client_now_msuint64_tCurrent local monotonic time.
out_samplemk_snapshot_sample_t *Receives borrowed frame views and sampling mode.

Returns True when a sample is available.

mk_snapshot_sendfunction

mk_result mk_snapshot_send(mk_multiplayer_t multiplayer, mk_peer_t *peer, uint32_t stream_id, uint32_t tick, mk_multiplayer_encode_fn encode, void *user)

Encode and stage one recipient-specific authoritative snapshot.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
peermk_peer_t *Recipient peer.
stream_iduint32_tRegistered stream ID.
tickuint32_tAuthoritative simulation tick.
encodemk_multiplayer_encode_fnPayload encoder.
uservoid *Encoder context.

Returns MK_SUCCESS or an error result.

mk_snapshot_send_allfunction

mk_result mk_snapshot_send_all(mk_multiplayer_t multiplayer, uint32_t stream_id, uint32_t tick, const void *payload, size_t payload_size, mk_snapshot_send_report_t *out_report)

Stage one shared snapshot payload for every peer.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
stream_iduint32_tRegistered stream ID.
tickuint32_tAuthoritative simulation tick.
payloadconst void *Shared state bytes.
payload_sizesize_tState byte count.
out_reportmk_snapshot_send_report_t *Optional destination for outcome counts.

Returns MK_SUCCESS or an error result.

mk_snapshot_send_all_encodedfunction

mk_result mk_snapshot_send_all_encoded(mk_multiplayer_t multiplayer, uint32_t stream_id, uint32_t tick, mk_multiplayer_peer_encode_fn encode, void *user, mk_snapshot_send_report_t *out_report)

Encode and stage a recipient-specific snapshot for every peer.

ParameterTypeDescription
multiplayermk_multiplayer_tOwning session.
stream_iduint32_tRegistered stream ID.
tickuint32_tAuthoritative simulation tick.
encodemk_multiplayer_peer_encode_fnPer-peer encoder.
uservoid *Encoder context.
out_reportmk_snapshot_send_report_t *Optional destination for outcome counts.

Returns MK_SUCCESS or an error result.

mk_snapshot_stream_desc_initfunction

void mk_snapshot_stream_desc_init(mk_snapshot_stream_desc_t *desc)

Initialize a snapshot-stream descriptor.

ParameterTypeDescription
descmk_snapshot_stream_desc_t *Descriptor to initialize.

Structs

mk_input_stream_descstruct

Registration and validation policy for a client input stream.

FieldTypeDescription
struct_sizeuint32_tStructure size in bytes.
struct_versionuint32_tMK_INPUT_STREAM_DESC_VERSION.
iduint32_tStable application stream ID.
versionuint16_tApplication payload version.
max_payload_bytesuint32_tMaximum encoded input bytes.
handlermk_input_handler_fnServer-side input handler.
uservoid *Context passed to handler.

mk_multiplayer_descstruct

Session endpoints, timing, capacities, budgets, and callbacks.

FieldTypeDescription
struct_sizeuint32_tStructure size in bytes.
struct_versionuint32_tMK_MULTIPLAYER_DESC_VERSION.
rolemk_host_role_tClient or server session role.
hostsconst mk_multiplayer_host_desc_t *Transport endpoints copied during creation.
host_countuint32_tNumber of endpoint descriptors.
app_protocol_iduint32_tApplication protocol identifier.
tick_rate_hzuint32_tAuthoritative simulation tick rate.
snapshot_rate_hzuint32_tSnapshot send rate, clamped to tick_rate_hz.
interpolation_delay_msuint32_tDefault client interpolation delay.
max_extrapolation_msuint32_tDefault maximum extrapolation window.
rpc_timeout_msuint32_tDefault request timeout in milliseconds.
clock_sync_interval_msuint32_tClock synchronization cadence.
max_rpc_methodsuint32_tRegistered RPC method capacity.
max_snapshot_streamsuint32_tRegistered snapshot-stream capacity.
max_input_streamsuint32_tRegistered input-stream capacity.
max_pending_callsuint32_tConcurrent outgoing request capacity.
max_deferred_repliesuint32_tConcurrent deferred-reply capacity.
event_staging_bytesuint32_tStorage preserving callback payloads during poll.
max_reliable_payload_bytesuint32_tMaximum reliable application payload.
max_reliable_queued_bytes_per_peeruint32_tReliable send-queue budget per peer.
max_snapshot_bytes_per_second_per_peeruint32_tSnapshot bandwidth budget per peer.
now_ms_fnmk_multiplayer_now_ms_fnOptional monotonic clock override.
now_ms_uservoid *Context passed to now_ms_fn.
event_fnmk_multiplayer_event_fnOptional session event callback.
event_uservoid *Context passed to event_fn.

mk_multiplayer_eventstruct

Data delivered to the session event callback.

FieldTypeDescription
typemk_multiplayer_event_type_tEvent kind.
peermk_peer_t *Peer associated with the event.
transportmk_transport_tPeer's effective transport.
endpoint_indexuint32_tIndex in mk_multiplayer_desc_t.hosts.
disconnect_reasonmk_disconnect_reason_tReason for a disconnect event.
protocol_errormk_multiplayer_protocol_error_tDetail for a protocol-error event.

mk_multiplayer_host_descstruct

One transport endpoint owned by a multiplayer session.

FieldTypeDescription
struct_sizeuint32_tStructure size in bytes.
struct_versionuint32_tMK_MULTIPLAYER_HOST_DESC_VERSION.
transportmk_transport_tUDP, TCP, or WebSocket transport.
bind_addressconst char *Server bind address, or client local address.
portuint16_tLocal listening or binding port.
max_peersuint32_tMaximum peers accepted by this endpoint.

mk_multiplayer_statsstruct

Aggregate session or per-peer multiplayer counters.

FieldTypeDescription
bytes_sentuint64_tApplication and protocol bytes sent.
bytes_receiveduint64_tApplication and protocol bytes received.
rpc_sentuint64_tRPC messages sent.
rpc_receiveduint64_tRPC messages received.
rpc_timeoutsuint64_tRequests completed by timeout.
rpc_rejecteduint64_tRPC messages rejected by validation.
protocol_errorsuint64_tProtocol violations observed.
snapshots_sentuint64_tSnapshot frames sent.
snapshots_receiveduint64_tSnapshot frames accepted.
coalesced_snapshotsuint64_tStaged snapshots replaced before send.
budget_deferred_snapshotsuint64_tSnapshots deferred by bandwidth limits.
stale_snapshotsuint64_tStale snapshots discarded.
inputs_sentuint64_tInput frames sent.
inputs_receiveduint64_tInput frames accepted.
stale_inputsuint64_tDuplicate or stale inputs discarded.
staged_event_bytesuint64_tEvent payload bytes copied during poll.
staging_pressureuint64_tEvents that exceeded preferred staging pressure.
clock_offset_msint64_tEstimated server-minus-client clock offset.
clock_jitter_msuint32_tEstimated clock synchronization jitter.
snapshot_buffereduint32_tSnapshot frames currently buffered.

mk_rpc_callstruct

Generational handle for an outgoing RPC request.

FieldTypeDescription
iduint32_tPacked call slot and generation.

mk_rpc_contextstruct

Routing metadata supplied to an RPC handler.

FieldTypeDescription
peermk_peer_t *Peer that sent the invocation.
method_iduint32_tRegistered method ID.
versionuint16_tRegistered payload version.
kindmk_rpc_kind_tNotification or request.

mk_rpc_method_descstruct

Registration, routing, delivery, and validation policy for an RPC method.

FieldTypeDescription
struct_sizeuint32_tStructure size in bytes.
struct_versionuint32_tMK_RPC_METHOD_DESC_VERSION.
iduint32_tStable application method ID.
versionuint16_tApplication payload version.
kindmk_rpc_kind_tNotification or request/reply method.
directionmk_rpc_direction_tAllowed routing direction.
deliverymk_delivery_tRequested transport delivery behavior.
max_payload_bytesuint32_tMaximum encoded invocation payload.
handlermk_rpc_handler_fnReceiving endpoint handler.
uservoid *Context passed to handler.

mk_rpc_replystruct

Generational handle for replying to an incoming RPC request.

FieldTypeDescription
iduint32_tPacked reply slot and generation.

mk_rpc_resultstruct

Result passed to an outgoing RPC completion callback.

FieldTypeDescription
statusmk_rpc_status_tTerminal request status.
error_codeuint32_tRemote application error code.
error_messagemk_string_view_tBorrowed remote error message.
payloadmk_reader_t *Reader over a successful reply payload.

mk_snapshot_ackstruct

Acknowledged client input sequence carried by a snapshot.

FieldTypeDescription
input_stream_iduint32_tStable input-stream ID.
sequenceuint32_tNewest authoritative sequence processed.

mk_snapshot_frame_viewstruct

Borrowed view of one received authoritative snapshot frame.

FieldTypeDescription
tickuint32_tWrap-safe authoritative simulation tick.
server_time_msuint64_tSynchronized server timestamp.
dataconst void *Opaque application state bytes.
sizesize_tState payload size in bytes.
acknowledgementsconst mk_snapshot_ack_t *Per-input-stream acknowledgements.
acknowledgement_countuint32_tNumber of acknowledgement entries.

mk_snapshot_samplestruct

Pair of frames and interpolation state selected for rendering.

FieldTypeDescription
oldermk_snapshot_frame_view_tOlder frame view.
newermk_snapshot_frame_view_tNewer frame view.
alphafloatInterpolation or extrapolation factor.
modemk_snapshot_sample_mode_tHow the returned frames should be sampled.

mk_snapshot_send_reportstruct

Outcome counts for a snapshot broadcast operation.

FieldTypeDescription
considereduint32_tConnected peers considered.
stageduint32_tNew snapshots staged for sending.
replaceduint32_tOlder unsent snapshots replaced.
faileduint32_tPeers for which encoding or staging failed.

mk_snapshot_stream_descstruct

Registration and buffering policy for one authoritative snapshot stream.

FieldTypeDescription
struct_sizeuint32_tStructure size in bytes.
struct_versionuint32_tMK_SNAPSHOT_STREAM_DESC_VERSION.
iduint32_tStable application stream ID.
versionuint16_tApplication payload version.
max_payload_bytesuint32_tMaximum encoded state bytes.
history_sizeuint32_tRetained frames per peer.
interpolation_delay_msuint32_tStream interpolation delay override.
max_extrapolation_msuint32_tStream extrapolation limit override.

Enums

mk_multiplayer_capabilityenum

Capability bits reported for a connected multiplayer peer.

ValueDescription
MK_MULTIPLAYER_CAP_RELIABLEReliable delivery is available.
MK_MULTIPLAYER_CAP_UNRELIABLENative unreliable delivery is available.
MK_MULTIPLAYER_CAP_UNRELIABLE_SEQUENCEDNative sequenced-unreliable delivery is available.
MK_MULTIPLAYER_CAP_RPCRPC methods are supported.
MK_MULTIPLAYER_CAP_SNAPSHOTSSnapshot streams are supported.
MK_MULTIPLAYER_CAP_INPUTInput streams are supported.

mk_multiplayer_event_typeenum

Session lifecycle and protocol event type.

ValueDescription
MK_MULTIPLAYER_EVENT_CONNECTEDA peer completed the transport handshake.
MK_MULTIPLAYER_EVENT_DISCONNECTEDA peer disconnected and is being retired.
MK_MULTIPLAYER_EVENT_PROTOCOL_ERRORIncoming data violated the multiplayer protocol.

mk_multiplayer_protocol_errorenum

Detailed reason for a multiplayer protocol error.

ValueDescription
MK_MULTIPLAYER_PROTOCOL_MALFORMEDMessage framing or payload was malformed.
MK_MULTIPLAYER_PROTOCOL_UNKNOWN_MESSAGEMessage type is not recognized.
MK_MULTIPLAYER_PROTOCOL_UNKNOWN_STREAMStream ID is not registered.
MK_MULTIPLAYER_PROTOCOL_UNKNOWN_RPCRPC method ID is not registered.
MK_MULTIPLAYER_PROTOCOL_WRONG_DIRECTIONMessage violated declared routing direction.
MK_MULTIPLAYER_PROTOCOL_VERSION_MISMATCHRegistered method or stream version differs.
MK_MULTIPLAYER_PROTOCOL_PAYLOAD_TOO_LARGEPayload exceeds its declared limit.

mk_rpc_directionenum

Permitted routing direction for an RPC method.

ValueDescription
MK_RPC_CLIENT_TO_SERVEROnly clients may invoke the server handler.
MK_RPC_SERVER_TO_CLIENTOnly the server may invoke client handlers.
MK_RPC_BIDIRECTIONALEither endpoint may invoke the method.

mk_rpc_kindenum

Whether an RPC method is a notification or request/reply call.

ValueDescription
MK_RPC_NOTIFICATIONOne-way message with no completion.
MK_RPC_REQUESTRequest that must complete with a result or timeout.

mk_rpc_statusenum

Terminal status delivered for an outgoing RPC request.

ValueDescription
MK_RPC_STATUS_SUCCESSRemote handler returned a payload successfully.
MK_RPC_STATUS_REMOTE_ERRORRemote handler returned an application error.
MK_RPC_STATUS_TIMEOUTWall-clock timeout elapsed.
MK_RPC_STATUS_CANCELLEDLocal caller cancelled the request.
MK_RPC_STATUS_DISCONNECTEDPeer disconnected before completion.
MK_RPC_STATUS_PROTOCOL_ERRORReply violated the registered protocol.

mk_snapshot_sample_modeenum

Sampling behavior selected for synchronized snapshot playback.

ValueDescription
MK_SNAPSHOT_SAMPLE_INTERPOLATEBlend between an older and newer frame.
MK_SNAPSHOT_SAMPLE_HOLDHold the nearest available frame.
MK_SNAPSHOT_SAMPLE_EXTRAPOLATEPredict forward from the newest frame.

Typedefs

mk_input_handler_fntypedef

typedef bool(*) mk_input_handler_fn(mk_multiplayer_t multiplayer, mk_peer_t *peer, uint32_t stream_id, uint32_t sequence, mk_reader_t *payload, void *user)

Handle one accepted client input payload on the server.

Returns True when the payload was accepted.

mk_input_stream_desc_ttypedef

typedef struct mk_input_stream_desc mk_input_stream_desc_t

Registration and validation policy for a client input stream.

mk_multiplayer_capabilities_ttypedef

typedef uint32_t mk_multiplayer_capabilities_t

Bitmask of delivery and subsystem capabilities available for a peer.

mk_multiplayer_desc_ttypedef

typedef struct mk_multiplayer_desc mk_multiplayer_desc_t

Session endpoints, timing, capacities, budgets, and callbacks.

mk_multiplayer_encode_fntypedef

typedef bool(*) mk_multiplayer_encode_fn(mk_writer_t *writer, void *user)

Encode a payload into a bounded writer.

Returns True when encoding succeeds.

mk_multiplayer_event_fntypedef

typedef void(*) mk_multiplayer_event_fn(mk_multiplayer_t multiplayer, const mk_multiplayer_event_t *event, void *user)

Receive a session lifecycle or protocol event.

mk_multiplayer_event_ttypedef

typedef struct mk_multiplayer_event mk_multiplayer_event_t

Data delivered to the session event callback.

mk_multiplayer_event_type_ttypedef

typedef enum mk_multiplayer_event_type mk_multiplayer_event_type_t

Session lifecycle and protocol event type.

mk_multiplayer_host_desc_ttypedef

typedef struct mk_multiplayer_host_desc mk_multiplayer_host_desc_t

One transport endpoint owned by a multiplayer session.

mk_multiplayer_now_ms_fntypedef

typedef uint64_t(*) mk_multiplayer_now_ms_fn(void *user)

Return a monotonic wall-clock time in milliseconds.

Returns Monotonic milliseconds.

mk_multiplayer_peer_encode_fntypedef

typedef bool(*) mk_multiplayer_peer_encode_fn(mk_writer_t *writer, mk_peer_t *peer, void *user)

Encode a recipient-specific payload.

Returns True when encoding succeeds.

mk_multiplayer_protocol_error_ttypedef

typedef enum mk_multiplayer_protocol_error mk_multiplayer_protocol_error_t

Detailed reason for a multiplayer protocol error.

mk_multiplayer_stats_ttypedef

typedef struct mk_multiplayer_stats mk_multiplayer_stats_t

Aggregate session or per-peer multiplayer counters.

mk_multiplayer_ttypedef

typedef struct mk_multiplayer* mk_multiplayer_t

Opaque multiplayer session handle.

mk_rpc_call_ttypedef

typedef struct mk_rpc_call mk_rpc_call_t

Generational handle for an outgoing RPC request.

mk_rpc_completion_fntypedef

typedef void(*) mk_rpc_completion_fn(mk_multiplayer_t multiplayer, mk_rpc_call_t call, const mk_rpc_result_t *result, void *user)

Receive terminal completion of an outgoing RPC request.

mk_rpc_context_ttypedef

typedef struct mk_rpc_context mk_rpc_context_t

Routing metadata supplied to an RPC handler.

mk_rpc_direction_ttypedef

typedef enum mk_rpc_direction mk_rpc_direction_t

Permitted routing direction for an RPC method.

mk_rpc_handler_fntypedef

typedef void(*) mk_rpc_handler_fn(mk_multiplayer_t multiplayer, const mk_rpc_context_t *context, mk_reader_t *payload, mk_rpc_reply_t reply, void *user)

Handle an incoming RPC invocation.

mk_rpc_kind_ttypedef

typedef enum mk_rpc_kind mk_rpc_kind_t

Whether an RPC method is a notification or request/reply call.

mk_rpc_method_desc_ttypedef

typedef struct mk_rpc_method_desc mk_rpc_method_desc_t

Registration, routing, delivery, and validation policy for an RPC method.

mk_rpc_reply_ttypedef

typedef struct mk_rpc_reply mk_rpc_reply_t

Generational handle for replying to an incoming RPC request.

mk_rpc_result_ttypedef

typedef struct mk_rpc_result mk_rpc_result_t

Result passed to an outgoing RPC completion callback.

mk_rpc_status_ttypedef

typedef enum mk_rpc_status mk_rpc_status_t

Terminal status delivered for an outgoing RPC request.

mk_snapshot_ack_ttypedef

typedef struct mk_snapshot_ack mk_snapshot_ack_t

Acknowledged client input sequence carried by a snapshot.

mk_snapshot_frame_view_ttypedef

typedef struct mk_snapshot_frame_view mk_snapshot_frame_view_t

Borrowed view of one received authoritative snapshot frame.

mk_snapshot_sample_mode_ttypedef

typedef enum mk_snapshot_sample_mode mk_snapshot_sample_mode_t

Sampling behavior selected for synchronized snapshot playback.

mk_snapshot_sample_ttypedef

typedef struct mk_snapshot_sample mk_snapshot_sample_t

Pair of frames and interpolation state selected for rendering.

mk_snapshot_send_report_ttypedef

typedef struct mk_snapshot_send_report mk_snapshot_send_report_t

Outcome counts for a snapshot broadcast operation.

mk_snapshot_stream_desc_ttypedef

typedef struct mk_snapshot_stream_desc mk_snapshot_stream_desc_t

Registration and buffering policy for one authoritative snapshot stream.

Macros

MK_INPUT_STREAM_DESC_VERSIONdefine

MK_INPUT_STREAM_DESC_VERSION

ABI version for mk_input_stream_desc_t.

MK_MULTIPLAYER_DESC_VERSIONdefine

MK_MULTIPLAYER_DESC_VERSION

ABI version for mk_multiplayer_desc_t.

MK_MULTIPLAYER_HOST_DESC_VERSIONdefine

MK_MULTIPLAYER_HOST_DESC_VERSION

ABI version for mk_multiplayer_host_desc_t.

MK_MULTIPLAYER_INVALIDdefine

MK_MULTIPLAYER_INVALID

Invalid multiplayer session handle.

MK_MULTIPLAYER_WIRE_VERSIONdefine

MK_MULTIPLAYER_WIRE_VERSION

Multiplayer message-format version folded into the peer protocol ID.

MK_RPC_CALL_INVALIDdefine

MK_RPC_CALL_INVALID

Invalid outgoing RPC call handle.

MK_RPC_METHOD_DESC_VERSIONdefine

MK_RPC_METHOD_DESC_VERSION

ABI version for mk_rpc_method_desc_t.

MK_RPC_REPLY_INVALIDdefine

MK_RPC_REPLY_INVALID

Invalid incoming RPC reply handle.

MK_SNAPSHOT_STREAM_DESC_VERSIONdefine

MK_SNAPSHOT_STREAM_DESC_VERSION

ABI version for mk_snapshot_stream_desc_t.