RTADS: различия между версиями

Содержимое удалено Содержимое добавлено
 
(не показаны 4 промежуточные версии 4 участников)
Строка 20:
'''RTADS''' — это локализованная на русский язык известная [[платформа]] [[TADS|TADS 2]] (Text Adventure Development System], на что и указывает буква «R» (Russian) в её названии. Локализация произведена [[Гранкин, Андрей|Андреем Гранкиным]] в 2002 году и активно дорабатывалась в последующие годы. Также используется написание (R)TADS, которое, как правило, применяется в случаях, когда языковая специфика не имеет существенного значения и обсуждаемые вопросы справедливы как в отношении оригинальной, так и в отношении локализованной версии.
 
RTADS — это одна из наиболее функциональных и отлаженных русскоязычных платформ для написания [[ПарсерПарсерные игры|парсерной]] [[Интерактивная литература|интерактивной литературы]], а также наиболее распространённая из них по количеству и размеру написанных [[ПарсерПарсерные игры|парсерных игр]] на русском языке. Впрочем, известны неоднократные случаи использования RTADS и для написания не только парсерных, но и менюшных, или вообще не текстовых игр (подробнее см. «[[TADS#Использование для разработки непарсерных игр|TADS: Использование для разработки непарсерных игр]]»). Официальный комплект поставки RTADS даже уже включает специальную библиотеку для создания менюшных игр, да и существует множество сторонних библиотек такого плана.
 
Данная статья посвящена преимущественно особенностям RTADS, специфичным для русского языка, поэтому для получения общей информации о платформе в целом следует также ознакомиться с [[TADS|основной статьёй про TADS 2]].
Строка 27:
(Данный раздел посвящён истории платформы RTADS, построенной на базе [[TADS|TADS 2]]. Для получения информации об истории оригинальной платформы см. основную статью «[[TADS#История|TADS: История]]».)
 
Впервые с [[Интерактивная литература|текстовыми играми]] [[Гранкин, Андрей|Андрей Гранкин]] познакомился в 1992 году на компьютере [[wikipedia:ZX Spectrum|SpectruмSpectrum]]. Впрочем, по его собственному признанию, ни одну из тех игр пройти ему в свои 9 лет не удалось из-за недостаточных знаний английского языка, однако они оставили у него ощущение больших скрытых богатств, и с тех пор его неодолимо тянуло ко всем играм изобилующим текстом. Следующим знаковым этапом приобщения [[Гранкин, Андрей|Андрея Гранкина]] к текстовым играм стало его знакомство с Rogue-подобной игрой [[wikipedia:NetHack|NetHack]] в 1999 году, в отношении которой он даже предпринимал серьёзные попытки перевода на русский, а затем и с играми класса [[MUD]]. Именно после них он стал целенаправленно интересоваться вопросом однопользовательских [[ПарсерПарсерные игры|игр с текстовым вводом]], и однажды, случайно увидев игру «[[Зомби 1 - Бегство]]», понял, что это то, что надо, хотя и в неудачной реализации:
 
{{начало цитаты}}
Строка 66:
Также существует модуль [[Модуль проверки орфографии для RTADS|spellchecker]] для автоисправления ошибок при вводе команд, написанный [[Гранкин, Михаил|Михаилом Гранкиным]], который раньше включался в официальный комплект поставки RTADS, но в последствие был из него исключён и теперь поставляется отдельно. Однако в advr.t сохранён интерфейс для его подключения.
 
Дополнительная библиотека [[GameInfo|gameinfo.t]], которая отвечает за автоматическое создание файла библиографического описания игры по стандарту "[[ДоговорВавилонский Бабелядоговор|Договора Бабеля,Вавилонского договора]], ", содержащаяся в комплекте поставки [[TADS|TADS 2]] не имеет языковых зависимостей и может быть использована в RTADS в своём оригинальном виде.
 
=== Отличия RTADS от TADS 2 ===
Строка 92:
 
=== Возможности парсера для игроков ===
Платформа RTADS имеет развитый [[Парсер|синтаксический анализатор]], соответствующий требованиям современных стандартов [[ПарсерПарсерные игры|парсерных игр]], но в дополнение к общим для большинства платформ возможностям ,он также имеет некоторое количество менее распространённых функций, позволяющих лаконично формулировать одной командой действия с достаточно сложной логикой. Эти возможности активно используются опытными игроками, а также повышают удобство геймплея в случае игр с высокодетализированной моделью мира и [[Загадка|пазлами]], ориентированными на сложное взаимодействие с множеством предметов.
 
RTADS поддерживает обработку команд из одного действия («[[Глагол|глагола]]»), из действия и [[Объект|объекта]], а также из действия и двух [[Объект|объектов]], например, «встать», «взять ключ», «открыть дверь ключом» соответственно. При этом, возможно связывание частей команды при помощи различных предлогов, обозначение объектов или действий более чем одним словом, использование названий объектов в разных падежных формах, а также использование в качестве объекта не только предмета из игрового мира, но и числа или строки текста в кавычках, например, для команд типа «повернуть переключатель микроволновки на 5» или «напечатать "привет" на клавиатуре».
Строка 135:
 
=== Примеры кода и возможностей платформы для разработчиков ===
Ниже приводится несколько примеров кода RTADS, демонстрирующих общий синтаксис языка и его базовые конструкции, а также возможности платформы в отношении решения типовых задач по написанию [[ПарсерПарсерные игры|парсерных игр]] с учётом специфики русского языка.
 
<code><pre>
Строка 146:
 
==== Сортировка методом пузырька ====
Язык программирования (R)TADS имеет развитые алгоритмические возможности и поддерживает основные конструкции и типы данных, характерные для языков общего назначения, что позволяет просто и компактно реализовывать достаточно сложные алгоритмы, не отвлекаясь на странные с точки зрения прикладного программирования особенности синтаксиса, систему типов и модель работы с памятью, встречающиеся у альтернативных [[ИЛ]]-[[Платформа|платформ]]. Кроме того, он содержит ряд возможностей из области синтаксического сахара, ориентированных на специфику текстовых игр, например, упрощённый вывод текста на экран из любого места программы или специальную конструкцию внедрения логических выражений, вызовов отдельных функций, значений переменных или возвращаемых значений функций в выводимый на экран текст без необходимости описывать такие операции отдельно и затем делать конкатенацию. Хотя в явном виде операции конкатенации (как модифицирующей, так и немодифицирующей) в (R)TADS также доступны в полной мере, в отличие от некоторых альтернативных [[Платформа|платформ]], например, [[Inform|(R)Inform]], где этому препятствует архаичная модель работы с памятью.
 
Листинг:
Строка 229:
 
==== Создание предмета ====
При создании [[ПарсерПарсерные игры|парсерных игр]] на русском языке одной из главных особенностей является необходимость учитывать возможность ввода названия объектов в разных падежных формах, поэтому разработчику необходимо обеспечить распознавание объекта по всем словоформам его названий. Кроме того, и сама игра должна уметь склонять названия объектов в своих сообщениях, а для этого ей нужна чёткая информация о формах слова для соответствующих падежей. RTADS обладает всеми необходимыми механизмами для решения этих задач.
 
Листинг с ручным указанием словоформ:
Строка 284:
 
==== Определение класса и функции, динамическое создание объектов ====
(R)TADS имеет развитый язык программирования, характеризующийся классической реализацией ООП с поддержкой суперклассов и множественного наследования, что позволяет упрощать написание кода за счёт высокой степени его переиспользования. В языке также существует механизм динамического создания объектов, позволяющий создавать и удалять новые объекты в процессе выполнения программы, что позволяет легко реализовывать многие продвинутые игровые механики. Одинаковые предметы игрового мира могут быть описаны особым образом, который позволяет пренебречь стандартным требованием [[ПарсерПарсерные игры|парсерных игр]], подразумевающем необходимость давать всем игровым объектам в одной локации уникальные названия.
 
Листинг:
Строка 390:
 
==== Создание новых «глаголов» ====
Стандартная библиотека платформы имеет более сотни предопределённых «[[Глагол|глаголов]]», которые покрывают все типовые взаимодействия с игровым миром, традиционные для [[ПарсерПарсерные игры|парсерных игр]]. Однако особенности сюжета или геймплея часто обуславливают необходимость добавления новых «[[Глагол|глаголов]]» или модификации уже имеющихся. (R)TADS позволяет практически неограниченно расширять их перечень в игре, поддерживая команды в виде простых действий, действий в отношении объекта и действий в отношении объекта (прямого) с помощью объекта (косвенного). Одно и то же действие может работать как по одной схеме, так одновременно и по двум или всем трём схемам.
 
Листинг создания нового «глагола» как простого действия:
Строка 561:
 
==== Создание отдельной области на экране ====
(R)TADS при работе в интерфейсе с поддержкой [[HTML TADS]] позволяет делить экран на произвольные области — так называемые баннеры — и управлять ими отдельно: выводить туда какой-то текст или картинку, менять только в них шрифт или фон и так далее. Это позволяет менять вид интерфейса, отходя от традиционного телетайпного стиля [[ПарсерПарсерные игры|парсерных игр]]. Вместе с этим, при должных усилиях разработчика, такая игра может сохранить полную проходимость и эргономичность интерфейса в обычном текстовом режиме без поддержки [[HTML TADS]].
 
Листинг:
Строка 650:
* [[:Категория:Интерпретаторы TADS|Интерпретаторы TADS]]
* [[:Категория:Библиотеки TADS|Библиотеки TADS]]
* [[Конструктор квестов]]
Источник — https://ifwiki.ru/RTADS