Skip to content

Commit 88b2ebe

Browse files
committed
Readme translated into English
1 parent 08ad168 commit 88b2ebe

1 file changed

Lines changed: 55 additions & 57 deletions

File tree

README.rst

Lines changed: 55 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,98 +2,96 @@
22
Questgen
33
########
44

5-
Библиотека для автоматической генерации заданий (квестов). Позволяет по описанию мира (в виде набора предикатов) автоматически создавать вложенные нелинейные задания с событиями и разного рода ограничениями (вроде «исход задания для этого персонажа должен быть только положительным»).
5+
Library for automatic quest generation. Allows creation of nested, nonlinear quests with events and various constraints (e.g., "the outcome of the quest for this character must only be positive") based on a world description given as predicates.
66

7-
Также позволяет визуализировать то, что получилось, пример визуализации: svg_
7+
It also supports visualization of the generated quests. Example visualization: svg_
88

99
.. _svg: http://tiendil.org/static/trash/collect_debt.svg
1010

11-
Конструкторы всех заданий: ``./questgen/quests/``
11+
Quest constructors are located in: ``./questgen/quests/``
1212

13-
Создавалась для использования в MMOZPG игре Сказка_.
13+
Initially developed for use in the MMORPG game "The Tale"_.
1414

15-
.. _Сказка: http://the-tale.org
15+
.. _The Tale: http://the-tale.org
1616

17-
Визуализации всех «базовых» шаблонов заданий лежат в каталоге ``./questgen/svgs/``
17+
Visualizations of all "basic" quest templates are stored in ``./questgen/svgs/``.
1818

19-
Работа библиотеки описана в статье на habrahabr_.
19+
Details of the library's functionality can be found in the article on habrahabr_.
2020

2121
.. _habrahabr: http://habrahabr.ru/post/201680/
2222

23-
************************************
24-
Условные обозначения в визуализаторе
25-
************************************
23+
**************************
24+
Legend for the Visualizer
25+
**************************
2626

27-
Отображается граф квеста без модификаций (например, со всеми вариантами события, см. далее).
27+
The quest graph is displayed without modifications (e.g., all event variants are shown).
2828

29-
* серые узлыначало и окончание задания;
30-
* фиолетовые узлыточки выбора;
31-
* зелёные узлыобычные точки сюжета;
32-
* красные узлыусловные переходы;
33-
* бирюзовые контурыподквесты;
34-
* более тёмным фоном на в узлах отмечены требования к ситуации, которые должны быть выполнены для возможности перехода в эту точку сюжета;
35-
* более светлым фоном выделены действия, которые должны быть выполнены сразу после перехода в точку сюжета.
36-
* жёлтые контурысобытия;
29+
* gray nodesstart and end points of the quest;
30+
* purple nodesdecision points;
31+
* green nodesregular story points;
32+
* red nodesconditional transitions;
33+
* cyan outlinessubquests;
34+
* darker backgrounds in nodes indicate conditions that must be met to transition to that story point;
35+
* lighter backgrounds indicate actions that must be performed immediately upon entering that story point.
36+
* yellow outlinesevents;
3737

38-
39-
*********
40-
Установка
41-
*********
38+
************
39+
Installation
40+
************
4241

4342
::
4443

45-
pip install git+git://github.com/Tiendil/questgen.git#egg=Questgen
44+
pip install questgen
4645

4746
**************
48-
Принцип работы
47+
How it Works
4948
**************
5049

51-
Состояния мира описывается в виде предикатов вроде
50+
World states are described using predicates, e.g.:
5251

5352
.. code:: python
5453
5554
LocatedIn(object='hero', place='place_1')
5655
56+
and stored in a knowledge base (KB).
5757

58-
и сохраняются в базу знаний (БЗ)
58+
Quests are described as directed connected graphs with one initial node and several terminal nodes (also stored in the KB).
5959

