bash.im ithappens.me zadolba.li

Игры

13486

Компьютер решил развеяться

Сижу на работе, скучаю, гоняю игрушки, никого не трогаю.

Звонок. Соседка по квартире.

— Привет, тут у тебя компьютер сам работает! Там на нём какая-то игра идёт, он сам в неё играет и шумит на всю квартиру! Что делать?!

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

Она прекрасно знала, что у меня ночная смена, я уходя попрощался. Она стучала в дверь, звала того, кто там играет, потом не выдержала и зашла в комнату.

Сижу теперь, думаю, хорошо хоть она не взяла инициативу в свои руки и не стала святой водой его окроплять.

13434

Совпадение? Не думаю!

Вступлюсь за честь коллег из геймдева.

Во-первых, где вы видели, чтобы обычный рандом был с нормальным распределением? Спору нет, есть всякие мат. библиотеки, позволяющие привязать его к любой функции распределения, но кто же их будет специально искать и использовать, не зная, что это такое? Бывают глупые ошибки типа произведений рандома (или рандома от рандома).

Во-вторых, сессия для инициализации рандома используется в одиночных играх с целью борьбы с читерской магией load-save. Другого смысла постоянно дёргать seed просто нет.

В-третьих, игрокам вообще много что кажется, и они с радостью это интерпретируют как факты. Плюс — confirmation bias. Я помню случай, когда игроки были свято убеждены, что по случайному номеру в ссылке для предотвращения кеширования можно было определить успех ремонта предмета. И никого не смущало, что к скрипту шли десятки обращений в секунду и от момента генерации ссылки до последующего запроса рандом дёргался более тысячи раз.

Это же касается вообще любых якобы повторяющихся паттернов в рандоме. И «вычисления алгоритма работы». Чего его вычислять — всё есть в открытом доступе, почти всегда используется штатная функция выбранного языка разработки. Только никому это знание ничего не даёт.

Искренне порадовался аргументу про сокращение выборки. Ясное дело, что чем меньше выборка, тем более она неравномерна — это очевидно. Нетрудно получить «решку» в 8−10 случаях из 10, шанс на это чуть более 5%. А вот получить её в 80−100 случаях из 100 уже вряд ли удастся хотя бы раз за миллион попыток.

P.S. Ну, а парень из предыдущей истории просто не учёл, что по умолчанию большинство генераторов псевдослучайных чисел инициализируются от текущего времени с точностью до секунды. Так что, запустив одну и ту же программу на разных машинах, вторая из которых отстаёт примерно на пару секунд, можно получить полностью идентичные результаты.

13432

Fair dice roll

Великий корейский рандом, говорите? Всего лишь особенности работы генератора псевдослучайных чисел. Это очень хорошо, что вы только IP с его помощью формируете и ничего более, куда печальней дела обстоят в геймдеве, я вам скажу.

Уже более пятнадцати лет я наблюдаю пляски разработчиков игр вокруг рандомизаторов, и мне слегка несмешно временами, такое ощущение, что матчасть даже не пытались изучать:

  • if (rand(10000)==1) и прочие подобные глупости при использовании генератора с нормальным распределением.

  • Выбор по таблице добычи при помощи генератора с нормальным распределением. Если сюда добавить ещё разный шанс трофеям, то для некоторых позиций вырисовывается совсем запредельная схема.

  • Генерация энтропии на основе данных игрока/сессии/сервера. Обычно легко прослеживается и явно заметна.

  • Выборка случайного элемента из некоторой части списка для придания «большей случайности». За пределами добра и зла. В одной известной игрушке про убийство монстров это привело к тому, что можно было сутками пытаться выбить шмотку, которой просто не может выпасть в текущей сессии.

  • Скрытая манипуляция выборкой под видом случайного выбора.

  • ...и даже сочетание всего вышеперечисленного.

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

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

13428

Опасные игры

Дело было в середине девяностых. Учились в универе в нашей группе три товарища. Нещадно прогуливали пары, особенно по непрофильным предметам. Мотивировали тем, что работают программистами в одной крупной софтверной фирме, и мы все им немного завидовали.

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

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

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

И вот прошли все, остались только те три геймера. Взглянул на них «Вассерман» с улыбкой и сказал: «Ну что ж, для вас у меня особый экзамен, чем весь семестр занимались, то и будете сдавать». И дал он им три задания — завалить его в Quake в мультиплее трое против одного, побить его рекорды на всех трассах в NFS II и пройти созданный им уровень в Warcraft II (если уровень не проходится с первого раза, то на пересдаче даётся новый уровень). Сдавали они этот экзамен всю сессию долго и упорно, и однажды кто-то из студентов или преподавателей не выдержал и спросил его, зачем он их так мучает, они же ведь работают. «Знаю я, как они работают, — ответил „Вассерман“. — Я генеральный директор той фирмы, в которой они якобы работают».

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

