Перейти к публикации
  • Необходимы оптимизации супертанков


    Electr0
    • Сделано

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

    1. Когда кобальт бегает супер быстро, создается муляж, однако из-за того что он раз в 0.3 секунды пересоздает свой муляж, на сервер возлагается серьезная нагрузка, а если их будет два то еще хуже.
    2. Щит танк так же при каждом вкл. выкл. щита пересоздает свою сферу.
    3. При выключении щита, плагин для того чтобы удалить его ищет модель щита по всему серверу используя до 2048 итераций цикла.
    4. Старый фикс зависших циклических звуков полета камней танка у жокей танка и щита слишком большой, я знаю как уместить это в одну строчку, вместо анализа всех проигрываемых звуков и сверки хозяина звука.
    5. Местами код построен так что переменные могут не понадобится если условие внизу не пройдено, это глупо.
    6. Местами код построен так что для какой либо проверки автор создает отдельную переменную, но использует ее только в проверке, И ТОЛЬКО ОДИН РАЗ, когда можно обойтись БЕЗ СОЗДАНИЯ ЛИШНЕЙ переменной используя просто ответ функций ответ которых автор почему то записывает сначала в переменные, таких мест около 30-50.
    7. После смерти танка сервер начинает прогонять циклы поиска предметов танка, муляжи, щиты, всякие колеса от джампера, и так далее, итого там три типа предметов: модельки, свет от грави танка и его проп притяжения. Кол-во итераций циклов поиска около 2048 (макс предметов на сервере)* 3 (кол-во циклов) = 6144. Я знаю как сократить кол-во итераций до 4.
    8. Если кикнуть танка то от него останутся его предметы. (ну мало ли админ нажал криво)
    9. Если перезагрузить плагин от танков останутся их предметы. (ну мало ли админ нажал криво)
    10. Код выкидывания ближнего оружия при атаке танка призрака слишком избыточен, там можно одной строчкой, а не десятью..
    11. Нужно реализовать на SourcePawn Transitional Syntax
    12. Когда-то давно сломал шок танка, если он один раз ударил, то за этим следует 4 афтер шока, но их нет.
    13. На серверах где за супер танков играют люди, если играть метеором, прыгуном, то видишь то что нацеплено на тело танка, это безумно уменьшает обзор, это должно скрываться от игрока, если за танка играет бот еще ладно можно не скрывать от него, ему пох ваще =D
    14. Метеор, лава танк, не должны умирать от своих же суперспособностей!
    15. Если за телепорта играет человек он должен сам запускать телепортацию, как при прыжке прыгуна, при этом телепорт должен сам выбрать к какому выжившему телепортнутся, курсором например смотреть в точку где находится игрок.
    16. При телепортации телепорт танку зачем-то присваивается наклон от целевого игрока к которому он телепортируется, совершенно не нужное телодвижение!
    17. Нашел баг от себя же, если игрок играет за танка прыгуна, и прыгнул один раз потом сразу второй для супер прыжка, а ПОСЛЕ ПОКА ЛЕТИТ ЕЩЕ РАЗ ПОВТОРИЛ КОМБИНАЦИЮ, то он будет отталкиваться от воздуха, летая по карте.
    18. У смешера есть квара, после сокрушительного удара удалять тело игрока, НО хозяина сверяет некорректно, в итоге эта опция не работала, теперь работает, но будет отключена.
    19. Если за метеор танка играет человек, то и метеоритный дождь должен запускать именно человек!
    20. Для запуска спец способностей супертанков людьми (метеоритный дождь, телепортация, супер прыжок) нужно сделать одну комбинацию, типа двойной прыжок, а так же задержку исходя из мощности атаки, так же игрок должен знать сколько осталось отдыхать от предыдущего использования спец способности.
    21. Метеор танк ВСЕГДА создает метеоритный дождь под себя, ибо берет координату позиции глаз игрока играющего за танка.
    22. Нужно сделать логичный AI метеоритного дождя для метеор танка. Камикадзе [ЛОГИКА  БОТОВ И ДЛЯ ЛЮДЕЙ] : Допустим если его ударили ближним оружием он под себя вызывает. Сканирование окружения [БОТ ЛОГИКА]: если он на расстоянии от выживших он должен смотреть кто рядом с ним и рандомно выбирать этих выживших на расстоянии от 200 до 700 юнитов до него, и судя по координате отобранного вызывать метеоритный дождь. По месту курсора [ЛОГИКА ДЛЯ ЛЮДЕЙ]: Если метеор танком управляет человек, нужно смотреть на позицию курсора.
    23. Нужна проверка в правильном ли месте рождается камень для метеоритного дождя, для предотвращения теоретически возможных падений сервера от неправильного места рождения камня.
    24. Необходимо провести цензуру описаний танков.
    25. Нужно сделать задержку активации внешних атрибутов танков после спавна>процесса рандомизации класса хотя бы на 5 секунд, это может теоретически уменьшить появление проблем при спавне танка в сложных респаун зонах.
    26. Нужно внедрить систему ENUM констант, чтобы вместо кодов с типом танка аля 13 или по цвету 135205255 было ST_TYPE_SHIELD, и ST_COLOR_SHIELD соответственно.
    27. Нужно добавить недостающие описания кобальта и лава танка в !tanks меню описаний танков.
    28. Вместо ручного ввода данных для меню описания нужно реализовать посредством цикла, так красивее и меньше места.
    29. Игроку нужно писать какой тип танка ему выпал если за танка играет человек.

    kep_Facepalm.thumb.jpg.9be74b295240ae826


    Отзывы пользователей

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

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

    Исходник уменьшился с 157 кб до 140 кб

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

    Ссылка на комментарий
    Поделиться на других сайтах

    При тестировании шок танка обнаружил что я когда-то давно сломал шок танка, если он один раз ударил, то за этим должно следовать 4 афтер шока, но их нет. Починил.

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

    Ссылка на комментарий
    Поделиться на других сайтах

    Других багов не обнаружил. После тестирования на сборке кооп сервера можно будет говорить о выкладывании на сервера, однако мне хотелось добавить эффектов, сам забыл каких.. ><, поэтому пока не вспомню,  скорее всего релиз будет отложен.

    Ссылка на комментарий
    Поделиться на других сайтах

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

    Ссылка на комментарий
    Поделиться на других сайтах

    ОПЯТЬ ЗАБЫЛ СНЯТЬ С РАНДОМИЗАТОРА УСЛОВИЕ СПАВНИТЬ ТЕСТИРУЕМЫЙ ТИП ТАНКА.

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

    Ссылка на комментарий
    Поделиться на других сайтах

    раз пошла такая пьянка про сувание своих кривых ручек в рандомизатор типов танков, думаю стоит запоминать какие типы танков были на текущей карте, и рандомно выдавать тех что еще не было, чтобы повысить степень рандомизации, на событии начала и конца карты очищать список бывших на карте танков. Касательно ситуаций когда все типы танков на карте побывали, стоит тоже очищать буфер типов танков и по новой (касается только выживания, в коопе такого быть не может, максимум 5-6 типов танков за финалку может быть 1 первая волна, вторая 2, спасение 2)

    edit1:

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

    edit2:

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

    Загружу чуть позже вместе с обновлениями других плагинов.

    Ссылка на комментарий
    Поделиться на других сайтах

    Внедрены еще несколько изменений.

    1. Внедрена система ENUM констант, чтобы вместо кодов с типом танка аля 13 или по цвету 135205255 было ST_TYPE_SHIELD, и ST_COLOR_SHIELD соответственно, чтобы устранить путаницу в случае дальнейших глобальных изменений плагина.
    2. Добавлены недостающие описания кобалт и лава танков в !tanks - меню описаний танков.
    3. Вместо ручного ввода данных для меню описания, реализовано заполнение меню посредством цикла, так красивее и короче.
    4. Игроку играющему за танка теперь будет писать какой тип танка ему выпал.

    Изменения залиты на сервера, если возникнут странности с каким либо типом танков пишем.

    Ссылка на комментарий
    Поделиться на других сайтах

    Заметил такой баг, витч танк на карте концерт выходил из спавн поинта, там же в самом спаун поинте были мобы, он конечно же их конвертнул в вичек, в которых застрял жокей, вопрос: НУ НЕ ЕБНУТЫЙ!????

    это был пролог, думаю тут нужно определять эмм дальность от выживших чтоли, либо запоминать где он родился чтобы он мог их конвертировать на расстоянии хотябы 500 игровых юнитов от спавна (это вполне малое расстояние)

    Так же замечал раньше метеор танки когда зависали на карте концерт на спавнах, то они прямо из них создавали метеоритные дожди, это тоже по сути не логично.

    Ссылка на комментарий
    Поделиться на других сайтах

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

     

    Ссылка на комментарий
    Поделиться на других сайтах

    Общение между анти стакером и супертанками налажено:

    L 02/08/2016 - 19:17:16: [ally_fix_stuck_spawn_pos.smx] CALL L4D_SuperTanks_OverwriteTankStartPos(Spitter Tank, -2087.500000 2312.500000 -255.968750)
    L 02/08/2016 - 19:17:16: [_Plugins\SuperTanks.smx] Native_L4D_SuperTanks_OverwriteTankStartPos(Spitter Tank) FOUND ARGUMENTS - INT 7, CHAR -2087.500000 2312.500000 -255.968750
    L 02/08/2016 - 19:17:16: [_Plugins\SuperTanks.smx] Native_L4D_SuperTanks_OverwriteTankStartPos(Spitter Tank) SET SET START POS TO -2087.500000 2312.500000 -255.968750

     

    Ссылка на комментарий
    Поделиться на других сайтах

    теперь если человек играет за танка, уведомления о кулдауне спец способности показывает центральным текстом, а не спамит в чат. (зы идея из плагина дверей)

    Ссылка на комментарий
    Поделиться на других сайтах

    мелкие технические поправки в код бета версии:

    • Откатил инициацию танков на старую схему.
    • щит снова работает по старой схеме, он не скрывается а просто удаляется, снимают его не часто смысла в этом нет выходит.
    • если кобальт кого-то ударил по идее блюр прекращается, ЗНАЧИТ нужно удалить муляж с карты что я и сделал.
    • если таймаут спец способности меньше 0.1 типа 0.0555хуевознаеткакоечисло то разрешаю использовать спец способность.
    • в версию без контроля людьми, при сборке плагина теперь не вкладываются все фичи для версуса (для коопа где только боты, для уменьшения нагрузки)
    • для щит танка используется отдельная переменная статуса спец способности, тогда как все остальные используют другую, вырезал эту отдельную и вшил ту что используют другие, + к унификации кода и меньшему жору памяти.
    Ссылка на комментарий
    Поделиться на других сайтах



    Присоединяйтесь к обсуждению

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

    Гость
    Добавить комментарий...

    ×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

      Разрешено не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


  • Обозначения статусов

    В обработке = Мы работаем над вашим отзывом.

    Будет сделано = Ваша идея добавлена к плану будущих изменений.

    Тестируется = Изменения внесены, но требуют тестирования.

    Сделано = Ваша идея реализована!

    Отклонено = Отзыв некорректный, бред, либо уже реализовано. Если у вас есть дополнительная информация напишите комментарий и мы снова откроем этот вопрос.

×
×
  • Создать...