В этом материале я бы хотел совместить небольшой рассказ о паре-тройке стареньких игр и о небольшом развлечении, связанным с ними. Все это о том, как я сам себе придумал занятие, но подошел к вопросу спустя рукава и быстро все свел на нет. Занятие это связано с играми, поэтому здесь я бы хотел рассказать и о них тоже. Предупреждаю, при чтении у вас беспрерывно будет возникать вопрос: «да что тут вообще молго пойти ТАК?»
Итак, мы все любим игры. Поэтому здесь и собрались, поэтому я оказался здесь. Вдобавок я люблю старые игры на старом железе. Железяка интересна как железяка. А старые игры я люблю не из-за ностальгии. Не менее половины из того, во что я играл за последние годы, увидены были мной впервые. Мне эти игры интересны сами по себе, как и многим другим.
Зачастую на одной платформе много портов с других платформ и практически всегда есть отличия. Иногда они обусловлены самим «железом» в виде технический ограничений или особенностей, иногда годом выпуска и изменившимися из-за этого требованиями, иногда бюджетом или конкретной студией-разработчиком. К тому же старые консоли в современных реалиях требуют поиска различных решений для подключения к современным ТВ, требуют ремонта, поиска сторонних аксессуаров. Да и просто какого-то подхода в организации пространства, когда этих консолей уже далеко не 2-3. Добавляйте к этому старые компьютеры и становится вообще тот еще ребус. Это своего рода микро-исследование каждый раз. Это интересно, об этом можно рассказывать, об этом интересно читать, смотреть.
Поэтому на всем известном видео-хостинге появляются такие каналы, как Digital Foundry, My life in gaming, The 8-bit guy. Хорошие ребята. И если тематика интересна, то вряд ли вы о них еще не знаете.
В какой-то момент в мой наивный разум пришла мысль совместить несколько дел — желание рассказывать об описанном выше (в формате видео, потому что такое нагляднее именно показывать видеорядом), попутно исправить проблемы с речью, и научиться терпимо-нормально говорить в принципе. А также проверить на сколько меня хватит.
Дело в том, что много звуков и конкретных слогов я выговариваю крайне плохо, не особо умею вести длинные речи вслух ввиду отсутствия подобной практики. Решил я, что это будет неплохой тренировкой. А полученное видео будет уже придатком, которое если кто когда-то и посмотрит — то и хорошо. Да и я вроде как утолю свое желание делиться мыслями и наблюдениями. С такими напутствиями я сам с собой и согласился, попутно взяв с себя слово, что ничего не буду тратить на какое-либо продвижение видео, ибо — зачем? Тем не менее для реализации этого хобби требовалась некоторая техническая подготовка.
Во-первых, нужна была карта захвата. Самая доступная из подходящих оказалась на тот момент AverMedia LGP.
Умеет pass through, на вход принимает HDMI и YPbPr (компонентный видеосигнал). Разрешения до 720p включительно захватывает при 60 кадрах в секунду, а для ретро-консолей большего не надо, поэтому 1080p только при 30 кадрах в секунду для меня оказалось не проблемой. Для композитного сигнала просто использую конвертер в HDMI. Производитель обещал запись при битрейте до 60Мбит\с, что оказалось верно только для цифрового входа, компонент захватывается по факту с битрейтом немного ниже. Все-равно в идеале вообще нужен видеопоток без сжатия, о чем позже. Еще плата захвата не может работать в Linux-системах, но с этим смирился сразу.
И во-вторых, нужна программа подсчета уникальных кадров в видеопотоке. Да-да, вроде того, что использует Digital Foundry. Их ПО написано на заказ и постоянно дорабатывается, о чем они как-то и рассказывали. Что-ж, себе подобную вещь я решил написать самостоятельно.
А он прост до безобразия. Разбиваем изображение на кадры (например, с помощью ffmpeg). Берем изображение N, переводим из цветного в оттенки серого и уменьшаем разрешение картинки. После этого полученное изображение представляем в виде матрицы. Берем изображение N+1, повторяем операции и математически сравниваем полученные матрицы. Если модуль разности превысил заданный коэффициент, то кадры можно считать уникальными относительно друг друга. Данный алгоритм крайне прост и подходит для определения движения, например, на съемках камеры видеонаблюдения. Но в данном случае сулит несколько проблем.
— Кадры с тирингом (разрывом кадра при отсутствии синхронизации) по-умолчанию будет определяться как кадры уникальные. Хотя с этим можно бороться сравнивая матрицы трех рядом идущих кадра (N, N+1, N+2) построчно. Например, если у кадра N+1 верхние строки матрицы совпадают с кадром N, а нижние — с кадром N+2, то это разрыв кадра.
— Следующие две проблемы записал в одну — малозаметные спокойные движения и артефакты сжатия. Даже при 60 Мбит\с, которые обещал производитель моей платы захвата, артефакты сжатия все-равно есть (пусть и не заметные глазу). И тут встает делемма — либо будут завышены результаты из-за распознавания таких артефаков как изменение кадра при низком допуске, либо при завышении допуска результаты могут быть занижены из-за того, что спокойные движения при отсутствии явного экшена на экране будут отсеиваться. И тут либо использовать оборудование, которое позволит получать несжатое видео (именно этот вариант выбрал, например, тот же Digital Foundry) или применять openCV. В моем случае оба варианта не подходили. Первый из-за финансовых затрат, второй из-за временных. Поэтому я ограничился ручным редактированием результатов в сложных местах записи перед построением графика частоты кадров.
Еще кучка мелких проблем, которые решались в процессе или были запланированы для решения, но их описывать не буду. И без того достаточно нудно получается.
Итак, когда первая версия ПО анализа была написана, я стал выкладывать короткие нарезки на Youtube. По мере сил обновлял свою мелкую программулину, устраняя разные проблемы и добавляя фич.
Ничего необычного. Просто при наличии работы, учебы в ВУЗе и еще дополнительного самообучения времени мало остается (при учете желания иметь еще и личную жизнь), и порой приходится упражняться с IDE и ноутбуком в разных местах. Вот однажды я и занимался своим хобби на диванчике в ТЦ. Девушка тогда выбрала джинсы, а я добавил отображение графика на видео. Иногда в полевых условиях и видео накидываю в программе монтажа, из-за чего иногда пропускаю проблемы, вроде неравной громкости голоса и музыки.
Самая главная ошибка здесь — запись при 30 кадрах в секунду. Игра таргетится в 30 к\с, и я тогда подумал, что записываться с большим fps смысла нет. С опытом пришло понимание, что я сильно ошибался. Время кадра может быть столь нестабильно, что в текущей секунде может быть 27 кадров, в следующей движок «выдаст» задержавшиеся кадры и их удет за секунду 31 или 32. Это нужно фиксировать, к чему позже я и пришел. Но даже так хорошо фиксируются падения на эффектах частиц, дыме.
Потом я добавил первый вариант графика — в виде заполненных прямоугольников с непрозрачным фоном. Я был полон энтузиазма, мне было интересно смотреть как разные консольки на полках справляются с разными задачами.
Заодно наконец опробовал саму CoD. Здесь я все также допускаю ошибку с записью в 30 кадрах в секунду, но еще и обнаруживаю проблему, что ffmpeg на моей машине с определенным кодеком значительно смещает звуковую дорожку и имеет фризы на финальном собранном видео. К сожалению, заметил я это только после выкладывания видео. Да и саму проблему победить не смог, поэтому я тогда просто выбрал другой метод кодирования видео. Кстати, не знаю почему, но этот вариант графика мне нравится больше всего.
Пока несколько таких видео добиралось до ТыТрубы, ПО мое добралось до более-менее удобоваримого состояния. Добивался чуть большей точности, немного оптимизовал процесс, добавлял подсчет времени кадра, ручные корректировки, менял графики. В процессе я набрал несколько текстов, вспомнил свои старые, переработывал и дополнил их, и начал тихонько монтировать видео уже с голосовым сопровождением. В качестве микрофона — телефон, минимум монтажа и все прочее, что просто нашлось под рукой и можно было применить без докупки какого-либо оборудования и для уменьшения затрат времени. Потому что как показала практика, и без того изготовление таких видео отнимает у меня немалое количество часов.
Практика в произношении сводилась к тому, что я выговаривал текст (далеко не с первой попытки) так, чтобы меня хотя бы часть людей смогла понять. Проговаривал предложения тогда я по многу раз, потом приходилось старально выбирать лучшие варианты для сведения воедино. Попутно выискивая «косяки» (вроде взятие воздуха с характерным звуком) и глуша их.
Но все-равно слова малоразборчивы, а интонация оставляет желать лучшего.
Краткое текстовое изложение:
Все знают Сэма Стоуна. Хорватская студия Croteam выпустила «Первое пришествие» на ПК в 2001 году. После этого игры о Сэме начали плодиться одна за другой. Эпизоды, золотое издание, вторая часть и так далее. И конечно, Сэм стал «переходить» на другие платформы. Полноценная Serious Sam II появилась в 2005, а до этого мясной шутер уже успел посетить Xbox, Playstation 2 и Gamecube. Правда на PS2 и GC была игра, полностью отличная от оригинала. А вот на первом Xbox'е вышел как раз порт с персональных компьютеров.
К выходу «The Second Encounter» уже закончилась адаптация движка Serious Engine на консоли Microsoft Xbox, тем более, что архитектура консоли позволяла сделать это без особых проблем. Дэвид Ноттингем (David Nottingham), продюсер версии игры для Xbox, честно говорил, что сразу после успеха Первого пришествия у них были намерения выпустить Сэма на консоли. И Xbox подходил для первой попытки просто отлично — требовал мало изменений, а производительность CPU и GPU позволяла даже провести некоторые улучшения по сравнению с ПК-версией.
Обновили модели оружия и врагов. Модель Сэма Стоуна также стала похожа на таковую из Serious Sam II. Кроме того, элементы из эпизодов пересекаются в этой версии — оружие обоих эпизодов совмещено, ряд карт в «новом первом» пришествии обновили — добавили элементов, объектов. Благодаря этому все стало выглядеть более живым, приятным и ярким. Тем более, что графический ускоритель в Xbox Original, для игрового движка 2001 года, умел многое. Тут были и блики от воды, и отражения на металле, и фильтрация текстур, и куча врагов при более-менее высокой частоте кадров.
Но у Xbox при достаточно мощном ЦПУ и ГПУ есть и известное «узкое место» — 64 мегабайта оперативной памяти. Пришлось обрезать все пустоты за пределами игровой карты, в которые в оригинале при определенных событиях можно было попасть, побродить и даже найти секреты. Потеря не велика, интересного там было не так уж и много. Некоторые уровни были разбиты на несколько кусков. Они не уменьшены, можно сказать, что просто имеют загрузки между некоторыми участками. А также некоторые ролики изменены на CGI, вместо реализации на движке игры. Но и добавилось несколько видеороликов, которых в оригинале вообще не было.
Для консоли изменили HUD, добавили автоприцеливание. Вместо сохранения в любом месте добавили систему чекпоинтов. Аркадность (в хорошем смысле) игры повысило добавление системы «жизней» и их зависимости от полученных очков, а также запрятанные сокровища.
Если хотите хардкора, то автоприцеливание можно было отключить в настройках и попробовать так пройти Serious Sam на геймпаде. Кроме графических улучшений, Xbox-версия получила еще и локальный мультиплеер и кооператив. В deathmatch можно было «погонять» вчетвером за одной консолью.
У игры разблокирован фреймрейт, и в особо серьезных баталиях он крутится между 40 и 50 кадрами в секунду, остальное время игра стремится к 60 кадрам в секунду. В целом это не мешает играть, как и постоянный тиринг. Да, разрывы кадра встречаются даже когда вы в замкнутой комнате без единого врага в ней. Но тем не менее в пылу битв этого даже не замечаешь.
Получился отличный порт, и довольны были все — разработчики проделанной работой, издатели радовались неплохими продажами, критики выставляли оценки много выше среднего, игроки с удовольствием покупали и играли в качественный и интересный шутер.
Такие видео я тихонько продолжал просто выкладывать на Yotube, иногда случайные люди натыкались на них. В свою очередь я практикуюсь в произношении, радуюсь, что у меня есть положительные сдвиги. Если на первых порах для получения 4-минутной сведеной речи у меня уходило около получала бубнения с микрофоном, то постепенно это время сократилось вдвое. Проблем с речью все еще было валом, но теперь количество совсем неразборной мешанины, вырывавшейся из моего рта сократилось очень сильно. Для меня это был РЕЗУЛЬТАТ и в целом я им доволен. А вот всеми идео на выходе — нет.
Кроме меня самого, допускались еще постоянные проблемы с громкостью звука, с качеством материала, особенно сценарного. Чаще всего ролики получались либо скомканными и поверхностными, либо затянутыми.
Краткое текстовое изложение:
В 1993 школьник Кен Сильверман впервые в своей жизни увидел шутер от первого лица. Это был Wolfenstein 3D от id Software. Увиденное тогда произвело на Кена огромное впечатление. Он захотел сделать свой шутер, только лучше, красивее и эффектнее. Опуская нелегкий путь Кена, скажу главное — через пару лет после этого он, уже будучи студентом, разработает свой движок Build Engine, на котором будет построена игра Duke Nukem 3D.
Буквально на следующий год порты на платформы, отличные от ПК, посыпались куда только могли. Sega Saturn, Sony Playstation, Nintendo 64. Все они отличались от оригинала. Кто-то совсем чуть-чуть, а кто-то заметно.
И вот в 1998 году Duke Nukem 3D вышел на 16-битной игровой консоли Sega Mega Drive благодаря стараниям бразильской компании TecToy. К этому времени Sega запустила и успешно «убила» Sega CD, 32x, Neptune. По-сути уже «умерла» Saturn, и Sega уже вовсю продвигала свою новую приставку Dreamcast, которая была способна переваривать игры вроде Soldier of Fortune и Quake III.
Но в Бразилии особенная ситуация с игровой индустрией. Там действуют очень высокие заградительные пошлины для ввозных игровых решений. Добавляем сюда тот факт, что существенная часть жителей страны живет с, мягко говоря, не очень высокими доходами. Бразилия вообще страна контрастов, но главная мысль такая — до сих пор там успешно производят, продают, покупают и играют в 16-битные игровые консоли. И вот, на волне популярности Duke Nukem 3D, компания TecToy принимает решение выпустить на рынок Бразилии порт игры для популярной тогда 16-битной Sega Mega Drive.
Очевидно, что никакого движка Build здесь не будет. Просто перерисовать спрайты в какой-о готовой игре не подойдет — слишком очевидно будет, да и приобретение лицензии подразумевала, что компания настроена не на простую переделку другой игры. Портировать первые две игры о Дюке также не стали — нужно было 3D. Поэтому на C и Assembler началась работа на собственным движком.
Даниэль Тревисэн (Daniel Trevisan) поделился информацией в интервью 2016 года, когда работа дизайнером в TecToy для него уже стала бывшей. Он отмечал о постоянном контроле со стороны Sega — проверка эффектов, звуков, контента и традиционное тестирование. Разработка этой игры в целом была напряженным испытанием. Да и воссоздать нечто трехмерное (пусть и псевдо) на Mega Drive, да еще и в сжатые сроки, задача нетривиальная. К тому же, приходилось разрабатывать и собственные программные инструменты для этого.
Само собой, уровни освободились от каких-либо деталей и в большинстве своем представляют просто стены. Да, с текстурами, разными. Причем один блок стены может быть разделен по вертикали для отрисовки разных текстур. Или вообще часть стены может быть с прозрачностями.
Кстати, многие спрайты частично или полностью отрисованы черезстрочно по вертикали. Экономия ресурсов в чистом виде. Это выглядит очень плохо на современных телевизорах, эмуляторе и на любом подключении на оригинальной приставке, кроме композитного. А вот при сочетании старого ЭЛТ-телевизора (для которого игровая консоль и игра предназначены) и композитного подключения получается интересный эффект, который можно назвать фильтрацией. Метод этот не новый и применялся, например в Sonic The Hedgehog.
Враги полностью взяты из оригинальной игры, просто отрисованы с низким разрешением. Всего их в этой игре 10 видов. При этом один из них — финальный босс Overlord и встречается в игре один раз, само собой.
Оружие сохранено не все, лишь основные 7 видов, включая ногу Дюка. Конечно, экзотика вроде уменьшителя или замораживателя до этого порта не добрались.
Казалось бы, все звучит прекрасно. И даже с ограничениями, вроде графики или ненаполненных уровней и получением в итоге коридорного шутера, для самой платформы это очень и очень здорово. Так? Так, да не так.
В первую очередь — игра очень сложна! Крайне сложна. В первый раз Вы начинаете игру на самой низкой сложности и шанс не пройти первый уровень стремится к 100%. Патроны выпадают из врагов редко, их вечно не хватает, прицелиться можно либо быстро, либо точно. Одновременно и то, и другое — увы, нет. Да и хитбоксы у врагов разспределены строго по их контуру и никакой помощи при наведении. Зато враги вас видят издалека, даже когда для вас они представляют два серых пикселя в далеке на горизонте, а бьют они при этом очень точно.
В добавок у игры проблемыв с производительностью. Практически постоянные. Консоль и без того выдает около 15 кадров в секунду в этой игре, но в иных ситуациях частота кадров падает еще сильнее. Результаты, которые выдает анализ видео можно делить на три. Дело в том, что игровую область экрана (т.е. отображение уровня, врагов на нем и пр.) движок игры обновляет вертикально слева-направо за три полных кадра. Может быть схоу это тяжело представить но на видео это хорошо заметно.
И вот в таком виде Duke Nukem 3D для Sega Mega Drive поступил в продажу в Бразилии в 1998 году. И в получившемся результате не могу обвинить конкретно разработчиков. Все-таки в рамках платформы они добились неплохих результатов.
Тем не менее я бы сказал, что сейчас в эту игру нет смысла кому-либо играть. Нет в ней интересного шутинга. Эта одна из тех игр, которые интересны в год ее выхода, но после уже не вызывает интерес. Есть очень много старых игр, которые интересно играются и в наши дни и их можно порекомендовать многим. Есть еще больше старых игр, которые плохи. Плохи и все тут, как в год своего выхода, так и через 10, 20 и 30 лет. Игра относится ни к тем, ни другим. И я бы сказал, что лишь остается надеяться, что заслуги разработчиков как специалистов своего дела заметили и оценили.
Но в 2015 году компания Piko Interactive издала игру на весь мир. На картриджах для Sega Genesis и Sega Mega Drive. За 50 американских долларов. И ее продажи очень неплохи.
Тем не менее, со временем назревало желание получать какой-то отклик, потому что времени это занимало все-равно заметное и в ущерб каким-то другим делам. Да и просто захотелось. Разве никому никогда не хотелось чего-то просто потому что? Подогревалось это ситуациями, когда появляются комментарии, вроде таких.
Но результат был предсказуем — просмотры чаще всего можно пересчитать по пальцам одной руки, несмотря на набравшееся откуда-то 22 подписчика, активны из них два с половиной человека. Если вы пробовали смотреть видео, то вы понимаете что для этого есть причины.
Сначала я было начал обдумывать варианты продвижения, изучать материал, как меня вдруг осенило — зачем? Ютюбером мне не стать (да и зачем это мне), до удобослушательного произношения мне еще много часов работы, и для сдвигов теперь нужны конкретные упражнения. Дохода с этого тоже не получить, а на хобби как таковое это уже стало мало походить, потому что мне реально приходилось жертвовать временем, отодвигая вещи, которыми хочется заниматься в свое удовольствие на «когда-нибудь потом». А результат в конечном итоге не нравится даже мне самому.
Как итог, о дешевом железе для ретро-консолей я перестал рассказывать совсем, сделав еще немного коротких видео по играм, которые уже успел начать к тому времени, и на этом спокойно перестал этим заниматься.
Проблемы анализа сведены к минимуму, так как опыта я уже поднабрался, а свое ПО с тех пор несколько раз обновлял. Зато тут характерны проблемы со звуком, да и в целом занимался уже без особого энтузиазма.
Краткое текстовое изложение:
В свое время игра с персональных компьютеров перебралась на консоли Xbox и Playstation 2.
Версия для PS2 работает исключительно в черезстрочном режиме (480i), когда как версия для Xbox поддерживает прогрессивный режим (480p). Обе при этом не работают в широкоформатном режиме.
Xbox позволяет настраивать различные параметры, вроде чувствительности стиков и громкости более точно, нежели версия для PS2 из-за особенностей работы ползунков в порте для последней системы. Зато у нее есть возможность включить motion blur. Но нужно это исключительно потому что Макс Пейн для PS2 имеет низкую и к тому же очень нестабильную частоту кадров. Уже в начальной сцене фреймрейт падает до 10 кадров, когда как Xbox стабильно отображает 60 кадров в секунду.
Еще заметней это становится в геймплее. На Playstation просто сложно целиться и управлять камерой, что значительно повышает сложность игры. Для этого и был добавлен motion blur, чтобы игроку это не так бросалось в глаза.
Освещение и тени также упрощены на Playstation 2. Консоль поддерживает освещение по полигонам, что хорошо заметно в том же Silent Hill 2, но здесь местами нет даже его.
Вдобавок 32 мегабайта памяти вынудили сильно урезать некоторые текстуры. На обоих платформах сохранились комиксы, но на Xbox они в первоначальном виде — с постепенным пролистываем блоков и страниц. На Playstation 2 почему-то страница комикса отображается сразу же. Стоит отметить, что на обоих консолях очень неудобно расположены чек-поинты. Они то находятся за каждым углом, то в сложных местах между ними огромная пропасть. Но в Xbox-версии игры есть возможность быстрого сохранения в любом месте игры, как на ПК. Playstation 2, увы, не имеет такой возможности.
В итоге играть в версию игры для PS2 просто некомфортно, неудобно и раздражительно. В данном случае Xbox-версия превосходит ее во всем. Мне это вдвойне обидно, так как в свое время я прошел именно Playstation 2 версию, что серьезно испортило мне впечатление от игры.
На этом я решил, что мое развлечение закончилось. В каких-то моментах это было даже забавно, а отрицательный результат — все же тоже результат. По итогу 7 месяцев я получил:
1. Дал себе пинок в исправлении произношения, начал первые сдвиги. Ситуации, когда даже я сам свою речь плохо понимаю, существенно сократились.2. Немного изучил анализ видеокадра. Это интересно, но для моей деятельности опыт в этом направлении бесполезен. Так что только для расширения кругозора.3. У меня появилась недурная плата захвата. Тем не менее, теперь она мне скорее не нужна.4. Потрачено много времени.5. Занятие, которое, как мне казалось, меня должно увлечь, напротив отбило интерес им заниматься.
Вот так неправильным подходом (спустя рукава) и хромающей на обе ноги реализацией можно испортить себе желание чем-либо заниматься. Я пробую время от времени какие-то новые начинания. Некоторые из них удаются и ими я увлекаюсь по нескольку лет. Но происходит и такое, что описано здесь. Какие выводы из всего этого? Разве что «надо думать заранее». Исход затеи при таком подходе был очевиден, и я это понимал, но решил что «мне ведь только речь разработать». Что ж, в конце концов произношение свое я и правда с помощью этого начал исправлять. Так что это уже было не зря.
«Проще просто играть с включенной трансляцией. И не так глупо себя чувствуешь разговаривая вслух, и результат тот же (0 посмотревших), и приятно провел время в игре, и времени на подготовку и само видео не потратил.»
Поделиться же я этим захотел как указанием на то как делать НЕ НАДО. Здесь (на сайте stopgame) можно найти кучу примеров того, как люди реализуют себя в текстовых и видео блогах, подходя к вопросу ответственно. У них получилось, это заслуживает уважения. У меня не вышло. Что ж, получится в другом. В конце концов всегда есть чем интересным заняться.
Учитесь на хороших примерах и чужих ошибках. И играйте в хорошие игры.
Лучшие комментарии
С комментарием целиком согласен. Замечу только, что монетизации я не хотел. Если ввел в заблуждение в какой-то момент, прошу понять и простить.