Ecstatica II

Из Википедии, бесплатной энциклопедии

Ecstatica II
Разработчик Эндрю Спенсер
Издатель Psygnosis
Часть серии Ecstatica[вд]
Даты выпуска Март, 1997
Жанры action-adventure, слэшер
Технические данные
Платформы MS-DOS, Windows
Режим игры однопользовательский
Носители Дискеты 3½" или CD-ROM (1)

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). Возможно режим редактирования даже рабочий, если настроить окружение.

Примечания

[править | править код]