Суббота, 23 Ноября 2024, 13:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Логика создания вражеских волн в 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, насколько я понял, речь шла о реализации непосредственно механики спавна. То есть, чтобы можно было спавнить неоднородные волны.

Когда-то тут будут ссылки на крутые проекты. Или нет.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг