Полная версия
Тестер. Ожерелье миров
Если за месяц я не нахожу ни одного бага в игре – контракт заканчивается, а я становлюсь беднее на пять сотен. Хотя бы один подтверждённый баг репорт и пять сотен возвращаются мне, плюс по третьему варианту договора c каждого баг репорта компания выплачивала мне примерно 10% от суммы, в которую оценивала данный баг репорт сам производитель игры. Там была целая таблица с условиями и размерами выплат, но меня это не особенно волновало – мне нужно было всего 10 баг репортов.
–Да, я все прочитал и меня все устраивает, – я закончил чтение и вернул распечатанный текст Оксане.
–Хорошо, тогда приложите Вашу карту сюда, – она дала мне экран терминала. – Все, вот это тоже Вам, – добавила она, передавая мне пакет с рекламой, договором.
–В конверте Ваша карта тестера, сотрите защитный слой, там ай-ди и пароль от Ожерелья Миров. Карта также служит пропуском в зал, где стоят капсулы и терминалы 3Д доступа. Все активно, можете начинать хоть сейчас. Вера Вас проводит.
Видно, Оксана как-то сигнализировала этой самой Вере, или она через комп видела, что появился новый клиент, но сзади меня раздался ее голос: – Пойдемте со мной.
Мы прошли внутрь.
– Слева и справа капсулы, дальше зал с терминалами, их всего 5, и обычно они всегда свободны. Вы в капсулу? – спросила она.
–Нет, мне сегодня только терминал и нужен, капсула подождет.
Оставшись один, я ввел свой ай-ди и пароль, надел шлем и начал процесс регистрации персонажа.
Терминал был удобной штукой, он как бы совмещал в себе работу через шлем виртуальной реальности и обычный монитор, что для тестера или разработчика было очень удобно, у нас примерно такие же устройства стояли на работе.
Выходные я провел не зря Перекопав огромный массив информации по Ожерелью, я определил первые точки для своей атаки. Сегодня я даже не собирался в саму игру. Хотя нет, один раз в нее надо было зайти, чтобы еще раз зафиксировать эти этапы. Пройдя стандартные заставки входа и регистрации, я оказался в локации для новичков.
Регистрация, в общем-то, соответствовала роликам, которые я до этого смотрел, но мне нужно было собственное ощущение от этого процесса. Поэтому я сразу же вышел из игры и удалил только что созданного персонажа.
На терминале я открыл собственную страницу в «облаке» со всеми своими инструментами и домашними заготовками. Теперь начнем уже по серьёзному.
Основываясь на том, что я видел при создании первого персонажа, и моей домашней работе в выходные, я сделал первое предположение: вход в систему делали не программисты Ожерелья. До этого я нашел в сети ролики, на которых был совершенно другой интерфейс входа и регистрации, более красочные и с большим количеством возможностей, но после бета-тестирования он пропал из игры и, судя по дате запуска игры, программу входа, регистрации и создания персонажа просто купили у сторонних разработчиков.
Это было совершенно нормально для виртуальных миров. У меня самого есть приятель, который занимается виртуальной анимацией, так последний раз, когда мы виделись, он жаловался на жизнь и рассказывал, что уже полгода анимирует двери для кого-то проекта. Даже зачитывал вслух отрывки из технического задания: «Замшелая, покрытая мхом и плесенью, тяжёлая деревянная дверь, открывающаяся с противным скрипом. Производит тоскливое впечатление».
«Я им уже три варианта отправил, а они мне в ответ пишут, что дверь недостаточно тоскливая…» – рассказывал мне мой приятель, и вопрошал: «Ну как я им более тоскливую нарисую???»
Дождавшись окончания заставки, я увидел экран выбора имени, расы и специализации моего будущего аватара. Я отключил шлем и передвинулся за терминал. Информацию в текстовое поле имени можно было ввести голосом или с виртуальной клавиатуры, но в режиме терминала можно было просто вставить уже скопированный текст. Этим я и занялся, но не вручную, так как текст для имени был длинный, и вариантов его было много, вернее 787. Именно столько на момент старта Ожерелья было вариантов взлома и уязвимостей при вводе подготовленного текста в обычное поле. Естественно, мой скрипт копировал в поля имени персонажа не его будущий ник, а часть короткой программы, которая должна была вызвать нестандартные последствия, причем для меня не было важно какие, главное – нестандартные.
Скрипт вводил один вариант за другим, но ничего не происходило, система молча отвергала все варианты одним и тем же сообщением: «Вы не можете выбрать *** в качестве своего имени».
Через минут 40 скрипт закончил свою работу, и ни один из вариантов атаки не прошел. «Ладно, надо налить кофе и идти дальше по плану,» – неудача нисколько меня не расстроила, и я отправился за кофе к автоматам, расположенным рядом с входом. Проведя картой по считывающему устройству и выбрав кофе, я задумался, к какому варианту из ранее запланированных перейти, когда услышал механический голос «Ваш напиток готов!».
Пораженный простотой подсказки, я уставился на автомат. «Ваш напиток готов!» – повторил он, не дождавшись от меня реакции в положенное время. Я забрал кофе и почти бегом кинулся обратно к терминалу.
Мне нужно было узнать, какие речевые синтезаторы продавались в то время, когда запускали Ожерелье! Дело в том, что голос, приветствующий игрока при создании персонажа, не управлялся и не генерировался искином, собственно еще не было самого соединения с игрой. А любой речевой синтезатор имел встроенный командный интерфейс.
Поиск дал 4 наиболее успешно продававшихся синтезатора на момент старта игры. Конечно, они могли и не подойти, но здесь вариантов нет, надо попробовать все.
Дальше началась рутина: я вводил ник персонажа, в конце добавлял служебные команды для звукового синтезатора речи и нажимал создать!
Мне повезло на четвертой попытке и я, услышав голос «Добро пожаловать в мир, герой, а-а-а-а-к-у-у-ыы-ыы» сорвал с головы шлем. Экран входа завис, а синтезатор речи застыл на одной ноте «ы-у-ы». Ни одно кнопка на интерфейсе не была активна. Если бы я сейчас был в капсуле, то лежал бы еще четыре часа под пронзительное завывание, не имея возможности отключиться, пока бы не сработал аварийный таймер.
Но зарегистрировать самостоятельно свой первый найденный баг я не мог. Экран входа завис, как на терминале, так в шлеме. Я сфотографировал на всякий случай экран терминала, закрыл все окна со своей облачной страницей и очистил историю поиска, а то мало ли что.
Проделав все это, я отправился обратно на ресепшен общаться Оксаной. Но ее не было, на ее месте сидела какая-то полная дама без бейджика.
–Простите, добрый вечер! – поздоровался я. – Мне бы баг репорт отправить.
–Отправляй, кто тебе не дает, – ответила дама, даже не посмотрев в мою сторону.-Вон бланк на стойке лежит, заполняй и опускай в ящик.
–Зачем какой-то бланк? Вы не поняли, у меня завис экран входа, и самостоятельно баг репорт я отправить не могу, прав администратора у меня нет, перегрузить железо я не могу, – тяжело посмотрев на меня, мадам поднялась со стула и, смерив меня презрительным взглядом, буркнула: – Ну пойдем, посмотрим на твою капсулу.
–Я вообще-то с терминала заходил, – поправил я ее и показал на единственный активный терминал.
Дойдя до терминала, так и не представившаяся мне сотрудница посмотрела на зависший экран, отключенный шлем и выдала совсем не то, что я ожидал:
–Ну и нафига ты все здесь сломал? Кто теперь оплатит вызов технарей?
–А у вас что, своих админов нет? – крайне удивился я.
–Пошли, опишешь все подробно, что ты сделал, что оборудование вышло из строя,– по-прежнему игнорируя меня и все мои слова, она развернулась и направилась обратно к ресепешену.
С людьми за пределом моего круга общения, тем более вживую, я общаюсь редко, и, переваривая поведение «мадам», как я ее про себя окрестил, завис на некоторое время, не понимая, что мне делать.
Желания устраивать скандал не было никакого, ведь это, похоже, не могло привести меня к тому результату, который мне был нужен. Пререкаться с «мадам» тоже смысла не было. Все, что мне нужно знать, я выясню завтра у улыбчивых девушек, дежуривших на ресепшен и в холле, а баг репорт зарегистрирую с работы или из дома.
Баг был найден, время, которое я себе отвел себе на эту работу, почти закончилось, и поэтому я прошел мимо стойки с бумажками, мимо ящика, куда, по словам «мадам», их нужно складывать, и направился к выходу.
–Ээ, ты куда? А бумагу писать? – окликнула меня «мадам».
–Заполню и отошлю из дома, -ответил я и вышел за дверь.
Поднявшись к себе в офис, я за 5 минут заполнил стандартную форму заявки для бага репортов, приложил к ней фото экрана и подробно описал способ взлома. В разделе «Степень опасности и последствия» я честно описал ситуацию, что если при первом входе в игру у клиента взломать капсулу, то можно продержать человека 4 часа под крайне неприятное звуковое сопровождение. Дальше пусть сами думают.
Отправив заявку, я пошел в кабинет Кожина.
–Привет еще раз, я уже вернулся, есть ответ по нашей работе от клиентов? –спросил я, открывая дверь.
–Нет, на сегодня все, можешь домой ехать. И завтра тоже можешь отдыхать. Аврал у нас на следующей неделе начнется. Кстати, как поиграл?
–Да нормально, один баг уже отправил разработчикам,– ответил я и почувствовал вибрацию коммуникатора.
–О! Баг репорт принят, рассмотрение в течение 14-ти дней, – добавил я, посмотрев, что мне пришло.
–Странно, обычно они баг сразу принимают или нет, а тут две недели на рассмотрение. Ладно, это у тебя работы нет, так что пых-пых – домой. А мне еще всякие бумаги делать надо, – закончил разговор мой шеф.
Вернувшись домой, я заказал себе еды с доставкой и начал читать разделы сайта Ожерелья миров, посвящённые всем возможным ошибкам в игре. Пройдя по одной из ссылок, я обнаружил, что после регистрации и подтверждения баг репорта мне доступен форум официальных тестировщиков игры. Писать я туда не мог, а вот читать – уже пожалуйста.
К следующему этапу надо было хорошенько подготовиться, ведь одно дело портить программу входа в игру, другое дело – уже в самой игре соревноваться с искинами, ей управляющими.
Форум был большим, я бы даже сказал необъятным, поэтому я решил сначала посмотреть только его основные разделы.
Все ошибки игры были классифицированы и разбиты на соответствующие темы. Самой популярной из них была ошибка «ДЮПа», что на сленге игроков означало создание условий для неконтролируемого дублирования объектов в игре. Уже найденных ошибок такого типа в игре было больше тысячи, но, судя по датам сообщений, находились все новые.
Второй по популярности был раздел по нахождению точек проваливания игроков в «структуры». Такую ошибку редко можно было использовать для обогащения или прокачки, но умельцы все же находились, и компания исправно платила небольшие деньги за нахождения таких мест.
Почитать это все было, конечно, интересно, но я был ограничен по времени одним месяцем и совершенно не собирался на долгое время зависать в игре, прокачивая персонаж, поэтому быстро накидал поисковый запрос и теперь ждал результата в виде списка тем, где упоминалась локация для новичков, рядом со столицей с именем Тириос, Городом Семи Башен, как его еще называли. Но ничего вразумительного я не получил.
Что ж, надо было идти другим путем, но толкового и полного гайда по этой стартовой локации я не нашел, хотя она была крайне популярна, поэтому я написал старшему брату и, ожидая ответ, принялся поглощать доставленную мне еду.
Запиликал сигнал входящего вызова в мессенджере – звонил брат.
–Привет, полосатый червячок! – поздоровался мой брат.
–Костя, если ты не заметил, то я уже вырос из того возраста, когда меня следовала так называть! – ответил я, ничуть не обидевшись.
–Ладно, мелкий, не бузи, у меня раннее утро тут, я еще не проснулся. Зачем тебе гайд по нубской локации столицы? – напечатал брат.
–Тебе коротко или длинно? Я теперь официальный тестер Ожерелья Миров,– ответил я.
–Не коротко и никак. Потом напишешь. Лови гайд, но это только для тебя, там разработки по скоростному прохождению для нубов. Не распространяй, а не то мой клан меня по головке не погладит. Все, bye-bye, – написал брат и отключился.
–Пока-пока, – успел ответить я. Мой брат уже 5 лет работал в штатах, и из-за разницы во времени и его работы поймать его было сложно. Живьем встречались разве что в мои каникулы или на новый год.
Но гайд он прислал, короткий, профессиональный, как инструкция к электрочайнику. Самое главное, в нем была карта локации, таблица всех мобов с их уровнем и уронами, карта агро зон всех мобов и все основные квесты. Также содержались инструкции по прокачке для основных билдов, из серии супер-лучник до 10 уровня за 2 часа 40 минут и тому подобное. Отдельно шла таблица всех умений, которые здесь можно было получить.
Так как начальные локации были как бы вне игры, работали по своим правилам и не менялись динамически с течением времени, мне показалось логичным посмотреть такую локацию на предмет ошибок.
А дальше началась деятельность, почти ничем не отличающаяся от моей основной работы, я начал искать все известные уязвимости, сначала по всем НПС, которые населяли локацию, потом по всем умениям, и заканчивая все квестовыми линиями.
В результате начал созревать некий список первичных действий, но для его осуществления мои многие предположения требовали проверки.
На следующий день, после занятий, помня, что на работе могу сегодня не появляться, я сразу отправился в Глобал Тест. На приеме посетителей сидела незнакомая мне девица, которая без всяких вопросов проводила меня до капсулы и помогла ее запустить.
«Ну что ж, начнем,» -подумал я и запустил генерацию персонажа.
На этот раз я ни с чем не экспериментировал и не пытался ничего сломать. Руководствуясь заранее проработанным генеалогическим деревом, стал создавать расу персонажа.
Все-таки калькуляторы ошибались. В них было доступно пять поколений для экспериментов, а игра давала восемь. В итоге мне все же удалось скрестить Дроу, Эльфа, Северного воина и Южного Охотника.
Поздравляем! Вы завершили генерацию происхождения Вашего персонажа:
Текущая раса: человек, полукровка.
Эльф 14%
Дроу 7%
Северный страж 22%
Охотник Южных пределов 57%
Бонусы: +1 к Телосложению, +5 к Харизме, +2 к Ловкости, +5 к Выносливости
Штрафы: – 2 Мудрости, – 5 Удачи
Доступно к распределению 25 очков.
Минус к Удаче меня, конечно, огорчил, но на первоначальном этапе это можно было еще поправить. Я распределил начальные значения, добавив по десятке к мудрости и к интеллекту, а оставшиеся пять очков кинул в силу, и вот что получилось с учетом моих штрафов, бонусов и первоначальных значений (все атрибуты были равны десяти и эти значения нельзя было изменить вручную):
Основные атрибуты:
Сила – 15
Ловкость – 12
Выносливость -15
Интеллект – 20
Мудрость – 18
Скрытые атрибуты (их значение можно увидеть только, посетив храм):
Удача – 7
Харизма – 22
Телосложение – 31
Восприятие – 38
Жизненная энергия 310
Манна 200
Удача меня, конечно, все еще смущала, но я решил оставить все, как есть, жертвовать другими атрибутами я не хотел.
С ником проблемы тоже не возникло, если хочешь вписаться в выдуманный мир – то лучше следовать ему. Я заранее подобрал себе несколько имен, по созвучию подходящие для жителей северных и южных провинций Империи. В результате понравившаяся комбинация содержала южное имя и северное родовое имя: Хармен Фэрон.
«Добро пожаловать в Ожерелье миров, : Хармен Фэрон!» – пафосно произнес женский голос, и я попал в игру.
Глава 2. Сломать все, что можно.
Ххх: На чем у вас программисты пишут?
Ууу: Судя по конечному результату – на галоперидоле….
Россия. Крупный мегаполис. 20ХХ год.
Я оказался на центральной площади деревни, рядом со стелой возрождения. Мир был крайне хорошо проработан, и те вирт-программы, которые я до этого тестировал, показались мне убогими поделками по сравнению с Ожерельем. Но ощущения реальности не было, везде проскакивала некая мультипликационность окружения. Конечно, надо было учитывать, что эта локация являлась как бы плавным переходом от реальности к игре, но все же хотелось большего.
Но время было дорого, и я отправился выполнять свой план по поиску ошибок.
Если вы думаете, что найти лазейку в проработанной и протестированной игре так легко, попробуйте сами. Но я исходил из того предположения, что все игроки, как и тестеры, прежде всего искали баги, направленные на получение игрового преимущества, легкой прокачки, ресурсов в неограниченном количестве, тогда как мой подход был изначально более широким – главное, сломать, а выгодно это или нет – другой вопрос.
Первым делом я обежал все места в деревне, доступные для игрока 1-го уровня, и собрал все известные квесты из руководства, которое получил от своего брата. Делать я их, за редким исключением, не собирался, но мне нужны были те начальные предметы экипировки, которые можно было получить для выполнения этих заданий. В первую очередь мне требовалась удочка и топор дровосека.
Для освоения топора, правда, пришлось потратить некоторое время на колку дров, иначе мне не удалось бы проверить задуманное. Так как план был многоходовым, мне первым делом надо было поднять умение рыбака, которое пока было нулевого уровня. Я его получил вместе с удочкой от местного жителя, Деда Тиша, вместе с заданием наловить 15 рыбин, за которые он обещал пять медных монет. Если все пройдет, как я задумал, то без умения рыбной ловли уровня 9-го или 10-го я могу застрять здесь навсегда.
Нарубив сучьев у сухих деревьев, я вышел на берег небольшого пруда. Согласно описанию, в этом пруду, кроме лягушек второго, третьего уровня и рыбы от первого до четвертого, больше ничего не было.
Еще, согласно форуму, здесь иногда жил бобер, но его появление было связано со сложным и бесполезным для меня заданием, поэтому я направился к месту, где он скорее всего и строил свою запруду, это облегчало мне задуманное, так как на первом уровне сил реально ни ничто не хватало, а повышать уровни мне пока было нельзя. Полуразрушенная маленькая запруда была для меня идеальным местом. С помощью принесенных сучьев я без труда отделил часть пруда и получил отдельную емкость, наполненную водой, размером с небольшое ведро. Главное мое опасение было, что получившаяся конструкция будет признана за самодельную ловушку, но этого не произошло.
Теперь берем удочку (1 уровень, возможность поймать рыбу в закрытом водоеме до второго уровня) и начинаем.
Первую рыбу я вытащил минут через 20. А что, нормальный такой квест, за 5 медных монет – убить целый игровой день. А вот теперь, внимание, будем проверять то, ради чего были все эти приготовления. Я выпустил пойманную рыбу в отделенную часть пруда. И ничего !!! Ни одного сообщения от системы! Я опустил удочку в запруду и тут же поймал только что отпущенную рыбку. Посмотрев информацию о прогрессе выполнения квеста для местного рыбака Деда Тиша, я с удивлением прочитал:
Задание: Поймать 15 рыбин для Деда Тиша. Прогресс 2 / 15
А вот это было любопытно, я отпустил рыбку и начал фармить запруду. Рыба ловилась в среднем секунд за 30, и я пропустил тот момент, когда переборщил с количеством «пойманных» рыб.
Задание: Поймать 15 рыбин для Деда Тиша. Прогресс 17 / 15
Интересно, сколько теперь монет мне даст Дедушка? Но мне нужны были не монеты, а умения рыбной ловли более старшего уровня, поэтому я продолжил.
Вы поймали 100 рыб первого уровня в пруду. Ваше умение «рыбной ловли» повышено на +1
Вот такое сообщение я получил примерно через час. Почему так долго? Моя удочка первого уровня ловила рыбу очень нестабильно, периодически рыба срывалась с крючка или переставала клевать. Ну что же, придется идти к торговцу. До выхода в большой мир и подключения к банку и аукциону игрок на обычном аккаунте мог внести в игру только 100 золотых монет, что, собственно, я и сделал после регистрации, так что на текущий момент – я богач.
Купив у торговца улучшенную удочку 9 уровня, с возможностью ловли на открытой воде и добавляющую к 10% к шансу поймать необычную добычу, я вернулся на пруд. Десять золотых на эту палку было, кончено, очень много, но и выбора у меня не было. Поймав рыбку 4-ого уровня и выпустив ее в запруду, я продолжил.
Мое игровое время почти уже подошло к концу, когда я добил умение рыбной ловли до 5-ого уровня. Похоже, в этом пруду мне делать больше нечего, дальше надо идти на дальнее озеро, но туда можно было попасть только через полянку с лесом 6-ого уровня, в котором меня бы быстро похоронили. Еще один момент: за пойманных рыб мне дали только второй уровень, то есть, опыт шел только за рыбин, честно пойманных из воды, а не из запруды. А с квестом вообще были чудеса:
Задание: Поймать 15 рыбин для Деда Тиша. Прогресс 1480 / 15
Надо попробовать его сдать и на выход.
Дед Тиша долго рассматривал одну единственную рыбку, лежавшую на прилавке, подслеповато щурился и беззвучно шевелил губами. Где-то далеко отсюда криво написанный скрипт, управляющий его поведением, пытался вычислить, что ему делать. Ну… Это я так думал, ну не будут же полноценный искин подключать на такой персонаж. В итоге Дед Тиша так ничего и не сказал, квест закрылся молча, а я получил 493 медные монеты. Я отошел от Деда и тут вспомнил, что после сдачи ему рыбы можно получить задание на покупку пива. Повернувшись обратно, я обратился к нему со стандартным вопросом:
–Дедушка, рыбку я Вам наловил, может, еще чем-нибудь помочь? – но Дед Тиша лишь смотрел сквозь меня стеклянным взором и шевелили губами. Нашу с ним «беседу» прервали два игрока, гном и человек, пришедшие сюда тоже сдать квест на рыбку.
–Дед, вот твоя рыба, давай рецепт жарки! – сходу выпалил гном. – Дед, не спим, рыбу берем, даем денег и рецепт, – повторил он, подходя ближе. Но Тиша не отвечал.
–Слышь, Фэрон, чего с дедом сделал? – это уже ко мне обратился гном.
–Я ему рыбу сдал, деньги получил, на этом все. Но мне он тоже ничего не сказал, только деньги звякнули, – пояснил я гному. – Все, у меня таймер сейчас сработает, мне пора, – и я нажал на кнопку выхода.
Добравшись до дома, я подключился к сайту Ожерелья в раздел тестирования и начал делать отчеты. Я решил описать все ошибки, которые нашел, а уж какие из них примут – это их дело.
Всего у меня получилось 3 баг репорта. Первый – это прокачка умения при помощи запруды, второй – квест с дедом Тишей и третий – его поведение после сдачи квеста. Жаль, у меня не было времени посмотреть за ним дальше. Баг репорты были отосланы, и я решил прочитать собственную статистику. Всего у меня было 4 баг репорта, из них принятый – один. О, пока я заходил, все мои сегодняшние репорты были подтверждены, то есть теперь приняты все 4, но первый был еще на дополнительном рассмотрении, а за три сегодняшних мне начислили деньги, и, в общем-то, немаленькие. Триста кредитов за каждый. Получается – неважно, как дальше пойдет дело, я уже буду почти при своих, даже если проиграю спор. Пока я это обдумывал, баг репорт, описывающий поведение Деда, опять изменил свой статус, кредиты награды на нем исчезли, и появился статус о дополнительном рассмотрении. Похоже, все важные ошибки система отправляла живым людям. Ну что ж, подождем следующей игровой сессии.
Швейцария, Женева. Штаб-квартира компании [битая ссылка] Квантум Глобал.
–Генрих, вроде все собрались, можешь начинать совещание,– проговорил бледный сухой мужчина, сидящий во главе большого стола, занимавшего большую часть комнаты для переговоров.
–Конечно, господа, я начинаю,– Генрих нервно пролистнул распечатки своих материалов в тоненькой папке, отпил воды и начал выступление.
–В соответствии с правилами работы нашего департамента, все случаи, относящиеся к категории 2А и выше, могут обсуждаться только устно, без использования средств связи, поэтому я и инициировал данное совещание, – он закашлялся, отпил еще воды и продолжил:
–Мы внимательно рассмотрели баг репорт от одного из наших тестеров фрилансеров и установили, что потенциально данная ошибка может привести к печальным последствиям. Если кратко, то скомпрометирована система генерации персонажа, что в совокупности со взломом капсулы может дать злоумышленникам возможность воздействия на человека, вплоть до летального исхода.