Открыть главное меню

Изменения

RTADS

135 байт добавлено, 13:43, 3 апреля 2019
Нет описания правки
'''RTADS''' — это локализованная на русский язык известная [[платформа]] [[TADS|TADS 2]] (Text Adventure Development System], на что и указывает буква «R» (Russian) в её названии. Локализация произведена [[Гранкин, Андрей|Андреем Гранкиным]] в 2002 году и активно дорабатывалась в последующие годы. Также используется написание (R)TADS, которое, как правило, применяется в случаях, когда языковая специфика не имеет существенного значения и обсуждаемые вопросы справедливы как в отношении оригинальной, так и в отношении локализованной версии.
RTADS — это одна из наиболее функциональных и отлаженных русскоязычных платформ для написания [[ПарсерПарсерные игры|парсерной]] [[Интерактивная литература|интерактивной литературы]], а также наиболее распространённая из них по количеству и размеру написанных [[ПарсерПарсерные игры|парсерных игр]] на русском языке. Впрочем, известны неоднократные случаи использования RTADS и для написания не только парсерных, но и менюшных, или вообще не текстовых игр (подробнее см. «[[TADS#Использование для разработки непарсерных игр|TADS: Использование для разработки непарсерных игр]]»). Официальный комплект поставки RTADS даже уже включает специальную библиотеку для создания менюшных игр, да и существует множество сторонних библиотек такого плана.
Данная статья посвящена преимущественно особенностям RTADS, специфичным для русского языка, поэтому для получения общей информации о платформе в целом следует также ознакомиться с [[TADS|основной статьёй про TADS 2]].
(Данный раздел посвящён истории платформы RTADS, построенной на базе [[TADS|TADS 2]]. Для получения информации об истории оригинальной платформы см. основную статью «[[TADS#История|TADS: История]]».)
Впервые с [[Интерактивная литература|текстовыми играми]] [[Гранкин, Андрей|Андрей Гранкин]] познакомился в 1992 году на компьютере [[wikipedia:ZX Spectrum|Spectruм]]. Впрочем, по его собственному признанию, ни одну из тех игр пройти ему в свои 9 лет не удалось из-за недостаточных знаний английского языка, однако они оставили у него ощущение больших скрытых богатств, и с тех пор его неодолимо тянуло ко всем играм изобилующим текстом. Следующим знаковым этапом приобщения [[Гранкин, Андрей|Андрея Гранкина]] к текстовым играм стало его знакомство с Rogue-подобной игрой [[wikipedia:NetHack|NetHack]] в 1999 году, в отношении которой он даже предпринимал серьёзные попытки перевода на русский, а затем и с играми класса [[MUD]]. Именно после них он стал целенаправленно интересоваться вопросом однопользовательских [[ПарсерПарсерные игры|игр с текстовым вводом]], и однажды, случайно увидев игру «[[Зомби 1 - Бегство]]», понял, что это то, что надо, хотя и в неудачной реализации:
{{начало цитаты}}
=== Возможности парсера для игроков ===
Платформа RTADS имеет развитый [[Парсер|синтаксический анализатор]], соответствующий требованиям современных стандартов [[ПарсерПарсерные игры|парсерных игр]], но в дополнение к общим для большинства платформ возможностям ,он также имеет некоторое количество менее распространённых функций, позволяющих лаконично формулировать одной командой действия с достаточно сложной логикой. Эти возможности активно используются опытными игроками, а также повышают удобство геймплея в случае игр с высокодетализированной моделью мира и [[Загадка|пазлами]], ориентированными на сложное взаимодействие с множеством предметов.
RTADS поддерживает обработку команд из одного действия («[[Глагол|глагола]]»), из действия и [[Объект|объекта]], а также из действия и двух [[Объект|объектов]], например, «встать», «взять ключ», «открыть дверь ключом» соответственно. При этом, возможно связывание частей команды при помощи различных предлогов, обозначение объектов или действий более чем одним словом, использование названий объектов в разных падежных формах, а также использование в качестве объекта не только предмета из игрового мира, но и числа или строки текста в кавычках, например, для команд типа «повернуть переключатель микроволновки на 5» или «напечатать "привет" на клавиатуре».
=== Примеры кода и возможностей платформы для разработчиков ===
Ниже приводится несколько примеров кода RTADS, демонстрирующих общий синтаксис языка и его базовые конструкции, а также возможности платформы в отношении решения типовых задач по написанию [[ПарсерПарсерные игры|парсерных игр]] с учётом специфики русского языка.
<code><pre>
==== Создание предмета ====
При создании [[ПарсерПарсерные игры|парсерных игр]] на русском языке одной из главных особенностей является необходимость учитывать возможность ввода названия объектов в разных падежных формах, поэтому разработчику необходимо обеспечить распознавание объекта по всем словоформам его названий. Кроме того, и сама игра должна уметь склонять названия объектов в своих сообщениях, а для этого ей нужна чёткая информация о формах слова для соответствующих падежей. RTADS обладает всеми необходимыми механизмами для решения этих задач.
Листинг с ручным указанием словоформ:
==== Определение класса и функции, динамическое создание объектов ====
(R)TADS имеет развитый язык программирования, характеризующийся классической реализацией ООП с поддержкой суперклассов и множественного наследования, что позволяет упрощать написание кода за счёт высокой степени его переиспользования. В языке также существует механизм динамического создания объектов, позволяющий создавать и удалять новые объекты в процессе выполнения программы, что позволяет легко реализовывать многие продвинутые игровые механики. Одинаковые предметы игрового мира могут быть описаны особым образом, который позволяет пренебречь стандартным требованием [[ПарсерПарсерные игры|парсерных игр]], подразумевающем необходимость давать всем игровым объектам в одной локации уникальные названия.
Листинг:
==== Создание новых «глаголов» ====
Стандартная библиотека платформы имеет более сотни предопределённых «[[Глагол|глаголов]]», которые покрывают все типовые взаимодействия с игровым миром, традиционные для [[ПарсерПарсерные игры|парсерных игр]]. Однако особенности сюжета или геймплея часто обуславливают необходимость добавления новых «[[Глагол|глаголов]]» или модификации уже имеющихся. (R)TADS позволяет практически неограниченно расширять их перечень в игре, поддерживая команды в виде простых действий, действий в отношении объекта и действий в отношении объекта (прямого) с помощью объекта (косвенного). Одно и то же действие может работать как по одной схеме, так одновременно и по двум или всем трём схемам.
Листинг создания нового «глагола» как простого действия:
==== Создание отдельной области на экране ====
(R)TADS при работе в интерфейсе с поддержкой [[HTML TADS]] позволяет делить экран на произвольные области — так называемые баннеры — и управлять ими отдельно: выводить туда какой-то текст или картинку, менять только в них шрифт или фон и так далее. Это позволяет менять вид интерфейса, отходя от традиционного телетайпного стиля [[ПарсерПарсерные игры|парсерных игр]]. Вместе с этим, при должных усилиях разработчика, такая игра может сохранить полную проходимость и эргономичность интерфейса в обычном текстовом режиме без поддержки [[HTML TADS]].
Листинг: