Machine learning vs GameDev 2
Предыдущей пост не залетел, ну да пофиг )
Просто хочется писать на тему которая нравится, а на данный момент это именно машинное обучение.
Итак: Machine learning vs GameDev.
В прошлый я попытался рассказать как это выглядит со стороны игрока на примере бета теста Destiny 2.
Сейчас я хочу затронуть немного другу тему: передвижение.
Казалось бы что может проще: лево это лево право это право. Нажал и повернул.
В реальности GameDev ээто происходит немного по другому: на каждое телодвижение накладывается ряд параметров: слева стена? выступ? уступ? обрыв?
Во времена моего института это решалось кучей введенных классов и параметров.
Да, эта ситуация крайне бесила и мы вынуждены были с ней мириться года эдак до 2005. Потом у нас появилась CUDA.
Да, можете не говорить что CUDA вошла на рынок году этак в 2010, мы же с вами знаем что технологию надо еще очень долго обкатывать.
Когда Nvidia выкатилась с этими процессорами, это дело вообще ни у кого не зашло, эту архитектуру мир пытался принять 5 лет. Прежде чем кричать про котолампу – почитайте что сейчас происходит с технологией nvlink().
Итак, у нас появилась CUDA, основы перечислять не буду, но появилась возможность не изобретать велосипед каждый раз заново, а закинуть ряд вычислений на потоковую обработку и получить ответ не через минуту, а через 8-20 тактов.
Это сломало все, появилась возможность моделировать поведение игроков. Если раньше мы рассчитывали «мощь» босса в зависимости от «предполагаемой» мощи игрока, теперь у нас появились вычислительные мощности, о которых мы ранее и не мечтали, теперь можно «подогнать статы» босса под игрока. Пока у игрока распаковываются пак с текстурами (это завязано на скорость НМЖД), мы можем подгрузить из облака паттерны его поведения просчитать его поведение и выдать ему того босса, которого он хочет. (для любителей котоламп: оффлайн и сломаные версии хранят данные паттерны в appdata (да, производитель изначально закладывает в игру возможность взлома))
Что то я затянул, я сам забыл с чего начал и свернул не туда.. итак - движения:
Как же наша тушка реагирует на наши телодвижения? Ранее у нас был один ответ – геодата. По факту геодата это склонированная карта уровня, часто это копипаста с увеличением на 0.1-2%. Но мы же с знаем что 3D моделлеры - крайне ленивые ребята, потому у нас возникают ситуации когда вы проваливаетесь сквозь текстуры.
НАДОЕЛО! ДАЕШЬ СВОБОДУ ОТ ДИЗАЙНЕРОВ!!
Решение простое и долго висело на горизонте – генерируем геодату по мере передвижения и храним её в оперативке. Легко сказать, сложно сделать, когда у нас появились видеокарты с 2Gb+ на борту? Когда у нас появились те же самые видеокарты c вычислительной мощностью хотя бы 5TFLOPS? Вот потому мы и жили на сгенерированных картах и падали под текстуры, и мечтать не могли ни о какой динамике.
На данный момент мы раскладываем +-2 миллиона трекольников по кругу, рисуем по ним геодату, и это позволяет нам карабкаться по скалам.
PS. Чукча не писатель, но пытается научиться. Сорян что выбрал Вас в качестве аудитории.