Как я писала редактор мультфильмов.
Комментарий к фотографии с компьютером MSX

Фотография сделана в декабре 1996 г. Тогда я училась на втором курсе, и в момент, который запечатлен на фотографии, у нас была вычислительная практика. Продолжалась она две недели, в течение которых мы не занимались ничем, кроме программирования (поскольку компьютеров было мало, компьютерное время делилось на смены; таким образом, за компьютером можно было находиться примерно треть каждого дня).

В то время наш университет еще не обладал современными компьютерными классами (первые "нормальные" компьютеры привезли через несколько месяцев после этого). В одних классах стояли машины "Правец", в других - YAMAHA MSX. Это такие машины, у которых (если память мне не изменяет) 128 килобайт оперативной памяти. Процессор, графика и прочее - соответствующие. Операционная система (MSX-DOS) у этих машин загружается с дискетки. А если не загружаться с дискетки... В ПЗУ этих машин зашит интерпретатор MSX-бейсика. В любом случае, программировать-то можно :).

Итак, около сотни студентов-математиков получили в свое полное распоряжение полтора десятка машин с черно-зелеными мониторами (терминалы) и одну машину, к которой эти терминалы были подключены - с цветным монитором и дисководом. Незадолго перед этим произошла торжественная раздача заданий на вычислительную практику. Кроме "обычных", простеньких задач, было штук десять особых, интересных: написать графический редактор, редактор спрайтов (это такие маленькие движущиеся примитивные картинки, какие встречаются в очень старых компьютерных играх и игровых приставках), музыкальный редактор, игру в слова и так далее. Поскольку мне выбирать для себя задачу предложили первой, я оказалась в некоторой растерянности. Глаза у меня просто разбегались. Хотелось попробовать и одно, и другое, и третье... и тут в списке задач я увидела заманчивое название: "Редактор мультфильмов".

"А что тут нужно сделать?" - спросила я. "А уж это от тебя зависит. Какую задачу себе сформулируешь по этому названию, такую и решать будешь". "О-ооо..., - обрадовалась я, - я тут сейчас такого напридумываю!".
В самом деле, название задачи и разрешение сформулировать ее самостоятельно сулили многое. Я решила, что здесь будет "все в одном флаконе". Во-первых, нужно создать героев мультфильма - это редактор спрайтов. Во-вторых, нужно нарисовать фон, по которому они будут двигаться, - это графический редактор. Еще нужно придумать, как будут задаваться движения героев - перемещение по экрану с одновременным изменением внешнего вида героя (например, при ходьбе мультяшка должен переставлять ноги и махать руками). И чтобы скорость была разная. Вот если, например, собака за кошкой бежит, то собака должна бежать быстрее. А если кто-нибудь камень бросает, то камень должен лететь по параболе, с ускорением, как положено... А еще можно все это озвучить... И неплохо было бы, чтобы помимо обычного графического редактора была библиотека готовых рисунков (чтобы быстро создавать фон), а помимо редактора спрайтов - библиотека готовых героев.
Все вышеперечисленное я изложила руководителю практики. "Ну-ну, посмотрим, что у тебя получится", - улыбнулся он, услышав о моих наполеоновских планах. У меня было две недели, 128 килобайт оперативной памяти и далеко не самый лучший язык программирования... но зато самая лучшая машина из имевшихся. Нельзя же делать редактор мультфильмов на машине с черно-зеленым монитором :)...

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

Редактирование фона в редакторе мультфильмов. В левом верхнем углу - окно фонового рисунка (его размер можно было изменять). Маленькое окно в правом нижнем углу - черновик, где можно опробовать действие инструмента перед его применением (чтобы не испортить рисунок). В принципе, можно было сделать нормальную "отмену последнего действия", но эта процедура отнимала слишком много драгоценной памяти... Рядом с окном черновика - индикатор, показывающий, включен или нет режим "черновик".
В левом нижнем углу - палитра с индикатором активного цвета. В правом верхнем углу - панель инструментов: очистка рисунка (с одновременной заливкой фона), заливка "до линии горизонта", прямоугольники, окружности, заливка цветом, линия (прямая или произвольная), ломаная, распылитель, разноцветный распылитель (каждая точка рисуется случайным цветом), а также библиотека готовых картинок. Неприлично огромная красная кнопка с буквой "Q" - выход из редактирования фона. Почему такая большая? А чтобы не промахнуться :).

Фазы движения героев мультфильма можно было рисовать по точкам в редакторе спрайтов - "с нуля" или используя готовые изображения (из библиотеки или из числа нарисованных ранее).
Вот так выглядели герои моих мультфильмов (рисунки взяты из реальной библиотеки готовых картинок, но с небольшим увеличением - из-за этого видны отдельные пиксели, из которых состоит картинка, а на мониторах компьютеров MSX примитивность графики не так бросалась в глаза):

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

Процесс работы показан на фотографии. Рядом с монитором лежат две тетрадки по 96 листов. Это не просто тетрадки, а текст программы. Дело в том, что при написании программы на компьютерах MSX, на зашитом в ПЗУ MSX-бейсике, невозможно увидеть на экране полный текст программы. Точнее, попытаться-то можно, но текст - если он не помещается на экране - пролетит по монитору с завидной скоростью, и прочитать можно будет только последние строчки. Прокрутка вверх-вниз, как в обычном текстовом редакторе (и в более совершенных, чем MSX-Basic, языках программирования), не работает. Если хочешь увидеть строки с каким-то определенным номером, например, с двухсотой по двести восемнадцатую, нужно вводить соответствующую команду. Хочешь стереть строку - снова вводи команду (просто "отредактировать" текст программы, заменить одни символы на другие, не получится :)). Естественно, что все это довольно утомительно, особенно если программа большая. В этом случае знать, что на какой строке написано, - это просто жизненная необходимость. Поэтому программа и комментарии к ней у меня были записаны в двух толстых тетрадках (одна - черновик).

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

Остальные же задачи я уже фактически решила. Поэтому как-то незаметно я превратилась из обычной студентки в неофициальную лаборантку. Когда кто-то хотел записать файл на диск или, наоборот, загрузить с диска свою программу, делать это нужно было через сеть, и занималась этим именно я; специально для меня распечатали экземпляр инструкции по работе с сетью на компьютерах YAMAHA. Я приходила раньше всех - в половине восьмого утра (на фотографии - именно такое раннее утро, когда освещение в классе еще не включено), и уходила только поздно вечером, выключив все компьютеры (все остальные ходили на практику "в две смены" - кто-то утром, кто-то вечером). Это мне очень нравилось. Распираемая чувством собственной значимости :))), я сидела за столом в центре аудитории, ела бутерброды с сыром и придумывала очередную примочку для своего редактора мультфильмов - в промежутке между ответами на чужие вопросы. А по вечерам мы - те, кто решал задачи из списка "сложных", - пили чай с вареньем и крекерами на кафедре информатики и по очереди ходили через длинный коридор с подносом - мыть после себя чашки.

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

Посмотреть скриншоты:

Заставка при загрузке MSX (обратите внимание на память!)
Вид экрана после загрузки (загружен встроенный язык MSX-Basic)
Результат вывода на экран нескольких строк программы
Кадр из готового мультфильма (в натуральную величину)

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

Скачать эмулятор (fMSX for Windows v1.10 by Marat Fayzullin and Teturo Tokuyama)
Получить информацию о компьютерах MSX, скачать другие эмуляторы и программы можно здесь

 
На главную страницу
 
Домашняя страница Инги Кесс

Hosted by uCoz