This will be a completely new and independent asset. It won't require UCC but will be integrated with it (and Behavior Designer). I would love to be able to do some type of a bundle but the Asset Store doesn't support this right nowThe new inventory system will be released as a completly new asset? If some of us already have Ultimate Character Controller (or some of the controllers), we'll need to pay full price for the inventory or there will be any type of discount?
The inventory schema looks pretty solid! Congrats.
Hi @Duffer123
I'm glad you asked all these questions because I'll be answering all of them in detail in my next progress update post, which I plan to write soon.
I'll give you quick answers to your questions in the mean time.
In this thread I post the progress and how I am implementing the features. I do this so that the community can give me feedback and tell me their needs and wants.
I'll give a list of things that we "plan" to have for the first release soon too. There has been changes from the last post I made. Things you can expect are item managing, currency and save/load.
1) item defintions can be nested, you can inherit, override or modify the attribue values of the parent definition. When you use modify you can use a string with a regex/NCal expression to solve simple equations with multiple attributes
2) Depending in your game this could be designed in different ways. You could have two item defintions one base and the other with a prefix and then you set a craft recipe to transform one to the other. That could be a lot of work if you had a lot of base items and prefixes.
So another option (which I use in the demo) is that you have a static function to get the full name of an item. So if you add an attribute of type Item[] called "item slots" then you could have that static function check the content of that array to find the full item name. I use the same pattern to change other values on my item like attack or defence, etc...
3) The framework has built-in multi currency with automatic conversion. This is done by parenting currencies and specifying a exchange rate. As long as a currency has the same root as another they can be exchanged. In the demo we have bronze, silver, gold currencies with auto exchange.
4)So there is difference between events and item actions. we'll have events in place for things like adding/removing an item to an inventory, adding/removing currency from a currency holder, etc.. then you have item actions which are things that each game will have code themsleves (we'll have a few examples and templates). These are equip, use, consume, drop, etc... Think of these as actions you can perform on an item. You can decide which actions can be performed by which category of items, and what that action does. in the post I'll make soon I'll show some example of that.
There won't be a beta, but there will be some sort of early access if you buy asset from the Opsive website. I can't give you a release window yet though.
I hope that somewhat answers your questions. Make sure to watch this thread for the progress update post I'll make soon, as I'll go in-depth in some features that may interest you and where your feedback will be very valuable.
@Sangemdoko ,Hi @witchthewicked I'm working on this asset as much as I can, but there is still a lot to do. I can't give you a release window because things always take more time than expected. Depending on the scope of your game you could work on features that are not related to the inventory until we release the early access... but that's a gamble because we don't even know when we will have that early access ready. It's up to you to decide whether you prefer to wait or if you prefer to build your own system. If you build your own system you could get things started and then once our asset is realeased you could decide whether to convert or not, that's the path I would take if I were you.
@Duffer123
A) Of course it supports multiple character each with their own inventory. Inventories are simply organized collections of items. Inventories can even be added to shop owners or chests so that you can easily exchange items.
There is a manager that has a reference to all the items in the game but that's only there so that you can find items per ID and create new items using the itemDefinitions that can be found by ID or by name.
B)Materials, Textures are assets, Size is a Vector3, Colour is of Type Color and particles could be a prefab gameObject. These can all be used as attributes by default. We are looking into a system that will create attribute types for all types in your project. Currently, I have a few attribute types for all the default primitive and Unity types.
Once you have that set up on your ItemCategory you can create any ItemDefinition with different values for those attributes. You can inherit or override parent ItemDefinition when nested, etc..
Now the following is something you may need to implement yourself (we may or may not have an example for this at some point). The way I think it would work is the following. You'll have a base weapon prefab for a specific item category. When you would equip an item of that category it would spawn that prefab and you would then initialize it with the attribute values on the item, changing material, texture, size, color, etc...
The code that uses the item to shoot bullets is out of scope for our inventory asset, but you can imagine something that would use the attribute values on the item to fire the particles when shooting and maybe using a "damage" attribute to deal a specific amount of damage.
C)I do not understand what you mean by 'scalable' in this case. These could all be ints or if you prefer enums that you can define. If you go with enums then you may need to create an attribute type for that enum (Common(0), UnCommon(1), Rare(2), Epic(3), Legendary(4)).
Don't forget that any attribute that is set as an "ItemAttribute" can have its valued changed at runtime as long as the item is set to "Mutable". In case you want age to increase with in-game time then you could (although I would suggest against it, as it would be better to have a "created time" and compare that to a "current time" when you need to)
Let me know if that answers your questions
Just a reminder that I will post the things I've been working on since the last progress post soon (hopefully by the end of this week, if not, maybe next week) There I'll explain currencies, save/load, crafting and more.
@Sangemdoko ,@Duffer123
That's an interesting feature request, I see how that could be very useful. I'll take note and I'll see what can be done.
@Sangemdoko , in case it wasn't obvious, I'm happy to volunteer for early access and/or beta...Hi @Hamesh,
Thanks for the feedback. The goal is to make the inventory framework game agnostic. So whether you're making a MMO or a FPS there shouldn't be any restrictions on what you can do.
Now the demo will try to show the extent of what the tool can do so the examples and the demo UI may not be similar to what you want to achieve. But that does not mean that making an FPS inventory should be any harder. It should be simpler in fact.
By design the demo is there just to show you cool features in action, but really you should be making your own UI which would interact with the items, currency, etc...
Once we release the early access I'm sure we'll get a ton of feedback on what people would like. If a lot of people ask for the same thing then we may decide to create some game-specific UI widgets. But at the start I think it's better to keep things as general and flexible as possible, even if it means that you'll need to code a few simple things yourselves. Whatever happens we'll be there to help people with their specific use cases by pointing them in the right direction.