{"id":"neonifieddev/networker","name":"networker","scope":"neonifieddev","platform":"roblox","description":"Easy Roblox networking with batching and optional typed buffer serialization.","version":"0.1.0","latest":"0.1.0","versions":["0.1.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":["The package archive does not include its license text; the license is declared in its manifest metadata."],"licenseVerified":false,"dependencies":{},"integrity":"e8506477ca410aa748a92995bbe34b67d528f8f9441396b0f740b9b047e9ae15","likes":0,"downloads":0,"install":"forest install neonifieddev/networker","url":"https://forest.dev/p/roblox/neonifieddev/networker","files":"https://api.forest.dev/ai/package/roblox/neonifieddev/networker/files","readme":"# Networker\n\nWally package for easy Roblox networking with schema-shaped packing, batching, unreliable sends, and optional raw fallback.\n\n## Install\n\n```toml\n[dependencies]\nNetworker = \"neo/networker@0.1.0\"\n```\n\nThen require it from your shared remotes module:\n\n```lua\nlocal ReplicatedStorage = game:GetService(\"ReplicatedStorage\")\n\nlocal Networker = require(ReplicatedStorage.Packages.Networker)\nlocal Types = Networker.Types\n\nreturn {\n\tEmptyRemote = Networker:Create(\"EmptyRemote\"),\n\n\tTestRemote = Networker:Create(\"TestRemote\", Networker.Struct({\n\t\thealth = Types.U16,\n\t\tTags = { Types.S16 },\n\t}))\n}\n```\n\nThe schema argument is optional. Without it, the remote still batches calls, but sends regular Roblox values without buffer packing or schema validation.\n\nKeyed tables become structs, `{ Type }` becomes an array, nested keyed tables become nested structs, and `Networker.Map(keyType, valueType, maxPairs)` handles dynamic dictionaries.\n\n`Types.S16` means a string up to 16 bytes. Use `Types.I16` for a signed 16-bit integer.\n\n## Development\n\n`default.project.json` is the package project used by Wally. Use `dev.project.json` for the Studio benchmark/examples.\n","readmeTruncated":false}