Godot Version
4.4
Question
This is not a programming question, but a workflow question.
I am wondering about how are other people managing inventory system in their game workflow-wise. For example, take a look at any RPG, for example, you probably have 100++ unique items or 1000 if your game is big. You will probably have an icon (possibly just a string to res://… in Godot here), item description, item buying price, selling price, whether this item could be sold, the item is linked to what class/scene, etc.
So I am thinking of:
- EXCEL FILE → CSV FILE
Because of this, on one side, a simple Excel file might fit the job. You can do filtering, sorting, etc. on the data - life is good. If you need to compare and contrast various numbers on your items often, having access to sorting and filtering will make your life easier. For example, Games such as Monster Hunter has a huge number of weapons and each weapon has its own sharpness value, attack value, elemental value, unique properties, etc.
While Excel is not natively supported in Godot, working on an Excel file, then exporting it to a .csv file that use a unique delimiter that is not a comma is a valid possibility. Godot could parse it like a regular file, and each line could be split by line by line, and each line could be split further with that unique delimiter.
- JSON FILE
JSON file is a very valid choice and you do not have to deal with the delimiter unlike the CSV file, and the structure of JSON allows you to nest data in multiple levels. Each item also does not have to have the same structure unlike the columns in the Excel file.
However, you might not have a “customizable view” like on Excel that you could filter and sort directly. You might need some other tools to do that.
You could also mix the two together, such as putting JSON data right into a column of Excel.
Anyway, how are you guys managing this sort of thing? At the end of the day, we just need our items data in the game somehow, but managing (and possibly balancing) this should also make our life better.