Перейти к содержимому

Донат
На хостинг
ISK за переводы
до 75kk за 1000зн.
Хроники EVE
Сборник
Новичкам
Полезная информация
Фотография

Fixing Lag: And I, for one, welcome our new automaton overlords


  • Авторизуйтесь для ответа в теме
43 ответов в теме

#1
Takeshi Ryuu

Takeshi Ryuu

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 696 сообщений
361
  • EVE Ingame:Takeshi Ryuu
  • Corp:IRR
  • Client:Eng
Fixing Lag: And I, for one, welcome our new automaton overlords by CCP Atropos

Фиксим лаги: а я приветствую наших новых оверлордов автоматизации

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

Итак, был сделан тонкий клиент (Thin Client™)!

Изображение

Что может делать тонкий клиент

Основой тонкого клиента является обычный клиент, который вы все используете. Тонкий клиент берёт то же самое ядро и расширяет или переопределяет некоторые части таким образом, что вам больше не нужна звуковая карта (вставьте сюда какой-нибудь "в Еве есть звук?" мем) или графическая карта, чтобы запустить его.

И почему это интересно?

Тонкий клиент требует меньше системных ресурсов по сравнению с традиционным "толстым" клиентом, и в результате мы можем запустить большее количество тонких клиентов на одном компьютере. Тогда как (нормальный?) игрок может одновременно запустить два или может быть три аккаунта одновременно при использовании традиционного клиента, с тонким клиентом можно запустить в несколько раз больше.

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

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

Подобные практики уже долгое время используются для тестирования производительности вёб-сайтов, когда непрерывно генерируемый поток запросов используется для поиска узких мест в системе. Однако ближайший аналог, что мы могли организовать в Еве - масс-тесты на Сингулярити, проводимые CCP Tanis.

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

Замечательно, но что это значит для меня?

Тонкие клиенты сами по себе не умнее, чем обычный клиент. Если вы запускаете нормальный клиент Евы, он не начинает сам по себе завоёвывать мир, и то же самое верно и для тонкого клиента. Чтобы заполнить этот пробел, мы разработали несколько методов для управления тонкими клиентами. Два из них это наши внутренние проекты Orchestrator (дирижёр, если уж переводить, прим.пер.) и Automaton Project, о которых я расскажу чуть позже.

Имея возможность сказать тонкому клиенту, что он должен делать, мы получили в своё распоряжение невероятный новый инструмент, который можно использовать с потрясающими результатами. А именно:
  • Появляется возможность исследовать режим работы, проявляющийся при прохождении огромного количества миссий в одной и той же системе, Rens Effect, так сказать.
  • Мы можем методично изучить поведение клиентов во время масштабных флотовых боёв, воспроизводя уникальные для таких боёв проблемы в лабораторных условиях.
  • Мы можем рассмотреть Житу (Jita) под микроскопом, чтобы в деталях разобраться с тем, какое влияние оказывают тысячи рыночных транзакций.
  • Мы можем выяснить, какая именно замысловатая последовательность (помимо "собрать большой флот и прыгнуть на другой большой флот") действий приводит к черному экрану смерти, когда один флот пропрыгивает к другому.
  • Мы можем определить не просто теоретический, но и практический предел производительности для полностью загруженных систем независимо от того, что делают её жители, будь то ожидание в космосе, охота на нпц или что угодно еще.
  • И, наконец, мы можем оценить влияние нововведений в игровую механику в широком масштабе. Старые игроки могут припомнить много изменений механики за прошедшие годы, сделанные с целью увеличить производительность сервера, например ограничение в 5 запущенных с одного корабля дронов вместо 10, изменения скорости стрельбы и модификаторов наносимых повреждений с целью ограничить влияние скорострельных орудий.

Новый инструмент позволяет нам нагрузить и провести стресс-тесты самых древних и запутанных компонентов игры.

Хватит ходить вокруг да около, давайте детали

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

Вопрос, напрашивающийся сам собой - как мы этого достигли? В центре решения лежит использование двух простых вещей:
  • Подставные объекты (mocking и mock-объекты, дальше буду использовать только английский термин, прим.пер.)
  • Наследование классов в Питоне.

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

Вторым шагом было использование наследования для переопределения некоторых частей кода. Приведу простой пример:

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

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

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

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

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

Что же с производительностью?

В среднем тонкий клиент использует от 150 до 200 мегабайт памяти, и хотя не все сопоставят эти числа со словом "тонкий", это очень хорошее начало. По мере совершенствования тонкого клиента появятся и другие способы уменьшить потребление памяти. Что касается цпу, то тонкий клиент слабо загружает процессор. Большая часть нагрузки приходится на первые секунд 30, когда загружается код клиента и питоновские библиотеки, после чего клиент переходит в состояние относительного покоя. К сожалению, когда вы запускаете несколько сотен клиентов одновременно, даже небольшие изменения в загрузке процессора, происходящие одновременно во всех клиентах, могут вызвать проблемы, так что мы стараемся свести потребление цпу к минимуму.

