0
\$\begingroup\$

Are there any format for storing quest data that can be processed independently by third-party tools? I don't want to code quests in code, because it will be hard to update and extend them, so I just thinking about generic system that allows to submit to a task, track its stages and rules necessary to fulfill some quest conditions and completion of a quest by player.

Basically, I'd like a simple text file for the start, so that errors in description can be easily edited and committed to repository. But I also want to be able run complex queries against quest DB, such as - "for which quests this quest is prerequisite" or "in which quests this component is used" or "what quests are available for a given environment". So the structure of the field in the format is important. I can of course invent my own, but it would save me a lot of hours to start with something workable.

Is there something generic like that?

\$\endgroup\$
1
\$\begingroup\$

I am not aware there are specific formats for quests with specialized editors (there might be!).
But why dont you use XML? There are tons of parsers for every possible programming language. It is widely supported in various editors, it can store almost anything and it is human-readable so it is ideal - at least for prototyping/ debugging. Another, but similar alternative might be JSON.
Later on, when is everything debuged and working, you can move to own binary format to protect your resources (you can still have texts in separate strings.txt file to allow easy community localization).

\$\endgroup\$
5
  • \$\begingroup\$ It is not really a question of XML, JSON or YAML. You can usually convert from one to other without much problems. The question is more about specific set of tags or features that are common between quest systems - how to store quest ids etc. - so that a 3rd party tool can process them. So it is about existing standards rather than about inventing my own. \$\endgroup\$ Jan 25 '15 at 11:38
  • \$\begingroup\$ @techtonik this also might help you - I remember something similar was mentioned in this lecture of GDS 2014(GameDev Session), starting somewhere around 30 min mark. He is designer of AAA, and mentions few programs and how they developed their own and why. It is more about writing than scripting however he said they could export quest directly to CryEngine. \$\endgroup\$
    – wondra
    Jan 25 '15 at 12:19
  • \$\begingroup\$ Watching it right now. In the meanwhile there is a useful discussion at stackoverflow.com/a/1867290/239247 \$\endgroup\$ Jan 26 '15 at 8:23
  • \$\begingroup\$ @techtonik I had a look at it - it should be nice base. Id however use pointers, because not every time the quest is linear forward e.g..: text has id1, below is list responses "text2 goto id2", "text3 goto id3" and "text4 goto id4". This however does not solve your request for database. I suggest if any mentioned programs does not suit you, you can develop own one in WinForms as it have many build-in tools(serializing, LINQ queries, etc.) for similar applications and their development is very fast. \$\endgroup\$
    – wondra
    Jan 26 '15 at 10:57
  • \$\begingroup\$ Editor from lecture is far from release, but cool nevertheless - graphs, time metrics and play mode. It looks like the structure is hard to express in just plain XML file and Quests should be linked to game DB. Developing my own DB is interesting. But first it will need drawing out constraints thoroughly to gradually increase complexity of DB to see at which level to stop, and where additional integrity checks will be needed. UI is a secondary objective, and that definitely shouldn't be Windoze specific. \$\endgroup\$ Jan 27 '15 at 1:05
1
\$\begingroup\$

There is no "standard" format. It all depends on the language and the game engine/framework if any is used. For example, Unity has its own way to do scriptable objects, and thus, potentially quests.

A real example is the way the Lineage 2 Server stores its quests on the server, and they are written in Jython and lately in pure Java (see https://bitbucket.org/l2jserver/l2j_datapack/src/56cb39df68065d558986bd5f2a1a019b1353d743/dist/game/data/scripts/quests/, folders that start with "Q" have the quests written in Java)

The way it can be done without too much work, is simply to tap into bridging the quest scripts with the actual code, either via a language bridge (I think of SWIG or such) or the actual code. With languages like Java, C#, Python, it's very simple to road another module at runtime and execute its code. All you need is extract some common interfaces which can be used by the scripts code. That way, you don't need to mess with XML, JSON, or other "custom formats".

\$\endgroup\$
1
  • \$\begingroup\$ The documentation is a good starting point to convert procedural interface into data based. I am sure that not everything is possible when converting functions to data, but I'd like with design that puts data first and extends it with functions later. \$\endgroup\$ Jan 25 '15 at 14:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.