by date
Feedback request on possible Design tool
Feedback request on possible Design tool
| Name: | Matthew Shapiro | |
|---|---|---|
| Date Posted: | Jun 03, 2008 | |
| Rating: | 4.0 out of 5 | |
| Public: | YES | |
| Comments: | YES | |
| RSS Feed: | or Subscribe with . | |
| Profile Page: | View profile page for Matthew Shapiro |
Blog post
So I took a 3-4-ish month break from game dev after reading an AI book and getting caught up with real life and game playing. Now I am looking to get started and I figure the easiest way to get back into my routine is to start working on a tool I've wanted for a while. I'm writing this post to see if anyone is actually interested in the tool, as that will hold some weight as to some design decisions I make (like how extensible certain parts are). I also figure if people are looking forward to it that's extra motivation to get it done :)
Background
Here's some background on how I came up with the tool. When I worked as a professional game designer at Auran Developments working on Fury almost all non-level design aspects were done purely in a database. Everything from setting up and balancing abilities, to quest chains, to npc dialog, to strings in general, even to what art assets and animations belonged to different items and abilities.
As you can imagine querying the database for all of that information each time would be slow, even for an off-line game with a db on the same machine. What our programmers made was a quick program that would export all the design related tables into a special format that the game's binaries could read, and the game loaded those data files when the servers or clients started.
Using a database as a design tool I learned is a very useful thing. It allows for a lot of flexibility in how designers see the data they are working with even when the database format is completely different than how the game sees it (not just talking about binary/ascii difference but how the data is arranged completely). It also allows for a very easy mechanism to quickly find data to change without having to hunt through text files everywhere.
Of course using a database is not as good as having a specific tool for each function, but using a database allows the designer to quickly work on his or her own saving the programmers from creating specific tools.
The Tool
The tool I am going to be creating is a flexible version of what I worked with at Auran. It will be a GUI application that will allow users to see the layout of a table and create xml schemas that can then be used to export data straight from the database into an xml file.
A quick example would be this. Assume your game had a mission structure. The database layout may have 3 tables that are used for missions, namely a table that describes the different types of operations that can occur in a mission (spawn flag, spawn enemies, move enemies here, blow up object X, show text, etc..), a table which structures each of those operations into a single sequenced mission, and finally a string table which contains any strings used by operations.
Using the tool, you could quickly denormalize all of the data and tell it to build a missions.xml files (one for each mission or one total if you prefer) that would have each row of data contain the mission ID, a mission operation for that ID, the parameters for that specific operation, and the string if one is requested.
I hope that makes sense, it's kind of hard to explain a simple use for the tool without getting too wordy. In a nutshell, it will be used to quickly denormalize data from a database (whose layout is centered around quick and simplicity for the designers) into data that is easily readable by the game.
I don't see this as just being used for RPGs (Though this will probably be REALLY useful for them). For a top down space shooter game I am making I will be using this to manage cinematics, missions, weapons, AI, etc.. all from one tool without having to waste time creating real specific tools (especially since I am the only programmer).
I also plan to it able to create backup dumps (and allow reinsertion) of the database into pure xml, which will allow developers to back up their databases into a repository easily.
The tool will be created in C# and initially support exporting to plain xml and reading from MSSQL databases. If the community is interested in this tool then I will release it free when it is done (possibly with source code once I decide how to handle the svn portion of it, since I can't give access to my main svn due to tx source). It also means I will abstract the database portions of it (so someone can write a plugin to read from mysql or another database) and the output portions (so people can write plugins to encrypt the xml or write another format entirely).
So, would anyone be interested in this?
Background
Here's some background on how I came up with the tool. When I worked as a professional game designer at Auran Developments working on Fury almost all non-level design aspects were done purely in a database. Everything from setting up and balancing abilities, to quest chains, to npc dialog, to strings in general, even to what art assets and animations belonged to different items and abilities.
As you can imagine querying the database for all of that information each time would be slow, even for an off-line game with a db on the same machine. What our programmers made was a quick program that would export all the design related tables into a special format that the game's binaries could read, and the game loaded those data files when the servers or clients started.
Using a database as a design tool I learned is a very useful thing. It allows for a lot of flexibility in how designers see the data they are working with even when the database format is completely different than how the game sees it (not just talking about binary/ascii difference but how the data is arranged completely). It also allows for a very easy mechanism to quickly find data to change without having to hunt through text files everywhere.
Of course using a database is not as good as having a specific tool for each function, but using a database allows the designer to quickly work on his or her own saving the programmers from creating specific tools.
The Tool
The tool I am going to be creating is a flexible version of what I worked with at Auran. It will be a GUI application that will allow users to see the layout of a table and create xml schemas that can then be used to export data straight from the database into an xml file.
A quick example would be this. Assume your game had a mission structure. The database layout may have 3 tables that are used for missions, namely a table that describes the different types of operations that can occur in a mission (spawn flag, spawn enemies, move enemies here, blow up object X, show text, etc..), a table which structures each of those operations into a single sequenced mission, and finally a string table which contains any strings used by operations.
Using the tool, you could quickly denormalize all of the data and tell it to build a missions.xml files (one for each mission or one total if you prefer) that would have each row of data contain the mission ID, a mission operation for that ID, the parameters for that specific operation, and the string if one is requested.
I hope that makes sense, it's kind of hard to explain a simple use for the tool without getting too wordy. In a nutshell, it will be used to quickly denormalize data from a database (whose layout is centered around quick and simplicity for the designers) into data that is easily readable by the game.
I don't see this as just being used for RPGs (Though this will probably be REALLY useful for them). For a top down space shooter game I am making I will be using this to manage cinematics, missions, weapons, AI, etc.. all from one tool without having to waste time creating real specific tools (especially since I am the only programmer).
I also plan to it able to create backup dumps (and allow reinsertion) of the database into pure xml, which will allow developers to back up their databases into a repository easily.
The tool will be created in C# and initially support exporting to plain xml and reading from MSSQL databases. If the community is interested in this tool then I will release it free when it is done (possibly with source code once I decide how to handle the svn portion of it, since I can't give access to my main svn due to tx source). It also means I will abstract the database portions of it (so someone can write a plugin to read from mysql or another database) and the output portions (so people can write plugins to encrypt the xml or write another format entirely).
So, would anyone be interested in this?
Submit your own resources!| Konrad Kiss (Jun 03, 2008 at 11:42 GMT) |
I am very much looking forward to see what this designer tool will turn out to be like, though I think using a different db engine, or even have options to use PostgreSQL or MySQL instead would certainly rock!
Either way, I sign up to be a guinea pig when it comes out! :)
| Matthew Shapiro (Jun 03, 2008 at 11:53 GMT) |
| James Mintram (Jun 03, 2008 at 15:15 GMT) |
A new level/set of levels/content pack could simply be inserted into the database online, a php web interface could display all the information about any new levels by extracting this information from the database. Users could view this information via the website, and download if they wish to add a particular level/level set/content pack to there game which of course you could charge for if you wanted to.
The server could send the content in the format required by the game engine by automatically building it on the server hosting the website meaning all you need to do as the developer is insert/update/delete data on the Database server and everything else is an automatic process.
You must be a member and be logged in to either append comments or rate this resource.


4.0 out of 5


