RU

TRINITY - боевой движок для текстовых игр

MasterSet #11 09.11.2011 20:54 22 comments 18498 views

Вы будете смеяться, но я снова пишу боевой движок для текстовых игр.

Суть такова:
Называется оно Trinity, потому что почти все основные показатели делятся на тройки.
Судите сами. Не говоря даже уже о том что это третья моя попытка написать такой движок…
У любого персонажа есть три линейки хитов:
Здоровье (красная) — дошла до 0, значит ты труп. Восстанавливается длительным отдыхом и волшебством.
Выносливость(зеленая) — если она кончилась существо отрубается. Восстанавливается коротким отдыхом и передышкой в ходе боя.
Боевой дух(пурпурная) — существо убегает или сдается если потеряет весь боевой дух. Может быть даже выше нормального значения — наращивается каждый раз, когда персонаж наносит вред противнику. Сбрасывается на нормальное значение после любого отдыха.
Линейки хитов расположены по старшинству, если вред наносится в старшую линейку то такой же вред распространяется на все младшие, но не наоборот. Большинство типов вреда бьют по здоровью, но дробящий отнимает выносливость, а психический — только боевой дух.

Есть три цветотипа атаки:
Блок(красный)
Уклонение(зеленый)
Контратака(пурпурная)

И три цветотипа атаки:
Сильная(красная)
Быстрая(зеленая)
Точная(пурпурная)

В течение каждого раунда, каждый участник боя может сделать… упс, одно действие ) Обычно это атака. Для удара очень важно взаимодействие цветотипов атаки и защиты.
Одноцветные атаки наносят удвоенный вред. Если цвета не совпадают, то либо атакующий получает позитивный эффект, либо защитник получает негативный - в зависимости от комбинации цветов. (таблица комбинаций сюда не влезает)

Всего есть 12 основных штрафов и бонусов, они делятся на пары троек:
ШТРАФЫ
Слабость — твои сильные атаки наносят половину вреда
Скованность — твои быстрые атаки наносят половину вреда
Сильная боль — твои точные атаки наносят половину вреда

Шаткость — сильные атаки наносят тебе удвоенный вред
Ошеломление — быстрые атаки наносят тебе удвоенный вред
Рассеянность — точные атаки наносят тебе удвоенный вред

БОНУСЫ
Бешенство — твои сильные атаки наносят удвоенный вред
Разгон — твои быстрые атаки наносят удвоенный вред
Меткость — твои точные атаки наносят удвоенный вред

Адреналин — сильные атаки наносят тебе половину вреда
Верткость — быстрые атаки наносят тебе половину вред
Внимание — точные атаки наносят тебе половину вред

Итого, в оптимальном случае можно добиться тройного удвоения вреда атаки (т.е. Увеличения базового вреда аж в 8 раз!). Например, если мы бьем быструю атаку, а враг уклоняется и он при этом ошеломлен, а мы разогнались. Конечно при условии что не вмешается наша скованность или верткость врага.
Все штрафы и бонусы имеют свою длительность в раундах которая зависит от показателей атаки причинившей эти состояния. Так что важным аспектом тактики является грамотная подготовка и выбор момента для нанесения суперудара.

Атаки доступные игроку, разумеется, тоже делятся на три типа:
Каждый вид оружия дает две оружейные атаки. Например у двуручного меча это будет «Короткий удар» и «Размашистый удар». Каждая атака характеризуется тремя свойствами — цветотип, штраф и бонус. Например у размашистого удара двуручным мечом это будет: сильный, шаткость, разгон. Таким образом, если мы рубим размашистый удар в блок то наносим двойной вред, если в уклонение — разгоняемся за счет инерции тяжелого клинка, а если враг парирует то он оказывается вынужден пошатнуться и станет уязвимым для следующего мощного удара!
Вред наносимый атаками зависит от оружия.
Второй тип атак так и называется — вторичные. Существуют три вторичных атаки доступных в любых условиях: пинок(сильный), толчек(быстрый) и подсечка(точная). Их вред зависит от навыков рукопашного боя игрока.
Дополнительную вторичную атаку можно получить за счет оружия во второй руке. Например, если вы возьмете в левую руку кинжал, то сможете колоть им врага в дополнение к атакам своего основного оружия. Такая вторичная атака полностью зависит от особенностей оружия.
И наконец существуют супер-удары. Они наносят, как правило, вред равный удвоенному или утроенному вреду оружия но помимо этого имеют другую важную особенность. Хотя у суперударов есть цветотип, он играет роль только для удвоения вреда. Попав не в свой цвет вы не получите бонуса и не причините штрафа. Но независимо от того, куда вы попали, суперудар имеет спецэффект, например:
Разрубание — наносит вред еще одному противнику
Огненный шар — наносит вред всем противникам
Заморозка — накладывает Скованность на 99 раундов
И т.п.
Чтобы иметь возможность сделать суперудар нужно во первых выучить его, во вторых экипировать в один из слотов тактики, в третьих — иметь соответствующий тип снаряжения. Например разрубание можно делать только рубящим оружием, а для того чтобы заклясть огненный шар надо владеть большим волшебным имплементом (например посохом).

