Вероятно, все, кто застал золотую пору игр под DOS, помнит и Another World. Ну, а ежели кому-то надобно освежить память, так извольте-с. Буквально сегодня в частном блоге программиста Фабиена Сэнгларда была опубликована статья о его копаниях в исходниках игры. Исходниках, которые никогда не публиковались под какой-либо открытой лицензией и которые даже не утекали никуда. Сэнглард просто провёл обратную разработку.
Преинтересное чтение для программистов, да и не только.
Например, выяснилось, что автор игры Эрик Шаи написал очень элегантную, в техническом смысле, систему, в основе которой лежала виртуальная машина, интерпретирующая байт-код в режиме реального времени и генерирующая полноэкранную векторную графику.
Собственно, сам исполняемый файл Another.exe и представлял собой эту виртуальную машину.
«Байт-код выполняет все функции, связанные с игровой логикой с помощью собственных кодов операции, но для более «тяжёлых» операций, таких как рисование, воспроизведение музыки, звука и управления прочими активами, использует системные вызовы», — пишет автор исследования.
Использование методики виртуальной машины значительно облегчила задачу по портированию игры на другие платформы. Собственно говоря, она была изначально разработана на Amiga 500 для нескольких платформ сразу: Amiga, Atari ST, Apple IIGS и DOS, а впоследствии пережила безболезненное портирование на многие другие.
Интересно также, что знаменитые задники «рендерились» — как и вся остальная графика в игре, они были векторными. Например, знаменитый «первый экран» насчитывал целых 981 полигон.
Некоторые хитрые трюки с памятью, предпринятые ради ускорения создания самой игры, позволили впоследствии относительно безболезненно заменить все фоны. Как известно, в 2006 году Шаи перевыпустил свою старую игру с улучшенной графикой. Основное улучшение, впрочем, пришлось на перерисованные (от руки, на сей раз) задники, которые с помощью всё того же «хака», подгружались напрямую с диска в соответствующий буфер (background buffer).
На приведённом выше скриншоте видна разница: на верхней части — оригинал, ниже — улучшенный вариант.