А управление? Как вы говорите, что им делать?

Для проведения тестов мы разработали инфраструктуру под названием Orchestrator, основной функцией которой является настройка сервера и клиента и запуск определённого теста в рамках традиционной "прошел/не прошел" механики.

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

Что касается Automaton Project, то, хочу заметить, что это название никто кроме меня не использует, так что это просто моё нежное прозвище для этого проекта. Проект является способом запустить клиент и выполнить определённый код локально, вместо того, чтобы управлять поведением клиента удалённо по сети.

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

Так, а когда я смогу поиграться со всем этим?

Не в этой жизни, извините =) Тонкий клиент предназначен только для разработчиков, и хотя многие бы хотели менее требовательный к ресурсам клиент, это не тот робот, которого вы ищете </jedi> ("this isn't the one you're looking for" - фраза, которую Кенноби говорит/навязывает своими джедайскими штучками штурмовикам в 4 части звёздных войн, когда они с Люком прилетают в бар, где наймут Хана Соло, а на улице штурмовики начинают интересоваться их дроидами - прим.пер.).

Что дальше?

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

Что касается меня, то мне предстоит разработать еще кучу API и кода, чтобы клиент мог делать больше полезного. Нашей основной целью является решение проблемы с лагами, но кроме этого я хочу сделать интерфейс для рынка, чтобы можно было эмулировать Житу и гиперактивный рынок. Так же предстоит работа по превращению стада (или стаи? как назвать группу таких автоматов, может армией?) асинхронных автоматов в организованный флот, а так же работа по дальнейшему "утончению" клиента, и так далее до бесконечности

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

На этом всё, au revoir!

Сообщение отредактировал Takeshi Ryuu: 26 August 2010 - 16:10

  • 1

#2
Anastasy

Anastasy

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1662 сообщений
73
  • EVE Ingame:Anastasy BL
  • Corp:T R I B E
  • Ally:Minmatar Republic
  • Client:Eng
Хотели текстовую еву - получайте :)
  • 0

#3
Takeshi Ryuu

Takeshi Ryuu

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 696 сообщений
361
  • EVE Ingame:Takeshi Ryuu
  • Corp:IRR
  • Client:Eng
Сказано же, это не те роботы, которых вы ищите, проходите мимо...
  • 0

#4
DIMFIRE

DIMFIRE

    Кавайчег

  • Tech III Pilots
  • PipPipPipPipPipPipPipPipPipPip
  • 28363 сообщений
2206
  • EVE Ingame:DIMFIRE Dimiana DlMFlRE
  • Client:Eng
ЦЦП наконец то само занялось ботоводством.

Сообщение отредактировал DIMFIRE: 26 August 2010 - 23:30

  • 1

#5
Sedrick

Sedrick

    Clone Grade Theta

  • Tech III Pilots
  • PipPipPipPip
  • 1278 сообщений
19
  • Client:Eng
Eve online MUD edition.
  • 1

#6
DIMFIRE

DIMFIRE

    Кавайчег

  • Tech III Pilots
  • PipPipPipPipPipPipPipPipPipPip
  • 28363 сообщений
2206
  • EVE Ingame:DIMFIRE Dimiana DlMFlRE
  • Client:Eng
Еще одной нелецензированной возможностью является вероятность возникновения на эвентах более умных флотов, хоть отчасти симулирующих поведение человека.
  • 0

#7
Ank Burov

Ank Burov

    Svidomeat

  • Tech III Pilots
  • PipPipPipPipPip
  • 2627 сообщений
150
  • EVE Ingame:Ank Burov
  • Corp:NPC
  • Client:Eng

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

Держи карман шире! Если нормально настроить этот тонкий клиент, то флот из 100 таких машинок порвет флот из 100 людей с одинаковыми шиптайпами. Ибо не будет инвалидных омнитанковых баттлов, все до единого будут стрелять по праймари (т.е. лопаются с альфы), никто никуда не будет ползти от логистов, логисты, опять же, будут намного эффективнее всех качать. Одно только это дает солидное преимущество над флотом митбагов.
  • 0

#8
Баралгин

Баралгин

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 562 сообщений
-24
  • EVE Ingame:Баралгин
реверс инженеринг (все через попу)
  • 0
Я Баралгин, сын Аспирина.

#9
Belfigor

Belfigor

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 546 сообщений
-45
  • Channel:Chibi Cartel Recruiting
  • Client:Eng
Хочу такой клиент :ninja:
  • 0

4sirh1.jpg


#10
JesDarkJewel

JesDarkJewel

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 952 сообщений
52
  • EVE Ingame:JesDarkJewel
  • Corp:Tungus Revolt
  • Channel:Tungus
  • Client:Рус

Хочу такой клиент :)

и я и я!! :ninja:
  • 0
Один аккаунт - залог долгой и интересной игры.
Ева - игра про взаимоотношения людей.
Он тоже скоро научится летать -> Изображение

