Изменения

Перейти к навигации Перейти к поиску

TADS

1940 байт добавлено, 20:27, 20 мая 2019
Использование для разработки непарсерных игр
|язык разработки = Собственный [[C]]-подобный [[TADS]]
|читаемый формат = Исходный код TADS ([[.t|*.t]];[[.h|*.h]]), [[.tl|Библиотеки TADS 3 (*.tl)]], [[.t3m|Make-файлы TADS 3 (*.t3m)]], Игры TADS ([[.gam|*.gam]];[[.t3|*.t3]];[[.t3x|*.t3x]]), Внешние ресурсы TADS ([[.rs?|*.rs?]];[[.3r?|*.3r?]])
|создаваемый формат = Исходный код TADS ([[.t|*.t]];[[.h|*.h]]), Игры TADS ([[.gam|*.gam]];[[.t3|*.t3]];[[.t3x|*.t3x]]), Внешние ресурсы TADS ([[.rs?|*.rs?]];[[.3r?|*.3r?]]), [[.exe|Исполняемые файлы (*.exe)]]
|первый выпуск = 1987
|последняя версия = 3.1.3 (сохраняющая актуальность версия 2.5.17 второго поколения)
}}
'''TADS''' (Text Adventure Development System) — платформа, ориентированная на разработку [[парсерПарсерные игры|парсерныхтекстовых игр]] текстовых игр. Существует русифицированная версия на базе TADS 2 — [[RTADS]]. Безусловно, вторая по популярности (после [[Inform]]) [[ИЛ]]-платформа в мире, а также наиболее технически развитая и продвинутая в инженерном отношении, предлагающая наиболее современные возможности по программированию и наиболее развитую инфраструктуру инструментов разработки. Однако обратной стороной технической развитости является один из наиболее высоких порогов входа в разработку на TADS по сравнению со многими альтернативными [[:Категория:Парсерные платформы|парсерными платформами]], что и сдерживает многих авторов игр от её использования.
TADS является старейшей ИЛ-платформой из ныне активно использующихся и разрабатывающихся, но при этом по-прежнему одной из наиболее передовых в техническом отношении, как было и в самый момент её появления в 1987 году. Это обуславливается тем, что она имеет за плечами более чем 30-летнию историю постоянного развития и совершенствования, а её основной разработчик [[Робертс, Майкл|Майкл Робертс]] на протяжении всего этого времени старался удерживать TADS на переднем краю развития сферы разработки программного обеспечения, не боясь переписывать движок платформы с учётом новых стандартов индустрии, в том числе и ценой потери совместимости. Это во многом противоположная целевая установка, если сравнивать с [[Inform]], где совместимость со старыми технологиями всегда ставилась во главу угла и сам [[Inform]] изначально разрабатывался во многом как довольно специфический и архаичный язык программирования, чтобы обеспечить совместимость со старой технологической основой [[Z-машина|Z-машины]].
{{конец цитаты}}
Однако эксперименты [[Робертс, Майкл|Робертса]] существенно не продвинулись, пока он не поступил в Калифорнийский Технологический Институт, который, несмотря на ориентацию на подготовку физиков, давал также качественное образование в области компьютерных наук, в том числе в отношении современных представлений о языках программирования и дизайне [[Компилятор|компиляторов]]. Именно там он познакомился с передовым на тот момент [[wikipedia:Объектно-ориентированное программирование|объектно-ориентированным подходом в программировании]], который оказался наиболее подходящим для реализации продвинутой платформы для разработки [[ПарсерПарсерные игры|парсерных игр]].
На тот момент использование [[wikipedia:Объектно-ориентированное программирование|ООП]] не являлось стандартной практикой для написания [[Интерактивная литература|интерактивной литературы]] и это было определённым новаторством. Компания [[Infocom]] во многом реализовывала свой язык программирования [[ZIL]] именно в этой парадигме, но её инструменты разработки не были доступны независимым авторам, и все мелкие издатели и любители довольствовались альтернативными менее функциональными платформами, типа [[AGT]], базирующимися на [[wikipedia:Процедурное программирование|процедурном подходе]].
Первоначально то, что в последствие стало известно как TADS, развивалось [[Робертс, Майкл|Майклом Робертсом]] исключительно для собственных нужд. Только во второй половине 1980-х годов [[Робертс, Майкл|Робертс]] пришёл к мысли, что его наработки могут оказаться пригодны для массового использования, и в 1987 году TADS оформился как полноценная [[платформа]]. Со временем, вместе со своим другом [[МакАдамс, Стив|Стивом МакАдамсом]], [[Робертс, Майкл|Майкл Робертс]] создал компанию, которую, отдавая должное степени [[Робертс, Майкл|Робертса]] по физике, было решено назвать [[High Energy Software]]. Данная компания с сентября 1990 года стала продавать платформу TADS 1.0, а вместе с этим и распространять в качестве примеров две ныне знаковые классические игры: бесплатную [[ifwiki-en:Ditch Day Drifter|Ditch Day Drifter]] и платную [[ifwiki-en:Deep Space Drifter|Deep Space Drifter]] (на сегодняшний день оби эти игры распространяются бесплатно и доступны в том числе в русских переводах: «[[Блуждания в окопный день]]» и «[[Бороздящий просторы вселенной]]» соответственно).
В итоге, в конце 1980-х — начале 1990-х годах с выходом TADS 1.0 на рынке появилась первая общедоступная [[платформа]], позволяющая разрабатывать текстовые игры, не уступающие по функциональности играм профессиональных издателей, таких как [[Infocom]]. Более того, в ряде аспектов TADS превосходил движок [[Infocom]], имея более чистый синтаксис языка, более проработанную и последовательную модель мира, а также аналогичную виртуальную машину, обеспечивавшую такую же переносимость, но избавленную от жёстких ограничений [[Z-машина|Z-машины]].
Впрочем, коммерческий успех, как издателей текстовых игр, так и разработчиков инструментов для их создания, в тот период уже был довольно умерен. По признанию [[Робертс, Майкл|Майкла Робертса]], TADS хоть и пользовался определённой популярностью, но объёмы продаж платных регистраций вряд ли выходили за пределы сотни копий в год. Правда, с учётом того, что в то время программное обеспечение продавалось и распространялось не через Интернет, а при помощи отправки конверта с дискетой средствами обычной почты в ответ на банковский перевод или получение банковского чека по всё той же почте, да и возможности по распространению информации о своём продукте у индивидуальных разработчиков были крайне ограничены из-за неразвитости коммуникационных каналов, такие объёмы продаж для нишевого проекта не столь уж незначительны, как это может казаться по современным меркам. Кроме того, для эквивалентного сравнения [[wikipedia:Покупательная способность|покупательной способности]] долларовых сумм конца 1980-х с долларовыми суммами конца 2010-х их необходимо, как минимум, удваивать для прямого учёта [[wikipedia:Инфляция|инфляции]]. Так или иначе, ещё несколько лет разработка TADS как коммерческого продукта продолжалась, и 17 ноября 1992 года [[High Energy Software]] выпустила TADS 2 с существенным набором доработок и усовершенствований.
 
