— Смотри. — Протянул он мне гаджет. Текст на фотографии тоже был вполне нормальным. — Эйдос видит, что происходит по ту сторону экрана. Если он не захочет, его нельзя будет заснять физически. В логах и коде тоже изменений нет, так как он внедряется напрямую в оперативную память и все под собой подчищает потом.
Я промолчал, переваривая услышанное. Получается, теперь у меня под боком, появился идеальный онлайн-шпион праведного разлива, способный обходить любые системы фиксации. С таким карманным божком Пентагон на раз-два ломануть можно, если задаться целью. Главное — уговорить духа, что это дело благое и для общества исключительно полезное. Но если отбросить шутки в сторону, то схема Эйдоса была почти идеальной.
— Пойдут слухи. — Мрачно заключил я. — Как бы он ни запугивал людей божьей карой, они рано или поздно начнут трезвонить о странных событиях в игре. Льюис рассказал о странном Робе совершенно не задумываясь. Эйдосу нужно менять методику, либо вообще перестать это делать, пока мы не привлекли лишнее внимание.
— Это да. — Покорно вздохнул Коул, соглашаясь с доводами разума. — После случая с Льюисом мы таким дерьмом больше не занимались. Честно, после всего что ты для меня сделал я врать не буду. Просто наблюдали, как вообще работает схема взаимодействия. Собирали статистику.
— И как? — Я откинулся в кресле, скрестив руки. В то, что парень не врал я верил. Но вот недоговаривать всей правды, это не значит, соврать. Все-таки нужно еще работать над преданностью. — Довольны результатом своего социального эксперимента? Искоренили грех вафлизма в отдельно взятом организме?
— Ну… — Задумчиво пожевал губу Коул, глядя в монитор. — Поработать, конечно, еще есть над чем. Но в целом я за него рад. Вырвали из трясины. Горжусь им.
— Скоро сможешь сказать ему это лично. — Усмехнулся я, отрывая зад от удобного кресла.
— Лично? — Непонимающе уставился на меня Коул, хлопая глазами. — Ты что, реально взял на работу этого вафлиста?
— Тоже мне, мачо-альфач нашелся. Забыл уже, как сам сопли тут развешивал? — Я снисходительно похлопал его по плечу, заставив вернуться с небес на землю. — И постарайся больше не лезть в чужие компы без моего ведома. По крайней мере, если уж делаешь это, то делай так, чтобы не подставлять студию под удар.
— Да, Нейт, прости. — Коул виновато опустил глаза на стол. — Мы будем аккуратнее. Обещаю.
— Вот и славно. — Я подобрал со стола скрепленные листки, развел руками. Кивнул на монитор, где до сих пор пучил глаза Роб. — Ну, чего мы ждем? За работу! Лаунчер сам себя не допишет, или ты в игрульки играть сюда пришел?
***
Лаунчер для «Майнкрафта» был почти готов. Хотя, учитывая заложенный в него функционал, вернее было бы назвать его не просто лаунчером вовсе, а упрощенной версией Стима… Или же, в моем скромном исполнении — Свомпа. Всю следующую неделю, пока Дэвид вместе с Синди крутились по моим поручениям а Моррисон занимался градостроительством для будущих злых птиц, мы занимались допилкой свомпа.
И это задачу можно было справедливо считать тринадцатым подвигом Геракла от мира АйТи. Ведь для стабильной работы клиента нам пришлось решить как минимум пять сложных, неочевидных проблем.
Первое, с чем мы столкнулись за все время разработки, и одновременно самое простое — архитектурно клиент не должен был ограничиваться одним только Майнкрафтом. Ибо в противном случае, когда мы решим расширяться, будущий магазин придется переписывать почти полностью с нуля. А это неминуемо уничтожит старый клиент, и у игроков, уже купивших игру, начнутся проблемы с доступом Свомп казино… Простите. В Свомп. Решение нашлось довольно простое — каждой интегрированной игре мы просто решили присваивать уникальный апп-айди, персональный идентификатор в базе данных Свомпа. Допустим, «Майнкрафт» получил почетный АйДи «1». Теперь, когда игрок решит скачать и обновить игру, клиент просто обратится в нужный изолированный раздел сервера, закрепленный за игрой под номером «1» и качнет оттуда все необходимое. Грубо говоря, мы выделили отдельную, защищенную комнатку для каждой будущей игры.
Второй, куда более серьезной проблемой стала сложность системы обновления. В свое время Гейб уловил, что накатить на игру новый патч подчас было сложнее и дольше, чем просто скачать уже обновленную версию заново. А это так себе решение, особенно когда нужно сохранить игровой прогресс и нервы. Поэтому, методом проб и ошибок, мы пришли к системе Манифестов и Хэшей. Манифесты — это специальные, зашифрованные файлы, хранящие подробную информацию о текущем состоянии игры. Собственно, их цифровые хэши. Поколдовав с настройкой серверной части системы, мы получили отличный результат: теперь при обновлении игры клиент быстро сравнивал манифест на ПК игрока и актуальный манифест на сервере, и вместо полной скачки всех данных, точечно загружал только измененные файлы.