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

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

Файрфокс, Хром и Стим так не делают.

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

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

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

Вот что мы сделали

С этой новой системой мы уже определили 2 наиболее частых крэша, которые происходили на Сингулярити, и пофиксили их в данном патче. Мы пройдём и по другим багам в порядке частоты их срабатывания на тестовом сервере.

Что по поводу моей приватности?

Мини-дамп, который мы подгружаем, содержит только информацию о процессе Евы, имеющем отношение к крешу — мы создаём их, используя ту же систему, что и Windows, и в основном они содержат нессколько значений переменных, которые связаны со стеком функций, приводящих к крешу (но чаще — нет). В этих репортах не содержится персональной информации, и оно не смотрит на то, что вы там понаставили или запускаете на компьютере (если только у вас нет внешних бинарников, встраивающихся в процесс EVE)

Мы пытаемся быть открытыми и однозначными в плане того, что мы начинаем делать это — но вы вероятно уже работаете с программами, которые делают это. Например, с Файрфоксом, Стимом и Хромом.

Так что, я больше не буду крешиться?

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

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

Мало картинок

На этой картинке — количество крэшей в течение дня, получаемых на нашей главной кодировочной линии. На ней работает большая часть разработчиков (400 человек). Иногда мы получаем новый крэш, который задевает множество людей (или автоматическую систему), но помимо того теперь мы можем разобраться с ним намного быстрее:

Вот отметка крэша, который вызвал один из этих пиков.

Мы видим, когда именно произошёл этот крэш, что намного облегчает процесс реверс-инжиниринга и выяснения, какое именнно изменение спровоцировало его.

Вкратце

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


Перевод © Clancy

[#] 19.10.2011 @ 01:25 by Max Tantalos
+ 0 -
Хм... баги пофиксили, тогда закономерный вопрос почему это не прикрутили раньше? ответить
[#] 19.10.2011 @ 01:25 by Max Tantalos
+ 0 -
[Cloak engage]
- [#] 19.10.2011 @ 03:59 by QuyGonJinn
+ 2 -
Закономерный вопрос: почему игру не выпустили идеальной? А то вечно какие-то патчи выпускают... ответить
[#] 19.10.2011 @ 06:15 by Max Tantalos
+ 0 -
Почему в менее серьёзных проектах она прикручена изначально(система дебагинга) и появилась она ну очень давно(в таком виде, как описано в статье) и ССР хватило всего 8 лет на то чтобы подумать: "Ха, а почему бы и нет!" - или они хотят убедить нас, что раньше клиент не крашился и трава была зеленее?
И темы про краши возникали постоянно.(Помните проблемы с AMD процами?) Так что как то долго они приходили к этому...явному и полезному решению. ответить
[#] 19.10.2011 @ 11:14 by Icipher
+ 0 -
Хе. Это как раз-таки Ева менее серьёзный проект, чем те же перечисленные в статье. :) И, если честно, ни в одной клиентской многоюзереской онлайновке, кроме Лучшей ММО Эвер (и то не уверен), не упоминаю наличия системы сбора информации из креш-дампа. ответить

Написать комментарий
 
EVE Online and the EVE logo are the registered trademarks of CCP hf. All rights are reserved worldwide. All other trademarks are the property of their respective owners. EVE Online, the EVE logo, EVE and all associated logos and designs are the intellectual property of CCP hf. All artwork, screenshots, characters, vehicles, storylines, world facts or other recognizable features of the intellectual property relating to these trademarks are likewise the intellectual property of CCP hf. CCP hf. has granted permission to EVE-RU to use EVE Online and all associated logos and designs for promotional and information purposes on its website but does not endorse, and is not in any way affiliated with, EVE-RU. CCP is in no way responsible for the content on or functioning of this website, nor can it be liable for any damage arising from the use of this website.