Русская Википедия:Ecstatica II
Ecstatica II — компьютерная игра в жанре action-adventure, изданная компанией Psygnosis в 1997 году на MS-DOS и Windows. Является прямым продолжением Ecstatica.
Сюжет
История начинается непосредственно там, где заканчивается первая часть игры, когда безымянный путешественник, отказавшийся быть принцем неназванной страны, спас Экстатику из обречённого города Тирих. Принц возвращается в его королевство с Экстатикой планируя жениться, но находит свой замок опустошённым и разграбленным, а своих людей жестоко убитыми демонами, гоблинами и варварами. Как только он появляется у разводного моста, крылатый демон хватает Экстатику и уносит её, пока принц был сбит другим крылатым демоном. Очнувшись, он находит себя привязанным к позорному столбу. Тем не менее, принц возвращается к жизни и освобождается благодаря чудесному женскому голосу, побуждающему его победить злобного архимага и вернуть мировой баланс восстановив 7 древних знаков. Также у него появляется возможность вызволить возлюбленную Экстатику у архимага прежде чем он принесёт её в жертву.
Технологии, применённые при разработке игры
- Необычная элипсоидная графика
- Для 3D-графики используется целочисленная математика с фиксированной точкой.
- Собственный байт-код интерпретатор для игровых скриптов и AI.
Интересные моменты исходного кода[1]
- Стиль кода очень процедурный и "досовский" (что нормально для середины 90-х).
- Те объекты (actors), которые нужно рисовать находятся в display list.
- Большая часть памяти выделена статически под данные разных видов.
- Иногда используются весьма нетривиальные структуры данных.
- Код для работы с структурами данных не особо оптимальный, но в игре не так много одновременных объектов, поэтому это не проявляется.
- Многие ресурсы в файлах ресурсов хранятся как наборы "событий" (events).
- Благодаря "событиям" (events) многое "управляется данными" (data-driven). Однако есть и то, что намертво "захардкодено" (UI, Init, некоторые игровые проверки).
- В названиях процедур на английском есть забавные ошибки. Например, "pallette" (palette) и "ambiants" (ambients). То есть английский язык для программиста — не родной.
- Для поддержки режима SVGA (640x480) по всему коду жёстко понаставили "if'ы". В результате игра поддерживает только два разрешения: 320x200 и 640x480.
- Иногда код немного не совпадает и SVGA версия может, например, "забыть" что-нибудь стереть с экрана, например часть интерфейса.
- Чтобы можно было переключаться между VGA и SVGA прямо из игры в код по-быстрому добавили две процедуры GoSVGA() и GoVGA().
- Поддержку Win95 тоже добавляли "чтобы по-быстрому". Ведь в 1996 году поддержка Win95 ещё только набирала обороты. Например, обработку сообщений Windows и реагирование на сворачивание/восстановление окна, восстановление DirectDraw после сворачивания и остановку/запуск при этом музыки под Win95 приткнули "за компанию" в процедуру обновления позиции и перерисовки курсора мыши GetMouse().
- В многих процедурах кода видны остатки режима редактирования ресурсов (Edit). Возможно режим редактирования даже рабочий, если настроить окружение.
Примечания
Ссылки
- Шаблон:Youtube. stopgame.ru