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

Inventory Pro - uGUI - Performance - Mobile support & More

Discussion in 'Assets and Asset Store' started by jorisshh, Mar 8, 2015.

?

What should I build next?

  1. New currency system

    14.1%
  2. Improved serialization / saving for web

    10.8%
  3. Better properties for items (percentages, base values, etc)

    27.2%
  4. Controller support

    15.4%
  5. Unity 5.1 networking (multiplayer)

    36.9%
  6. More modular build to simplify extending

    25.1%
  7. UFPS Multiplayer (Asset integration)

    11.5%
  8. Core GameKit (Asset integration)

    4.1%
  9. Dialogue system (Asset integration)

    21.3%
  10. Wordpress integration (Asset integration)

    4.1%
Multiple votes are allowed.
  1. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Would anyone be interested in a UFPS integration?
     
  2. goldencruz

    goldencruz

    Joined:
    Oct 2, 2013
    Posts:
    94
    what about a save system
     
  3. Hans

    Hans

    Joined:
    Feb 20, 2007
    Posts:
    422
    not really interested in a UFPS integration at the moment.....mmmm be down the track, but i am interested in integration with plyGame & Dialogue System for Unity.

    Are you planning to do a quest system?

    Thanks
     
  4. goldencruz

    goldencruz

    Joined:
    Oct 2, 2013
    Posts:
    94
    yea that be nice too
     
  5. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I've added save/load on my list to research, once crafting is done though. "Easy save 2" seems to be the most used system so this could be an option.
    A binary writer would likely already do the trick, and is very fast to implement as well as run-time performance, but this doesn't support the webplayer (the webplayer only supports playerPrefs), so encoding to JSON might be an option. I'll look into this further once I'm done with the crafting system.
     
  6. John-G

    John-G

    Joined:
    Mar 21, 2013
    Posts:
    1,122
    Yes UFPS integration would be a plus as well as easy save 2.
     
  7. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I might do a quest system, but if I do this will likely become another asset. Doing a basic quest system isn't to difficult, but making one that is extensible and suits various purposes is quite a bit of work.
     
  8. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Duly noted, you can expect these features in a future release
     
  9. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058

    You know, I own every reasonably decent previous crafting/inventory system to this (there are lots) and have spent hours and hours working with the authors to get theirs to this point. (or even anywhere near it)

    Assuming I manage to raise the funds at the same time this is available at a price I can afford I'll get this one too...
    Just for the novelty of not having to GC the damn thing.

    Thanking my lucky stars you know how to us a profiler - I could kiss someone. (else)
     
  10. Hans

    Hans

    Joined:
    Feb 20, 2007
    Posts:
    422
    integration with plyGame & Dialogue System for Unity. ?
     
  11. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Hehe thanks :) It's starting to take shape, and I have a lot more planned.

    It's not only the GC that I've optimized, the whole asset is quite optimized, invisible UI elements are not updated until they become visible again, UI elements only receive a repaint when absolutely necessary and distance checks to world objects (when you go to far away from the bank) is done in a coroutine method and only checks 2x per second (which is more then plenty). After all Vector3.Distance is quite expensive :).

    I've also made sure all logical code is separated from the UI code, so in theory it should be easy to add another UI platform. Also all windows you see in the demo are based on custom collections that are easy to manage and extend. (I'm a total sucker for software architecture)
     
  12. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I hadn't heard of plyGame before, but I've but both plyGame and the Dialog System on my list of integrations to research, so once I finish with all open features I'll start to look into integration.
     
  13. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058
    You are talking my language.

    since we are talking about cheap and sexy distance calcs on many objects...
    https://gist.github.com/gamemachine/d222e3e1ff3a8c30d297
    born of https://gist.github.com/gamemachine/102be3ace8a308a3bd5f via
    http://forum.unity3d.com/threads/terrain-culling-and-colliders-is-hosed.310594/
    add a tad of refactoring (banks for terrains, items for colliders, activation for enabling, blah) and you have a very fast implementation all over again. He just open sourced that and you can confirm his happiness to use it in an asset here: http://forum.unity3d.com/threads/te...n-in-just-minutes.151365/page-44#post-2026625 and in the original thread where we spoke on it.

    thanks
     
    Last edited: Mar 20, 2015
  14. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,314
    dont feel its a good idea to implement a quest system, but it would be nice to support Dialogue system which is best in its own category, if assets do too much things its not that good, would better focus on core stuff of the inventory
     
  15. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Looks good, I'll look into it once I wrap up my open features :)
     
    twobob likes this.
  16. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Don't worry if I build a quest system it will be an separate project, 1 solution for everything is never the solution ^^
     
  17. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Because it's never enough I decided to add object pooling to the mix, all objects (tooltips, context menu, stats, etc) are now pooled to avoid hickups / memory spikes. This will help a lot on mobile devices, and creates a more fluid user experience.

    More on crafting this afternoon :)
     
  18. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058
    tidy. respect.
    Sigh... *looks at monthly budget*... Sigh... Gonna be two weeks before I can dive in.

    Catch you then
     
  19. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Just a tip from 1 programmer to another, I have a super secret launch discount planned, which will (most likely) start next week and last for 2 weeks. Will save you a few bucks :)
     
    Gekigengar and twobob like this.
  20. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058
    Awesome, for that I will just reach into my own pocket.
     
  21. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Up next, crafting!

    The crafting system supports an infinite amount of crafting types. For the sake of this example I've added blacksmithing as well as cooking. You can define your own inside the editor.


    Once you've created a crafting type, you can create blueprints. A blueprint is a basically 'craftable' item.
    A blueprint has 2 settings, the default (wow / guildwars 2) style of crafting, where a list is presented, the system checks the Inventory for the required items, and if they're available the item will be crafted.

    The 2nd type that is supported is more similar to Minecraft, items are placed in a certain layout to craft the item. And of course this is also supported :) (Why else would I bring it up.. right). Check the image below to see the layout system in action. You can define as many layouts for a blueprint as you like.

    Mirroring can be enabled, when it is, the system will verify the layout in the default state, as well as the mirrored state, a simple example to this would be a stairs from the left bottom to the right top. If you want to make the stairs valid from the right bottom to the left top, enable mirroring :).

    And of course grid sizes are customizable.


    Hope you guys like it, because it was quite a bit of work ;)
     
    Last edited: Mar 22, 2015
    twobob likes this.
  22. Hans

    Hans

    Joined:
    Feb 20, 2007
    Posts:
    422
    wooo very nice work on the Crafting :)

    Can you provide in your doc's how to set up a New Scene from scratch with the Item editor & equipment editor and all the managers please

    Thanks
     
  23. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    You got it, I'll be sure to add it in the crafting release. The documentation could use a good polish...
     
  24. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Turning grass into grapes!
    Just in case you hadn't figured it out from my awkward joke, the regular crafting system is done, and all features work! Everything is of course (as always) fully customizable.


    Next I'll extend the crafting system to support Minecraft style with layouts. (see image below)
     
  25. Gekigengar

    Gekigengar

    Joined:
    Jan 20, 2013
    Posts:
    738
    I am interested to purchasing your inventory system for my current project.
    Currently writing our own inventory system, but we feel that we can save time if we use yours.

    The game is similar to Diablo/PoE, on where there is a player, and a follower.

    Is it easy to create a follower specific inventory with your system?

    Specific equipment are only equippable by player, or its follower.

    We are also thinking of sockets, on where equipments are unique, they have slots where you can
    place enchantments in them with various kind of effects.
    (Such as inserting Fire gem will add Fire Damage + 5 to your weapon.)

    Are these possible?
     
  26. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    These features aren't directly implemented into the system (as they are rather specific), however building them yourself should be an ease.

    All major classes in the system are defined as partial, so you can quickly add your own variables & methods to item types / collections / etc. I also separated the UI from the functional code, so extending item types is extremely easy.
    Check the code below for a simple implementation of the socket.

    Code (CSharp):
    1.  
    2. public partial class SocketEquippableInventoryItem : EquippableInventoryItem
    3. {
    4.  
    5.     [SerializeField]
    6.     [InventoryStat] // Adds it to the character stats editor
    7.     protected int _socket;
    8.     public MySocketClass socket
    9.     {
    10.         get
    11.         {
    12.             return MyClass.mySocketsArray[_socket];
    13.         }
    14.     }
    15.  
    16.  
    17.     public override int Use(ItemCollectionBase usedFromCollection, int slot)
    18.     {
    19.         int used = base.Use(); // Default stuff
    20.         if(used == -1)
    21.             return -1; // Item is in cooldown
    22.  
    23.         // My custom use code
    24.  
    25.         NotifyItemUsed(1);
    26.         return 1; // 1 item was used
    27.     }
    28.  
    29.  
    30.     /// Gets the info for tooltips, etc.
    31.     public override LinkedList<InfoBox.Row[]> GetInfo()
    32.     {
    33.         var info = base.GetInfo();
    34.  
    35.         info.AddAfter(info.First, new InfoBox.Row[]
    36.             {
    37.                 new InfoBox.Row("Socket", socket != null ? socket.name : string.Empty)
    38.             });
    39.  
    40.         return info;
    41.     }
    42. }
    43.  
    Oh and equipping to a 2nd character is also possible, you can create as many character (or anything else for that matter) equipment collections.
     
    Gekigengar and twobob like this.
  27. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,314
    we dont see on your craft screenshot 2 things: how are the category of blue prints managed? the required item AMOUNT ?
     
  28. Gekigengar

    Gekigengar

    Joined:
    Jan 20, 2013
    Posts:
    738
    That clarify things up!
    One last question before purchase.

    I need the Items created from the Inventory system editor to be exported into a database format. (Either text/SQL)
    Is that do-able?

    In what form is the current items created? Where is it saved? How is it loaded?
    Is it externally editable? (Not from the editor itself)
     
  29. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Items are saved / loaded through Unity's serialization, I chose this method to allow full control over the created objects (essentially they're just prefabs). If you however want to save the items in a database you can.

    Unity's serialization callbacks (http://docs.unity3d.com/ScriptReference/ISerializationCallbackReceiver.OnBeforeSerialize.html) allow you to hook onto the deserialization / serialization of an object. In this callback you could fetch data from the database for a specific item, or you could load everything from 1 global place and bypass unity's serialization.

    (Serialization inside unity is also useful if you want to use the item directly inside the inspector, for example opening a treasure chest with a specific item )

    Hope this helps :)
     
    Last edited: Mar 22, 2015
  30. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058
    Caveats on Re-Serializing currently exist. Strings that are "re"-serialized (say down to forced text from mixed) may end up as random numerical junk in the main 5_0 release.

    Word to the wise.
     
  31. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    The category of a blueprint is that of the result item's category. Example: crafting an apple and a pear to create a shield (yes logical combination), then the blueprints category is that of the shield (the result item).

    And the amount can be defined with the inside the required items list. (See image blow)
     
    twobob likes this.
  32. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I've added categories to the demo, figured I should show all features of the asset.


    Also layout system works for 50% more on this soon :)
     
    Tiny-Tree and twobob like this.
  33. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,314
    look really great right now, how do you manage blueprint list? is it possible to have a blueprint available list?how could we add blue prints to the available list at runtime ?
     
  34. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    All blueprints have a bool hasPlayerLearnedBlueprint, those can of-course be toggled through code. You can manage your own list of learned ID's, then trigger the bool once the player learns it.

    Everyone's architecture is different and some might be based on level, some on skills, etc, therefore I added a simple bool check and not a list of available blueprints (would also slow down lookup times)
     
  35. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    I would like to see some kind of selection sets for this system and also that it will be working with the dialog asset.
    The selection set should save me some time if i want to take out many things from the bank/chest into my bag like in monster hunter 4.
     
  36. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Could you give me a direct example of this, maybe a video? I'm not entirely sure what you mean.
     
  37. Greenwar

    Greenwar

    Joined:
    Oct 11, 2014
    Posts:
    54
    Tempted to buy this right away just because the author is so active.
    Think i'll wait till theres some sort of EasySave2/serialization integration though.

    Btw, if you open/close the inventory or character screen in the webdemo several times over you can't open them anymore.

    PS. Playmaker integration would net you lots of sales
     
  38. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Thanks, trying to get an edge on the other products that have been around for a year or so. I'm almost certain that I'll build in easy save support & playmaker. Also the dialogue system will be supported, contacted the creator today and he send me a copy so that I can build the integration :).

    And the bug has been fixed, just didn't update the demo yet :)
     
    twobob likes this.
  39. Hans

    Hans

    Joined:
    Feb 20, 2007
    Posts:
    422

    Ausome work getting support on http://forum.unity3d.com/threads/re...ty-easy-conversations-quests-and-more.204752/
     
  40. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    2nd crafting system is done! Cleanup up code and writing documentation, ready to push to the asset store soon :)
     
  41. Hans

    Hans

    Joined:
    Feb 20, 2007
    Posts:
    422
    Nice work Jorisshh......looking forward to the updated Docs and crafting
     
  42. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    omg ... please integrate RFPS
     
  43. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    RFPS? I suppose you mean UFPS??
     
  44. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Realistic FPS Prefab (RFPS) is another popular FPS system.
     
  45. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I'll be sure to look into it, but given that I already have give or take 10 implementation requests I'm going to have to filter out some things. uFPS seems the most used system, but I won't rule anything out, I'll look into it in a few days :)
     
  46. charles01

    charles01

    Joined:
    Mar 28, 2013
    Posts:
    25
    Hey, Will be great to have a Quest system(XP system) to go with it and a Save and Load Playerpref, for me this are very important.
     
  47. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Understood, saving and loading is something that is certainly missing from the system. A quest system might be a little to much, while maintaining a solid code base. Many people might not want a combined package, so if I'll build a quest system it will likely be a separate package.

    I'll ask a moderator to remove the poll, so I can ask the users what new features they would like to see next.
     
  48. charles01

    charles01

    Joined:
    Mar 28, 2013
    Posts:
    25
    separate package sounds good.
     
  49. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    Sorry i have no video that i can show you as an example at the moment.
    But what i mean is realy simple i think/hope.

    So when you have a realy big box/bank where you put in all what you collect there then is so much in a box that it could take some time to find the right things you want to put back in your bag to fight for a special monster.
    For that you need often 50 or many more things to prepare for a big and long fight i.e. a 50 minute fight. So with your asset at the moment i think i can make such big boxes or banks but finding the right things in the box could take some time so it would be nice if i as a game maker or as an alternative the player can decide that some things should be saved in the box as a collection so that i easily can later pic just the collection with one click and put it into my bag with another. Normaly i have to search in the box with many clicks and also klick every item and send it to my bag but with saveable collections it could be realy fast.

    I hope i explained it good enough.
     
  50. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Hm.. this is a rather specific feature so building it into the core might not be a great idea, however writing a little bit of code to manage this problem should be easy, let's see.

    One interesting way to solve this problem would be to create a new item type (let's call it InventoryItemPouch) for a second. When you "Use()" the pouch, you open a new window (a collection), where the user can place items into (sort of like a movable bank). Save the items inside the pouch object, and let the user pass it around.

    This allows the user to open / close the pouch wherever they are, add or remove items from it and store the object in the bank or inventory.

    Let me know if you need some help to make this work :)