Archived

This topic is now archived and is closed to further replies.

Taulin

Development Architecture Quiz (From content tools to implementation)

Recommended Posts

Taulin    100
Here is a game project architecture question for everyone. Your game requires an extreme amount of non-linear data that can be clearly seen in a DB schema full of relationships and constraints. This could include such things as events, graphics and texts that change depending on other variables in the game (like time of year). Perhaps a character wears certain clothes depending on season and location. The questions are: 1) In what way would you store the data so you game engine can use it? 2) What custom/shelf tool(s) would you use to create the content?

Share this post


Link to post
Share on other sites
shurcool    439
Look into XML, I think that might offer just the flexibility you need. Also, if your relationships get too complex, see if there''s any way you can simplify them. So if the data is too complex for effective storage, perhaps it''s not organized well.

---
shurcooL`

Share this post


Link to post
Share on other sites
Taulin    100
While I have dealt with this situation in several different ways, this is not for me. I am going to post one of my solutions after I get home and let people pick at it.

It is just over time I have been in conversations that dealt with how people develop and use complex data in games. I am curious how people here might deal with it.

Do you use flat files? How do you make them? Notepad?
Use XML files? How do you make them? DLLs?

What tools do you use to make the files? Custom, generic?

These are important items that come up in every game, especially those of the simulation variety. I use the word ''complex'' meaning if you denormalized all the data (a big join) to create just one flat file, it would be a case of being too big to manage, so you are forced to at least keep it structured.

The chalange of developing a game that needed to use this data, and not have access to a background DB, would not only be creating the specialized content, but shipping it.

Share this post


Link to post
Share on other sites
Taulin    100
Maybe my topic and approach is not clear. I am just trying to spur conversation on actual game data layout and design.

Here is ''one'' way of doing it:

Again, the situation is you have many table of related date that needs to be used in the game.

The challenge is to get this data into memory.

Resources, found in DLLs offer data lookup via a key, which could represent tables that have a single index. So let''s go with that. Using DLLs, and having one file per DLL will allow us to update the data easily durring development also.

Database data could be kept in a local Access instance, and the resource and .h file could be generated from it.

Anyone see any problems so far?

Share this post


Link to post
Share on other sites
cbenoi1    484
> 1) In what way would you store the data so you game engine can use it?

Maybe not a game but close, Softimage|3D (not XSI) uses 'chapters' of elements linked together with attributed relations. So 'mat321' in the MATERIALS chapter had a 'mod2mat' relation to element 'thigh234' in the MODELS chapter. Bezier curve 'bz1' in the ANIM chapter had a 'Ambient.Red' relationship with 'mat321' in the MATERIALS chapter. Attributes not only declared the relation type, but could also contain relational data; for example the tesselation relation between two models contained tesselation information that would transform a NURBS source model into the destination polygonal model. And so on. Elements and relations were distinct objects in the system that formed a DAG that would be used to build the dynamic update list. The difference between SI3D and a game would be the ability to ditch parts of the scene data because it's not immediately needed. SI3D cannot make such assumptions because a scene is a work-in-progress, not optimal content for a game engine.

With this engine, you could make the scene data either self-contained (reacts only to the time line) or react to external events. SI|Live was the tools that would connect the SI database with external devices to the OGL display. You could make your characters react to voice, joystick, mouse, etc input sources and be rendered fully textured and lit. (Check Moxy at http://www.stuartink.com/MOXY/moxycomics.html )

> 2) What custom/shelf tool(s) would you use to create the content?

There was a number of ways you could edit the data besides using the interactive package. DKit provided file-level tools and an SDK to modify parts of the scene data at will. The SI|SDK could be used both in a separate executable and from within the interactive package to manipulate the scene data, and there was a binary/text format converter so you could use any text editor to change the scene data. Besides SI tools, there was a ton of 3rd party tools that could read & write SI3D scene data.

-cb

[edited by - cbenoi1 on January 7, 2004 10:38:11 AM]

Share this post


Link to post
Share on other sites