Техническая работа над снарядами в Лиге.

  • Hexagun

    Hexagun «Глобальный ньюсмейкер» Отдел редакции

    missilesheader.png
    Привет, любители скилшотов! Я, Brian "Penrif" Bossé, здесь чтобы рассказать вам что было сделано с кодом лежащим за снарядами и скилшотами в Лиге. Мы написали его замену и добавили её в лигу несколько патчей назад. И если мы сделали всё правильно, то вы и не заметите подмены.
    Старая система была запутанной и с ней было невозможно работать, когда новая система позволяет нам легко делать вот такие вещи:
    ashe-heart.gif
    (это не игровые изменения Эш, это просто пример того, что мы можем делать не сидя часами над старым кодом и принимая кофе в промышленных масштабах)

    Сложности запуттаного кода

    Я хочу дать вам пример, того с чем мы работали ранее. Это пошаговая диаграмма обработки снаряда:
    missile_flow_before.png
    (то, что написано в коде, в данном случае - неважно, важно то куда приходилось лазить людям, чтобы делать с ней что-то)​
    То что вы видите тут - иерархия разных видов снарядов в лиге. И весь этот "спагетти-код" вызывал множество проблем. Например снаряды турелей и миньонов - то же самое, что и ульта Зиггса или Q Корки. А если что-то начинает пролетать через чемпиона (ульта Эш), то нужно исследовать все части кода отмеченные розовым... которые "удобно" распределены по всему коду.

    Так же отдельно в коде прописаны Q и W Дианы и W Ари. Эти снаряды движутся по кривой (кругу). Они отличаются от остальных снарядов и исправление багод которые работают для остального - не распространяются на них. Дублирование кода - это дублирование проблем.

    pasta.jpg
    (альтернативная диаграмма кода для снарядов)​

    Проведённая работа

    При полной замене кода мы руководствовались этими принципами:
    • Части кода упорядочены по их функциям.
    • Зависимость между разными функциональными частями кода должная быть минимальной.
    • Логика работы кода должна быть легко понимаема.
    • Любые "исключения" не должны влиять на исполнение остального кода.
    Наша команда определила все основные аспекты снаряда и мы написали компоненты чтобы можно было легко работать с ними по отдельности. Вот список частей кода из которых состоит снаряд с лиге:
    • Движение : то что описывает, как снаряд летит куда-то.
    • Столкновение : то что описывает, как снаряд взаимодействует с целью.
    • Наведение : двичение снаряда к перемещающейся цели.
    • Скрипт : движение снаряда по задумке дизайнера.
    • Видимость : то что определяет видим ли снаряд и для кого .
    • Эффекты и звук : "нувыпонели".
    И теперь пошаговая диаграмма обработки снаряда выглядит вот так:
    missile_flow_after.png
    Посмотрите насколько лучше сгруппирован код! Старый код мы называли "Радужной блевотиной", а этот выглядит как настоящая радуга.​

    Что это значит для Лиги?

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

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

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

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

    Draven-LoopityLoop.gif
    Мы тестировали создание петель для автоатак и они выглядели шикарно для Дрейвена...

    Varus-Hearts (1).gif
    ...и Варуса.

    ashe-hexagon.gif
    Hexagons are the bestagons (пер.: полностью согласен)​

    Команда програмистов:
    • Brian “Riot Penrif” Bossé
    • Anoop “Noopmoney” Kamboj
    • Kevin “kbox” Borer
    • Vasiliki “vLemon” Siakka
    • Abe “Riot Meyea” Nguyen
    • Jessica “Safelocked” Nam
    • Richard “Riot Asyrite” Henkel

     
    Последнее редактирование: 23 авг 2015
    Izerg, IAmSkam, CumDeoSicVolo и 7 другим нравится это.
