Data Kit – The Reimagined Data Serialization System For Unity

Hi everyone,

I’d like to introduce DataKit, a reimagined new approach to saving and loading your game’s data - soon to be released on the Asset Store!

About DataKit v2.0

Almost every game has data that needs to be saved and loaded. But let’s face it, working with data is often very abstract, difficult to visualise and down right tedious to debug. How about serialising different data types? That’s a whole other set of problems!

DataKit is a unique cross-platform data serialization system to automatically handle most aspects of saving and loading your game’s data. Features include local and global data, save slots, save points, data groups, obfuscation, encryption and even automatic screenshots. Another great DataKit feature is the intuitive visual debugger, allowing you to view, edit, delete and restore your serialized data in real-time while testing your games in the Editor! DataKit is a powerful core asset that any game project could benefit from!

Offering unique and intuitive visual editors, you can easily setup and debug the data you’d like to save. DataKit offers “Global Data” for storing things like graphics settings or In-App Purchases and “Local Data” for setting up what is saved in each save point. All of your data keys are organized into groups for better management and fast performance.

Along with options to save your data to local files or directly into PlayerPrefs, you can also choose how many save slots and save points you’d like DataKit to manage for you. Save slots allow you to implement multiple characters or accounts. Save points are essentially snapshots of local data, allowing a user to load the state of the game at a previous point in time. DataKit can also manage deleting the oldest save points to keep within a maximum limit.

Unlike systems such as PlayerPrefs which only support saving integers, floats and strings; DataKit allows you to serialize most common data types, even when using arrays and custom classes (see ‘Compatible Types’ in the documentation PDF for a full list). DataKit also offers a variety of ways to serialize references. As well as saving many reference types by value, the optional Reference Database system allows you to directly reference specific assets located in the Resources folder.

DataKit also features some powerful obfuscation options! You can deter cheating by obfuscating your data with 128-bit AES Encryption or with the faster but less secure XOR algorithm. If you don’t need encryption, DataKit can literally strip it out of its own codebase using a simple platform define in Unity’ Player Settings.

In short, DataKit is a powerhouse of a plugin that will give you new and intuitive ways to save, load and debug your game’s data!

Features

  • Visually Setup & Debug Your Game’s Data!
  • Automatically Handle All File I/O!
  • Local & Global Data!
  • Data Groups & Keys!
  • Save Slots & Save Points!
  • Serialize Common Value & Reference Types!
  • Optional XOR Obfuscation!
  • Optional AES Encryption!
  • Optional Reference Database System!
  • Automatically Capture Screenshots!
  • Preload Data In Editor For Fast Testing!
  • Event Driven API!
  • Comes with 8 Fully Commented Example scenes!
  • Documentation PDF and High quality video tutorials!
  • Full source, No DLLs!
  • Fast and friendly email support!
  • Compatible with Unity 2018.x to 2019.x!

Introduction Video

Find out more about DataKit in this overview video:

Promo Images

Find out more about DataKit in these images:

Tutorial Videos:

Follow these tutorials to become a Data Kit pro! :slight_smile:

> DataKit Overview Video
> Tutorial 1 - Setting And Debugging Data
> Tutorial 2 - Reference Database
> Tutorial 3 - Scripting With DataKit

Documentation

Take a look at the Data Kit manual here:

> Documentation (PDF)

WebGL Demo:

Check out this WebGL demo to view the fully commented example scenes that come with DataKit:

> DataKit Tech Demo (WebGL)

Where To Get DataKit

DataKit can be purchased from the Asset Store or my own site!

Get DataKit From the Asset Store:
Data Kit - The Reimagined Data Serialization System For Unity

DataKit is also available on my site too which can be found here: Data Kit – The Reimagined Save Game System For Unity – Unity Games Development

Thanks for your interest! If you have any questions, feel free to ask! :slight_smile:

  • Mel
1 Like

@melgeorgiou , hi, really interested in this asset - but what I really need is something which also saves scene gameobjects with their components and and component fields/properties values - which can change in runtime?

Hi @Duffer123_1 ,

Firstly, thanks for your interest in DataKit! :slight_smile:

