Бот - Максим Кидрук
Шрифт:
Интервал:
В углу экрана зависают итоговые титры:
00:19.16
SHOTS: 840|973
TARGETS DESTROYED: 20
— Да, это круто, — признал Тимур. — Но ничего бы не вышло, если бы свели к минимуму количество независимых параметров, поступающих из внешнего мира.
— Погоди, сейчас будет самое интересное.
Наблюдательный пункт. Довольные американцы, просмотрев замедленный повтор, пораженно качают головами, улыбаются, похлопывают по плечам Вилла Ноланда. Некоторые даже аплодируют. Кейтаро от гордости надулся, как индюк. Стоит поблизости довольный, заложив руки за спину.
Вдруг к нему подбегает Ральф и что-то взволнованно шепчет на ухо. Они отходят в сторону и вглядываются в тестовую площадку. Там что-то происходит. Лицо Кейтаро вытягивается. Он отдает приказ Ральфу. Ральф Доэрнберг быстро спускается с помоста, прихватив с собой «ремингтон». За ним идут два чилийских охранника. Тем временем Джеп подходит к американцам и торопливо уводит их с наблюдательного пункта.
— Что там случилось? — спросил Тимур.
Ральф кивнул на экран.
Картинка снова меняется. Посреди экрана моргает: «ЭКСПЕРИМЕНТ ЗАВЕРШЕН». Камера наплывает на ботов, которые стоят у тупика, окруженные бетонными блоками. Один из них вскакивает на спину другому, дотягивается до кронштейна с пулеметом. Подтянувшись, бот дотягивается до поворотной системы и несколькими ударами разбивает ее. Пулемет наклоняется, жужжит и валится на землю.
«ЭКСПЕРИМЕНТ ЗАВЕРШЕН». Тогда что за хрень с этеми ботами?
В это время из-за брони появляются Ральф с охранниками, они боязливо направляются к ботам по коридору. Боты пытаются добраться до второго пулемета. Но он находится выше первого и прежним способом его не достать.
Эксперимент завершен? Да что вы!
— Можно выключать, — сказал Ральф. — А вот в этом файле алгоритм, по которому действовали боты.
Тимур наклонился к монитору. С удивлением отметил, что интерфейс дебагера ему неизвестен. К счастью, синтаксис напоминал С++, поэтому с кодом проблем не было.
int TEST_010524 ()
{
Targets DOLLS (System.GetTargets (gt_Front, gt_Type1));
if (!DOLLS) return 0;
int NT = DOLLS.GetTargetsNumber ();
for (int i=0; i<NT; i++)
{
System.MoveToObject (DOLLS[i], 1, 0, 0);
DOLLS[i].Destroy;
}
System.Macros ();
Clear ();
if DOLLS.AllDestroyed () return 1
else return 0;
}
Все было довольно просто. В памяти создается место для переменной, которую называют DOLLS[69]. При помощи подпрограммы Get-Targets[70]анализируются объекты на площадке и в ячейки DOLLS вводятся координаты объектов типа gt_Type1, то есть манекенов. Оператор GetTargetsNumber[71]задает количество мишеней и последовательность их уничтожения. После запускается цикл, на каждом шаге которого бот уничтожает одну из целей. Этими действиями руководят подпрограммы MoveToObject[72]и Destroy[73]. После того как все цели уничтожены, производится очистка памяти. Непонятно Тимуру было лишь предназначение оператора System.Macros.
Просмотрев код, Тимур вдруг понял, что программа не предусматривает уничтожение пулеметов ботами. В их сознании (точнее, в виртуальном видении мира) М134 просто не существовали! Боты должны были реагировать лишь на манекены. Несмотря на это, «малыши» нашли «Миниганы». Получается, что боты пытались уничтожить пулеметы через две минуты после того, как сама тестовая программа была стерта с их мозговых плат.
— А теперь взгляни на визуализацию результатов энцефалографии.
На экране появилось новое окно, разделенное пополам. Одну часть занимало 3D-изображение мозга, на второй демонстрировалась видеозапись боя. Двадцать секунд от начала боя платы в мозгу светились красным, то есть напряженно работали. Остальные части мозга оставались серыми, то есть инертными. Порой кое-где проступали розовые пятна. «Уничтожив» последний манекен, боты замерли.
— В этом месте процедура удаляется с мозговых плат, — уточнил Ральф.
Все части 3D-изображения мозга стали пепельно-серыми. Тимур перевел взгляд на запись с видеокамеры. Бот взбирался на плечи другому, чтобы дотянуться до пулемета. Программист снова подумал: программа ни при чем. Снова взглянув на 3D-изображение мозга, Тимур похолодел. Мозг оставался пепельно-серым, за исключением центральной части платы — она стала ярко-красной. Бот не думал, он подчинялся импульсам с процессора.
Тимур оказался в тупике. Он верил, что боты не способны реализовывать сложное поведение, запрограммированное существо физически не способно на такое. В то же время факты подтверждали обратное: мальчиками руководила программа.
Ральф тем временем уже поглядывал на часы:
— Закругляемся, мы уже опоздали на ужин. Через пару минут Джеп прикажет запереть двери и опустить жалюзи на окнах в жилом корпусе.
— Один вопрос: до приезда американцев ботов выпускали на площадку?
— Конечно. Предварительно мы дважды устраивали им тренировку. Только вместо пулеметов на кронштейнах были установлены пейнтбольные пушки.
— Были какие-то отклонения в поведении?
— Никаких.
Понедельник, 17 августа, 08:55 (UTC –4)
«DW», жилой корпус
Ночь с воскресенья на понедельник прошла без приключений. Ограда была под напряжением, ботов ждали. Но они как сквозь землю провалились.
После завтрака Кейтаро собрал группу на плановое совещание.
— Как успехи, Тимур? — без предисловий спросил он.
Программист сложил руки на столе.
— На мой взгляд, причиной побега и предшествующих событий не мог стать сбой в работе мозговых процессоров. То, что осуществили боты, нельзя назвать сбоем. Но то, что во время побега ботами управляли сигналы с мозговых плат, сильно затуманивает картину. Сегодня я продолжу расследование, подробнее анализируя коды, но на данный момент я не до конца понимаю, что от меня требуется…
— Если бы мы понимали, тебя бы сюда не вызвали. Мы собрались для того, чтобы всем вместе попытаться отыскать причины, приведшие к побегу ботов, — холодно прервал его Джеп. — Но независимо от того, найдем мы их или нет, на тебя, Тимур, ложится задача написать программу, которая вернет беглецов в лабораторию. Шестьдесят три «малыша», оставшихся в «яслях», поддаются перепрошивке. Мы сохраняем доступ к их мозгу. Нет никаких причин думать, что с беглецами будет иначе.
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!