mudb
Version:
Real-time database for multiplayer games
35 lines (34 loc) • 1.61 kB
TypeScript
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;