Перейти к содержанию
  • записей
    100
  • комментариев
    110
  • просмотров
    6 595

[Left 4 Dead 2] Опыт в подсветке мобов

Авторизация  
partoftheworlD

111 просмотр

Для примера возьмем 2 игры: CSGO и Left 4 Dead 2, в них используется Source Engine, и как можно подумать подсветка должна реализовываться одинаково, но не тут-то было.

 

Давайте взглянем на процесс инициализации предметов (включая игроков) в CSGO:

Как можем здесь увидеть для каждого объекта при инициализации резервируется место в структуре подсветки и возвращается ID в этой структуре, который отличный от ID игрока.

 

1.thumb.png.24f2a3e36eeff4fdf7e83a87de2812a7.png

 

Внутри GetGlowIndex:

 

2.png.5424a907e1f7a2e47b6016d3f24e7497.png

 

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

Спойлер

1710636452_3(3).thumb.jpg.4f7b18b9b3534620804fd80af700ea5d.jpg2085684730_3(2).thumb.jpg.81148b74813ce65a292a03943e9cf37e.jpg1934841489_3(1).thumb.jpg.14a06e81df5754a837d344c4ce206ff0.jpg


Вот только в L4D2 ничего такого нет, тут все куда более просто или оптимизировано, структура подсветки наследуется только для боссов (танк, курильщик и т.д.) и игроков, а подсветка ведется постоянно нужно лишь изменить уровень прозрачности.

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

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

На выходе получаем это:

 

4.thumb.jpg.c6ab7e39a9b86386e646f48f2feb6416.jpg

 

  • Плюс 1
Авторизация  


0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.