Buffer module
For efficient data serialization and schema definition with optimized packing.
Getting the Buffer Object
lua
local Buffer = Warp.Buffer()Schema System v1.1
Define strict data schemas for optimized serialization and type safety.
Available Schema Types
lua
{
-- Basic types
"boolean",
"string",
"nil",
-- Numeric types
"u8", -- usigned-int
"u16",
"u32",
"i8", -- signed-int
"i16",
"i32",
"f16", -- floating-point
"f32",
"f64",
-- Roblox types
"buffer"
"vector2", -- f16
"vector3", -- f16
"cframe", -- f32 & f16
"color3", -- u8
"color3f16",
"instance",
-- other types
"optional",
"array",
"map",
"struct",
}Custom Datatypes
.custom_datatype
luau
(
name: string,
object: { any },
writer: (w: Writer, v: any) -> (),
reader: (b: buffer, c: number, refs: { Instance }?) -> (buffer, number))
)luau
local Buffer = Warp.Buffer()
-- # this custom datatype must be registered on both server & client side
Buffer.Schema.custom_datatype("u64", {}, function(w: Buffer.Writer, value: any) -- just for reference
-- writing u64 logics here
end, function(b: buffer, cursor: number, refs)
-- reading u64 logics here
return b, cursor
end)
local DataSchema = Buffer.Schema.struct({
LongInteger = Buffer.Schema.u64, -- use the custom datatype
})Writer and Reader Functions
.createWriter
Create a new buffer writer for serializing data.
luau
(
capacity: number? -- Optional initial capacity (default: 64)
): Writerluau
local Buffer = Warp.Buffer()
local writer = Buffer.createWriter(256) -- Pre-allocate 256 bytes.build
Build the final buffer for transmission.
luau
(
writer: Writer
): buffer -- Returns bufferluau
local Buffer = Warp.Buffer()
local writer = Buffer.createWriter()
-- Write some data
Buffer.packValue(writer, "Hello World")
Buffer.packValue(writer, 12345)
-- Build final buffer
local finalBuffer = Buffer.build(writer)
print(buffer.len(finalBuffer)).buildWithRefs
Build the final buffer with instance references for transmission.
luau
(
writer: Writer
): (buffer, { Instance }?) -- Returns buffer and optional instance referencesluau
local Buffer = Warp.Buffer()
local writer = Buffer.createWriter()
-- Write some data with instances
Buffer.packValue(writer, workspace.Part)
Buffer.packValue(writer, game.Players.LocalPlayer)
-- Build final buffer
local finalBuffer, refs = Buffer.buildWithRefs(writer)
print(buffer.len(finalBuffer), refs).reset
Reset a writer for reuse, clearing all data.
luau
(
writer: Writer
)luau
local Buffer = Warp.Buffer()
local writer = Buffer.createWriter()
-- Use writer for first batch
Buffer.writeEvents(writer, events1)
local buffer1 = Buffer.build(writer)
-- Reset and reuse for second batch
Buffer.reset(writer)
Buffer.writeEvents(writer, events2)
local buffer2 = Buffer.build(writer)