Youtube Tutorials | SOAP User Guide | Discord
Tired of spaghetti code? 🍝
Soap offers no-code solutions to common spaghetti code issues by letting you:
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 🚀
Better, Faster, Stronger 💪🏼
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:
## [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