Обновление #03

от 25 февраля 2016г

Немного новостей. Завел сообщество в ВКонтакте, чтобы потихоньку скидывать туда обновления. О том, что как в ВК я полный пень, но это не должно мешать вам подписываться, чтобы прояснить мне где я опять накосячил.

Ещё приятной для меня новостью стало сообщение о том, что любимая мной студия Mika Mobile(Battleheart, Battleheart Legacy) делает игру Lost Frontier, которая прям Advanced Wars в сеттинге ковбоев (с самолетами и танками). Во-первых, это значит, что тема тактических игр интересна не только мне. Во-вторых, есть на кого ровняться.



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

Так, а теперь самое интересное. Я готов к началу прототипирования. В целом вижу следующие шаги:

1. Создание террейна. Матрица 10х15 тайлов размером 96х96 пикселей в базе. Размер матрицы может быть и больше. Размер тайлов гвоздями не прибивать - наверняка придется менять ещё три раза. У каждой ячейки может быть один из следующих типов террейна: поле, лес, гора, дорога, река, море, здание. Способ редактирования уровня должен быть удобней, чем ручное перетаскивание нужного объекта точно в нужные координаты сцены. Подойдет любой способ назначения типа террейна ячейке по требуемым координатам.

Тайл террейна может по высоте быть больше, чем заданный квадрат. Это значит, что у него что-то выпирает сверху. Это нормально. Главное, чтобы у таких тайлов пивот не в центре был. Вообще можно всем тайлам поставить пивот в нижний левый угол и будет нормуль.



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

2. Класс юнита. Состоит из:
  • Имени
  • Изображения (пока без анимаций)
  • Тип юнита: наземный-пешком, наземный-колесный, наземный-гусеничный, воздушный, водный
  • Запас хода
  • Минимальный и максимальный радиус атаки
  • Директная или недиректная атака (получает ли урон в ответ)

Также динамические значения:
  • Здоровье (дефолт 10 единиц),
  • Количество снарядов (дефолт 6)
  • Топливо (дефолт 99 единиц).

В прототипе можно пока количеством снарядов и топливом не заморачиваться, но лучше заранее предусмотреть возможность таких величин.

3. Матрица взаимодействия юнитов. Описывает сколько каждый из юнитов, при полном здоровье, наносит каждому из юнитов. Таким образом вынимаем баланс боевки из юнитов в эту таблицу. Так как если дать юниту "силу атаки 5" то потом всё равно надо будет уточнять, что против пехоты атака растет, а против авиации падает.

4. Матрица взаимодействия юнитов с террейном. Сколько тот или иной террейн требует очков хода для преодоления и может ли вообще быть преодолен (техника по горам не ездит).

5. Разделение юнитов по командам и их расстановка на карте.

6. Минимально необходимый интерфейс:
  • Возможность выделить юнит и снять выделение. Выделять можно только юниты, принадлежащие команде, чей сейчас ход.
  • Отображение клеток, на которые юнит может сходить за свой запас хода. Достаточно просто делать эти клетки чуть ярче.
  • Возможность отдать юниту приказ переместится в одну из этих клеток. Соответственно, перемещает туда юнит. Можно пока без красивой хотьбы по заданному роуту. Перемещение можно только по горизонтали и вертикали, то есть в клетку по диагонали можно попасть только за два шага.
  • Возможность отдать юниту приказ атаковать цель, находящуюся в радиусе атаки. В том числе без перемещения. Как простой вариант, подсветить все ячейки, куда может атаковать игрок, а он уж пусть тыкает. Если в указанной ячейке есть враг, то он получает урон в соответствии с таблицей. Если атакующий юнит имеет свойство директной атаки, то получивший урон юнит атакует в ответ, если это разрешено его радиусом атаки. После того, как юнит отстрелялся, он становится неактивным в текущем ходу.

  • Радиус атаки считается также, как передвижение. То есть атака по диагонали - это радиус 2.

  • Атака юнита равна величине из таблички умноженное на (здоровье текущее / здоровье максимальное). То есть юнит с 4 единицами здоровья будет наносить 40% от максимального урона. Результат атаки округляется. То есть если юнит получил 4.5 урона, то он потеряет 5 единиц здоровья. А если получил 0.4 урона, то ничего не потеряет.

  • Если юнит передвинулся, но ему некого атаковать, то он тоже становится неактивным в текущем ходу. Тему с откатом хода пока не трогаем.
  • Кнопка завершения хода, которая передает ход другой команде. И где-нибудь в уголке счетчик ходов.

На этом этапе можно будет создать карту, заселить её юнитами и поиграть в hot-seat мультиплеер. После чего следующим шагом будет создание примитивного AI для программиста и правки карты и юнитов для дизайнера.


Comments