Unreal Engine 4
http://uengine.ru/forum/

Количество переменных на Pawn
http://uengine.ru/forum/viewtopic.php?f=2&t=13151
Страница 1 из 5

Автор:  Zail94 [ 05 фев 2018, 19:20 ]
Заголовок сообщения:  Количество переменных на Pawn

Доброго времени суток.

Я разрабатываю ActionRPG/RTS. Для проработки RPG составляющей я взял за основу правила настольной DnD 3.5 и постепенно адаптирую правила игры для переноса их из пошаговой системы в real-time. По замыслу достаточно гибкая система настольной ролевой игры позволит создавать очень гибкую систему прокачки и даст игроку простор для фантазии. Однако всё по тому же замыслу игрок сможет принимать участие в массовых баталиях (Игра Single player по этому все остальные персонажи кроме игрока NPC) до 5000 юнитов за раз.

На данный момент при разработке самого персонажа у меня уже вышло свыше 200 переменных (половина от этого числа это массивы включающие в себя до 10 дополнительных значений) характеризующих способности и состояния персонажа, и это я ещё не включил в расчёт многочисленные "отличительные черты" коими и балансируются персонажи в системе DnD, и у меня возник вопрос, а насколько много переменных лежит в персонажах обычных игр сегодня? Как много переменных закладывают разработчики в RPG персонажей и как много в юнитов для RTS?

Сможет ли движок вообще потянуть большое количество юнитов с большим количеством характеристик в одновременном бою друг с другом?

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

Автор:  Dany [ 05 фев 2018, 19:51 ]
Заголовок сообщения: 

Один вертекс геометрии несет информацию о положении цвете координатах развертки, группе сглаживания и того на вскидку только это число, в районе десятков (возможно сотен) байт. Это один вертекс(!). В модели современной 20-40000 трисов, примерно столько же и вертексов. А еще окружение, где один блок в среднем 5-6000 трисов. И вполне нормально, если на камеру выдается до 1.5 миллионов трисов(!) каждый кадр. Теперь представь сколько информации несет только графика.
Твои массивы - капля в море, поверь )))
И не парься ерундой.

Автор:  Zail94 [ 05 фев 2018, 20:21 ]
Заголовок сообщения: 

Я так же рассуждал, когда только начал работать над "диздоком", но недавно поиграл в Stellaris и в нём есть одна проблема, чем больше ИИ в игре, чем больше планет освоен тем ниже тем игры, постепенно из-за обилия переменных возникающих в игре скорость становится настолько медленной, что играть в принципе невозможно, и я боялся в какой-то момент дойти до такой же точки)

Автор:  Dany [ 06 фев 2018, 05:12 ]
Заголовок сообщения: 

Цитата:
чем больше ИИ в игре, чем больше планет освоен тем ниже тем игры, постепенно из-за обилия переменных возникающих в игре скорость становится настолько медленной, что играть в принципе невозможно, и я боялся в какой-то момент дойти до такой же точки)

Это никак не относится к массивам. А относится к ИИ. Вернее особенности обработки решений ИИ.
Как правило новичками или лапухами не знакомыми с основами оптимизации, обработка ведется в каждый тик, и на каждый тик игры (каждый кадр) сотни ИИ принимают решения, путем обработки сотен операций, что и вешает ЦП, а не забивает RAM (оперативку). Нужно уметь оптимизировать работу ИИ и изучить этот вопрос.
Как правило оптимизация заключается в рассинхронизации работы ИИ, то есть чтобы ИИ принимали решение не каждый тик и не в один и тот же тик все ИИ принимали решение. Тогда на тик приходится примерно 1-10% принятий решений, что разгружает ЦП.
У тебя может быть куча свободной оперативы но полностью перегружен ЦП - тогда тоже будут тормоза.

Автор:  Prytaleks [ 06 фев 2018, 06:59 ]
Заголовок сообщения: 

