Permalink
Fetching contributors…
Cannot retrieve contributors at this time
119 lines (86 sloc) 7.57 KB

ЯРИЛ2 — Дорожная карта

1. Конфигурация

Warning

Этот раздел требует обсуждения!

Необходимо сохранять некоторые настройки между запусками программы. Например, последнюю выбранную папку, последнюю сохранённую игру и т.п. …​

Обычно, программы сохраняют специфичные им настройки в определённой папке. Сейчас большинство программ делает это в Unix стиле — ${user.home}/.ifml2 Внутри этой папки можно располагать любые данные программы без опасения, что они будут повреждены (если только пользователь не удалит данную папку. Например, можно хранить конфигурацию ifml2.conf, папку для плагинов и обновлений bundles, кеш — cache, стандартную библиотеку глаголов и т.п.

2. Реструктуризация

Warning

Этот раздел требует обсуждения!

В текущем состоянии в проекте существует сильная связанность между компонентами. При изменении какой либо части — последствия могут проявится в других частях проекта. Требуется разделение на слабосвязанные компоненты.

3. Грамматика (Синтаксический анализатор)

Warning

Этот раздел требует обсуждения!

В текущей реализации приложения используется стандартная библиотека глаголов, для описания базовых действий, поддерживаемых системой. Если автору необходимо добавить своё действие или объект, то ему нужно записать все возможные формы слова (склонения/спряжения), чтобы парсер смог это слово опознать. Это достаточно рутинная и трудоёмкая работа, от которой хотелось бы оградить автора. С этой целью вводится модуль grammar, задачей которого является предварительный семантический разбор вводимой фразы, выделение лексической информации и выдача её в удобном для автора виде. На текущий момент API представляет собой следующее:

object Grammar {
    fun parse(sentence: String): List<List<Word>>
}

Word — представляет из себя интерфейс с единственным параметром:

interface Word {
    val name: String
}

Простейшая реализация этого интерфейса:

data class Unknown(override val name: String)

предназначена для слов, которые не могут быть распознаны синтаксическим анализатором. Всего возможны следующие виды:

  • Unknown — нераспознанное

  • Noun — существительное

  • Verb — глагол

  • Particle — частица

  • Union — союз

4. Редактор кода

Warning

Этот раздел требует обсуждения!

Многие авторы имеют некоторое отношение к программированию. Для них быстрее и удобнее описать сцену на некотором языке программирования, чем делать всё это в виде настроек по окошкам и формам. Для таких авторов можно создать редактор кода, однозначно отображающегося на xml. Таким образом была бы возможность писать одну историю и в виде кода и в виде настроек и окошек в редакторе.

5. Текстовый конструктор

Warning

Этот раздел требует обсуждения!

По мере развития семантического анализатора естественного языка станет возможным использовать его не только в парсере для анализа вводимых комманд, но и в процессе создания истории. Сцены, объекты и действия можно описывать естественным языком, с последующей трансляцией в xml. Это значительно снизит порог вхождения авторов в платформу.

6. Плагинная структура

Warning

Этот раздел требует обсуждения!

В настоящий момент платформа представленна как монолитное приложение без какого либо разделения на модули, его составляющие. Несмотря на логическое разделение проекта на модули (модули-maven), в процессе сборки модули всё равно объединяются в единый jar (для виновс пользователей в exe). Однако возможно использование отдельных подсистем, как самостоятельных модулей (плагинов) в приложении и обновление не целого приложения, а отдельно взятого модуля (например, системы хранения историй для добавления поддержки новых форматов). Более того, возможно помодульное обновление всей платформы без её перезагрузки. Так, например, работает eclipse (правда, из-за особенностей реализации, ему всё равно нужна перезагрузка).

7. FX интерфейс

Warning

Этот раздел требует обсуждения!

Современным Java приложениям Oracle рекомендует использовать JavaFX вместо Swing. В нём многи вещи переработаны и есть поддержка ускорителей (в том числе 2D для рендеренга текста).

8. Android плеер

Warning

Этот раздел требует обсуждения!

Стоит рассмотреть возможность портирования плеера на андроид. Это расширит число потенциальных пользователей платформы.