I'm trying to determine all the items, crafting methods and recipes to put in my game, and the relationships between them. I need a tool that allows me to do this both top down (boat needs sails and planks, sails need fabric which needs weaving technology and thread ...) and bottom up (hit rocks together to make sharp rock, tie it to a stick with thread to make an axe ...). I also need to ensure that all items, crafting methods and recipes conform to some template, which will be dynamic, at least in the development phase. I need the tool to be informative about which items conform to the template and which items do not, as well as what they are missing.

Below is an example item:

  • Item: Oak plank
    • Item family: Wood plank
    • Crafting method: Sawing
      • Item: Oak log

And here is an example item template:

  • Item
    • Optional item family
    • Mandatory crafting method
      • Choice (Item / Item family)

So this item conforms but I need a some way to ensure this and highlight if it was missing, for example, the crafting method. I also need to be able to check if an Oak log Item entry is also in the list and well formed according to the schema, and be able to change the schema easily. For example, I could later define an optional "Ship" tag in the schema for items that would enforce speed and strength values when used.

I will frequently update the templates and I want this to be a low overhead operation. Therefore I've eliminated databases. Due to the cross-referencing needs, I've eliminated spreadsheets and now I'm working on writing a tool that uses an xml schema to define the templates and list the items, crafting methods and recipes in an xml file, using xml validation to check conformity.

The problem is that the tool is taking too long to write and preventing me to work on the core features of the game. Are there any available tools or workflows for this purpose?

  • 2
    \$\begingroup\$ What is "not flexible" in a database? \$\endgroup\$
    – Vaillancourt
    Jun 16, 2020 at 21:31
  • 3
    \$\begingroup\$ Honestly, I've written tools with much more complex cross-referencing needs in Excel, so tackling this in a spreadsheet doesn't seem out of line to me. Is there a particular operation you found difficult to express in spreadsheet form? \$\endgroup\$
    – DMGregory
    Jun 16, 2020 at 22:48
  • \$\begingroup\$ If your game will have these recipes in it, it may make sense to have the player be able to see them as well. Have you considered building your tool inside your game? The editing portion can be removed from the release build, but the view portion may be useful for players. This also forces you to consider how the recipes will be represented in code. \$\endgroup\$
    – Ryan1729
    Jun 17, 2020 at 1:52
  • \$\begingroup\$ @Vaillancourt I updated my question to better reflect my reason to eliminate a DB. I would need to add another table to define a "Ship" tag for the items for instance and if the ship tag referenced other items, I would need to add tables to store the FK relations for each and that to me seems like a high overhead for all changes. Modifying the xml schema seemed more straightforward. I also would like to decouple the DAL code from the schema and do not know how to do that with a DB. \$\endgroup\$ Jun 17, 2020 at 7:56
  • \$\begingroup\$ @DMGregory I just couldn't figure out how to do most of the above. I could have item names in col A, the optional item families in col B and the crafting methods starting form col C. After that it gets confusing for me as one item could have just one crafting method and another could have a sequence of three crafting methods. Furthermore, a crafting method could have a variable amount of raw materials. Add to that alternative crafting methods to get one item and it gets confusing for me to implement in a spreadsheet. Can you direct me to any examples to kick my brain off? \$\endgroup\$ Jun 17, 2020 at 8:04


You must log in to answer this question.

Browse other questions tagged .