Наследник $$$ уровня V (СИ), стр. 25

Паскаль молча придвинул кружку к нему. Рубен понюхал содержимое и так же молча отодвинул обратно.

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

Матео некоторое время наблюдал за меняющимися цифрами, после чего довольно откинулся в кресле.

— Признайте, название я придумал отличное. «Паучок». Коротко, понятно и дружелюбно.

— Оно фактически неверное, — сообщил Игнасио.

— Почему?

— Пауки создают паутину, а не путешествуют по ней в поисках страниц.

— Они по ней ходят.

— По собственной. Наша программа не создаёт интернет.

— Пока не создаёт, — многозначительно произнёс Матео. — С нашим начальником я бы ничего не исключал.

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

— Хорошо. Пусть остаётся «Паучок». Мне всё равно, как называется эта тварь, если она перестанет собирать один и тот же магазин.

— Она не собирает один и тот же магазин, — возразил Игнасио. — Это разные страницы.

— Тут двести восемьдесят тысяч адресов.

— Двести восемьдесят семь тысяч четыреста шестнадцать.

— Спасибо, теперь мне гораздо легче.

Игнасио придвинулся к монитору и быстро пробежал взглядом по строчкам.

— У каждого товара есть календарь доставки. Календарь создаёт ссылку на следующий день, потом на следующий, потом ещё на один. Теоретически программа может уйти вперёд на неограниченный срок.

— Насколько вперёд она уже ушла? — спросил Рубен.

Пальцы Игнасио застучали по клавиатуре.

— До двадцать третьего июня две тысячи семьсот сорок первого года.

За столами повисло молчание.

— Есть хорошие новости, — наконец произнёс Матео. — Магазин планирует пережить всех нас.

Паскаль придвинул к себе клавиатуру и начал вносить изменения в список задач.

— Ограничиваем календарные ссылки, отсеиваем повторы, запрещаем бесконечные параметры в адресах. Что ещё?

— Нужно научить программу отличать полезный текст от мусора, — сказал Рубен. — Сейчас она сохраняет всё подряд.

— Это решаемо, — отозвался Игнасио. — Текст, повторяющийся на большинстве страниц одного сайта, получает меньший вес. Уникальные блоки больший.

— Теперь нормальными словами, — попросил Паскаль.

— Я говорю нормальными словами.

— Нормальными для человека, который иногда выходит из здания.

Игнасио окинул его взглядом, полным терпеливого превосходства.

— Зачем мне выходить из здания? Еда находится в кухне, санитарный узел в конце коридора, климат поддерживается кондиционерами. Всё необходимое для существования уже здесь.

— Солнце, — подсказал Рубен.

— Оно вызывает старение.

— Женщины, — добавил Матео.

— Они тоже.

Рубен задумался и медленно кивнул, признавая справедливость довода.

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

— Между прочим, у нас есть проблема посерьёзнее календаря, — объявил он. — Если завтра сеньор Виктор спросит, готова ли игровая платформа, что мы ему ответим?

— Да, — сказал Игнасио.

— Она не готова.

— Тогда нет.

— Я пытаюсь начать обсуждение.

— Ты задал вопрос, предусматривающий два варианта ответа. Я выбрал неправильный из-за недостатка исходных данных. После уточнения выбрал правильный.

Паскаль тяжело вздохнул.

— Что именно не работает?

— Платформа работает, — сказал Матео. — Не работают игры.

— Тогда это проблема разработчиков игр.

— У нас пока нет разработчиков игр.

— Значит, нет и проблемы.

— Завтра мы собираемся приглашать их на конференцию! — Матео ткнул пальцем в монитор. — Они придут, увидят пустую платформу и спросят, зачем мы их позвали.

— Чтобы они её заполнили, — пояснил Игнасио. — В этом смысл конференции.

— Люди не любят приходить в пустой ресторан.

— Хорошее наблюдение, — поддержал Рубен. — Особенно когда им предлагают самим приготовить ужин.

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

— Почему она постоянно требует еды?

— Так устроена игра, — объяснил Матео. — Игрок должен возвращаться, собирать урожай, кормить животных и развивать хозяйство.

— Я кормил её десять минут назад.

— В виртуальном мире ускоренное время.

— Она съела годовой бюджет деревни!

— Это неправильный баланс.

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

— А это что?

— Социальная механика, — гордо сообщил Матео. — Игрок приглашает друзей, друзья регистрируются, Вида растёт.

— Или игрок решает, что корова слишком требовательная, и закрывает игру.

— Ты просто не умеешь эмоционально привязываться.

— К пиксельной корове?

— Это начинается с коровы. Потом появятся куры, свиньи, редкие лошади. Можно продавать инструменты для фермы, ускорители, особые семена.

Рубен щёлкнул мышью и открыл таблицу внутренних покупок.

— Здесь есть золотая кормушка стоимостью пятьдесят песо.

— Предмет роскоши.

— Она приносит пользу?

— Нет.

— Тогда кто её купит?

Матео снисходительно улыбнулся.

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

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

Счётчик монет в углу экрана замерцал и превратился в длинный ряд девяток.

— Что ты сделал? — насторожился Паскаль.

— Получил золотую кормушку.

— Ты взломал игру?

— Нет. Я изменил значение награды в запросе, который отправляется на сервер.

Матео перестал улыбаться.

— Так нельзя.

— Почему? Ваш сервер согласился.

— Игрок не должен менять награду!

— Тогда не следовало ему доверять.

Игнасио снова нажал несколько клавиш. На ферме появились сотни коров. Они заполнили участок, перекрыли грядки и начали дружно мычать. Компьютер задумался, вентилятор внутри корпуса набрал обороты.

— Прекрати! — Матео потянулся к клавиатуре, но Игнасио отодвинул её. — Ты сейчас положишь тестовый сервер.

— Уже положил.

Ферма застыла. Через секунду появилась белая страница с сообщением об ошибке.

Игнасио удовлетворённо кивнул.

— Теперь у вас есть проблема.

Паскаль закрыл лицо ладонями.

— Завтра конференция.

— Не завтра, — напомнил Рубен. — Завтра сеньор Виктор спросит, готова ли платформа. Конференция позже.

Паскаль убрал руки и посмотрел на него.

— Спасибо. Это существенно снизило моё желание выброситься из окна.

— Мы на первом этаже.

— Вот именно. Даже это не поможет.

Матео лихорадочно проверял журналы сервера.

— Хорошо. Все покупки проводим только на нашей стороне. Клиент отправляет действие, сервер сам считает награду. Ограничиваем количество запросов от одного пользователя. Добавляем проверку входных данных.

— Это следовало сделать сразу, — сообщил Игнасио.