Добавить в корзинуПозвонить
Найти в Дзене
ZDG

Как я писал игру Kinetic Worm #3: Музыка, звук и графика

Как я уже говорил, музыка родилась одновременно с игрой, но это была лишь заглавная тема. Для каждого уровня требовалась своя музыка, то есть надо было написать около 10 треков, чего я сделать не мог.
Но на помощь мне пришёл bnbb, который взялся за написание музыки и прекрасно с этим справился. Мне же выпала техническая часть.
Оглавление

Предыдущие части: Преодоление, Начало

Музыка

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

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

Мы делали музыку в редакторе Scream Tracker, и так как описание формата S3M у меня было, я реализовал его и в игре, только кое-что изменил.

Каждый файл S3M хранил в себе сэмплы инструментов. Если у нас было 10 треков, то значит, в каждом треке хранились практически одни и те же инструменты. От этого игра набирала лишний объём.

Поэтому я сделал так: составил список всех инструментов, которые используются в треках, и сохранил их отдельно. А в треки поместил не инструменты, а только их идентификаторы. При загрузке трека в память я по идентификатору находил инструмент в общем хранилище и подгружал его.

Что касается самих инструментов, то самый простой способ их получить – взять из других треков, которые распространялись в различных демо-сборниках. Мы так и делали, брали что подходило. Также мы записали пару тяжёлых риффов с электрогитары bnbb, отрывок песни группы Sepultura с кассеты и вытащили звук электрических разрядов из игры Quake.

Но барабаны у нас были полностью свои. Ещё один мой друг-барабанщик владел звуковым модулем Alesis D4, с которого мы и записали звуки разных барабанов и тарелок.

-2

Мне пришлось попотеть над программированием карты Sound Blaster, чтобы звук воспроизводился без щелчков. Я нашёл старый файл, куда записывал прогресс работ (к сожалению, делал это не постоянно и потом бросил). Много записей там посвящено борьбе со звуком, и я даже, оказывается, дизассемблировал код Scream Tracker, чтобы посмотреть, как он работает. Но не помню этого.

Звуковые эффекты

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

Сейчас вместо CoolWave95 я использую Audacity

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

Графика

Всё это делалось ещё под DOS. Хотя уже была распространена система Windows 95 и 98, реализация под DOS была выбрала сознательно. Это позволяло запускать программу в трёх системах: DOS, Windows 95/98, и OS/2. Да, на тот момент была ещё жива система OS/2, которая довольно неплохо поддерживала DOS-программы.

Рабочим графическим режимом был полноэкранный VGA 800*600 256 цветов.

Никаких DirectX, OpenGL и прочего, игра устанавливала видеорежим через BIOS-функцию и работала напрямую с видеопамятью, записывая в неё байты, чтобы на экране появились пикселы.

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

-3

Каждую клетку поля и тело червя пришлось нарисовать в трёх видах: "слева", "справа" и "сверху". У червя также была голова, которая отличалась внешним видом, и так как она могла двигаться в 4-х направлениях на каждой плоскости, то всего нужно было 12 вариантов.

Чтобы разнообразить унылый пейзаж, некоторые элементы были сделаны анимированными. Это энергетические заряды (пища червя), выход с уровня и телепорты. У них была общая концепция пульсирующей энергии, но у каждого по-своему. Вот, например, анимация заряда в трёх плоскостях (увеличено в 10 раз):

-4

Всё это я рисовал от руки, мышкой, покадрово и попиксельно в программе Autodesk Animator Pro. В общем-то в ней я рисовал абсолютно всё и всегда. Со временем пришлось от неё отказаться, так как она работала только в DOS и поддерживала только 256 цветов. Но как графический инструмент, в том числе для анимации, она была очень удобна и хорошо продумана.

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

Продолжение следует.