RTADS: различия между версиями
Содержимое удалено Содержимое добавлено
Nikita (обсуждение | вклад) Нет описания правки |
Nikita (обсуждение | вклад) |
||
| (не показано 8 промежуточных версий 4 участников) | |||
Строка 20:
'''RTADS''' — это локализованная на русский язык известная [[платформа]] [[TADS|TADS 2]] (Text Adventure Development System], на что и указывает буква «R» (Russian) в её названии. Локализация произведена [[Гранкин, Андрей|Андреем Гранкиным]] в 2002 году и активно дорабатывалась в последующие годы. Также используется написание (R)TADS, которое, как правило, применяется в случаях, когда языковая специфика не имеет существенного значения и обсуждаемые вопросы справедливы как в отношении оригинальной, так и в отношении локализованной версии.
RTADS — это одна из наиболее функциональных и отлаженных русскоязычных платформ для написания [[
Данная статья посвящена преимущественно особенностям RTADS, специфичным для русского языка, поэтому для получения общей информации о платформе в целом следует также ознакомиться с [[TADS|основной статьёй про TADS 2]].
Строка 27:
(Данный раздел посвящён истории платформы RTADS, построенной на базе [[TADS|TADS 2]]. Для получения информации об истории оригинальной платформы см. основную статью «[[TADS#История|TADS: История]]».)
Впервые с [[Интерактивная литература|текстовыми играми]] [[Гранкин, Андрей|Андрей Гранкин]] познакомился в 1992 году на компьютере [[wikipedia:ZX Spectrum|
{{начало цитаты}}
«...я, наконец, догадался, что должен существовать целый жанр текстовых игр, и вышел на поиски именно их. В интернете по этому поводу нашёлся сайт [[Кащей (персоналия)|Кащея]], с играми, ужасающими сильнее, чем любые [[Зомби]]. [[Opus & Lapsus|ТяпЛяп]], тогда уже существовавший, загружаться отказался. Зато по ссылкам я вышел на [[Infocom|Inforcom'овские]] игры и с удовольствием играл в них около полугода. Когда же они надоели, а было это в июне 2002 года, мне захотелось самому написать нечто подобное. Неделя экспериментов с [[Inform|Inform'ом]] завершилась частичным переводом библиотек, созданием пары комнат с описаниями и вещами на русском, а также заваленным экзаменом. Что печально, ни один [[интерпретатор]] так и не позволил вводить русские буквы, удивлённо высвечивая вместо них вопросительные знаки. Пришлось забросить это начинание, и вернуться к учёбе.
В конце августа, досада от предыдущей неудачи развеялась и я решился попытаться ещё разок, на этот раз уже с системой [[TADS|ТАДС]]. Опыты оказались удачными, система прекрасно понимала русский без каких-либо настроек. Работа пошла быстрыми темпами, так как в это время Москва стала задыхаться в дыме лесных пожаров, и целых две недели я почти никуда не выходил по вечерам, а всё свободное время мучил файл под названием adv.t. Возможно я бы всё же не закончил это дело, если бы не наткнулся снова на сайт [[Opus & Lapsus|ТяпЛяп]], и не узнал что [[Заикин, Павел|Заикин Павел]] также занимается этим переводом. Обнаружилось, что этого события давно ждут и подобные попытки уже совершались ранее. В страхе что меня опередят, в следующую неделю я не только завершил перевод, но и написал [[
{{конец цитаты}}
Впрочем, некоторое время спустя [[Гранкин, Андрей|Андрей Гранкин]] всё же снова вернулся к переводу и платформы [[Inform]], пролоббировав в [[Windows Frotz]] доработки, необходимые для поддержки русского ввода, а также сделав базовый перевод стандартной библиотеки [[Inform]] и написав тестовую игру, что в последствие и стало основой проекта [[RInform]] [[Гаев, Денис|Дениса Гаева]] (подробнее см. «[[RInform#История|RInform: История]]»). Впрочем, основные усилия им всё же тратились именно на проект RTADS.
На 2002-2003 годы пришёлся наиболее активный этап разработки RTADS, когда шла основная работа по адаптации стандартной библиотеки к
В 2003 году к проекту RTADS подключился [[Коптельцев, Валентин|Валентин Коптельцев]], хорошо знакомый с платформой [[TADS]] ещё в её оригинальном виде и являвшийся автором ряда англоязычных игр на ней. [[Коптельцев, Валентин|Валентин]] взялся за перевод официальной документации [[TADS]] и её адаптацию к RTADS, то есть за дополнение темами, освещающими нюансы написания русскоязычных игр. Вместе с работой [[Старков, Стас|Стаса Старкова]] по переводу технических комментариев к коду стандартных библиотек всё в том же 2003 году, это обеспечило высокий уровень документированности платформы RTADS, позволявший привлекать новых авторов, желающих писать парсерные игры, но неготовых для этого предварительно глубоко погружаться в исходные коды для понимания принципов работы движка.
Строка 66:
Также существует модуль [[Модуль проверки орфографии для RTADS|spellchecker]] для автоисправления ошибок при вводе команд, написанный [[Гранкин, Михаил|Михаилом Гранкиным]], который раньше включался в официальный комплект поставки RTADS, но в последствие был из него исключён и теперь поставляется отдельно. Однако в advr.t сохранён интерфейс для его подключения.
Дополнительная библиотека [[GameInfo|gameinfo.t]], которая отвечает за автоматическое создание файла библиографического описания игры по стандарту "[[
=== Отличия RTADS от TADS 2 ===
Строка 92:
=== Возможности парсера для игроков ===
Платформа RTADS имеет развитый [[Парсер|синтаксический анализатор]], соответствующий требованиям современных стандартов [[
RTADS поддерживает обработку команд из одного действия («[[Глагол|глагола]]»), из действия и [[Объект|объекта]], а также из действия и двух [[Объект|объектов]], например, «встать», «взять ключ», «открыть дверь ключом» соответственно. При этом, возможно связывание частей команды при помощи различных предлогов, обозначение объектов или действий более чем одним словом, использование названий объектов в разных падежных формах, а также использование в качестве объекта не только предмета из игрового мира, но и числа или строки текста в кавычках, например, для команд типа «повернуть переключатель микроволновки на 5» или «напечатать "привет" на клавиатуре».
Строка 135:
=== Примеры кода и возможностей платформы для разработчиков ===
Ниже приводится несколько примеров кода RTADS, демонстрирующих общий синтаксис языка и его базовые конструкции, а также возможности платформы в отношении решения типовых задач по написанию [[
<code><pre>
Строка 146:
==== Сортировка методом пузырька ====
Язык программирования (R)TADS имеет развитые алгоритмические возможности и поддерживает основные конструкции и типы данных, характерные для языков
Листинг:
Строка 193:
==== Создание локации ====
Модель мира в играх на (R)TADS представляет собой совокупность объектов, для создания которых стандартная библиотека платформы предлагает большое количество готовых классов, имеющих всевозможные наборы типовых свойств, имитирующих те или иные свойства абстрактных сущностей, таких как помещения,
Листинг:
Строка 229:
==== Создание предмета ====
При создании [[
Листинг с ручным указанием словоформ:
Строка 284:
==== Определение класса и функции, динамическое создание объектов ====
(R)TADS имеет развитый язык программирования, характеризующийся классической реализацией ООП с поддержкой суперклассов и множественного наследования, что позволяет упрощать написание кода за счёт высокой степени его переиспользования. В языке также существует механизм динамического создания объектов, позволяющий создавать и удалять новые объекты в процессе выполнения программы, что позволяет легко реализовывать многие продвинутые игровые механики. Одинаковые предметы игрового мира могут быть описаны особым образом, который позволяет пренебречь стандартным требованием [[
Листинг:
Строка 390:
==== Создание новых «глаголов» ====
Стандартная библиотека платформы имеет более сотни предопределённых «[[Глагол|глаголов]]», которые покрывают все типовые взаимодействия с игровым миром, традиционные для [[
Листинг создания нового «глагола» как простого действия:
Строка 561:
==== Создание отдельной области на экране ====
(R)TADS при работе в интерфейсе с поддержкой [[HTML TADS]] позволяет делить экран на произвольные области — так называемые баннеры — и управлять ими отдельно: выводить туда какой-то текст или картинку, менять только в них шрифт или фон и так далее. Это позволяет менять вид интерфейса, отходя от традиционного телетайпного стиля [[
Листинг:
Строка 620:
Существуют специализированные редакторы для работы с [[TADS|TADS 2]], в частности, Imaginate, Implementor и TFE (TADS File Editor).
Схемы подсветки синтаксиса языка [[TADS|TADS 2]] существуют для таких общераспространённых редакторов как Aditor, Emacs, FAR, FED, FTE, Notepad++, TextPad, UltraEdit, Vim. Кроме того, ввиду близости синтаксиса [[TADS]] к синтаксису [[C
Также существует проект кодогенератора «[[Конструктор]]», выполненный как программа (игра) RTADS, в которой можно специальными командами создавать объекты мира (локации и предметы), тут же тестировать их поведение путём взаимодействия с ними стандартным игровым образом, а затем отдельной командой вывести сгенерированный код, описывающий построенный мир.
Строка 649:
* [[:Категория:Игры на RTADS|Игры на RTADS]]
* [[:Категория:Интерпретаторы TADS|Интерпретаторы TADS]]
* [[:Категория:Библиотеки
* [[Конструктор квестов]]
| |||