This is something I’ll be looking into as DataKit moves forward, although to be honest it isn’t the most efficient way of saving your games because there is usually a lot of redundant data that is saved along with it. All of this has an impact on performance and disk space. However, I know that some people prefer convenience over efficiency so I will be looking more closely at that as DataKit evolves! :slight_smile:

In the meantime, DataKit has some pretty cool example scenes that show how to save objects (even instantiated ones) in your scene using a more efficient approach!

Hope this helps! :slight_smile:

  • Mel
1 Like

@melgeorgiou , thanks for the quick response!

@Duffer123_1 , no worries! :slight_smile:

DATA KIT v1.0 IS NOW LIVE ON THE ASSET STORE!

DataKit v1.0 is now LIVE on the Asset Store!

IMPORTANT: Please remember to backup your projects before installing! :slight_smile:

  • Mel
1 Like

Looks very good so far!

Any plans for integrations/compability for projects that are developed for PC but also ported to consoles? (Xbox One, PS4, Nintendo Switch)

Hi @Onevisiongames !

Firstly, thanks for your interest in DataKit! :slight_smile:

As far as I know, DataKit should work on consoles ( although in honesty, I haven’t been able to verify as I don’t personally develop projects on those platforms ). I’ve tested on iOS, Android, Windows, Mac and WebGL so far.

BTW: There is also a PlayerPrefs storage mode in DataKit. This is what DataKit uses for WebGL in order to circumvent saving to local files (which is forbidden on the platform). Instead, it uses PlayerPrefs as an intermediary without losing any DataKit functionality ( other than Unity’s 1MB PlayerPrefs limit ). This should theoretically allow you to save data even if there was an issue that I’m not aware of.

… So yeah, I don’t see why it wouldn’t work but probably best to test early on to make sure!

Hope this helps! :slight_smile:

  • Mel

DATA KIT v1.0.1 IS NOW LIVE!

Hi everyone!

DataKit v1.0.1 is now LIVE on my site: here
I’ll let everyone know when DataKit v1.0.1 is approved by the Asset Store! :slight_smile:

ALWAYS BACKUP YOUR PROJECTS BEFORE UPDATING!
IMPORTANT: When you open the package to install the update, make sure to DESELECT the ‘DataKit Setup’ and ‘DataKit References’ assets from the list. If you don’t do this they will be overwritten with the default versions!

WHAT’S NEW:

This is an important maintenance update:

- DataKit now handles corrupted data files when building save point maps.
- Fixed potential memory leak when updating save point maps ( Texture2D Screenshots )
- Fixed a memory leak in the mini Notifications UI in the demo scenes.
- Fixed bug with Vector4’s not saving the W value correctly.

WHAT’S NEXT FOR DATAKIT?

DataKit V2 has been in the works for several months and is almost ready! For now, I’ll just say that it is a GARGANTUAN update that introduces some really cool and unique features. It will also be a FREE update to everyone who has purchased DataKit v1.x. I’ll be releasing more details about the cool new features very soon! :slight_smile:

  • Mel

DATA KIT v1.0.1 IS NOW LIVE ON THE ASSET STORE!

DataKit v1.0.1 is now LIVE on the Asset Store!

ALWAYS BACKUP YOUR PROJECTS BEFORE UPDATING FROM A PREVIOUS VERSION!
IMPORTANT: When you open the package to install the update, make sure to DESELECT the ‘DataKit Setup’ and ‘DataKit References’ assets in the list. If you don’t do this they will be overwritten with the default versions,

Thanks! :slight_smile:

  • Mel

LOVE this! How do I customise the start screen? For example, Datakit StartupScreen scene? I can change the Full screen panel with the text and images I cannot find where the first splash screen is run or stored.

Hi @lynnetelfermc

Firstly, thanks for purchasing DataKit! :slight_smile:

If you can send me a PM with your invoice ID I’ll be happy to help!

  • Mel

DATA KIT v2.0 IS NOW LIVE!

Hi everyone!

DataKit v2.0 is now LIVE on my site: here

ALWAYS BACKUP YOUR PROJECTS BEFORE UPDATING!
IMPORTANT WARNINGS FIRST:

