8

Делаю игру в жанрах RTS/TD своими силами. Часть 7

Серия Проект Red Dunes

И снова привет. Продолжаю разрабатывать "игру мечты". Рабочее название - Red Dunes Project.

Жанр - смесь RTS и Tower Defence. Главный источник вдохновения - Dune 2, родоначальница жанра RTS. А конкретнее - её версия для Sega Mega Drive. Задача игрока - строить войска, назначать им цели, а также вовремя задействовать специальное вооружение, которое уникально для каждой боевой единицы. Планируется три больших одиночных кампании, скирмиш, мультиплеер, и много другого интересного.

Моя группа ВК https://vk.com/publicreddunesproject


В общем, новости такие:

- С первой кампанией практически всё - остались диалоги, вступительный ролик и концовка. Всё остальное готово. В том числе, апгрейды для базы, которые можно приобретать между миссиями. К слову, подобная система прогрессии - нечастый гость в RTS (из примеров на ум приходит, разве что, Starcraft 2, где у каждого юнита Терранов было по 2 платных апгрейда), и у этого есть свои причины. Если юниты можно сделать более эффективными / смертоносными / живучими, то балансировать сложность становится на порядок труднее. Ведь миссии должны играться одинаково увлекательно при ЛЮБОМ раскладе: и для того, кто купил все возможные апгрейды, и для того, кто решил играть вообще без них. Поэтому в большинстве RTS этого просто нет. Нет прогрессии - нет проблем 😁

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

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

- Поработал над шрифтом, вдвое увеличив его разрешение. К слову, в Unity уже есть система отрисовки текста, но я принципиально ей не пользовался и с нуля написал свою. Зачем? Чтобы прокачать свои скиллы, разумеется. Теперь могу хоть собственный текстовый редактор написать, если потребуется.

- Генерация и деформация ландшафта перешла на новый уровень. Об этом хотелось бы рассказать подробнее.

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

- Спустя некоторое время дырки от пуль начнут исчезать. Либо сразу, либо постепенно.

- Когда дырок от пуль станет слишком много, начнут исчезать самые старые.

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

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

В итоге, я нашёл другое решение, которое подходит для данной задачи просто идеально. Есть такая технология, как запись в текстуру. Это фича, которая позволяет перезаписывать данные в памяти видеокарты прямо из кода, во время выполнения программы. В итоге, каждый след на поверхности отражается максимально корректно и остаётся там до самого конца боя. А памяти, при этом, не требует вообще!

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

Результат - на фото:


В общем, вот такие новости. Плюсуем / минусуем, пишем своё мнение, мне будет интересно почитать)

Ну, и вступайте в сообщество ВК, чтобы видеть все новости.

Всех благ!!!

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества