Alright, this might be a long post, since I got to explain precisely what we want.
Hi, I am a Game designer and I am part of a team of game developers. We are looking for a database tool that would enable me and my team to keep full integrity of our game systems and their content elements by automating a development process. We call this “Systemic integrity”. We tried to do it with Notion, but we couldn’t find a way to automate what we wanted to help us assure that integrity. We think Fibery could be the solution, but we need help to figure out the best way to do it, if what we want is even possible!
First, I have to explain what I mean by “Systemic Integrity”. The systems in our game (and their content elements) all have behaviors to interact with the game and other systems. These behaviors need attributes, and values for those attributes, to do their thing. However, what we mean by “systemic integrity”, is that every system and elements of the game use the “same” attributes, and not different copies, but with values that are unique for each element of the game. This way, nothing is “hard coded” and we can’t make the mistake of forgetting to put an attribute on something that needs it (and won’t work without it), since it will automatically come with its attributes and a field to enter values locally for them.
For example, an enemy will ALWAYS have the following attributes (left): Hp, maxHp and movementSpeed That’s because the behavior “Receive Damage” (right), always need the attributes hp and hpMax to function. Another element of the game, let’s say the Player’s character, could also share the same attributes. However, the values of these attributes will be different on each enemy and different from those of the Player’s character, even though they are the same attributes. This way, we could later add a new attribute to the enemies, and EVERY enemy will then have it automatically, and we will then only have to change the values of it if needed.
Second, here’s what we want to create with fibery: we want to have a database (Type) that would list all the different content elements that our game has (enemies, equipments, characters, etc.). All those content elements share attributes, as mentioned above, so we want another database for those to make sure that they point to a unique attribute (no copies of the same attribute in this database). Then, when we create a new content element (for example, a Goblin), we want it to already be linked and know what attributes it should have. There are many ways to easily do this with linked databases, roll-ups, formulas, etc. But here comes the tricky part: We want entities of the database to automatically create a field corresponding to each attribute it has to enter values. And since there are different types of content elements, that all come with their own set of attributes, we couldn’t figure how to automate it.
For example, by creating an enemy, it will always have these attributes: hp, hpMax and movementSpeed. But, if we create an armor piece, it will come with these attributes: durability and armorPoints. So now, we need empty Fields already generated (in the entity window) to enter values for these attributes. And since they are in the same database, we want to only have the Fields corresponding to their attributes: we can only enter the values for hp, hpMax and movementSpeed on the enemies, and can only enter values for durability and armorPoints for pieces of equipment. We don’t want my enemies and my armor piece to be linked or have a field to enter values of attributes they don’t have.
Well, we did find some ways to do this, but it would make it so that every entity of the database would be cluttered with fields/relations it didn’t need. We also had to manually create fields for the values of attributes (and couldn’t even enter/change the values while still in the entity page) and we were also worried that it would clutter even more or slow down the database the more entities, relations and types of content elements we would add to the database.
To resume: here’s what we would want: If we create a new Entity in a database, depending on its type, it will come with a set of attributes (that are unique in its own database). This is easily doable, but the part we can’t figure out is this: We then want to automatically have Fields in the Entity to enter values for those attributes, AND ONLY those attributes: meaning that if a different type of Entry is added to the database, and that it comes with a different attributes, the fields to enter values will match the attributes and there won’t be fields to enter values of attributes that aren’t linked to this Entry.
So as you can see, since my Green goblin is an Enemy, it always has the attributes hp, hpMax and movementSpeed. We then want those attributes to automatically create a field to let me put values for those attributes. These values are local to this enemy, so that if we change values, it only affects this enemy.
Thank you for your time if you have read this far. We hope that Fibery will be our solution because if so, it’s going to become our main design/balancing/project management tool and I’m sure that a lot of other videogame studios here in Montreal will adopt it! On a site note, I’m also dreaming about a function to save Apps as templates to share with other developpers and friends!