{"id":"neonifieddev/network","name":"network","scope":"neonifieddev","platform":"roblox","description":"Easy Roblox networking with batching and optional typed buffer serialization.","version":"1.0.1","latest":"1.0.1","versions":["0.1.0","1.0.0","1.0.1"],"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":"70e68142a8dce2e131865fcd62820c078c89ce45cd5ef8eab75ac1de1ba2b42c","likes":0,"downloads":0,"install":"forest install neonifieddev/network","url":"https://forest.dev/p/roblox/neonifieddev/network","files":"https://api.forest.dev/ai/package/roblox/neonifieddev/network/files","readme":"# Network\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]\nNetwork = \"neonifieddev/network@1.0.0\"\n```\n\nThen require it from your shared remotes module:\n\n```lua\nlocal ReplicatedStorage = game:GetService(\"ReplicatedStorage\")\n\nlocal Network = require(ReplicatedStorage.Packages.Network)\nlocal Types = Network.Types\n\nreturn {\n\tEmptyRemote = Network:Create(\"EmptyRemote\"),\n\n\tTestRemote = Network:Create(\"TestRemote\", Network.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 `Network.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\nInstances can be sent too, but they are not buffer-packed:\n\n```lua\nUsePart = Network:Create(\"UsePart\", Network.Struct({\n\tpart = Types.Instance(\"BasePart\"),\n\taction = Types.S16,\n}))\n```\n\nRoblox sends replicated Instance references through remotes. If a schema contains `Types.Instance` or `Types.Any`, Network falls back to normal Roblox serialization for that payload and validates what it can.\n\n## Companion Packages\n\nPath-based state replication lives in the separate `neonifieddev/subscription` package. See [Subscription/README.md](../Subscription/README.md).\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}