Git Product home page Git Product logo

inventory-system's Introduction

β€œicon” Welcome to Expresso Inventory System πŸ‘‹

Version Documentation License: MIT

Demo

See demos in: Github: Branch demos Godot Asset Lib: https://godotengine.org/asset-library/asset/1895

Features

βœ”οΈ Inventory with Slots.

βœ”οΈ Separate UI inventory logic.

βœ”οΈ Inventory Handler - which manages inventories.

βœ”οΈ First Person demo with chests.

βœ”οΈ Fully commented core and UI code.

βœ”οΈ Item as Extendable Resource.

βœ”οΈ Demonstrations of dropped items and item pickup.

βœ”οΈ Static and dynamic inventory options.

βœ”οΈ Multiplayer compatible (Including example).

βœ”οΈ Hotbar.

βœ”οΈ Craft System.

βœ”οΈ Item Editor.

βœ”οΈ Categories. (#5)

βœ”οΈ Specialized slot category inventory. (#40)

βœ”οΈ Autocrafts. (#34)

βœ”οΈ Unconventional inventory. #32

In Progress

πŸ”¨ Equipament Inventory

Planneds

πŸ“… Inventory with grids like RE4. (#35)

πŸ“… Change core to CPP #83

πŸ“… Inventory UI dynamic #83

Install

See in Wiki

Structure

UML

Authors

πŸ‘€ Rafael Correa

🀝 Contributing

Contributions, issues and feature requests are welcome!

Feel free to check issues page.

To suggest or discuss some project structure, feel free here discussions page

Show your support

Give a ⭐️ if this project helped you!

Assets

All assets (GUI, Models and textures) from https://kenney.nl/assets

πŸ“ License

This project is MIT licensed.

inventory-system's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

inventory-system's Issues

Linked Inventory

When i make a campfire with categories ,and duplicate that same campfire ,it duplicates the items on each campfire!

make UI usable without mouse (mostly for gamepad support)

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.

2D Example

Create a 2D example with all the structure that is in the 3D example including:
-> Personal inventory
-> Loot inventory
-> Pick up items
-> Drop items

  • The example must reuse the items from the FPS example, but recreating the database and putting in place of dropped_item and hand_item 2d scenes that represent the item in the 2D dimension.

image

  • Must create a player with interactions with 2D versions to open loots and pick up items
    (Maybe because of proximity)
    image

  • Add example in 2D folder in the project demo

Notes:

Client/Server documentation

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!

Database

  • Add database link in inventories

Add a "Getting Started" page & node documentation to the wiki

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.

Example of equipment inventory

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.

linked arrays(categories) and dictionaries(properties) in item resources

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 a base class for all inventory nodes

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 ? πŸ€”

Can't see newitem when add it in database;

I setup a new project to test this addon, when I'm trying to add new item in a database, I can't see other items already in there. Reload database or and reopen project can't fix it. Godot Version 4.0.3; I can find items in Editor's Inspector, but not Inventory page;
Snipaste_2023-06-09_11-09-19

Multiplayer Inputs

Create a multiplayer example by creating networked inventory compatibility

Items and inventory with Grid

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
image
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? πŸ€”

Example using inventory data persistence

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.

Move the demos to a different repo

Resons

Better organisation

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.

Engine behavior

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.

Packaging size

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.

Craft System

  • Recipes
  • Craftter
  • Craft Stations
  • UI
  • Network compatible

I can't Add Inventory Items by the editor screen

Discussed in #78

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.
recipes

Documentation

Reference API

  • Inventory
  • InventoryItem
  • InventoryHandler
  • InventoryDatabase
  • InventorySystemUI
  • InventoryUI
  • DragSlotUI
  • SlotUI
  • HandItem2D
  • HandItem3D
  • Hotbar
  • HotbarUI
  • CraftStation
  • Crafter
  • Recipe
  • CraftStationType
  • CraftStationUI
  • CraftingUI
  • IngredientUI
  • RecipeUI

Tutorials

  • Add inventory-system to an existing project
  • How to test multiplayer demo

Autocraft for craftstations

Add option to automate the start of a craft by a craftstation

  • Example would be a bonfire that to cook an item, it is enough that the raw item is in the input inventory.
  • Basically the craftstation must subscribe to the on_add signal from the inventory (in case slot_added or updated_slot)

Item Object

A 3D object for drop and pick in inventory

Search by Categories feature

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

Items search
items search

Recipes search
recipes search

Search items that have multiple category
search item that have multiple category

Add new category and search
add new category and search

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.