Можно добавить - в идеале тик лучше не использовать вообще, или использовать только тогда когда это действительно необходимо.

p.s. добавление одной активной коллизии, бьет по быстродействию сильнее чем несколько операций на тике. Вообщем быстродействие АИ легко можно запороть, либо не нужными расчетами на тике, либо активными(CollisionEnabled) коллизиями.
А количеств переменных хоть 100500, если требуется.

Автор:  Dany [ 06 фев 2018, 08:58 ]
Заголовок сообщения: 

Цитата:
в идеале тик лучше не использовать вообще, или использовать только тогда когда это действительно необходимо.

Тик - универсальный механизм любого движка. Какой бы таймер ты не использовал он прямо или опосредовательно использует тик.
Так что явно или неявно но ВСЕГДА используешь тик. Вопрос только в том на каждом тике ты выполняешь операцию или не на каждый.
ИИ без тика ты не сможешь сделать. Перемещение NavMesh Agent (или как там его в анриале кличут) тоже использует тик.
В неявной форме.
На ранних этапах тики заменял бесконечный цикл (While(true){};) в теле которого и происходило распределение задач между исполнителями, сейчас этот цикл тоже есть, но вшит в нативное тело движка и тик это событие, которое выдает этот самый бесконечный цикл.
Впрочем, довольно лигбеза, все равно это мало кому интересно.

Автор:  Prytaleks [ 06 фев 2018, 09:10 ]
Заголовок сообщения: 

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

p.s. ну а по теме автор хочет сингл плэер RPG/RTS до 5000 юнитов ,))

вот два примера

200 - это потолок для слабого компа, это простейшие кубы без какой либо серьезной логики
500 - это если не использовать нав меш и серьезную логику, коллизии и т.д.

https://www.youtube.com/watch?v=Fx5km4fqBoo
https://www.youtube.com/watch?v=ATuOf7xDIfE

тоесть тебе нужно отказатся CharacterMovement от навмеша, и разработать гениальную логику, простую и понятную процессору, которая будет двигать твоих ботов(акторов а не чарактеров) с нужной анимацией. Для таких цифр как 5000, уже нужно использовать фокусы на уровне шейдера, или какие нибудь другие фокусы на основе Inctance.

Автор:  Zail94 [ 06 фев 2018, 10:58 ]
Заголовок сообщения: 

Звучит как задача для серьёзного программиста, а не для новичка. Есть ли какие-то примеры подобных проектов? Мне на ум приходит только серия игр Total War в которой количество юнитов на сцене примерно такое же или больше... но кажется ничего подобного на UE4 я не видел(

Автор:  Dany [ 06 фев 2018, 11:01 ]
Заголовок сообщения:  Re:

Prytaleks писал(а):
тебе нужно отказатся CharacterMovement от навмеша, и разработать гениальную логику, простую и понятную процессору, которая будет двигать твоих ботов(акторов а не чарактеров) с нужной анимацией. Для таких цифр как 5000, уже нужно использовать фокусы на уровне шейдера, или какие нибудь другие фокусы на основе Inctance.


Ну или просто сменить движок. )))


Хотя я не представляю игры, созданной одиночкой, в которой будет больше 100 мобов одновременно на экране (подобная игра от профи уже или вышла или вот вот выйдет). А большее число можно сменить на спаун на лету (автогенерацию).
Словом, сначала нужно определить места утечки ресурсов, а после продумать механику оптимизации.
Пока же это не более чем банальное меряние письками.

Автор:  Prytaleks [ 06 фев 2018, 11:03 ]
Заголовок сообщения:  Re:

Zail94 писал(а):
Звучит как задача для серьёзного программиста, а не для новичка.

так и есть твоя задача не просто для программиста, а для супер программиста, те примеры что есть тебе ничем не помогут, например этот

https://www.youtube.com/watch?v=oMIbV2rQO4k

Страница 1 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/