TraditionalSave2 - Saving with Files


TraditionalSave2 is a DataStore module that proposes a new way of managing save data by spliting your save data into seperate files.


TraditionalSave2 is a complete rewrite and remake of the orignal module of TraditionalSave comming with many improvments from it. TraditionalSave was originaly made because there wasn’t any module that had manual saving, or system that split your game into files. I had a major issue with the very way the API worked in the original so I decided to create a 2.0 version to fix it! (You can read more about this “Issue” in the docs)

TraditionalSave2 has many features and improvements from the original including

  • Being Fully strict mode compatable (and written in strict mode!)
  • Improved codebase/internals
  • WAY better Documentation
  • Has a logo (Doesn’t really matter to you though lol)
  • Session locking
  • Multiple files loaded at once
  • Auto saving (Optionaly)
  • Being intuitve and easy to use/understand
  • Highly customizable
  • Low Get/Set rates
  • Studio/Live data seperation
  • Profiles aren’t player specific anymore!
  • Under the MIT license.
  • Will continue to get maintained as I use it in my projects.
  • Built in signals

In TraditionalSave2 instaid of saving all of your data into one large table, you split your data into multiple ‘files’ which can be loaded into using “loaders”. This design allows you to have things like multiple save files, while also helping to clean up the structure of your data.

Downloads & Docs

You can find the documentation, and download below!

TraditionalSave2.rbxm (13.5 KB)


Polls

Would You ever consider using TraditionalSave2?
  • Yes
  • No
  • I would make my own DataStore module
  • If I needed save files.
  • If I ever needed non auto save
  • Maybe after the module gets polished up some more
0 voters
What’s most important to you in a DataStore module?
  • Ease of use
  • Session locking
  • Reliability
  • Low Get/Set rates
  • Customizablity
0 voters
1 Like

Version 2.1.0

Changes

  • Added OnUnloading event. This is not the OnUnloaded event, that happens after a file is unloaded.
  • Added OnSaving event. It fires right before saving new data and marking the profile for saving.
  • Added a DeepCopy module that returns a function to create a deep copy. This code is directly taken from the Roblox documentation.
  • Added Profile:ReadDataBulk(Keys), which returns copies of the data for the specified files. The keys you provide become the indexes for the returned data. This is a deep copy, so modifications won’t affect the profile itself. Designed for save menus where you need to display information about multiple files without loading them directly.
  • Profile:SetMethods() type definitions now use a new type called MethodList for the second input (the Methods list). This allows method lists to be nested inside other method lists. This change is specifically for strict mode and only affects type annotations; it does not change logic.
  • Fixed a memory leak with loaders and profiles, where loaders weren’t destroyed when profiles were destroyed. Added a new hidden variable _Loaders because loaders were previously not known by the profile.
  • Exposed the FileKey type as part of the public API.
  • Added Profile:IsFileLoaded() to the profile object. It returns a boolean determining if a file is currently loaded. Used for internal checks, but exposed because it may serve general purposes.
  • Added Profile:CopyFile() to the profile object. It allows you to copy a file’s data to another file, optionally overwriting any existing data.
  • Added Profile:DeleteFile() to the profile object. It allows you to delete a file’s data.

Documentation Fixes

  • Fixed Profile Links in the API Reference across the Store object and PlayerProfiles object
  • Added Documentation for the StoreConfig type.