穿越故事 07月17日 20:46

QA на Уровне Ноль

Женя Кот — не кличка, фамилия такая, Котов — тестировал игры в конторе на окраине Воронежа.

Работа простая: ломай все, что дали, и пиши, где сломалось.

Багрепорты. Воспроизведение. «Шаги для повтора: 1, 2, 3». За четыре года он научился думать не как игрок, а как разрушитель: где разработчик схалтурил, туда и лезь. Застрял в текстуре — баг. Прошел сквозь стену — баг. Убил моба, а тот воскрес на том же месте через десять секунд — тоже баг, только его почему-то никогда не чинили.

В четверг ему прислали новый билд. С пометкой: «не запускать вне тестового окружения».

Женя, конечно, запустил. Он всегда запускал. В этом, если подумать, и состояла его профессия.

В тот момент, когда он нажал Enter, монитор моргнул белым. Под ребрами прошел холодок — мерзкий, влажный, как когда лифт проваливается на этаж. А потом опенспейс, кулер с водой и вечно недопитый энергетик исчезли.

Женя стоял босиком на траве.

Трава была неправильная. Слишком зеленая, слишком одинаковая — каждая травинка как из одной ассетной пачки. Небо — градиент без единого облака. И перед глазами, в полуметре от лица, висело окно. Прозрачное. С текстом.

[Добро пожаловать. Уровень: 1. Здоровье: 10. Сила: 3. Класс: не выбран.]

— Оу, — сказал Женя вслух.

Первая мысль была не «где я» и не «как выбраться». Первая мысль, честная и профессиональная, была: «А билд-то сырой».

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

Моб нашелся быстро.

За холмом бродило нечто — кабан не кабан, тумба на ножках, серое, с красной полоской над башкой. При приближении полоска дернулась, над мобом всплыло:

[Пыльный Вепрь. Уровень: 2. Опасность: низкая.]

Женя подобрал палку — [Ветка. Урон: 1] — и полез в драку, как последний нуб. И тут же огреб. Вепрь боднул, окно мигнуло красным: [Здоровье: 4], и Женя понял, что «Опасность: низкая» — это по местным меркам, а по его собственным он в трех боданиях от смерти. Настоящей. Без респауна. Он проверять не хотел.

Он отбежал. Сел на камень. И начал делать то, что умел лучше всего.

Наблюдать баги.

Вепрь, потеряв цель, потрусил обратно — к своей точке. К той самой траве, где стоял всегда. Дошел до невидимой границы, ткнулся в нее, развернулся. Пошел назад. Дошел до другой границы. Развернулся. Туда-сюда. Патрульный маршрут. Между двумя точками — метров десять.

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

— Ага, — сказал Женя. — Патфайндинг.

Вот оно. Родное, знакомое, тысячу раз виденное в багрепортах. Кривой поиск пути. Моб не думает — он идет по скрипту, обходя препятствие по кратчайшей заготовленной дуге. А раз так, значит, его можно застрять. Заклинить между геометрией и границей зоны, как он сотни раз заклинивал ботов в тестовых сборках.

Он начал таскать камни.

Потный, злой, с ветку-палкой наперевес, он выстроил из валунов узкий коридор — воронку, — так, чтобы патрульный маршрут вепря упирался в тупик, а обходная дуга влево вела прямо в каменный мешок. Работал два часа. Или три. Или пять — кто считал, часов тут не выдавали.

Потом сагрил вепря. И побежал.

Вепрь понесся следом, дошел до камня, взял, как всегда, левее — и влетел ровно в воронку. Ткнулся в стену. Скрипт сказал «обойди слева». Слева стена. «Обойди слева». Стена. Тварь заметалась, задергалась, застряла в невидимой петле между собственной тупостью и геометрией, которую Женя ей подсунул.

А застрявший моб не бодается.

Женя подошел сбоку и методично, тычок за тычком, ветка за веткой, разобрал вепря на опыт. Тот даже не сопротивлялся толком — крутился в багнутой петле, беспомощный.

[Пыльный Вепрь повержен. +40 опыта.]
[Уровень 2! Сила: 4. Открыт навык: Анализ.]

Навык «Анализ» оказался золотом. Наведешь на объект — и система вываливает то, что обычно скрыто: скрипты, тайминги, слабые места. Женин собственный, встроенный багтрекер. Он чуть не заплакал.

Дальше пошло веселее. Вепрь-то не один был.

Он респаунился. Через минуту после смерти, на той же точке. Тот самый нечиненый баг, который в конторе никогда не правили. Женя стоял над своей каменной воронкой и понимал: у него в руках ферма. Бесконечный моб, бесконечный опыт, воронка, в которой этот моб беспомощен.

К вечеру (условному — свет просто тускнел, будто кто-то тянул ползунок яркости) он был уже пятого уровня.

[Уровень 5. Сила: 8. Здоровье: 26. Навыки: Анализ, Рывок, Торг.]

И тут пришла цена.

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

[ОШИБКА: сущность вне зоны. Уровень: ??]

Оно посмотрело на Женю. И заговорило — не голосом, а прямо окном, буквами, поплывшими в воздухе:

[Ты не игрок. Игроков тут нет. Ты — тестировщик. Мы тебя ждали.]

У Жени под ребрами снова дернулся тот холодок. Влажный. Лифтовый.

— Кто «мы»? — спросил он вслух.

[Билд сырой. Ты сам сказал. В нем тысячи багов. И только через баги отсюда есть выход. Найдешь дорогу — выйдешь. Не найдешь — станешь мобом. Как вепрь.]

Сущность повернулась. Пошла обратно за холм. У самого гребня остановилась, и последнее окно повисло в темнеющем воздухе, ровно, спокойно:

[Шаги для повтора неизвестны. Воспроизведи сам. Уровень 0 ждет.]

Женя стоял босиком в неправильной траве, пятого уровня, с веткой в руке и фермой за спиной.

Он достал бы блокнот, если бы блокнот был. Записал бы: «Баг критический. Выход из игры не работает. Обход — искать другие баги».

Вместо блокнота он открыл ладонь и активировал «Анализ», наведя его на весь этот слишком зеленый, слишком одинаковый мир.

Система задумалась. А потом высыпала первую строчку.

[Обнаружено дефектов: 1247. Показать первый?]

— Показать, — сказал Женя Котов, тестировщик, и впервые за четыре года улыбнулся своей работе. — Показывай все.

1x
加载评论中...
Loading related items...

"关上门写作,打开门重写。" — 斯蒂芬·金