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

Следующим очевидным шагом было написание скриптов для обработки структур. Под сценариями я подразумеваю код MCL Common Lisp. Преимущество наличия удобного REPL, позволяющего быстро разрабатывать. Рассматривая историю как простую базу данных, я написал функции, которые, например, извлекли бы все кадры для заданного места.

И это дало мне мой список кадров для съемок данного дня. Очень просто. Хотя это в первую очередь не ориентировано на графику, я все равно буду называть это Lisp Graphics System 4 (LGS-4), так как она отображала HTML-страницы.

Как я уже говорил, настоящие съемки прошли очень гладко и продуктивно благодаря отличной команде.

После съемочного дня я брал кадры с видеокамеры на свой Mac с разрешением 640x480 пикселей. Я хранил изображения в виде пронумерованных файлов в соответствующей подпапке для каждого эпизода и запускал на них акварельный фильтр Photoshop в качестве пакетного действия, уменьшая их размер до 320x240 пикселей в процессе, который тогда был «веб-размером».

Наконец, еще немного кода MCL, который я написал, будет генерировать HTML-страницы графического романа, где каждая страница представляет собой панель (изображение) с заголовком диалогового окна и кнопками навигации. Затем эпизод графического романа был готов к загрузке на веб-сервер для публичного просмотра.

Чего я никогда не делал…

Как и большинство моих предпринимательских проектов, этот провалился. И хоть убей, я не могу вспомнить, почему я не довел дело до конца. Я могу только предполагать, что каким-то образом я убедился, что проект не увенчается успехом, и отложил его. Мне (к моему сожалению) очень хорошо удалось убедить себя в этом. Я знаю, что у меня не было бизнес-плана (как обычно), и я надеялся, что что-то произойдет, когда я опубликую контент.

Меня бесконечно раздражает, что я не уверен в себе и своих идеях.

Дизайн и код

Я заметил, что сцена с большой системой частиц работает медленно, и мне стало интересно, почему.

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

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

Время расчета сцены сократилось с 34 до 6,5 секунд. Неплохо для получасовой работы.

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

Следующая серия