{"id":"gigahd/smapshot","name":"smapshot","scope":"gigahd","platform":"roblox","description":"A small library for saving and loading maps","version":"0.4.0","latest":"0.4.0","versions":["0.1.0","0.1.1","0.2.0","0.3.0","0.4.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"a41af652123535abab0e312544c8722f489b4b1eb415c63e92fa6fd5bf1d7203","likes":0,"downloads":0,"install":"forest install gigahd/smapshot","url":"https://forest.dev/p/roblox/gigahd/smapshot","files":"https://api.forest.dev/ai/package/roblox/gigahd/smapshot/files","readme":"# Smapshot\n\nSmapshot is a small package for saving and loading Roblox maps as portable snapshots. Capture a map once, then load it into any place from a snapshot stored in your game, or dynamically from a Roblox asset id at runtime.\n\n## Features\n\n- **Modular capture** — pick any combination of terrain, lighting, workspace, sound, materials, and arbitrary instances. Omit a section and it's skipped.\n- **Fine-grained filtering** — whitelist or blacklist children for each subsystem.\n- **Region-based terrain** — slice terrain to a `BasePart` or `Region3int16` instead of saving the whole map.\n- **Camera capture** — optionally save and restore `Camera.CFrame` with the workspace.\n- **Material variant filtering** — restrict captured `MaterialVariant`s by base material.\n- **Dynamic loading** — `LoadAssetAsync` pulls snapshots from a Roblox asset id and caches them for repeat loads.\n- **Consume mode** — reparent directly into target services instead of cloning, for one-shot loads with zero clone cost.\n- **Keep-dirty mode** — additively layer a snapshot onto existing state instead of clearing first.\n- **Version-stamped** — snapshots carry a version string; check compatibility with `IsCompatible` and `ReadVersion`.\n\n## Installation\n\nInstall via the [Roblox plugin](https://create.roblox.com/store/asset/109345457910746/Smapshot), or as a package via [Wally](https://wally.run/package/gigahd/smapshot) or [Pesde](https://pesde.dev/packages/gigahd/smapshot). The plugin can also drop the package straight into your place.\n\n## Quick example\n\n```lua\nlocal Smapshot = require(path.to.Smapshot)\n\nlocal snapshot = Smapshot.Snapshot({\n    name = \"Arena\",\n    saveLocation = game:GetService(\"ReplicatedStorage\"),\n    terrainConfig = { slice = workspace.ArenaBounds },\n    lightingConfig = { blacklist = { \"Sky\" } },\n    workspaceConfig = { saveCameraCFrame = true },\n    instanceConfig = { instances = { game:GetService(\"ReplicatedStorage\").Arena } },\n})\n\n-- later, in the same or a different place:\nSmapshot.Load(snapshot)\n-- or, from an uploaded asset:\nSmapshot.LoadAssetAsync(1234567890)\n```\n\n## [Full API Reference →](https://gigahd.github.io/Smapshot/api/Smapshot)\n","readmeTruncated":false}