Soap - ScriptableObject Architecture Pattern

Youtube Tutorials | SOAP User Guide | Discord


Tired of spaghetti code? 🍝


Soap offers no-code solutions to common spaghetti code issues by letting you:

  • Share variables across scenes and components
  • Send and receive events in a simple but powerful manner
  • Automatically bind UI and components to data
  • Save key variables in one-click

Makes game dev easier and enjoyable 🎲


Soap makes decoupling your code easy and seamless, enabling you to create complex systems like abilities, power ups, inventory and other gameplay features in a elegant, modular and reusable manner. Soap is still quite new, but has already been used in games like Big Boy Boxing, Anx Defense, Corrupted: Dawn of Havoc, Gym Class VR, multiple hit mobile games (10M+ downloads) and more.


Soap also comes with various quality of life features and efficient custom inspectors to improve your game dev experience.


Core Features 🚀


  • Scriptable Variables (+ one-click persistent save in builds)
  • Scriptable Lists & Dictionaries
  • Scriptable Events + Events Listeners
  • Scriptable Enums
  • Scriptable SubAssets
  • Scriptable Saves
  • Runtime Variables
  • Runtime Injectors
  • Variable References
  • Binding Components
  • Reference tracking (for scene and assets references)
  • Soap Wizard (Manage everything in one place)
  • Soap Type Creator (Extend to your game easily)
  • Tags (to classify your Soap assets)

Better, Faster, Stronger 💪🏼


  • Most performant ScriptableObject Architecture on the Asset Store.
  • Reduce wait time to enter play mode by 90%, by enabling the editor play mode option (compatible with Soap).
  • Tested on the latest LTS Unity versions starting from 2019.4 on all platforms.
  • Built and refined over 4+ years of shipping games, focusing on UX and practical features 

Integrations



Community 🗣


Do you have issues, found a bug, or have suggestions for improvement?

Soap has an active Discord community, so don't hesitate. A lot of recent features were suggested by users :).


Documentation 📃


We have a growing collection of Youtube Tutorials and resources to facilitate SOAP learning curve. We even have a custom AI Bot trained on SOAP documentation!


Useful Links:


Release Notes

## [3.5.1] - 2025-03-11
- Added a SelectParent method for SubAssets
- Added keeping the Namespace in the SoapTypeCreator persistent
- Added compatibly with nullable types Scriptable Variables
- SubAssets backing fields names are now properly displayed
- Fixed templates scripts now using Rider format
- Fixed allowing to inherit from ScriptableCollection
- Fixed Odin [HideLabel] bug with SubAssets icon
- Fixed ScriptableCollection resetting when "None" reset mode was selected



## [3.5.0] - 2025-02-09


- Added Scriptable Dictionary type


- Added Scriptable Dictionary Creator Window


- Added new Example Scene for Scriptable Dictionaries


- Added Set Icon menu item to assign icons to existing Soap CS files


- Added auto-assignment of icons when creating new Soap types with the Soap Asset Creator


- Added Soap Asset Creator


- Added Soap Asset Creator menu item at the top of the menu items list


- Added optional Prefixes in Soap Settings


- Added new category in Soap Wizard (Collections) that groups lists and dictionaries


- Changed ScriptableBase now automatically inherits from SerializedScriptableObject if Odin is present


- Fixed changing reset mode for collections when not reloading domain


- Fixed EditorPrefs used for all projects (now per project)


- Fixed ScriptableList now properly allows duplicates



## [3.4.1] - 2025-01-17


- Added safety assigning for tags if not found in settings.


- Fixed MinReference property returning wrong value for Int and Float Variables



## [3.4.0] - 2025-01-12


- Added [AutoTag] attribute for auto tagging SOAP SO on creation


- Added a way to add new tag from the tag dropdown


- Added support to set the tag of multiple SOAP SO at once


- Added Bindings icons


- Changed Min and MaxReference in Int and Float variables to a public property (Get/Set)


- Fixed Delay in EventListeners not initializing with local value


- Fixed error when drawing a list of ScriptableVariables


- Fixed [ShowIf] attribute not working with custom inspectors


- Fixed ScriptableBaseDrawer not compatible with [ReadOnly] attribute


- Added Runtime Injectors and [RuntimeInjectable] attribute



## [3.3.1] - 2024-11-11


- Added override Get Value in Float and Int Variable


- Added [HelpUrl] attribute to classes


- Fixed infinite loop caused by circular references in FindReferences


- Fixed direct text assignment in BindTextMeshPro to use SetText()


- Fixed enum not usable without needing [Serializable] attribute



## [3.3.0] - 2024-10-11


- Added Support for Game Creator 2


- Added Variable Reference usage for min and max Value of Int and Float Variables


- Added option to use MaxValue from Int and Float Variables in Bindings


- Added option to enable raising Scriptable Events from the inspector


- Added shortcuts support to Soap Wizard


- Added Soap Settings in Preferences Window


- Added FloatReference for Delay field in EventListeners


- Fixed References with Playmaker Actions


- Fixed OnValueChanged Object display with Playmaker Actions


- Fixed Runtime value being shown in the inspector


- Fixed Bindings not always refreshing value when modified from Inspector


Basic Information
Latest Version
3.5.1 (12 Mar 2025)
Publisher
Obvious Game
Category
Tools/Utilities
Size
0.8 MB
Price
€64.4
Asset Rating
(45)
Extended Information
Unity Versions
2019.4.40
Render Pipelines
BIRP URP HDRP
State
published