Полночь, мозг хочет... У вас бывало внезапное чувство, что вам хочется чего-то такого, без чего вам будет плохо? Вот и у меня такое чувство возникло: захотелось поиграть в Morrowind. Очень захотелось. А тут, как назло, глючный линксисовский USB-вайфай-адаптер не позволяет скачать предмет счастья. Вообще у меня к этим «флешкам» не очень хорошие чувства. Была нормальная PCI-карта, но пришлось поставить на работе, а кабель к соседу кинуть не получается пока: в отпуске он.
Час ночи, а мозг требует. Адаптер больше 6 КБ/с не пускает, а то и вовсе в ноль работает. Раньше грешил на драйвера и «зверскую» систему, которую имел неосторожность поставить, но когда попробовал адаптер на Убунте, через полчаса скорость снова упала.
Два часа ночи, а мозг идёт на принцип. Симптомы перегрева налицо, но адаптер холодный. Уже появляются мысли обвинить старенькую материнку, но там тоже всё холодно. Точно, перегрев адаптера! Плюю на гарантию и снимаю пластиковый корпус. Холодный! Вставляю, включаю торрент, прикладываю палец... Печатать обожжённым пальцем неудобно, правда. Нагрелся за секунды до температуры жарки яичницы.
Три часа ночи, мозг требует мести. Ничего, чем можно охладить адаптер, дома нет: никаких кулеров, вентиляторов, радиаторов. Решение пришло внезапно. Водка! Бутылка в морозильнике лежала уже давно, несправедливо забытая хозяином. Система алкогольного охлаждения была помещена в пакет, чтобы не собирался конденсат, и расположилась вплотную к чипу... Ух! 10 МБ/с я не ожидал. Уже через пять минут на экране весело моргала инсталляция.
Четыре часа ночи, мозгу дурно. Игра не запускается.
Играем ночью с другом в Disciples. Я выбираю рыцаря смерти, и персонаж зудит: «Как пожелаете?» В силу своего воспитания, поздней ночи и долгой разлуки с милой, злобно отвечаю: «Раком!» Делаю ход, и рыцарь заставляет нас согнуться от смеха: «Я согласен!»
Шестилетний племянник очень любил поиграть. Чтобы оградить чадо от тлетворного влияния, первым делом мы поставили пароль на BIOS.
Первый пароль продержался дня три — племяш, стоя за спиной, умудрился его запомнить. Пароль поменяли и стали в момент набора выгонять дитё из комнаты. На этот раз пароль продержался чуть дольше, но как удалось подобрать девятисимвольный пароль, родители так и не поняли. Под угрозой снятия клавиатуры племянник раскололся: мама мыла полы и оставила на кнопках мокрые следы. Любознательному мальчику этого вполне хватило.
Сейчас ребёнок подрос, и мировую паутину спасает лишь то, что ему ничего не надо, кроме игр. Иначе, я так подозреваю, он давно бы хакнул всё, до чего дотянулся. А так всего лишь забанили на CS-серваках, потому что обвиняли в читерстве, хотя он и понятия не имеет, что это такое.
Каждый из нас тысячи раз сталкивался с некомпетентностью продавцов софта, которые сами не знают, что продают, но нахватались умных слов. Один случай мне запомнился навсегда.
Это было в далёкие времена, когда большинство программ ещё продавалось на дискетах, а первые сидиромы только начали появляться. Dune 2 занимала две дискеты, UFO: Enemy Unknown — четыре. Гуляя по компьютерному базару, в одном из ларьков, торгующих софтом, я нашел неизвестную мне игрушку: The Legend of Kyrandia. Решил уточнить её жанр у продавца.
— Это стратегия такая, — ответствовал продавец. — Типа «Дума».
Писал я как-то игру — чисто для души, проект некоммерческий. Так как в программе широко использовался объектно-ориентированный подход, то классов было море. Программа писалась уже довольно давно, и вне Студии я её не запускал, пока не надумал скомпилить и протестить релизную версию. Игра загрузилась, отрисовала карту, главного героя... который стоял, как истукан, решительно отказываясь перебирать ножками и идти, куда сказали. Подивившись, я запустил Студию, открыл проект и нажал F5 — игра запустилась, и герой бодро побежал к намеченной точке! Повторная проверка показала странную закономерность: герой соглашался выполнять указы только под бдительным надзором дебаггера Студии, вне родных стен которой он просто тихо стоял на месте.
Причина привязанности героя к дебаггеру крылась, впрочем, во вполне банальной ошибке. В конструкторе класса героя флажок Idle не был инициализирован значением false, и каждый раз, когда игра запускалась в дебаге, звёзды так удачно складывались, что на область памяти, где лежала эта переменная, приходилось нулевое значение. Когда же игру запускали в «полевых условиях», адреса менялись, и на флажок Idle попадал какой-то ненулевой мусор, который герой интерпретировал как true, то есть указание ничего не делать.
Скинул я как-то жене, работавшей до декрета, игру на флешку. Коммерческий директор, увидев мою супругу за игрой, выговор делать не стал — ходил вокруг полдня, а потом решился попросить:
— Маш, а поставь мне, пожалуйста, тоже программу, где надо козочек и курочек выращивать.
Жена долго смеялась, а этот коммерческий директор потом неделю из-за компа не выходил — хозяйство обустраивал.
Возвращаясь с работы, порой вижу припаркованную на тротуаре «Тойоту» светло-голубого цвета. На заднем бампере у неё небольшая табличка, радующая меня каждый раз, что я её вижу:
IDDQD There is no place like 127.0.0.1
Каждый раз мне интересно: сколько ещё людей помнит, что это значит?
Играли мы как-то с другом в одну браузерную онлайн-игрушку. Месяца через три надоело совсем. Нарыли в инете бота для неё: сам кликает по карте и собирает бонусы, разбросанные по галактике. Бонусы мелкие, но если собирать их долго, можно неплохо подняться. Бот был написан одним из админов, и как только код утёк в паблик, на карте что-то поменяли, и болванчик стал кликать всегда в одну точку, а то и вообще не двигался, хотя на бонусы исправно щёлкал.
Вспомнили, что где-то не компе валялась ранняя версия известной программы, управляющей курсором мыши. Тогда там ещё не было всяких наворотов, только самые простые функции: клик в точку экрана, перемещение, двойной клик, подождать столько-то секунд. Стали тестировать. Опытным путём забили цикл зигзагообразных перемещений по карте и запустили кликер вместе с работающим ботом. Радости не было предела: он работал! Десять минут созерцания полной автоматизации сбора бонусных коробок пробудили аппетит, и мы пошли пить чай с ништяками. По возвращении нас постигло разочарование: сервер перезагрузился, соединение оборвалось, на экране всплыло окошко с двумя кнопками: «Отмена» и «Подключиться снова». Бот кликал по серому экрану без всякого толку.
Решили предусмотреть такой вариант. Алгоритм был переписан: траектория изменена на более оптимальную, пересмотрены величины пауз между кликами, в середине и начале цикла добавлены три быстрых клика на окошки с ошибкой соединения и на кнопку переподключения. Потестировали с ручным отключением интернета — работает. Оставили всё это дело на ночь.
С утра бот продолжал летать. Остановили процесс, кликнули на ангар посмотреть, сколько насобиралось добра. Разочарование: при активности только на карте звёздного неба коннект с игрой терялся. Получалось, что кораблик летал на карте из кеша, и никаких данных на сервер не передавалось.
Была написана версия цикла 3.0. Добавлены клики на переключение окон Мозиллы, клик на меню ангара, клик на главную, переключение на вкладку с картой, продолжение сбора коробок. Все ошибки, зависящие от игры, были учтены.
Сбор коробок продолжался около трёх ночей. Богатство росло, а интерес уменьшался. Потом и вовсе перестали заходить в игру: комп ночью шумел слишком сильно.