My entity/component/system engine is coming along quite nicely; I have two very different apps working on the same executable. (One 2-d scroller, one 3D Asteroids-type game).

In the interest of getting something working, I've been creating XML definitions of the games, and editing them using a small custom tool that does little more than ensure that I don't add components that don't exist, and that the files are valid XML.

I'm at something of an apex or flection point in that the tools and process I'm using really aren't suitable for production.

Hand-editing large XML files is an error-prone, painful process. (JSON is well supported and pithy, but still requires visual syntax checking.) I could switch to a database such as SQLite, but I have yet to find a good graphical interface (something along the lines of SQL Server Management Studio would be nice).

Are there any COTS tools that can ease this process? I found a C# SQLite implementation with a basic ORM, but it doesn't support complex types like Vector3 or Rectangle. I can serialize these into strings or edit the ORM code to support those types, but then I wind up with my own branch of an OSS component which invites maintenance headaches further down the road.

Another thought was to just do everything in SQL Server and generate the XML from there, and have a tool that keeps the DB schema in sync with the component types in my engine, which is similar to using an ORM.

What's a good solution for this problem? I've read that bigger studios (as in, more than one guy) build their own tools for this kind of thing. I can do that, but I'd really rather be writing my game than building a tool set that only I will ever see.

To clarify: how do those that use entity/component/system engines create and maintain their data that defines the game?

  • 2
    \$\begingroup\$ Kind of related to this: gamedev.stackexchange.com/questions/33453/… And it includes my answer on how I maintain the data for my game. \$\endgroup\$
    – House
    Commented Oct 2, 2012 at 22:13
  • 1
    \$\begingroup\$ @Byte56 I might close this as a duplicate. You should write a book about this stuff. \$\endgroup\$
    – 3Dave
    Commented Oct 2, 2012 at 22:31
  • \$\begingroup\$ It's not a duplicate. Might be worth copying the relevant info from that question to here. Ultimately though it seems like either you want an XML editor, which is easy to find, or you want a component-specific tool, which won't exist outside of the engine it was developed for as there are no standards in component-driven game development. \$\endgroup\$
    – Kylotan
    Commented Oct 2, 2012 at 22:34
  • \$\begingroup\$ @DavidLively Well, my answer over there doesn't address the error-prone-ness of hand editing the files. So I think this question is still valid. However, I think the answer is going to be: write a tool. You should leave it up as a good answer would help me too :). \$\endgroup\$
    – House
    Commented Oct 2, 2012 at 22:45
  • 1
    \$\begingroup\$ @Kylotan I might be looking for something that is an XML editor or SQLite interface, but with the ability to display textures, etc. instead of just a path or identifier. That's probably custom tool territory - but since I can see how to do that in an engine-agnostic manner, I'm hoping someone else already has, or that there's an out-of-left-field approach that I haven't thought of. \$\endgroup\$
    – 3Dave
    Commented Oct 2, 2012 at 22:48


Browse other questions tagged .