Помимо атаки, в бою вы можете предпринять передышку (которая снимет все отрицательные эффекты и восстановит часть выносливости), сменить оружие или применить предмет (типа микстуры исцеления). Все эти действия тратят ваш ход.
Убрать оружие или поменять тип своей защиты можно не теряя хода.
Смена оружия может быть важным моментом, так как помимо открытия суперударов, разное оружие имеет разные типы вреда. И враг может быть устойчив или уязвим к некоторым из них. Под рукой у персонажа может быть пять типов оружия и щит: за спиной, на правом и левом боках, в наруче и за сапогом. Тяжелое оружие можно носить только за спиной, обычное еще и на поясе с обеих сторон, а легкое — где угодно. Слот для щита отдельный.
Так же игрок имеет одежду/броню которая дает ему некоторые особенности. Например стальной рыцарский доспех снижает вред на 5 если он колющий, рубящий или дробящий, но увеличивает его на столько же если он электрический или ледяной. Кроме того, в таком доспехе вы начинаете бой с скованностью 5. А вот тот кто пойдет в бой без брони не будет иметь сопротивлений ко вреду, зато получит разгон на 5 первых раундов.

Враги, разумеется тоже делятся на три класса:
Пешки имеют только одну обычную атаку и у них нет линейки хитов. Вместо этого на них действует специальное правило — если вред атаки не удвоен или разделен, то атака не наносит вреда вовсе. Если же вред хотя бы удвоен — атака убивает пешку на месте.
Рядовые враги имеют две (возможно стоит сделать три) атаки и обычные линейки хитов.
Элитные враги отличаются тем, что у них присутствуют собственные суперудары. Для их эффективного применения имеет смысл подключать индивидуальный блок искусственного интеллекта. Хотя более низко-ранговые враги тоже могут получить выгоду ИИ, если автор игры решит заморочиться на его написание.
Игрок может сражаться одновременно с несколькими противниками одного или разных типов. В базовом интерфейсе стоит ограничение на 5 врагов одновременно, но это колличество элементарно увеличивается.

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

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

ЗЫ: Уже есть идея демонстрационной игры, которая будет слегка поинтереснее простой арены.

Игра, демонстрирующая возможности движка: TRINITY - Крысиное подземелье

Edited at 19.08.2014 05:05 (11 years ago)

О_о
Может только по сравнению с остальными боевыми движками на QSP. Хотелось хоть какой-то глубины опирающейся в первую очередь не на рандом или скорость реакции. Это самый простой вариант, который я смог придумать.

На мой взгляд, экран немного перегружен…И ещё всё сухо, как таблица экселя, но это решается оформлением) Дома у меня не установлен офис, поэтому ридми в *.doc я прочитать не смог, кстати, на будущее возьми на заметку) Для основной массы информации вполне хватает *.txt) По самому движку не знаю что сказать… Требует доработки, возможно… Выбирать, чем хочется атаковать сейчас - неудобно. Так и не понял, как менять защиту. Глаза разбегаются. По идее, интерфейс должен быть более дружественен, с рассчётом на то, что игрок запустит - и ему должно понравиться, и всё должно быть понятно, причём без прочтения мануала (их у нас читать вообще не любят).

Aleks Versus Moderator 01.12.2011 10:35 (14 years ago)

Полностью поддерживаю WladySpb. Сложно вникнуть. Минут двадцать разбирался, читая до кучи мануал. Должно быть понятно интуитивно, либо все тонкости необходимо прояснять по ходу игры на примере. Ака “сейчас протвиник сделал то-то, а Вы можете ответить ему хуком с левой”. И раз уж разговор пошёл об интерфейсе: нет области, на которой необходимо сосредоточить внимание. Раздражает такое количество окошек.

Мне понравилась иллюзия разнообразия атак, противников и оружия. Я не сильно вникал в код, но как я понял параметры для всех объектов, с которыми работает движок задаются изначально, а не по ходу игры?
Мне понравился бой с несколькими противниками. Позже посмотрю, как реализовано, а пока пытаюсь представить, как пять бугаёв одновременно пытаются ударить Крысятника.
Мне понравился нетривиальный подход.

Спасибо за отзывы. Насчет сложности - сам знаю. Частично это решается разработкой интерфейса - но его надо делать под игру, а это только движок. Обучение прямо в игре нужно опять же встраивать в игру а не в движок.
Но даже если это все будет совсем просто не станет. Я вобщем то и не рвался. Меня вполне устраивают варианты с очень крутой кривой обучения, типа пресловутой “dwarf fortress”. Т.е. система мощная и интересная, но для того чтобы вникнуть надо приложить усилия. И в этом тоже часть интереса.

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

Многие вещи можно минимизировать, сократить. Например, навскидку - список врагов, и поля для выбора атакуемого противника. Почему бы их не объединить? В остальном, как мне кажется, стоит выделить зону необходимую для внимания игрока, и зону, которую можно игнорировать, и сделать вторую скрываемой опционально.

MasterSet,
ну как же не игра, если игра там уже есть. Хоть и демонстрационная, но надеюсь, все же проходимая?

2Nex
Проходимая, но спартанская без изысков.
Разработка качественного интерфейса заняло бы больше времени чем написание всей этой демки )

2Wlady
Будешь писать игру на TRINITY - обязательно сделай как сказал. Я не пытался создавать хороший интерфейс, потому что у каждой игры он будет свой и смысла тратить на это время в демо-игре я не вижу. Все выводимые данные движком сортируются в удобные переменные. Выводи их как нравится и те которые хочешь.
А что касается объединения списка врагов с выбором врагов… панель выбора мне пришлось допиливать из-за мерзкого бага AERO на который я жаловался уже неоднократно. Что-то перекрывает часть окна и из-за этого ссылки в некоторых позициях не кликабельны. Вот в этот раз некликабельная зона попала как раз на список врагов, точнее на его пункты с 3 по 5. 1-2 работают. (

Log in or Register to post comments.