5

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

Привет, Пикабу!

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

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

Короче, пока моя 3060Ti уехала по гарантии, пришлось взять видеокарту попроще - уровня Geforce 710. И оказалось, что... моя игра прекрасно работает даже на ней! То есть, в плане графики она вообще не требовательна. Круто!

Зато неслабо грузила процессор. В обычном режиме игры на карте редко бывает больше 20 юнитов, поэтому всё работало превосходно и я даже не подозревал о проблемах. Но потом я задумал сделать нечто вроде встроенного теста производительности - взять двух ИИ-соперников, заставить их биться между собой, раздав каждому по 50000 денег, и посмотреть, что будет. В результате, когда с каждой стороны было по 100-120 юнитов, частота опускалась до 18-20 кадров в секунду! Причина была проста: каждый юнит проверял расстояния до всех остальных юнитов - даже если те находились на другом конце карты. Сложность вычислений посчитать нетрудно. 200 * 200 = 40000 вычислений за кадр.

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

В общем, очередной этап разработки подходит к концу. Игра по сети и игра против ИИ работают отлично. Баланс фракций я поменял, ИИ доработал, мелкие баги планомерно исправляются.

Следующий этап - большая одиночная кампания. Опишу основные особенности, которые намерен реализовать:
- Система прогрессии. За каждую победу ГГ получает денежное вознаграждение, которое можно потратить на улучшение базы или техники. Улучшения, кстати, могут быть как постоянными, которые останутся на протяжении всей кампании, так и временными, которые будут действовать только в течение одного уровня.
- Различные типы заданий. Если сейчас все бои проходят по формуле "Уничтожь базу противника, защитив свою", то в кампании будут встречаться и другие режимы. Например, защищать добывающую станцию в течение определённого времени. Или разгромить противника, имея лишь ограниченное количество ресурсов, которые не будут пополняться. Ну, смысл вы поняли.
- Два уровня сложности. Если на стандартном заработанные деньги можно будет тратить только на апгрейды, то на усложнённом придётся ещё и нанимать ОПЕРАТОРОВ, которые будут высаживаться на планету и управлять войсками. Причём, при проигрыше оператор погибнет вместе с уничтоженной добывающей станцией, и вам придётся нанимать нового. Если кончились и операторы, и деньги, чтобы их нанять - игре конец...

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

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

Короче, плюсуйте, минусуйте, пишите, что думаете, будет интересно почитать)

Вступайте в сообщество, чтобы видеть новости https://vk.com/publicreddunesproject

Всех благ!

Предыдущие посты:

Часть 2

Часть 1

Unity

255 постов2.7K подписчиков

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

• Запрещается постить вопросы, мемы и прочую ерунду - для этого есть форумы и другие специализированные ресурсы.


• Распространение и обсуждение пиратского ПО, кейгенов, ключей и прочих пиратских файлов запрещено.


• Соблюдайте сетевой этикет. Оскорбительное поведение и мат (в том числе сокращенный или завуалированный) караются баном.


• Запрещается разводить полемики на тему "какой движок круче". Здесь мы обсуждаем только Unity.


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

0
Автор поста оценил этот комментарий

Что то я не понял, а зачем вычислять расстояния до всех юнитов на карте? Не проще ли CircleCollider повесить на каждого в режиме триггера, и отмерять только тех, кто входит в коллайдер?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну вот теперь примерно так и происходит. Просто раньше юнитов было мало, вот и не придавал этому значение.