В TADS 2 был реализован целый ряд доработок языка программирования, а также реализовано виртуальное кэширование объектов, что позволило создавать и запускать игры, объём которых больше объёма свободной оперативной памяти. Кроме того, появилась система откатов состояния игры (более сотни точек отката для типичной конфигурации), а также появились дополнительные возможности по оформлению интерфейса игры, в частности, настраиваемый вид строки состояния и возможность выделения текста. При всём этом, TADS 2 сохранил совместимость с TADS 1, лишь дополнив функциональность платформы и языка программирования.
Однако в 1990-е годы эпоха популярности текстовых игр всё же начинает заканчиваться, что проявляется в виде закрытия многих коммерческих издателей интерактивной литературы. Этот процесс начался ещё в 1989 году крупными сокращениями штата в [[Infocom]], а к второй половине 1990-х какую-либо коммерческую активность проявляли в основном владельцы прав на игры [[Infocom]], выпускавшие относительно успешные переиздания и графические игры под знакомыми текстовыми брендами. В этих условиях те, кто пытался делать бизнес на текстовых играх, сворачивают свою деятельность и уходят в другие сферы. Многие из них так больше и не отмечаются какой-либо активностью в данной области.
Спад общей популярности [[Интерактивная литература|интерактивной литературы]] сказывается и на TADS, поэтому 20 июня 1996 года [[Робертс, Майкл|Майкл Робертс]] объявляет о закрытии [[High Energy Software]] и о переходе к полностью бесплатному распространению TADS 2, а 16 октября того же года открывает и исходный код платформы, дав толчок работе энтузиастов по портированию TADS на ещё большее число операционных систем. Кроме того, к тому моменту уже 3 года существует платформа [[Inform]], являющаяся полностью бесплатной и предоставляющая во многом сопоставимую с TADS функциональность для написания текстовых игр, поэтому в середине 1990-х годов TADS уже не является единственным общедоступным инструментом для написания продвинутых [[ПарсерПарсерные игры|парсерных игр]].
Однако в отличие от многих других, навсегда ушедших из [[Интерактивная литература|интерактивной литературы]] с потерей её коммерческой привлекательности, [[Робертс, Майкл|Майкл Робертс]] по-прежнему занимается [[ИЛ]], но уже как некоммерческим хобби, принимая участие в проведении конкурсов, создавая специальные Интернет-ресурсы, а также продолжая разработку TADS. Так, 25 марта 1998 года он выпускает TADS 2.2.3 с поддержкой [[HTML TADS]], то есть с возможностью использования [[HTML]]-разметки и мультимедийных ресурсов для оформления интерфейса игр при помощи картинок, анимации и звука, а также управления отдельными областями экрана.
== Основные возможности ==
Специальный язык программирования TADS является классическим объектно-ориентированным, напоминающим в реализованным на базе языка [[C]]. По синтаксису TADS 2 напоминает некоторый гибрид [[C]] и [[Pascal]], а в TADS 3 гибрид [[Java]], [[C++]] и [[C Sharp|C#]]. Разработчик также имеет возможность с помощью специальных системных флагов изменить некоторые особенности синтаксиса, например, отключить чувствительность к регистру или активировать операторы, традиционные для [[C++]]. В языке TADS используется определение типа в период исполнения программы, поэтому разработчику нет необходимости заранее объявлять типы данных переменных, функций и свойств. Кроме того, в TADS используются типы данных высокого уровня (такие, как списки и строки), благодаря чему управление памятью осуществляется автоматически.
Обычная программа на TADS состоит в основном из описаний объектов ([[локация|локаций]], [[Объект|предметов]], [[NPC]]); поддерживаются суперклассы и наследование (множественное). Стандартный [[парсер]] весьма развит, не уступая стандартному «[[Infocom|инфокомовскому]]» уровню. Есть возможность переопределять и расширять набор «[[Глагол|глаголов]]» и их синтаксис, а также переопределять библиотечные подпрограммы. TADS также поддерживает динамическое управление памятью и создание новых объектов при выполнении, что является одним из фундаментальных отличий от основной альтернативы — [[Inform]], где динамическое управление памятью в принципе невозможно.
* Поддержка сетевого клиент-серверного режима работы. TADS 3 имеет отдельную серверную версию, взаимодействие с которой осуществляется через обычный браузер без необходимости запускать на устройстве пользователя какое-то дополнительное программное обеспечение. Сетевой вариант TADS 3 имеет специальный тип интерфейса Web UI, предоставляющий расширенные возможности по управлению HTML-, CSS-и JavaScript-содержимым страницы, отображаемой в браузере пользователя. Сетевая версия TADS 3 позволяет разрабатывать в том числе и многопользовательские игры.
Кроме того, в TADS 3 есть целый ряд других более мелких усовершенствований, которые призваны облегчить разработку [[ПарсерПарсерные игры|парсерных игр]] самого высокого уровня.
Тем не менее, существенная часть нововведений TADS 3 относятся к улучшениям платформы именно для разработчиков, а игроков если и затрагивают, то преимущественно косвенным образом, например, общим усовершенствованием алгоритмов парсинга, которые стали более устойчивы к неточному вводу команд. Более того, многие доработки TADS 3 лишь упрощают реализацию определённых решений в играх, тогда как TADS 2 также позволял их реализовывать, просто требовал от разработчика больше усилий в этом направлении, например, ручной контроль за созданием и удалением новых объектов вместо перекладывания этого на сборщик мусора. Таким образом, TADS 2 по своим потенциальным возможностям во многом равен TADS 3 в отношении реализации многих функций и механик модели мира, разумеется, при должном знании технических особенностей платформы и её языка программирования.
== Переносимость ==
Система TADS доступна на большом числе различных операционных систем: Acorn RISC OS (только интерпретатор), AmigaOS, Android, Atari ST/TT/Falcon, BeOS R5, DECStation, EPOC/Psion, iOS, Kindle (Touch, Paperwhite и Voyage), Linux, macOS/Macintosh, MorphOS, MS-DOS (в т.ч. для защищённого режима, а также версия для GO32), NeXT, OpenBSD, OS/2, PocketPC и PocketPC 2002 (процессоры ARM, MIPS и SH3), SGI Iris/Indigo, SunOS & Sun 3, Symbian Series 80, Unix, все версии Windows. Кроме того, существуют реализации [[Интерпретатор|интерпретатора]] TADS 2 на [[JavaJavaScript]] и только TADS 2 на [[JavaScriptJava]], а также серверная версия интерпретатора TADS 3 на [[PHP]] ([[wikipedia:LAMP|LAMP]]).
[[:Категория:Интерпретаторы TADS|Интерпретаторы TADS]] предъявляют несколько большие системные требования, чем [[:Категория:Интерпретаторы Z-машины|Z-интерпретаторы]], поэтому на очень маломощных системах (старые ПК, наладонники) могут не работать. Кроме того, для многих устаревших операционных систем существуют лишь относительно старые версии [[Интерпретатор|интерпретаторов]], поэтому они могут не поддерживать TADS 3 или некоторые относительно новые возможности TADS 2. Для современных операционных систем рекомендуемыми [[:Категория:Интерпретаторы TADS|интерпретаторами TADS]] являются [[HTML TADS]] (Windows), [[QTads]] (Windows, macOS, GNU/Linux), [[Fabularium]] (Android), [[ifrotz]] (iOS).
== Интернационализация и русская версия ==
Из-за объективной специфики [[ПарсерПарсерные игры|парсерных игр]] использование англоязычной платформы для написания полноценных русскоязычных игр невозможно, поэтому платформа нуждается в предварительной локализации. Русская версия TADS 2 ([[RTADS]]) разрабатывается с лета 2002 года. Ведущий разработчик — [[Локализатор::Гранкин, Андрей|Андрей Гранкин]] (перевод и адаптация стандартных библиотек), при участии [[Локализатор::Коптельцев, Валентин|Валентина Коптельцева]] (перевод и адаптация руководства) и [[Локализатор::Старков, Стас|Стаса Старкова]] (перевод комментариев кода стандартных библиотек). К 2017 году работы по локализации TADS 2 завершены в отношении всех компонентов: от библиотек до полной документации, а также выполнена и дополнительная адаптация, такая как встроенный генератор падежных форм (подробнее см. основную статью «[[RTADS]]»).
Русская локализация TADS 3 не существует, хотя сама платформа в версии 3 получила ряд доработок, призванных облегчить перевод на другие языки.
По своему основному предназначению TADS является [[:Категория:Парсерные платформы|платформой для разработки парсерных игр]]. Однако богатство предоставляемых ею возможностей позволяет разработчикам реализовывать на TADS и менее типичные игровые механики.
Разумеется, написание на TADS игры с управлением в виде меню не представляет серьёзной проблемы, и для решения этой задачи существует целый ряд готовых библиотек, предназначенных как для создания полностью менюшных игр, так и для встраивания меню в [[ПарсерПарсерные игры|парсерную игру]], например, в виде диалога с готовыми вариантами выбора. В качестве примеров могут быть названы такие менюшные игры на TADS как «[[Аргинк (RTADS)|Аргинк]]», «[[Глубина (RTADS)|Глубина]]» или «[[Похождения отважного хомяка Семена-1: Побег (RTADS)|Похождения отважного хомяка Семена-1: Побег]]».
Однако возможности TADS намного шире и даже ещё на базе TADS 2 позволяют создавать совсем нетипичные игры, такие как, например, [[TADSTRIS]], являющуюся реализацией тетриса, или «[[Звёздный туннель]]», представляющую собой риалтаймовую аудиоаркаду со стереозвуком.
В свою очередь TADS 3, со своими возможностями по обработке событий в реальном времени, расширенной функциональностью и повышенной производительностью языка программирования, а также доработанным графическим пользовательским интерфейсом и поддержкой сетевого режима предоставляет ещё больше пространства для использования платформы не только для написания традиционных однопользовательских пошаговых [[ПарсерПарсерные игры|парсерных игр]] с преимущественно текстовым интерфейсом.
Основным препятствием на пути использования TADS для разработки непарсерных игр является всё-таки формальная специализация платформы именно на традиционную [[Интерактивная литература|интерактивную литературу]], поэтому официальная документация практически не содержит описания соответствующих технических решений. По этой причине для создания подобных игр необходимо обладать достаточно высокими знаниями TADS, чтобы вырабатывать такие решения самостоятельно. Кроме того, во многом это всё же остаётся в большей степени упражнением для ума, нежели технически оправданным вариантом использования TADS, или же вообще [[wikipedia:Золотой молоток|золотым молотком]].
== Ссылки ==

Навигация