There is a big change in DataKit v2.0 which means that older save game data from DataKit v1.x can no longer be loaded. If your game has already been released, do not upgrade your version of DataKit for that project. Otherwise, please back it up and follow the upgrade guide found in the new documentation here.

Now that’s out of the way, let’s check out what’s new! :slight_smile:

WHAT’S NEW:

Here’s an overview of the new update:

- Implemented “External Assets”. Users can now save assets into their own external files to keep DataKit’s core save data lightweight and blazingly fast!
- Reference Database V2: allows sub-assets (children), automatic updates when creating builds, optional initialization modes and support for Transforms (via GameObjects).
- New multi-threading for loading, saving and deleting external files.
- inspector types: byte, short, decimal, AnimationCurve, Gradient, Shader and Transform.
- New updated serializable types now use constants to cache keys resulting in much better performance!
- Save / Load Global Data independently in the Editor.
- Debugging options for threads and external assets.
- DataKit.IsReferenceDatabaseReady() API method to check whether the Reference Database is ready.

Let’s zero in on some of the bigger features:

EXTERNAL ASSETS

External assets allow you to save an asset to a data key (similar to the existing SetLocalAsset method) but have DataKit automatically link the key to an external file in your save point folder. No filepaths are needed, DataKit automatically handles everything and allows you to keep your core save game data small and blazingly fast! :slight_smile:

Note that External Assets are not compatible with WebGL builds so be sure to use them only if you’re not going to need that platform.

REFERENCE DATABASE V2

The Reference Database has had a massive revamp which now allows it to not only track references in your Resources folders, but also specific child objects inside of those resources (the lack of child support was the biggest limitation in the previous version).

There is also a much faster instantiation routine, with options to use the older method if preferred.

NEW TYPES

There are loads of new types that are available for real-time debugging in the Editor including byte, short, decimal, AnimationCurves, Gradients, Shaders and Transforms!

PERFORMANCE IMPROVEMENTS

All DataKit types have been updated to use constant strings to set and load keys (which reduces memory allocations and improves performance). Multi-threading has also been added for most file operations which makes loading, saving, switching save points, etc super fast behind the scenes!

I hope everyone is looking forward to V2 - it is of course a free upgrade! :slight_smile:

Feel free to checkout the updated documentation in the meantime. I’ll let everyone know when DataKit v2.0 is approved by the Asset Store! :slight_smile:

  • Mel

DATA KIT v2.0 IS NOW LIVE ON THE ASSET STORE!

DataKit v2.0 is now LIVE on the Asset Store!

ALWAYS BACKUP YOUR PROJECTS BEFORE UPDATING FROM A PREVIOUS VERSION!
IMPORTANT: There is a big change in DataKit v2.0 which means that older save game data from DataKit v1.x can no longer be loaded. If your game has already been released, do not upgrade your version of DataKit for that project. Otherwise, please back it up and follow the upgrade guide found in the new documentation here.

Thanks! :slight_smile:

  • Mel

Hi, I have just bought this asset yesterday and have some questions about the Save Slots,

  1. how could I know which slot is to be used? I found there no methods like HasDataInSlot or similar methods.
  2. how could I delete all data from a Slot?

Hi @MoFaShi ,

I’ve replied to your PM - answers are over there!

Thanks! :slight_smile:

  • Mel

hi Mel,

I am looking forward to purchase a license of DataKit.

Can datakit handle saving/loading data of multiple player units data so as to create a checkpoint type save system?
(Assume a RTS example with a level having 10-15 different player troops)

Thanks

Hi @indie_dev85

Thanks for your interest in DataKit! :slight_smile:

Sure, as long as you design your data to store it I don’t see why not :slight_smile:

Hope that helps!

  • Mel

Cool asset, I bought it.
Would like to sync the data to a mysql server for a multiplayer game.
The reason for syncing to a mysql server so that the data can be querried using sql statements.

Hi @EmeralLotus ,

Firstly, thanks for purchasing DataKit! :slight_smile:

Please send me a PM / email with your invoice ID and we can take it from there!

Thanks,

  • Mel