Логика создания вражеских волн в Tower Defense игре
| |
garynich | Дата: Четверг, 14 Ноября 2013, 21:37 | Сообщение # 1 |
уже был
Сейчас нет на сайте
| Добрый день, друзья разработчики. Решил не профита ради, а для удовольствия своего решил написать для себя сделать Tower Defence игру наподобие данной:
Столкнулся я с трудностями в программировании появления вражеской волны, т.е. не могу понять как задать очередь и тип врагов.
Разобрал пока что только один вариант, а именно создание массива типов врагов и время их респауна. К сожалению, это очень муторно и занимает очень много времени, на один тестовый уровень ушло около недели, что для меня оочень долго.
Подскажите, пожалуйста, Ваши идеи и мысли о данном вопросе: как облегчить данный процесс? Что посоветуете почитать? Где и какую инфу поискать? Поделиться, пожалуйста, опытом...
Заранее спасибо, товарищи
Сообщение отредактировал garynich - Четверг, 14 Ноября 2013, 21:44 |
|
| |
Andrey_M | Дата: Четверг, 14 Ноября 2013, 21:45 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Сделай несколько переменных, каждая - один тип врагов. И по счётчику создавай врага, при этом уменьшая значение переменной.
ЪЪЪЪ! Лучшая благодарность - плюс в репутацию :-)
|
|
| |
garynich | Дата: Четверг, 14 Ноября 2013, 21:51 | Сообщение # 3 |
уже был
Сейчас нет на сайте
| To Andrey M:
А как регулировать время респауна врагов и их плотность??
|
|
| |
lentinant | Дата: Четверг, 14 Ноября 2013, 22:03 | Сообщение # 4 |
ленивый программист
Сейчас нет на сайте
| Массив - самый простой метод, при этом дает полный контроль над волной. Однако, составлять саму волну весьма проблемно. Лично я в своей ТД использую разбиение волны на "этапы" - временные промежутки с относительно однаковой "плотностью" спавна врагов. Каждый этап делится на "события", каждое из которых содержит один тип врага и количество врагов этого типа. Когда приходит пора спавнить врага, вычисляется приоритет для каждого события - это банальное отношение уже заспавненных врагов с этого события до их общего числа. Тип врага с события с наибольшим приоритетом и используется для спавна. Если у некоторых событий одинаковый приоритет, то спавнится тот тип врага, у которого больше количество. Таким образом, если у нас будет этап 10 врагов типа А и 4 врага типа Б, то сначала спавнится враг типа А, после чего приоритет первого события становится 1/10, а у второго - 0/4, поэтому следующим спавнится враг типа Б, и приоритет второго события становится 1/4, и он будет опережать приоритет первого события до тех пор, пока не заспавнится еще два врага типа А, то есть, 3/10. Ну, и т.д.. Такой своеобразный метод смешивания типов врагов. Как только во всех событиях приоритеты равны 1 (заспавнились все враги), переходим к следующему этапу. Можно сказать, внутри каждой волны есть несколько миниволн. Таких этапов может быть много, в некоторых может быть только одно событие, и даже с одним врагом (например, босс в конце волны).
Когда-то тут будут ссылки на крутые проекты. Или нет.
Сообщение отредактировал lentinant - Пятница, 15 Ноября 2013, 01:05 |
|
| |
froex | Дата: Четверг, 14 Ноября 2013, 23:35 | Сообщение # 5 |
Руководитель Froexilize team
Сейчас нет на сайте
| garynich, придумай типы юнитов для волн. Распредели им характеристики: стойкость, скорость, сопротивления и т.п. Придумай типы башен и их характеристики (сила, скорострельность, цена и т.п.). Придумай ограничения по расстановке башен (например, ценовая политика). Расчитай, как быстро быстро игрок сможет развиваться (попробуй наобум взять: допустим, игрок за каждый раунд будет получать на 10% больше ресурса, чем мог бы получить в предыдущем). На основе этого можно смотреть, какое сопротивление сможет соорудить игрок. Теперь, когда известно, какое сопротивление может оказать игрок, можно обосновать состав волны. Как вариант - расчитать урон в секунду у игрока, под него подстраивать стойкость существ, заспауненных в еденицу времени.
Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее. Алгоритмы, программирование, оптимизация, тестирование, ведение проектов. Ищу художника, дизайнера, тестера, программистов С и С++ Обучаю процессам разработки и программированию.
|
|
| |
lentinant | Дата: Пятница, 15 Ноября 2013, 01:03 | Сообщение # 6 |
ленивый программист
Сейчас нет на сайте
| froex, насколько я понял, речь шла о реализации непосредственно механики спавна. То есть, чтобы можно было спавнить неоднородные волны.
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
|