60-
Задание описывается ориентированным связанным графом с одной начальной вершиной и несколькими конечными (который тоже хранится в БЗ).
60+
* Each node has a list of requirements that must be satisfied before transitioning into it (e.g., the hero must be at a specific location);
61+
* Each node has a list of actions to perform upon entry;
62+
* Each edge has two lists of actions:
63+
* actions performed when starting to traverse the edge;
64+
* actions performed when finishing traversal (upon satisfying all requirements of the new node);
65+
* Several types of nodes exist:
66+
* Initial — one per quest; the starting point;
67+
* Terminal — multiple per quest; determines quest outcomes (for connecting with other quests);
68+
* Regular — a narrative node; can have multiple incoming edges and exactly one outgoing edge;
69+
* Decision — can have multiple outgoing edges, selectable until one of the following nodes is reached.
6170

62-
* каждая вершина имеет список требований, которые должны быть удовлетворены, прежде чем можно будет перейти в неё (например, герой должен находиться в конкретном месте);
63-
* каждая вершина имеет список действий, которые должны быть выполнены, когда мы в неё перешли;
64-
* каждая дуга имеет два списка действий:
65-
* которые должны быть выполнены, когда мы начинаем двигаться по дуге;
66-
* когда мы заканчиваем двигаться по дуге (т.е. переходим в новую вершину после удовлетворения всех её требований);
67-
* существует несколько типов вершин:
68-
* Начальная — одна на задание, с неё начинается «путешествие»;
69-
* Конечная — несколько на задание, определяет результат выполнения (для стыковки с другими заданиями);
70-
* обычная — узел истории, можешь иметь несколько входящих дуг и ровно одну исходящую;
71-
* выбор — может иметь несколько исходящих дуг, между которыми можно переключаться, пока не пришли в одну из следующих вершин;
71+
Multiple nodes can be combined into an "event," which expands upon quest generation completion by removing all but one node. This allows for random events.
7272

73-
Несколько вершин могут быть объединены в «событие», которое раскрывается при завершении генерации графа, удаляя все вершины кроме одной. Таким образом можно делать случайные события.
73+
General generation procedure:
7474

75-
Общий порядок генерации:
75+
#. Create world description;
76+
#. Create quest;
77+
#. Process the quest (see example usage below);
78+
#. Validate correctness;
79+
#. Handle the quest in-game (the game should implement the code that executes while traversing the graph).
7680

77-
#. создать описание мира;
78-
#. создать задание;
79-
#. обработать задание (см. пример использования далее);
80-
#. проверить на корректность;
81-
#. работать с квестом в коде игры (игра реализует код, который выполняется при проходе по графу).
81+
**Note:** Quest generation might fail occasionally (raising a ``questgen.exceptions.RollBackError``). This does not indicate a critical issue; it simply means the quest graph generated was unsuitable. Generation should be retried. A larger world description typically ensures faster and more successful quest generations by reducing collisions.
8282

83-
**Следует помнить, что генерация задания может быть неудачной (вызывается исключение questgen.exceptions.RollBackError). Это не значит, что всё плохо, это значит, что необходимо повторить генерацию, т.к. был сформирован неудачный граф задания.** Из этого следует, что для лучшей и более быстрой генерации заданий лучше иметь мир побольше, чтобы не было много коллизий.
83+
*******
84+
Example
85+
*******
8486

85-
******
86-
Пример
87-
******
87+
See ``./helpers/example.py``
8888

89-
см. ``./helpers/example.py``
90-
91-
************
92-
Визуализация
93-
************
89+
*************
90+
Visualization
91+
*************
9492

95-
Визуализатор: ``./helpers/visualizer.py`` создаёт изображения шаблонов заданий в ``./questgen/svgs/``
93+
Visualizer: ``./helpers/visualizer.py`` generates quest template images in ``./questgen/svgs/``.
9694

97-
Использует ``graphviz`` через библиотеку ``pygraph``
95+
Uses ``graphviz`` via the ``pygraph`` library.
9896

99-
*Если создаются неверные (поехавшие) изображения, поставьте новую версию graphviz*
97+
*If generated images are incorrect (misaligned), install a newer version of graphviz.*

0 commit comments

Comments
 (0)