воскресенье, 31 июля 2022 г.

Про ассемблер – 2 (GameDev)


Юрий "yurembo" Язев


Рассмотрим, как кроме языков высокого уровня применялся и до сих пор применяется ассемблер в разработке видеоигр. Это покажет общую тенденцию в направлении к универсальности и упрощению в области разработки ПО.


Вернемся в начало 80-х. Хэви метал, секс, наркотики, множество аппаратных несовместимых между собой платформ, компьютеров: Apple 2, Atari, Amiga, Commodore, IBM PC, Macintosh, еще больше разнообразных игровых консолей — неразбериха в духе времени. Не было защищенного режима и это не про секс. Программы выполнялись в реальном режиме процессора. Программисты имели неограниченный доступ к аппаратным средствам компьютера, и никто не стоял у них на пути: ни процессор, ни операционная система. Чтобы управлять всем этим богатством, необходимо было знать ассемблер, иначе всю мощь из компьютера не выжмешь, а он и так слабенький!


Игры в то время практически целиком писались на ассемблере, — не было ни графических, ни физических библиотек и фреймворков, ни тем более игровых движков. Время шло, появился процессор x386. В нем был реализован защищенный режим, поддержка виртуальной памяти и некоторые другие привычные нам фичи. Использование этих возможностей программистами и их реализация в операционных системах случилась далеко не сразу. Тем не менее, со скрипом и тормозами к выходу Windows 95 все более или менее освоились с защищенным режимом. Каждый процесс теперь располагал виртуальными 4ГБ памяти, все устройства обеспечивались драйверами, управляемыми операционной системой, поэтому лезть на уровень ядра прикладному программисту уже не надо и не имело смысла. Тем временем язык ассемблера перешел из разряда обязательных инструментов к специфическим.


Игроделам такой расклад не понравился, так как защищенный режим не позволял им напрямую обращаться к аппаратуре и выжимать из нее всю мощь. Поэтому они продолжили разрабатывать игры под MS-DOS. Благо Windows располагала полной совместимостью с последней. Уже это не понравилось Microsoft. Они быстренько купили разработчиков Game SDK, переименовали пакет в DirectX SDK и стали его развивать. DirectX SDK позволил разработчикам игр из защищенного режима приблизиться к устройствам — работать с ними на более низком уровне с помощью языков высокого уровня. Игроделы обрадовались, забросили ассемблер и стали его применять только в самых критичных ко времени исполнения вычислениях. Microsoft тоже осталась довольна, так как разрастающаяся библиотека игр способствовала популяризации их новой операционной системы. 


Программисты игровой индустрии обратили внимание, что все игры включают общие элементы и механизмы: визуализатор, контроллер памяти, управление файловыми потоками ввода/вывода, сетевая подсистема, обработчик пользовательского ввода, обработчик физики, искусственный интеллект и прочее. Эти механизмы немногим отличаются от игры к игре. Тогда игроделы смекнули, что эти игровые механизмы можно стандартизировать в виде модулей и не переписывать каждый раз, а только менять параметры для тонкой настройки. Сказано, сделано: набор этих слаженных механизмов стал представлять собой игровой движок. Настройку параметров и более широкое описание игрового процесса возложили на скриптовый язык. Его изучение оказалось еще более простым, чем языка высокого уровня, так как в нем уже не надо было управлять памятью и беспокоиться о других возможных проблемах. Понятно, что с таким положением дел, ассемблер стал еще менее используемым инструментом среди разработчиков игр. Причем тут ассемблер, C/C++ для разработки игр, применяя движок, можно не использовать!


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


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

пятница, 22 июля 2022 г.

Про ассемблер


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


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


Инфосек развивается заметнее и, кажется, быстрее. Здесь много работы ведется по анализу и дизассемблированию. Но даже в современных антивирусных лабораториях применяется автоматика, разрабатываются и используются автоматические вирусные анализаторы. Но, чтобы их создать, чтобы научить автоматическому определению малвари, их разработчики должны в совершенстве знать архитектуру компьютера и язык ассемблера.


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