13395

Попади в таблицу, если сможешь

Я один из многих, кто помнит Tetcolor. В моей семье тоже была своя «секретная» стратегия для набора большого количества очков, но проблема оказалась в другом…

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

Шок был неописуем. То ли произошёл сбой, то ли это так было задумано, то ли автор просто не подразумевал, что будут такие игроки...

С этих пор целью людей стало не набрать как можно больше очков, а максимально приблизиться к злополучному барьеру (следует отметить, что на высоких уровнях очки начислялись даже за просто положенную фигуру). Рекорд — 99987 очков. Держится уже лет пятнадцать. А таблица с тех пор постоянно бэкапится.

13353

Засранец в заложниках

Футбольный менеджер от всемирно известной студии, подарившей миру «Хитмана». На самом интересном месте ловлю баг. А дело вот в чём…

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

По окончании «триала» он же вскрыл второй баг. Здесь принято после отставки главного тренера прерывать все переговоры и отменять все не до конца оформленные трансферы (если в торгах участвуют две команды, это автоматическая победа второй). А так как главным считали его… В общем, сорвались с крючка несколько сделок на пару десятков миллионов фунтов, а я схватился за голову.

Выход был найден… в третьем баге. Игроки покидают клуб не ровно со стартом игрового дня, а чуть позже. Если в это время успеть выбрать игрока и щёлкнуть в меню «прогнать завтра же», то дата расставания переносится на завтра.

Удерживаю засранца в заложниках третью неделю. Сложные выдались переговоры…

13309

Гуляй, софтина!

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

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

Это не вирус, но это известная проблема. Мы уже отослали файлы на подтверждение разработчикам антивирусов. В качестве временного решения вы можете удалить антивирус.

С уважением, cлужба поддержки.

А ведь кто-то их послушает…

13301

М-м-монстроидальная ностальгия

Студенческая общага, отдельно взятая комната. Все на разных специальностях, у каждого свой круг общения, свои вкусы и интересы. Игры в основном довольно свежие — один часами выносит мид, второй может до утра сидеть на сайте с флеш-играми, третий предпочитает отстреливать кровососов на Зоне, четвёртый в лице серба-уголовника терроризирует американский мегаполис… В общем, по вечерам комната превращалась в дурдом.


Захотелось мне на днях вспомнить детство. Добыл «Нереальный турнир» 1999 года, поставил, бегаю…

— Unreal?

— Угу…

— Дай установщик!

Спустя пятнадцать минут:

— А давай по сети?

— Давай!

Бегаем вдвоём, синхронно материмся. Один из соседей отрывается от монитора:

— Что это у вас? Unreal?

— Он самый.

— А дайте установщик!

Через двадцать минут синхронного мата становится больше. Выходит из мида третий:

— Народ, что здесь происходит? Вы по сетке рубитесь?

— Да, вот флешка с установщиком. Присоединяйся!

Сетевые бои быстро стали традицией.


А сегодня к нам аккурат во время очередного заруба пришли соседи — ярые поклонники танковых боев:

— Народ, ну что за дела?! Вы каждый вечер материтесь! Вы уже зае… (Пауза.) Unreal?

— (Хором.) Да!

— А дайте… (В сторону просителей летят сразу две флешки.) Эмм, спасибо.

Через двадцать минут из-за гипсокартонной перегородки, которую здесь почему-то называют стеной, начинают доноситься подозрительно знакомые звуки.


Воистину, классика вечна!

13270

Солнце ещё высоко

Сижу в маленьком аутсорсинговом офисе. У клиентов всё хорошо, уходим с работы, не задерживаясь. Как и положено специалистам, страдаем ерундой XXI века: у обоих в социалке по ферме разного формата.

До конца дня 20 минут. Я, вполголоса:

— Чёрт, осталось 20 минут, у меня ровно через 20 минут 15 секунд исследование доделается… Вот ведь гадство!

— Ну да, а у меня тоже как раз через 20 минут цыплята жрать захотят, — говорит инженер рядом.

Вот сидим и думаем: радует, что повод задержаться хороший, а не аварии типа «эпик фейл»!

13251

Из ружья в ногу

