expressobits / inventory-system Goto Github PK
View Code? Open in Web Editor NEWModular inventory system for godot 4 with nodes, compatible with multiplayer, separate logic from the UI, Using items as separate resources.
License: MIT License
Modular inventory system for godot 4 with nodes, compatible with multiplayer, separate logic from the UI, Using items as separate resources.
License: MIT License
Seems like the problem doesnt just come from newly created items. Its just super strange..
To reproduce it just open the demo reset all categories to none, reload the project and then all categories arrays should be linked.
For me it looks like whenever a dictionary or array in the item editor is set to the global standard value of the custom resource(no idea why this even exists), it will be synchronized with it on the next load(reloading project).
However this doesnt happen when you edit the resource directly in the inspector.
I hope this makes sense to you but thats how I understand the issue.. Tried a ton of stuff like saving with certain flags or duplicating with "deep = true" but nothing actually changes that behaviour.
My last idea was that the issue might have to do something with the items being saved and edited inside of an array.
I 'll keep looking into it but maybe you got an idea as well?
Add option of a node to drag items like in the long dark
these pages are blank: https://github.com/expressobits/inventory-system/wiki/Inventory-Database
Reference API GDExtension
Reference API GDScript
Tutorials
It just would need to be fully usable with the standard UI controls. Then it should be usable with a gamepad as well.
The dragging of the items might be the biggest challenge. I guess while dragging it should probably just follow the UI focus.
Hey, I just tried to download the addon but the folders are empty. I guess something got messed up by moving the folder.
A 3D object for drop and pick in inventory
Do not use UI to represent inventory, such as a shelf where items are dragged onto it.
Possible problems:
Stock visual: Eco Game Example
https://store.steampowered.com/app/382310/Eco/
Drag items to inventory: The long dark example
https://store.steampowered.com/agecheck/app/305620/
Add an inventory for the user to equip resources like a shield.
The logic is to basically be an inventory that has a customized look and slots with specific categories and accepting only one item.
Create a 2D example with all the structure that is in the 3D example including:
-> Personal inventory
-> Loot inventory
-> Pick up items
-> Drop items
Must create a player with interactions with 2D versions to open loots and pick up items
(Maybe because of proximity)
Add example in 2D folder in the project demo
Notes:
It should reuse the entire FPS UI, with no need to change scenes or codes.
Use some top-down example, reference some godot demo project.
https://github.com/godotengine/godot-demo-projects/tree/master/2d
This makes it easier to find demos and adds the benefit of being able to test updates without changing the project
Creating a clean project containing (for example) the FPS demo and having the addon as a dependency (maybe even a Github Submodule? See here) would make things considerably more accessible.
One of the main reasons people avoid great addons like these is the lack of documentation. Add to it the fact that the demos are hidden deep within the project; it is easy to see why people turn away, no matter how great this addon is.
Godot currently loads the demo projects and their classes, which might not be desired. This is especially bothersome when class names override each other. (ie. class_name Player
)
Add to this the fact that inexperienced Godot users may try to use this addon to simplify their project, the confusion of why things break, how to use it, etc. they're more likely to turn away from the addon or even the engine.
Having the demos in a different repo avoids packaging all the demo files in the final product. I'm aware that it is possible to exclude files from being packed, but due to the engine behaviors mentioned above, this could and most likely will break the project in unexpected ways.
Add a base class for all inventory nodes with the information which database it is using.
This will organize common code across nodes and present all possible inventory nodes in one place in the node hierarchy.
This is class abstract
Make resource too ? π€
Adding a "Getting Started" page to the wiki would make it much easier to understand how this addon works and how to set it up. The example repo helps, but it isn't the minimal setup one would want to integrate this into their project.
I suggest the following layout for the pages:
Getting started
- Database
- What is a database?
- How to set it up
- Item setup
- What are items
- How to create new items
- Adding categories to items
- UI setup
- How does the UI work (with the inventory-system addon)
- Setting up basic UI
- Additional functionality
The documentation for the setup doesn't have to be extremely precise, but enough to get the basics done. In addition there should be complete documentation for each Node (Database, Item, etc.) that covers their properties, signals and what they extend from.
according to #63 Idea.
So I have new Idea come out that help developer easier to manage items.
And I implemented this feature to plugin.
It is Search by Category feature that allow to search items and recipes by it categories.
below GIF to show how it work
Add option to automate the start of a craft by a craftstation
The idea is to add an option to the item to be active if this item has grid information with X and Y and Z option (Z for an inventory that is 3D, see #32 )
Grid Inventory: Resident Evil 4 Example
https://store.steampowered.com/agecheck/app/254700/
Inventory should also have an option to define whether or not it is grid based
Question: The inventory and item with grid must be created class that extends the current ones or just add an option in the already existing classes? π€
Add functions that take a slot as a parameter and not two parameters like item_id and amount
Hello!
I am interested in using this inventory system in my project, utilizing a client-server architecture.
The given MP example does not provide an example of this, only P2P handling.
Please provide documentation on this matter!
Create an example where leaving the game and returning, the chest (loot) continues with the items from the last game.
You can follow the example of FPS_demo to extend it.
Inventory can only add specific items or specific categories #5
The idea is to be able to create inventories that are specialized, such as inventories from the forest
which has a stock of wood, stock of stones.
The forest: https://store.steampowered.com/app/242760/The_Forest
When i make a campfire with categories ,and duplicate that same campfire ,it duplicates the items on each campfire!
I believed this line:
database.items.append(item)
It would call the "set" of the database items variable, but it doesn't call.
@export var items : Array[InventoryItem] = []:
set(new_items):
items = new_items
update_items_cache()
get:
return items
Create a multiplayer example by creating networked inventory compatibility
Originally posted by k25961918 November 10, 2023
Hi~ Thank you very much for your plug-in. For me who canβt write scripts, inventory-system is really helpful to me.
But there are some small problems,When I Select the item icon to create a new item, Choose the name of your database and Select Ok, item is not generated in the file system.
Select the add recipes icon to create a new recipes. The recipes appear in the file system, but do not appear in the editor window. You need to add the icon again and select New recipes with existing resources to display them in the editor.
Another suggestion, can you add a name and address to the recipes in the editor? When I make multiple recipes, it happens that I forget the recipe file name in the file system.
What is the point of having a single product, then byproducts?
I am mainly thinking of making something like item durability possible.
Maybe a dictionary that is always passed along with the item.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.