пятница, 1 июля 2022 г.

Как питчить игры игрожуру

(из рассылки InGameDev за 01.07.22)


GamesIndustry.biz поговорил с журналистами из IGN, Rock Paper Shotgun, Polygon, Gayming Magazine и других изданий, чтобы выяснить как сделать так, чтобы они написали о вашей игре.

Анна Диас (Ana Diaz), автор Polygon: «Я не пишу для разработчиков, я пишу для своего 20-летнего кузена, который наиграл тысячу часов в Fortnite и может позволить себе до двух игр в год; для людей из TikTok, одержимых обустраиванием своих островков в Animal Crossing. Это не значит, что я не хочу освещать инди релизы, но нашу аудиторию очень сложно заставить их читать. Но не все потеряно!»

• Начните с элементарных вещей •

Прежде чем приступать к активной фазе пиара, убедитесь, что информация о вашей игре уже представлена в Интернете и находится в свободном доступе. Начать можно с контактной информации на сайте. «У инди часто нет вебсайтов!», – возмущается замглавред Гализ-Роу из Gayming Magazine, «И обновляйте его! <…> По возможности уделяя место и прочим работам студии», – вторит Элис Белл из Rock Paper Shotgun.

Нет игрожуру больше радости, чем сформированный пресс-пакет из аннотации, выпускных данных, отобранных скриншотов и логотипа на прозрачном фоне. Репортер из IGN просит, чтобы изображения не были гигантскими и были представлены без маркировок / надписей, лучше даже и без UI.

Если ваша игра играется вертикально, все равно подготовьте горизонтальные иллюстрации.

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

Блоги – это хорошо, когда хочется получить дополнительной информации, но они не должны заменять собой сайт.

• Смотрите, с кем разговариваете •

У изданий существует специализации, прежде чем обращаться к редактору издания КишкиХардкорПК4лайф.jp, ознакомьтесь с политикой издания в отношении выбранного вами жанра и платформы, а также то, что вы обращаетесь к правильному человеку.

«Я – репортер, а мне присылают письма с просьбой написать превью или рецензию», – жалуется Ребекка Валентайн из IGN.

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

• Налаживайте контакт правильно •

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

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

Тема письма – крайне важна. Тут уже вам придется поиграть в журналиста и придумать хороший заголовок, или, как говорят профессионалы, – «крючок». Ubisoft и Xboxмогут по этому поводу не запариваться, их имя уже обращает на себя внимание, но маленьким инди придется поднапрячься. Некоторые советуют использовать понятные аналогии, чтобы быстрее сформировать представление об игре, к примеру, «Doom + Animal Crossing».

Некоторые собеседники изъявили желание получать письма с картинками. Ну или хотя бы со стишками.

Важно обратить внимание на каком этапе находится ваша пиар-кампания:
Анонс
Превью
Ревью
Лонч
Пост-лонч (апдейты и DLC)

• План идеального питча •

И Белл, и Валентайн представили схожий план успешного питча:
Хороший крючок в теме;
Краткое представление: кто вы (уж не создатель ли чего-то примечательно?), откуда, когда релиз и для каких платформ;
Одно предложение о том, что вы питчите;
Изображение или гифка, чтобы было понятно, как это выглядит;
Более подробное описание. Абзац о том, как это играется, что в этом интересного. Если ваша студия чемм-то отличается от прочих, об этом стоит сказать.
Прощания со ссылками на ассеты, в том числе демку, если такая имеется.

• Красные флаги •

«Письма, составленные под копирку, сразу отправляются в корзину, – угрожает Калиф Адамс из подкаста Spawn On Me, – Вы должны дать понять, почему вы решили обратиться именно к нам. Мы – достаточно нишевое издание и нам важно понимать, что мы можем вам предоставить».

Белл предупреждает, что краткий сухой текст с кучей ссылок имеет все шансы не пройти спам-фильтр.

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

«И нам не нужны ключи, если мы их не запрашивали», – расшатывает основы основ игрожура Гализ-Роу.