Давеча ставил знакомому систему. Просто по просьбе — далёк я от IT и от эникейства. Да, каюсь, сделал чуть под себя, но всё же считаю, что хорошо: всё поставил, красивости выкрутил на минимальный нужный глазу уровень (машинка не свежая), антивирус — простой жёлтый, но для дома достаточный… Пользователя завёл отдельного — всё же считаю, что администратор должен быть запаролен и не использоваться ни для чего, кроме как установки, и выдавать запрос на неё, чтобы у человека в голове мелькало: «А я точно хочу себе в ногу выстрелить?» Рассказывал, почему так делаю, не просто ставил. Вчера увидел машинку снова — сидит под админом, куча даунлоадеров (и не только), Адблок выкинут: «А там ссылки всякие интересные, что скачать…» Ещё один человек в списке «даже за пиво не помогу».

До этого семейка одна попала туда же. Настроил, сказал: «По рукам сыночку за игрушки без спросу, сами пароль введите и ставьте, если придумает, как его узнать или сбросить — молодец, думать начал». А сыночку — «Вот тебе список сайтов — там проверенные репаки, если уж на Стим уже в этом месяце не дают». Образ снял и ушёл. Через неделю — «Ой, а у нас всё сломалось». Прихожу. Куча даунлоадеров, рекламы, всякой фигни… Держась за голову, слышу вкрадчивый голос: «У нас сынок просил пароль, мы ему дали…» Из ружья в ногу. Потом удивлялись, чтой-то я матерился, вычищая всё четыре часа. Из образа развернуть? «Нет, у нас там информация на рабочих столах, нам долго её собирать». Попутно снова читаю ликбез по вирусам, по безопасности при скачивании программ, а главное — смотрю я в честные глаза сыночка, между прочим, школьника уже, и понимаю: нужна ему «форточка» десятая, да так, чтобы ставить всё только из магазина приложений.

И таких «сыночков» — большинство. Подрастающее поколение видит только слово «скачать» в баннере поперёк страницы. Для них айфоны без джейлбрейка, для них виндофоны, с которыми они обращаются так: «Не работает — ничего, скачаю из магазина снова, с пятого раза что-то да встанет». Поколение 20-летних сейчас, наверное будет последним, которое что-то ещё что-то «пилит ручками» в своих андроидофонах и любовно растит домашние линуксы — на пробу. Будет и всплеск важности эникеев для рынка, будет и ответ производителя — закручивание гаек и упрощение. И будут наши внуки приходить к нам и спрашивать: «Деда, а правда, что вы когда вирус хватали, вы его лечили, а не выбрасывали устройство?..»

13231

Кесарю — чижевское

Хоть я и юрист, я регулярно почитываю IT happens. И недавно вспомнил, что и у меня есть история из мира IT, которую я могу рассказать.

Дело было в далёком 1997 году, мне было десять лет, и я вовсю развлекался своим первым компом с Pentium 133 на борту. Немножко программирования, изучение винды и, само собой, игры. Играл я по вечерам, сделав уроки, и во время, когда случилась эта история, в Caesar III.

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

Прошло несколько недель. Однажды, когда моя мама ушла в детскую укладывать спать моего младшего брата, снова начались сбои. Внезапно смутная догадка посетила меня, и я направился в комнату. Открыв дверь, я увидел её — люстру Чижевского, подвешенную к потолку. Уже зная, что я прав, как во сне я наблюдал непрерывный цикл: щёлк — две секунды — щёлк — две секунды. Не слыша вопросов матери, почему я им мешаю, я выключил аппарат и побежал к компу.

Да, это была она. Да! Я прибежал снова в детскую, снова включил люстру, снова к компьютеру — это она. Счастье десятилетнего мальчишки, который нашёл причину своих ежевечерних страданий, невообразимо.

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

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

13229

Final Fantasy вслепую

Люблю старые приставочные игры, до сих пор играю на «Фамикоме» и «Сеге», но больше всего мне нравятся игры для «Супер-Нинтендо». Сейчас приставка стоит больших денег и есть некоторые проблемы с картриджами, поэтому единственным выходом был эмулятор.

Как-то на днях я случайно забрёл в магазинчик, торгующий б/у комплектухой к компам, вспомнить молодость, так сказать. Руки зачесались, и в голове сразу родился План. Берём мамку на Атоме с пассивным охлаждением, покупаем корпус Mini-ITX в стиле игровой консоли, накатываем ось с эмуляторами, а в тумбе под телевизором как раз есть подходящее место. Я сразу взял мамку в сборе (Атом 1,6, два гига оперативки, встроенное видео с разъёмом VGA), винчестер был дома, корпус заказал в соседнем магазине. Расходов всего на 4000 рублей, а получилась отличная система для запуска эмуляторов и нетребовательных нативных игр.

Всё собрал, протестировал, эмуляторы работают. Красота! Поставил свою мегаконсоль на место, протянул провода. Разворачиваю телевизор, сморю на разъёмы: антенна, тарелка, несколько USB и HDMI, LAN, CI, SCART, AV, гнездо наушников, аудиовход…

А входа VGA нет.