Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Scriptable Framework now available via the package manager

Discussion in 'General Discussion' started by JakHussain, Aug 16, 2019.

  1. JakHussain

    JakHussain

    Joined:
    Oct 20, 2016
    Posts:
    318
    I've recently released an open source version of a modularity toolkit called Scriptable Framework. It's insprired by Scriptable Object Architecture as described by Ryan Hipple in Unite 2017 and the 5 SOLID programming principals and is especially helpful to artists and designers. Check it out here: https://github.com/pablothedolphin/Scriptable-Framework

    Docs can be found here: https://pablothedolphin.github.io/Scriptable-Framework/

    I have a scoped registry set up for you to install it via the package manager and I'm using Docfx to generate my documentation in the exact same way Unity does for their packages.

    What makes this special compared to similar interpretations of SO architecture is my intentional separation of reference types and value types where value type containers have custom default values. This gives you additional flexibility by forcing your data to initialise with your own default values even before the awake call.

    It's also much easier to to use the C# Job system with this because you can emulate ECS style work flows and directly convert my collections into native arrays.

    Ive also added a number of useful utilities I think most people would appreciate.

    I'm happy to hear any feedback or criticism anyone might have so please take a look!
     
    ConorArup and Amon like this.
  2. JakHussain

    JakHussain

    Joined:
    Oct 20, 2016
    Posts:
    318
    My Scriptable Framework is now available at version 1.2.12! It's come a long way and I genuinely do believe it can be really useful to new game developers just starting out. Especially with the documentation I've written out for it. If you're curious you can follow the simple installation guide and give it a go!
     
  3. frosted

    frosted

    Joined:
    Jan 17, 2014
    Posts:
    4,044
    I spent about 4 minutes looking randomly through code. I have no idea what use this has.

    If you want people to use an api - you should have problems that the api solves, and examples that are useful.
     
  4. JakHussain

    JakHussain

    Joined:
    Oct 20, 2016
    Posts:
    318
    I guess if you've not heard of Scriptable Object Architecture the use cases won't be pretty clear. The idea is that this package gives you a tonne of Scriptable Object types that let you store your game data in those so that say your inventory system doesn't need a direct reference to your player controller. Both systems just need to reference the same scriptable object.

    The event system this api provides also helps with this seperation of concerns. The docs I've written cover this in more detail withe examples.

    By seperating out your code using an API like this, you can make your whole game much more modular which let's multiple developers work on it in parallel more easily or even let you drag and drop a whole system into an empty project for testing / starting a different project using that same module.

    In short, its a tool set that makes development a lot more manageable and allow the individual systems in your game be designed as "batteries included".

    Here's a link to Ryan Hipple's talk for more context:
     
  5. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,083
    I've seen that video and I use its implementation, but I'm also not seeing the benefits because most of these things are incredibly easy to just implement on your own.
     
  6. JakHussain

    JakHussain

    Joined:
    Oct 20, 2016
    Posts:
    318
    So my implementation is unique in that you can set up custom default values for your data containers to initialise with: https://pablothedolphin.github.io/Scriptable-Framework/articles/Runtime Lists/valueLists.html

    These values will be automatically assigned before even the awake call by the underlying code so that you don't have to write initialisation code anymore. I'll admit there's no one single thing my package does that's going to vastly impact projects but it's the accumulation of all the conveniences it offers which adds up to a fairly notable advantage.