Starships and Dragons, альфа 02

По горячим следам обновил демку "Звездолётов и Драконов", добавив минимальный функционал сражения.

превью

Я решил развить вскользь упомянутую в предыдущем материале мысль о том, что в течение общего хода (фазы) походившие юниты могут давать ману на какие-то "геройские" спеллы. Если исходить из подобного, то строгая очерёдность ходов начинает мешать - ведь для такого концепта требуется какая-то вариативность, кем походить сначала, а кем позже. Тем не менее, чтобы не делать в начале каждой фазы доступными всех юнитов сразу и как-то отразить неравноценность скорости - я подумал о специальных свойствах/тегах для юнитов: "быстрый" и "медленный". В начале фазы можно выбирать кем ходить только из быстрых юнитов, пока они все не совершат действие. На каждый ход оппонент отвечает своими быстрыми. Когда у одной стороны быстрые юниты отходили - вторая продолжает ходить своими быстрыми, пока не походит ими всеми, и это уже происходит без ответа (без передачи хода). Если быстрые юниты с обоих сторон сделали ходы - для выбора становятся юниты без свойств "быстрый" или "медленный". С ними происходит всё то же самое. Затем, то же самое произойдёт с медленными, если они были. После чего настанет новая фаза боя, где всё повторяется - начиная с "быстрых". По идее в этот момент должна сгорать и накапливаемая мана (а единичка с последнего юнита переходит в новую фазу), которую игрок не потратил на спеллы во время фазы.

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

Демо

Вёб-версия прототипа находится на этой странице:

Более продолжительная видеонарезка процесса, чем на превью:

Прочее, идеи и мысли на тему

По идее могут быть разные эффекты, которые накладывают на юнит свойство "быстрый" или "медленный", либо снимающие их. При этом, кстати, появится возможность для некоторого эксплойта - крутить какой-то юнит вне сражения разными эффектами (в начале фазы превращать "быстрого" в "медленного", а когда "быстрые" заканчивают ходить - перебрасывать "медленного" в "быстрые", которые уже не походят в этом ходу).

Замечу, что подобный подход с разделением по скорости уже не работал бы в совсем "шахматной" боёвке - где каждый ход ходить может любой юнит (за счёт чего и образуется их космическая глубина). То есть разные варианты боевых правил из разных игр - это свои ниши, в которые могут органично существовать свои специфические механики, к которым не пришли в иных вариантах правил или они туда не клеятся.

Интересным образом это может работать с аналогом системы "геройской" морали. Если "быстрый" юнит врага походил и у него ещё остаются другие "быстрые", а у нас уже не осталось своих "быстрых" для ответа, то с высоким шансом (при высокой морали) наш походивший "быстрый" юнит получит ответный ход. То же самое происходит для юнитов с нормальнйо скоростью и "медленных". Получается такая балансная "полумораль", которая сможет точечно выравнять наш недобор по юнитам разных скоростей относительно противника, а если у нас превосходство во всём этом, то не вмешивается (хотя, может с ещё более малым шансом приносить лишнюю ману, когда наш оппонент пропускает ход из за того, что у него нет юнитов равных по скорости или они уже отходили).

Starships and Dragons, альфа 02

Что касается технической части - если раньше в проектах я многие данные делал преимущественно через массивы, то сейчас, особенно вот в таких сложных в плане разнообразной хранимой даты, всё чаще использую и словари (dictionary) для хранения параметров. Да, они тоже могут быть заменены массивами, но городить конструкций приходится меньше и они понятнее визуально, не приходится отдельно хранить карту соотвествий и расшифровок, какие номера с чем соотносятся. Тем не менее, если заложить возможность хранения каждого произвольного вражеского отряда и разных уровней, то это слишком большие простыни и структуры информации, даже при таком, более удобном хранении. Поэтому я решил сделать проще и для начала просто хранить готовые наборы вражеских юнитов (из которых уже вытягиваются массивы словарей). Плюс тут возникает вопрос уровней юнитов. Должны ли они расти в уровне, или обязательно юнит другого уровня - это уже юнит с другим названием и параметрами. В любом случае, вспоминая Disciples, юниты как минимум должны хранить заработанный опыт и количество здоровья. А также, если думать о временных статусах и изменениях во время боя, то юнит должен помнить и свои базовые параметры (вроде стандартной "быстроты" юнита), чтобы выставлять их заново в начале нового сражения. Но с хранением информации по юнитами в составе отрядов игрока ситуация куда проще, чем с хранением информации о вражеских отрядах на карте.

Starships and Dragons, альфа 02

Наверное, даже если бы игру такого рода делала студия, с полноценным редактором карт и прочим, то удобнее было бы использовать некие наборы вражеских отрядов в качестве первоначального наполнения карты, чтобы затем можно было бы подкрутить какие-то уже точечно.

Кстати, если подумать о самих героях (не звездолёте) - вместо того чтобы сидеть в слотах, это тоже может быть боевой юнит. Но это всё равно какие-то ограничения, вроде размещения только в определённом месте на поле, или не более одного в бою. Вобщем - это один из вариантов усложнения жизни разработчику: дополнительные модельки им делать, параметры. Но тоже вполне себе нормальное направление.

В плане гипотетической системы видов урона/защит я подумал над некоторым упрощением стихийной конецпции, но с некоторым разнообразием: то есть типов урона может быть просто 4 - физика, вода, молния, огонь. При этом в физический урон по сути зашита отсутствующая стихия земли. Молния заменяет место воздуха, а всякие спеллы вроде торнадо/ветра - скорее наносят физический урон. Из стандартных защит - броня и стазис. Броня блокирует физику (но при этом может усиливать молнию), стазис - молнию и воду. А огонь не блокируется стандартными защитами (являясь местной версией нестихийного/сверхестественного урона, и прочих true damage). Но на него может быть иммунитет или редкая защитная аура, снижающая дамаг конкретно от него или от всего вобще.

Естественно, так как речь идёт о поддержке 4-х типов планет - эволюционных, технологических, божественных, магических - не все из них владеют именно магией. Но просто все их эффекты, атаки, способности наносящие урон - наносят в конечном счёте физические, молниевые, водные или огненные повреждения. Условный лазер - повреждения огнем или молнией. Яд, дождь - водные повреждения. Град - водные или физические. Рой наномашин - водные или физические. Проклятие - огонь. Ну и так далее.

Ещё, опять же для усложнения жизни (но и дополнительного разннообразия), можно добавить специальный класс хаотического урона - в который конвертируются все дополнительные бонусы к основной атаке/эффекту. И добавить броню или способность которая понижает урон от хаоса или просто срезает его полностью. Собственно, подобный урон может быть несамостоятельным, то есть нет способности или атаки, которая наносит именно его.

Ещё интересно переосмыслять механики тех же Heroes через призму Disciples, или наоборот. И, возможно, что-то выносить из этого для себя. Например, в Heroes юниты - это отряды, а не только одно существо, они теряются чаще безвозвратно и есть прирост существ. В Disciples этого нет, но вместо этого одиночные юниты теряют здоровье и могут его восполнить потом. Что, если в Disciples здоровье юнита терялось бы безвозвратно. Но зато его можно было бы юниту добавлять - если посещать специальные точки карты или неким образом "выращивать" здоровье в "городе". Что если в Heroes у отрядов был бы довольно небольшой максимум отряда, но зато эти потери было бы легче восстановить, а донабор войск просто увеличивал бы максимум отряда и "лечил" отряд на это же количество.

Прошлые статьи:

44
Начать дискуссию