Комментарии
  1. gievepix
    Чтот в голос.
    Urtred, Mishka30, IAmSkam и 4 другим нравится это.
  2. Asprika
    [​IMG]
    хотеть
    Mishka30, IAmSkam, Lore и 9 другим нравится это.
  3. korovon
    Следующий чемпион будет иметь скиллшоты с геометрией на стыке кухана велкоза и дианы.
    --- добавлено: 23 авг 2015 ---
    и ещё сердечки в воздухе вырисовывать
    Izerg, IAmSkam, Naergon и 13 другим нравится это.
  4. vanesk
    Если это действительно помогло риотам, то норм. Но лично мне пофиг<_<
  5. Riasquel
    Вот же головы у людей умные. Красавцы, что сказать. Примеры шикарны.
    IAmSkam, Naergon, rumotu и 4 другим нравится это.
  6. kerugeru
    [​IMG]
    Могу поспорить на что угодно. Рито просто хотели рисовать (половые органы мужчины)стрелами эш....
    Vasdamas, Mishka30, Alive Xee и 4 другим нравится это.
  7. EKD
    Т.е. при желании, за Эш терь можно будет запилить свастику?) #яснопонятно
    RomaT90 и Mihnya нравится это.
  8. DmiIn
    Давайте, Рито, пилите теперь персонажа с наркомански летящими скиллами,нам нужен более забагованный чемпион,чем Азир при релизе.
    FrostKeygen, Сларнак, Lis-sama и ещё 1-му нравится это.
  9. justas
    Синдра же вроде? Ее шары то станят сто процентно, но не станят вообще.
  10. undeadbus
    И эти 100 строк кода они не могли переписать столько времени? Как бы то ни было, первый вариант хорошо показывает какие спецы работали у Риотов.
    zfx и rumotu нравится это.
  11. momus
    Вся статья в двух словах:
    Чтобы вы не заблуждались - баги (где скилшот пролетел сквозь кого-то) всё ещё существуют и могут появляться, но теперь их причина скорее всего будет в синхронизации позиций юнитов, а не в скрипте скилшота.
    Баги останутся, но программисты не причем :kappa:
    Koringvias, rumotu, Grammaton и 2 другим нравится это.
  12. DmiIn
    Она тоже с определенными багами была (возможность таскать Барона, застревающие после вшки мобы,стан,который не всегда срабатывает и т.д.),но Азира никто пока не переплюнул.
    FrostKeygen нравится это.
  13. lestard-2212
    у Йорика при релизе было достаточно багов с гулями, про ульту вообще молчу
    FrostKeygen нравится это.
  14. DmiIn
    Йорик?Кто это?:kappa:

    Баг с вечным воскрешением под ультой вообще вин был.
    IAmSkam и FrostKeygen нравится это.
  15. lestard-2212
    Over 9000 смертей в прямом смысле :kappa: и выигрывать при этом
    IAmSkam, FrostKeygen и DmiIn нравится это.
  16. Маленькое Поне
    Казалось бы - при чём здесь реворк Урогота?
    QQmore нравится это.
  17. Lis-sama
    Ничего удивительного, если вспомнить, что рито начинали клепать лолку, будучи, по сути, никем.
    IAmSkam, rumotu, Grammaton и ещё 1-му нравится это.
  18. Divine Help
    в добавок к сообщению выше,стоит вспомнить, что рито постоянно давали нам новые скиллшоты, начиная от стрел аши, через Ешку люкс ии потом например на W ари.Разбирались по ходу действия,и,как это обычно бывает (как когда новый сисадмин приходит в контору), только вот взялись и все разгребли по полочкам.
  19. fogeb
    вчера турели хеймера все еще стреляли через стенку ясуо, которая по идее должна блочить все направленные через неё атаки.

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


    з.ы. то, что раньше турельки хеймера не могли атаковать цветы зиры, исправили, и то радует.
  20. Мрачный
    Как тонко [​IMG]
    Maffie, Koringvias, Minuano и ещё 1-му нравится это.
  21. Validos
    Вы думаете, они новые плюхи со снарядами сделают?? хахахха. Они налепят кучу персов с щитами аля Сосо или Борума
  22. Kenpa4i
    какой процент от общего числа чаров ест чары с щитами как у ясуо ???
  23. Mansel
    Даа, умные. За 5 лет переписали код, который нормальный кодер за сутки сделает. Хотя нет, вру, 2-3ое суток.
  24. Льоха
    Хм, а вдруг у реворкнутого ургота кухан будет управляться мышкой? Тогда мне со своим тремором нипаиграть.
  25. DUMUDPOЛ
    Ну тип я рад за рито. Да.
  26. Koringvias
    Да, сидели и все пять лет пыхтели - переписывали :kappa:
    Mansel нравится это.
  27. grishkatz
    Есть мнение, что рефакторинг проектов такого масштаба меряется не сутками, а месяцами.