#11
UAxCrow

UAxCrow

    Clone Grade Zeta

  • Tech III Pilots
  • PipPipPip
  • 383 сообщений
9
  • EVE Ingame:UAxCrow
  • Corp:TACOM
  • Ally:RA
  • Client:Eng
мечта ботоводов, епт...
  • 0
...и будут мазать Абаддоны,
летает быстро чудо-Дрейк,
если купить поликарбоны
и голову засунуть снейк.

#12
Mind Paralizer

Mind Paralizer

    Clone Grade Kappa

  • Tech III Pilots
  • PipPipPipPipPip
  • 3150 сообщений
357
  • Client:Eng

Del.


Сообщение отредактировал Mind Paralizer: 28 March 2019 - 16:21

  • 0

#13
Koh-i-Noor

Koh-i-Noor

    Clone Grade Epsilon

  • Tech III Pilots
  • PipPipPip
  • 342 сообщений
-50
  • EVE Ingame:Koh'i'noor
  • Corp:Green Tea Inc
  • Client:Eng
ССР гады. MUD клиент был бы оч. актуален )
  • 0

_koh2.jpg
Если человек очень сильно чего-нибудь хочет - он становится предсказуемым.


#14
tigris

tigris

    Clone Grade Kappa

  • Tech III Pilots
  • PipPipPipPipPip
  • 3080 сообщений
1283
  • EVE Ingame:Pantera Tigris
  • Client:Eng

Что касается цпу, то тонкий клиент слабо загружает процессор. Большая часть нагрузки приходится на первые секунд 30, когда загружается код клиента и питоновские библиотеки, после чего клиент переходит в состояние относительного покоя.

Может я чего-то не понимаю, но что же тогда нагружает ЦПУ на моем компе до 100%, когда я обновляю ордера в Джите??? Графика интерфейса маркета???
Мне кажется, нас дурят, товарищи. Они не фиксят лаги. Они тупо тянут время и ждут, когда мы проапгрейдим компы.

Сообщение отредактировал tigris: 01 October 2010 - 17:00

  • 0

#15
Trimutius III

Trimutius III

    Khanid Trader

  • Tech III Pilots
  • PipPipPipPipPipPipPip
  • 6685 сообщений
224
  • EVE Ingame:Trimutius III
  • EVE Alt:Weldy StarFiner
  • Corp:F-053
  • Channel:ru-help
  • Client:Eng

Может я чего-то не понимаю, но что же тогда нагружает ЦПУ на моем компе до 100%, когда я обновляю ордера в Джите??? Графика интерфейса маркета???

То что клиент начинает грузить зачем-то инфу по всем чарам, которые сидят в системе...
  • 0
Я посланник из ниоткуда в никуда. Никто и ничто не посылало меня. И хотя это невозможно, я всё-таки существую. ©Тримутиус
Изображение

#16
Баралгин

Баралгин

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 562 сообщений
-24
  • EVE Ingame:Баралгин
чорт, так вот как выглядет санша изнутри.
  • 0
Я Баралгин, сын Аспирина.

#17
72AG_El_Brujo

72AG_El_Brujo

    Clone Grade Ksi

  • Tech III Pilots
  • PipPipPipPipPipPipPipPipPip
  • 12376 сообщений
1915
  • EVE Ingame:C Spawn
  • Corp:Tequila Sunrise.
  • Ally:Amarr Empire Followers
  • Client:Eng
Где скочадь?
  • 0

[ img]F*CK IMAGESHACK.[/img] :(

 


#18
mumixam

mumixam

    Clone Grade Lambda

  • Tech III Pilots
  • PipPipPipPipPipPip
  • 4016 сообщений
2529
  • EVE Ingame:KC1005
  • Client:Рус
надеюсь вернут 10 дронов
  • 0

по независящим от меня причинам вышел из ЕВЫ на некоторое время /конец октября.12/
вернулся в еву в ноябре 21 , но в ECHOES )


#19
January

January

    Clone Grade Mu

  • Tech III Pilots
  • PipPipPipPipPipPipPip
  • 7376 сообщений
330
Как-то настораживают постоянные оговорки про Житу, маркет и эксперименты над ним. ССР начинают внутреннее тестирование геймшопа и микротранзакций на экономике Евы?
  • 0

#20
Nares

Nares

    Apocalypse Now

  • Tech III Pilots
  • PipPipPipPipPipPipPipPipPipPip
  • 16772 сообщений
3617
  • EVE Ingame:Captain Nares
  • Channel:t2y
Ева обречена.

Тонкий клиент украдут и будут продавать по 5$ за ключ на ботоводских сайтах.

Всем быстро сливать лоу миники!
  • 0
Изображение
Изображение
Изображение
Потеряла лицо Таня-тян -
Плачет о мяче, укатившемся в пруд.
Возьми себя в руки, дочь самурая.




0 посетителей читают тему

0 members, 0 guests, 0 anonymous users