UNPKG

mudb

Version:

Real-time database for multiplayer games

35 lines (34 loc) 1.61 kB
import { MuSchema } from '../schema/schema'; import { MuUint32 } from '../schema/uint32'; export declare type MuAnySchema = MuSchema<any>; export interface MuStateSchema<ClientSchema extends MuAnySchema, ServerSchema extends MuAnySchema> { client: ClientSchema; server: ServerSchema; } export declare const MuDefaultStateSchema: { client: { ackState: MuUint32; forgetState: MuUint32; }; server: { ackState: MuUint32; forgetState: MuUint32; }; }; export declare class MuStateSet<State> { ticks: number[]; states: State[]; constructor(initialState: State); at(tick: number): number; } export interface MuStateReplica<Schema extends MuAnySchema> { tick: number; state: Schema['identity']; history: MuStateSet<Schema['identity']>; windowSize: number; } export declare function garbageCollectStates<State>(schema: MuSchema<State>, stateSet: MuStateSet<State>, horizon: number): boolean; export declare function addObservation(ticks: number[], newTick: number): void; export declare function forgetObservation(ticks: number[], horizon: number): void; export declare function parseState<Schema extends MuAnySchema>(packet: Uint8Array, schema: Schema, replica: MuStateReplica<Schema>, ack: (tick: number, unreliable?: boolean) => void, forget: (horizon: number, unreliable?: boolean) => void): boolean; export declare function publishState<Schema extends MuAnySchema>(schema: Schema, observations: number[][], replica: MuStateReplica<Schema>, raw: (data: Uint8Array | string, unreliable?: boolean) => void, reliable: boolean): number;