Friday, November 13, 2015

Storing stuff in Unity3d

The last days, or weeks, maybe months, I have been fighting with the problem of storing several game element definitions, like NPCs, their inventorys, items, skills and abilities.

Lets say you want to have an NPC named Frolo the Habbat at point X. In Unity3d editor you can place the mesh, adjust it, etc, but, how do you specify that Frolo has a Big Stick of quality 3, his attributes are 4,5,4,6 (whatever that means), and has a Magic skill level 5? My first approach was to use XML. When you have a hammer, all problems will look like nails to you, and in this case, XML is the hammer I have been using in all my previous iterations of this project. It is flexible enough to let you put any number of different stuff inside. The drawback is that you cant edit it inside Unity3d editor.

The Unity3d solution is to use ScriptableObject and asset files. An asset file can store the definition of an ScriptableObject, and its properties can be edited in the editor inspector. The asset files are good to represent unique things: an item, an NPC. But I havent found a way to use it to represent a generic skill that I can attach to the NPC skill list and then set its level for that specific NPC.

Probably Im going to stick to XML for a while.

No comments:

Post a Comment