Search Unity

  1. Unity 2020.1 has been released.
    Dismiss Notice
  2. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

Assets [WIP] Rucksack - Multiplayer Inventory System

Discussion in 'Works In Progress' started by jorisshh, Mar 29, 2018.

  1. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522


    We've built Rucksack with the goal of being the most flexible and extensible inventory solution with UNet support that enables you to easily setup player inventories, NPC inventories, banks, premium shops and much more! So, what does this mean?

    It means that Rucksack is a super extensible system with full source code, a modular event based UI system, multiplayer built-in with UNet integration, a network permission model with server-based authorization, and much more!

    We're on a mission to build the best modular multiplayer-ready inventory system on the market, using all the knowledge we've gained over the years on the Asset Store - and we're very hyped about releasing what we believe to be the best tool we've ever built!


    ⚔️ Main Features ⚔️


    Multiplayer-compatible with UNet integration:

    With a built-in integration for UNet that allows you to integrate into any server/networking setup, Rucksack is perfect for both online multiplayer and singleplayer games. Rucksack is secure and uses a server-authoritative permission model; So, no cheaters!

    Modular event based UI system:
    You’re in full control of your UI with our modular and event-based UI system. The system is very fast and extensible, yet simple to use, which means you’ll be setting up your inventory / collections UI in no time! It doesn’t matter if you’re making a fantasy RPG or a casual mobile game with IAP - Rucksack’s UI system can handle it all.

    Items with behaviours:
    In Rucksack, items can have behaviors, and you can very easily make your own item types and add custom behavior. We won’t limit your options!

    Restrict collections:

    Need a quest items-only inventory? Or a consumables-only inventory? Not a problem for Rucksack; Use any metric to restrict the objects that can be stored in a collection.

    Insanely extensible:
    Rucksack has been built from the ground-up to be extensible in every possible way, ensuring that you’ll never be limited in what you can achieve with the system if you want to extend it.

    Visual item equipment / NPC’s with equipment:

    Any character in your game can have their own inventories and equipment, which means you can make them equip different weapons and gear by simply binding it onto the NPC (static, skinned, and dynamic cloth meshes, or write your own equipment handler).

    Permission Model with server-based authorization:
    Our server-based authorization model makes your game cheat-proof, while remaining flexible and extensible to fit every kind of server / network setup. Example use with UNet: UNetPermissionRegistry.collections.SetPermission(collection, player, Permission.Read).

    Vendors can sell anything for anything:
    Need to be able to sell houses for cats, or skill for skillpoints? With Rucksack, any item can be sold, and anything can be a currency. Go nuts!

    Shared and non-shared (instanced) banks and chests:

    With Rucksack, you can easily differentiate between and setup both shared and non-shared (instanced) banks and chests in-game. The system is so flexible that the shared banks and chests could theoretically be shared between every player in a game, everyone in your party - and everything in-between.

    Modular input and UI system:
    Rucksack’s modular input system is extensible and changeable, and allows you to create input modules to handle your input. The beauty is that you can very easily replace or swap out certain input modules for maximum control (example).

    Item inheritance:

    Want to reduce the data transfers in your online game? With item inheritance, you can create variations of items (e.g. a Sword that can also be a Fire Sword). With Rucksack’s inheritance system, the Fire Sword can inherit its base stats from the Sword, while only overriding or adding those properties that have changed or have been added. In a large game, this saves a lot of duplicate data of unused props from being transferred.

    Different prices at vendors for different users:

    You can easily achieve and setup different prices at vendors / shops based on whatever properties you want, such as different in-app purchase prices based on country (requires custom IVendor<T> implementation).

    Thanks to everyone who helped beta test, and we hope you're as excited as we are about Rucksack! Got any suggestions or feedback? Let us know below :)



    - Your friends at Devdog (Joris and Sune)
     
    Last edited: Sep 14, 2018
    lawsochi, Mark_01, llJIMBOBll and 7 others like this.
  2. SecretAnorak

    SecretAnorak

    Joined:
    Mar 19, 2014
    Posts:
    175
    Superb stuff, Can't wait to get my hands on it. (insert Futurama meme here)
     
    jorisshh likes this.
  3. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    974
    Finalllyyyyyy <3
     
  4. devin0xffffff

    devin0xffffff

    Joined:
    Aug 22, 2017
    Posts:
    1
    After playing around with networking inventory pro, I've been watching on the Devdog Discord for this release! Can't wait to see an UMA integration @SecretAnorak ^^
     
    mwituni and SecretAnorak like this.
  5. SecretAnorak

    SecretAnorak

    Joined:
    Mar 19, 2014
    Posts:
    175
    Oh trust me, I'll be on the case immediately :D
     
    hopeful, mwituni and jorisshh like this.
  6. NilsMunch

    NilsMunch

    Joined:
    Dec 23, 2013
    Posts:
    1
    Looking forward to getting my hands dirty on this right away :D
     
    jorisshh likes this.
  7. TheMessyCoder

    TheMessyCoder

    Joined:
    Feb 13, 2017
    Posts:
    497
    Oooooooooooooooooooooooooooooooooooooooooooooooooooooooooh sweet.
    LoL 3yrs worth begging and its here!! Well worth the wait
     
    mwituni and jorisshh like this.
  8. treshold

    treshold

    Joined:
    Nov 9, 2013
    Posts:
    223
    Looks very cool and promising asset! thumbs up :)
     
  9. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Really hope you'll enjoy it! Can't wait to hear what you all think about it.

    Videos and more will be coming soon too.
     
  10. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    310
    Does it support offline mode? Please compare with inventory pro in detail.
     
    jorisshh likes this.
  11. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    974
    Yes, it does, it just also happens to have really good support for online play.

    http://rucksack-docs.readthedocs.io/en/latest/
     
    jorisshh likes this.
  12. Paxew

    Paxew

    Joined:
    Apr 8, 2014
    Posts:
    30
    Is it possible to make this asset work with other networking solutions? Or is UNET required?
     
    mwituni, rubble1 and jorisshh like this.
  13. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I've split of as much network code as I could into a general non-unet dependent namespace; So it can be re-used for a photon integration - or anything else.
    You're not forced to use UNet - it's just what we provide a standard integration with. All of Rucksack has been built to be extendable and customizable.


    An actual comparison chart is actually a good idea! Will consider that.

    Rucksack is superior in every way to Inventory Pro and ultimately will aim to replace it (although in a separate package). Rucksack will be cheaper than Inventory Pro, but also lacks some features compared to inventory pro (no crafting, skillbars), as we aim to keep rucksack as clean as possible and build on top of it through addons / separate asset store packages; For example a mobile package, RPG pack, survival pack, etc

    We aim to keep Rucksack clean and simple, yet powerful, so the community can build their own specific addons they might need for their game, rather than cluttering up the core inventory system.

    On our new website, which will go live very soon, we'll also have a section for addons where we will share these community-built addons.
     
    Last edited: Mar 31, 2018
    mwituni and Paxew like this.
  14. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    310
    Do you provide character stats? If so, I would like to support something like the status value curve generation.
     
  15. Shipright

    Shipright

    Joined:
    Apr 27, 2014
    Posts:
    3
    Hey guys. Using your inheritable item feature, can we have item qualities? For example, in inventory pro you had to have one hundred different items if I wanted 100 levels of quality (plus a specific crafting recipe for each). For this one it sounds like I can have one item, then modify a quality stat as needed. Does that sound right?
     
    mwituni likes this.
  16. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
  17. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    You could certainly do this. The item inheritance feature applies to item definitions only (see http://rucksack-docs.readthedocs.io/en/latest/APIDocs/Items/Items/#item-definition). You can either create the 100 items (lots of work, obviously), or, you can deterministically generate them at run-time
     
  18. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Finished two getting started videos.
    Now we're really just waiting for Unity to accept Rucksack :)

     
    Mark_01 and treshold like this.
  19. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,153
  20. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    We want to keep it permanent, but have had to remove it right now because for some reason, when we had the discount enabled, Unity would show reviews of Inventory Pro on the Rucksack page, which is misleading as Rucksack is a new product entirely and has nothing to do with Inventory Pro.

    We've reached out to Unity in the hopes to have this fixed, although it seems to just be the way the Asset Store works. Will give you guys an update once we've heard back.
     
  21. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    310
    Frankly, I am more interested in expansion packs. When will the expansion pack be released?
     
  22. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    We don't know at this point. It's not something we've started working on, as Rucksack JUST released, and we'll be working on improving that through updates for the immediate future :)
     
  23. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,153
    That is indeed how the upgrade on the asset store has always worked. No getting around it.
     
    jorisshh likes this.
  24. nomax5

    nomax5

    Joined:
    Jan 27, 2011
    Posts:
    355
    I would like a discount on Rucksack because I own Inventory Pro and it looks like it’s going to get superseded by rucksack, and if it had been called Inventory Pro2 I would have expected a discount.

    I also realise that Devdog isn’t a charity and needs to make money.

    I like the “add-on” “plugin” concept because it is an incentive for devs to keep improving on the asset and still making in money from sales rather than dishing out free upgrades to existing customers for no profit.

    At the end of the day we want great assets with support and ongoing development, and that costs money.

    An I for one greatly appreciate the time thought and effort devdog puts into their assets.

    I'd still like a discount though....

    Roy
    Mr tight git
     
    jorisshh likes this.
  25. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    @hopeful @nomax5

    Sadly Unity doesn't allow us to do a normal discount for Inventory Pro users without copying over the comments. Therefore, we've decided to drop our already low introduction price of $35 to $29 for everyone in the first week (so from the 17th to the 24th). If you've already bought Rucksack for $35 and wish to get the discount you can request a refund and re-purchase it. We hope this makes up for it :D
     
  26. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    310
    I downloaded the asset. And I had to see a lot of errors.

    Assets/Devdog/Rucksack/Demo/Scripts/TriggerAreaHint.cs(33,24): error CS1644: Feature `null propagating operator' cannot be used because it is not part of the C# 4.0 language specification

    Assets/Devdog/Rucksack/Source/CharacterEquipment/EquipmentCollectionBase.cs(72,40): error CS1644: Feature `interpolated strings' cannot be used because it is not part of the C# 4.0 language specification
     
  27. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Rucksack requires .Net 4.6. See http://rucksack-docs.readthedocs.io/en/latest/GettingStarted/ for the docs (would recommend the video tutorials to get started)
     
  28. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    310
    There are four unresolved errors.


    Assets/Devdog/General2/Editors.Internal/GameRules/DefaultRules/RequiredAttributeRule.cs(5,31): error CS0234: The type or namespace name `ReflectionDrawers' does not exist in the namespace `Devdog.General2.Editors'. Are you missing an assembly reference?
    Assets/Devdog/General2/Editors.Internal/GameRules/GameRulesWindow.cs(9,36): error CS0246: The type or namespace name `BetterEditorWindow' could not be found. Are you missing an assembly reference?
    Assets/Devdog/General2/Editors.Internal/GameRules/DefaultRules/RequiredAttributeRule.cs(48,63): error CS0246: The type or namespace name `DrawerBase' could not be found. Are you missing an assembly reference?
    Assets/Devdog/General2/Editors.Internal/GameRules/GameRulesWindow.cs(117,30): error CS0115: `Devdog.General2.Editors.GameRules.GameRulesWindow.OnGUI()' is marked as an override but no suitable method found to override
     
  29. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Are you using Unity 2017.3+? Included this in the docs and FAQ
     
  30. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    310
    I run mobileui_prtial

    and I got errors

    ArgumentException: Value does not fall within the expected range.
    SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit.LanguageOf (SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit unit) (at <879f17a6ca6c485abdaffd04f940d368>:0)
    SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit.CompilationUnits () (at <879f17a6ca6c485abdaffd04f940d368>:0)
    SyntaxTree.VisualStudio.Unity.Bridge.ProjectSystem.UnitySolutionBuilder..ctor () (at <879f17a6ca6c485abdaffd04f940d368>:0)
    SyntaxTree.VisualStudio.Unity.Bridge.ProjectSystem.UnitySolutionBuilder.CreateSolutionFromAssetDatabase () (at <879f17a6ca6c485abdaffd04f940d368>:0)
    SyntaxTree.VisualStudio.Unity.Bridge.ProjectFilesGenerator.GenerateProject () (at <879f17a6ca6c485abdaffd04f940d368>:0)
    SyntaxTree.VisualStudio.Unity.Bridge.ProjectFilePostprocessor.OnPreGeneratingCSProjectFiles () (at <879f17a6ca6c485abdaffd04f940d368>:0)
    System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <c95265f74fdf4905bfb0d5a4b652216c>:0)
    Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
    System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <c95265f74fdf4905bfb0d5a4b652216c>:0)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <c95265f74fdf4905bfb0d5a4b652216c>:0)
    UnityEditor.AssetPostprocessingInternal.OnPreGeneratingCSProjectFiles () (at C:/buildslave/unity/build/Editor/Mono/AssetPostprocessor.cs:61)
    UnityEditor.VisualStudioIntegration.SolutionSynchronizer.Sync () (at C:/buildslave/unity/build/Editor/Mono/VisualStudioIntegration/SolutionSync
     
  31. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    This is a visual studio error though? It doesn't seem to have anything to do with Rucksack or a game system for that matter. What version of Visual studio are you using?
     
  32. nomax5

    nomax5

    Joined:
    Jan 27, 2011
    Posts:
    355
    it does and thats a nice gesture..
     
    jorisshh likes this.
  33. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,313
    Hi, i have been used inventory pro but i found it to be always heavy on mobile. and had to design your game around it.

    is Rucksack more lightweight and easier to integrate within your game ? does it still use Resources folder, to me its a big no to put all content in resource folder and end up with 30 sec + loading time on mobile
     
    nomax5 likes this.
  34. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    All data can be streamed in if you like (item data, vendor data, etc). This is a big change from Inventory Pro, where the data was fairly static and linked to unity objects. By default item definitions are stored as scriptable objects, which you can package in separate asset bundles to avoid long loading times at the start of your game.

    And yes, Rucksack is considerably easier to manage and integrate into existing projects, as it's more lightweight both in drawing performance (UI) and general code.
     
    nomax5 and Tiny-Tree like this.
  35. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    310
    I have encountered other errors in the mobile ui scene.
    when I click add item


    ArgumentException: No instance type found for definition Devdog.Rucksack.Items.UnityItemDefinition
    Devdog.Rucksack.Items.DefaultItemFactoryBinder.CreateInstance[TDefinition] (TDefinition itemDefinition, System.Guid guid) (at Assets/Devdog/Rucksack/Source/Items/Factory/DefaultItemFactoryBinder.cs:69)
    Devdog.Rucksack.Items.ItemFactory.CreateInstance[TDefinition] (TDefinition itemDefinition, System.Guid guid) (at Assets/Devdog/Rucksack/Source/Items/Factory/ItemFactory.cs:35)
    Devdog.Rucksack.Collections.UNetItemCollectionHelper.AddItem () (at Assets/Devdog/Rucksack/Source/UnityBridge/Integrations/UNet/Collections/UNetItemCollectionHelper.cs:40)
    UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:165)

    In fact, every time I press a button, everything is error-filled.
     
  36. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Make sure you have a UNetItemFactory or a UnityItemFactory component attached to your managers. This is required to add the bindings to the item factory.
     
    MakeGames2 likes this.
  37. Tegleg

    Tegleg

    Joined:
    Jun 10, 2013
    Posts:
    63
    i just got this and it has lots of errors
    Code (CSharp):
    1. Assets/Devdog/Rucksack/Source/Collections/CollectionBase.cs(218,32): error CS1644: Feature `interpolated strings' cannot be used because it is not part of the C# 4.0 language specification
    2. 31 similar errors on this script
    3.  
    4. Assets/Devdog/Rucksack/Source/Currencies/CurrencyCollection.cs(64,30): error CS1644: Feature `null propagating operator' cannot be used because it is not part of the C# 4.0 language specification
    5. 8 similar errors on this script
    edit:
    posted too soon
    fixed by changing player settings to .net 4.6
     
    Last edited: Apr 22, 2018
    jorisshh likes this.
  38. MrG

    MrG

    Joined:
    Oct 6, 2012
    Posts:
    335
    It would seem projects like Rucksack will need to put in a check of the project settings and throw up a huge red banner that says to change it if it's not set to 4.6.
     
    jorisshh likes this.
  39. impi2

    impi2

    Joined:
    Jul 3, 2015
    Posts:
    43
    Does this already have support and/or examples for Forge Remastered networking?

    If not, when will it be available?
     
  40. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    No integration with forge is planned. Someone is integrating photon (community effort). As of right now only UNet is supported.

    There is, however, no core dependency on UNet, so it can be swapped out for another networking library, but this requires adopting the permissions system to the other networking library + creating new classes for collection replication
     
  41. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    690
    Hi, I'm interested in developing Game Asset Manager written in directly in Unity Editor. Odin came into my radar as the bases and I also ran into Rucksack. I think it would be really great that Rucksack item editor based on Odin. I'm not sure if Odin and Rucksack is developed by the same developer but why don't you use Odin? It seems like there are quite a lot of overlaps. It would really great if possible so that I don't have to use two different editor frameworks. Cheers!
     
  42. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    974
    Sure, that would be great but only if you already own both assets. It is typically a terrible idea to build an asset fully dependant on another paid asset because then if the user doesn't own both assets, or have both installed in their project, it is not going to work right. You can't use something made with Odin if you don't own Odin. Trust me, I wish that were not the case, lol.
     
  43. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    690
    Sure, I understand. Odin developer mentioned releasing Free version of Odin. We should push toward that direction so that Odin can be adopted not only by Rucksack but by many other asset developers. More power to you if you do. Cheers!
     
  44. Tegleg

    Tegleg

    Joined:
    Jun 10, 2013
    Posts:
    63
    i just cant get it to work.
    following the setup vid 1, i made the databases, gui and an item in the scene.
    when i try to pick up the item i get
    Code (CSharp):
    1. ArgumentException: No instance type found for definition Devdog.Rucksack.Items.UnityEquippableItemDefinition
    2. Devdog.Rucksack.Items.DefaultItemFactoryBinder.CreateInstance[TDefinition] (TDefinition itemDefinition, System.Guid guid) (at Assets/Devdog/Rucksack/Source/Items/Factory/DefaultItemFactoryBinder.cs:69)
    3. Devdog.Rucksack.Items.ItemFactory.CreateInstance[TDefinition] (TDefinition itemDefinition, System.Guid guid) (at Assets/Devdog/Rucksack/Source/Items/Factory/ItemFactory.cs:35)
    4. Devdog.Rucksack.Items.UNetItemPickup.OnTriggerUsed (Devdog.General2.Character character, Devdog.General2.TriggerEventData eventData) (at Assets/Devdog/Rucksack/Source/UnityBridge/Integrations/UNet/Interaction/UNetItemPickup.cs:26)
    5. Devdog.General2.UNetTrigger.NotifyTriggerUsed (Devdog.General2.Character character) (at Assets/Devdog/General2/Interaction/Triggers/UNet/UNetTrigger.cs:184)
    6. Devdog.General2.UNetTrigger.Server_Use (Devdog.General2.Character character) (at Assets/Devdog/General2/Interaction/Triggers/UNet/UNetTrigger.cs:146)
    7. Devdog.General2.UNetGeneralActionsBridge.Cmd_RequestUseTrig.... etc
    i have tried all sorts, any ideas?
    thanks
     
  45. digiross

    digiross

    Joined:
    Jun 29, 2012
    Posts:
    255
    Any news on a photon integration?
     
    TheMessyCoder likes this.
  46. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
  47. attaway

    attaway

    Joined:
    Nov 12, 2014
    Posts:
    41
    Are there any examples of how to integrate Rucksack with Ultimate Character Controller?
     
    Mark_01 likes this.
  48. NorbertoSanders

    NorbertoSanders

    Joined:
    Dec 7, 2017
    Posts:
    33
    In the "
    " tutorial there is the "U Net Inventory Player" script. This does not exist in the current version, which makes it difficult to follow this tutorial. Why do not you update this too?
     
  49. AwesomeNewbie

    AwesomeNewbie

    Joined:
    Jul 16, 2019
    Posts:
    17
    Did I overlook something, or does rucksack still not support crafting? Inventory Pro (from the same developer) seems to do much more than rucksack (no multiplayer of course).
     
    Last edited: Aug 31, 2019
  50. OwlTheoryMusic

    OwlTheoryMusic

    Joined:
    Jun 21, 2018
    Posts:
    37
    You definitely poured your heart and soul into this project. Can't wait to try it out!
     
unityunity