Cave Story (Doukutsu Monogatari) via NXEngine для различных платформ

Cave Story (или в оригинале — Dōkutsu Monogatari), является одной из самых известных бесплатных японских Indie-игр. Весь игровой контент, включая музыкальные композиции и код, был создан лишь одним человеком — Daisuke «Pixel» Amaya. Pixel в течении пяти лет трудился над своей игрой, уделяя ей как можно больше свободного времени. Именно благодаря знакомству с Cave Story многие начинающие Game Developer’ы вдохновились на создание собственных Indie-проектов. После своего первого релиза для PC, который состоялся в 2004 году, игра медленно завоёвывала популярность геймеров в японском интернете, а после её перевода на английский язык — стремительным темпом распространилась по всему миру. В целом, Cave Story получила достаточно положительные отзывы критиков за свой увлекательный геймплей и интересный сюжет. Несколько лет спустя, в ноябре 2011-го года, в сервисе цифровой дистрибуции Steam вышло переиздание игры, названное Cave Story+, содержащее незначительные отличия от оригинальной версии.



Скриншоты из русской версии Cave Story, запущенной с помощью NXEngine на устройстве Ritmix RZX-50; локации «Хранилище Яиц» и «Грасстаун»

Cave Story представляет собой 2D-платформер с элементами RPG, выполненный в антураже старых классических игр, в частности, разработчик вдохновлялся таким проектом, как Metroid. После проявления интереса к игре со стороны публики Cave Story была портирована на наиболее популярные платформы. Поскольку исходный код игры закрыт, Cave Story удалось перенести лишь на ограниченное количество игровых устройств. К счастью, нашлась энтузиастка, которая полностью переписала движок игры на C++ (изначально он был написан на C) и выпустила код под лицензией GNU GPL Version 3. Свой проект Caitlin «rogueeve» Shaw назвала NXEngine. Благодаря этому движку, практически полностью совместимому с оригинальным, в Cave Story можно поиграть на самых разных платформах и устройствах.

Но, к сожалению, не всё так гладко и NXEngine всё ещё нуждается в «доработке напильником». Например, на Dingoo A320 невозможно играть со включенной музыкой из-за возникающих «подтормаживаний» в игре. Caitlin Shaw хотела полностью сохранить совместимость с оригинальными DATA-файлами Cave Story, поэтому музыка в нём генерируется процедурно, создавая большую нагрузку на CPU. Центральный процессор Dingoo A320 не справляется с такой нагрузкой, отсюда и возникают «подтормаживания», сильно мешающие игровому процессу. Одна из моих модификаций исходного кода NXEngine позволяет использовать библиотеку SDL_mixer, добавляя в игру возможность воспроизведения трекерной музыкой из внешних файлов, вместо ресурсоёмкой процедуры генерации. Кроме того, NXEngine не мог отобразить русские буквы из русифицированных DATA-файлов, но с моим небольшим исправлением это стало возможным. Теперь геймеры, не слишком хорошо знающие английский язык, смогут всецело насладиться сюжетными диалогами. Помимо этого, в движок была добавлена возможность работы с широкоформатными дисплеями с разрешением 480×272, что позволило запускать Cave Story на Ritmix RZX-50 в полноэкранном режиме. Для удобства внесения изменений в NXEngine была произведена некоторая адаптация исходного кода к интегрированной среде разработки — Qt Creator.

Содержание:

1. Обзор ключевых элементов игры
2. Основные клавиши управления
3. Информация для разработчиков
3.1. Windows
3.2. Linux
3.3. Dingux/OpenDingux/MotoMAGX/EZX
3.4. Ресурсы
4. Центр загрузки
5. Обратная связь

1. Обзор ключевых элементов игры

Запустив Cave Story, вы можете посмотреть небольшую кат-сцену, с которой и начинается завязка сюжетной линии. Подобные заставки ещё не раз будут встречаться вам на протяжении всей игры. Прокрутить диалог можно нажав на клавишу прыжка. Итак, главный герой игры появляется в первой локации, которая называется «Начальная точка» и где можно попробовать повзаимодействовать с внутриигровыми предметами — аптечкой и дискетой. Клавиша «Вниз» отвечает за использование. Таким образом, подойдя к аптечке и нажав «Вниз» можно пополнить здоровье, а подойдя к вращающейся дискете — сохраниться. Поднявшись вверх к двери вы попадёте в первую пещеру, наполненную различными врагами и кроваво-красными шипами, к которым нельзя прикасаться. С помощью баночек с сердечком (одна из которых лежит в этой локации) можно «прокачивать» здоровье героя, тем самым повышая шанс на выживание в трудных схватках с противниками. Такие баночки очень хорошо запрятаны в труднодоступных уголках уровней, придётся напрячься, чтобы достать их оттуда. Не стоит пренебрегать ими, так как Cave Story достаточно хардкорная игра и её прохождение без должных бонусов может сильно затянуться.



NXEngine в дистрибутиве Linux Mint 15 KDE; локация «Первая пещера»

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



Cave Story, запущенный с помощью NXEngine на устройстве Motorola ZN5, под управлением операционной системы MotoMAGX; локации «Руины», «Лабиринт М» и «Внешняя стена»

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



Cave Story в операционной системе MS Windows 8.1; локация «Деревня Мимига»

На этом я заканчиваю ваш процесс освоения в игровом мире. Вы уже достаточно самостоятельны и сможете сами разобраться в управлении и механике игры. Кстати, в Cave Story имеется целых три различных концовки — две «хороших» и одна «плохая». Решения, которые вы принимали на протяжении всего игрового процесса, могут оказать сильное влияние на то, как вы завершите Cave Story. Поэтому играйте очень внимательно! Если всё же у вас возникли непреодолимые трудности, вы можете почитать большой гайд по прохождению Cave Story здесь. Но первый раз лучше всего пройти эту замечательную игру без подглядывания в различные мануалы, чтобы получить наиболее полные впечатления от Cave Story.

<< Перейти к содержанию

2. Основные клавиши управления

Windows/Linux

  • Движение — ←↑↓→;
  • Прыжок — Z;
  • Огонь — X;
  • Предыдущее оружие — A;
  • Следующее оружие — S;
  • Инвентарь — Q;
  • Карта — W;
  • Выход — ESC;
  • Опции — F3.

Dingux/OpenDingux

  • Движение — D-Pad;
  • Прыжок — A;
  • Огонь — B;
  • Предыдущее оружие — X;
  • Следующее оружие — Y;
  • Инвентарь — R;
  • Карта — START;
  • Выход — SELECT;
  • Опции — L.

MotoMAGX

  • Движение — D-Pad;
  • Прыжок — Громкость ‘+’;
  • Огонь — Центр джойстика;
  • Предыдущее оружие — 0;
  • Следующее оружие — 8;
  • Инвентарь — 2;
  • Карта — 5;
  • Выход — Кнопка камеры;
  • Опции — #.

EZX

  • Движение — D-Pad;
  • Прыжок — Громкость ‘+’;
  • Огонь — Громкость ‘-‘;
  • Предыдущее оружие — ModKey + Громкость ‘-‘;
  • Следующее оружие — ModKey + Громкость ‘+’;
  • Инвентарь — Центр джойстика;
  • Карта — ModKey + Центр джойстика;
  • Выход — Кнопка камеры;
  • Опции — ModKey + Кнопка камеры.

Примечание: Клавиша ModKey на Motorola A1200 находится между кнопками регулировки громкости, а на Motorola ROKR E6 под красной трубкой.

<< Перейти к содержанию

3. Информация для разработчиков

Если вы хотите собрать NXEngine из исходников, то немного информации об кросс-платформенной компиляции этого движка, вы можете найти здесь. Существует несколько вариантов сборки:

  1. Через Makefile;
  2. С помощью Qt Creator.

Опишу некоторые нюансы, касающиеся построения проекта из исходного кода для различных операционных систем.

<< Перейти к содержанию

3.1. Windows

Для сборки необходим MinGW и установленные библиотеки SDL, SDL_ttf и SDL_mixer (опционально). Посмотреть подробнее про сборку SDL-библиотек для MinGW можно тут. После компиляции необходимых библиотек и их установки в тулчейн можно приступать к построению NXEngine.

Для получения исходного кода рекомендуется воспользоваться утилитой Git. Ссылку на GitHub-репозиторий, в котором доступен исходный код движка, можно найти ниже, в этом разделе. После получения исходников переходим в директорию с ними и выполняем команду:

mingw32-make -f Makefile.mingw32

После выполнения которой в директории с исходным кодом появится исполняемый файл «nx.exe».

Для сборки проекта с помощью Qt Creator необходимо установить в тулчейн MinGW SDL-библиотеки, затем открыть файл «nx.pro» и начать построение проекта.

<< Перейти к содержанию

3.2. Linux

Перед компиляцией проекта устанавливаем следующие пакеты, содержащие библиотеки и заголовочные файлы:

sudo apt-get install libsdl1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev

После установки необходимых библиотек в систему, получаем исходники и начинаем построение NXEngine с помощью файла «Makefile.linux»:

make -f Makefile.linux

Или с помощью Qt Creator. Затем собранный исполняемый файл «nx» необходимо поместить в директорию с DATA-файлами игры.

3.2.1. Разрешение зависимостей

Чтобы исполняемый бинарник «nx» не зависел от некоторых системных библиотек, которые могут отсутствовать в одних дистрибутивах GNU/Linux и присутствовать в других, его необходимо собрать в так называемой LSB-системе (Linux Standard Base), следуя инструкциям из этого поста.

Лично я советую собирать NXEngine и другие проекты, в основе которых лежит SDL, в GNU/Linux дистрибутиве CentOS 5.10:



Собранный NXEngine в операционной системе CentOS 5.10, 32-bit

Следует отметить, что так как библиотеки SDL и SDL_ttf не входят в состав LSB, их необходимо собрать отдельно и установить вручную в дистрибутив. Процедура компиляции и установки довольно тривиальна: следует загрузить исходники с официального сайта www.libsdl.org и выполнить их построение с помощью команды:

./configure && make -j4 && sudo make install

После выполнения которой необходимые библиотеки и заголовочные файлы будут установлены в каталог «/usr/local/*». Так как мультимедийные SDL-библиотеки отсутствуют во многих дистрибутивах, я рекомендую использовать статическую линковку с ними. После сборки в LSB-совместимой системе и статической линковки, мы получаем исполняемый файл с минимальным набором зависимостей, который, теоретически, должен работать практически в любом популярном дистрибутиве:

Помимо этого, при компиляции приложений в LSB-системе, будет отсутствовать ошибка связанная с GLIBC/GLIBCXX, что позволит приложению запуститься на любых дистрибутивах, выпущенных позже 2006-го года:

<< Перейти к содержанию

3.3. Dingux/OpenDingux/MotoMAGX/EZX

При установленных и настроенных тулчейнах для этих платформ сборка NXEngine отличается лишь переключением тулкитов в Qt Creator’е по способу, описанному здесь. Также NXEngine можно скомпилировать с помощью файлов «Makefile.dingux», «Makefile.ezx» или «Makefile.motomagx», если у вас не установлен Qt Creator.



Пакет для Dingux/OpenDingux представляет собой обычный ZIP-архив, содержащий DATA-файлы игры и исполняемый файл «nx.dge». MGX-пакет для MotoMAGX по своей сути тоже является обычным ZIP или 7Z-архивом, в котором содержится каталог с необходимыми для запуска программы файлами. Файл «NXEngine.cfg» содержит необходимую установочную информацию, а файл «run.sh» является скриптом, определяющим некоторые переменные и пути до необходимых для запуска приложения библиотек. PKG-пакет для платформы EZX представляет собой TAR.GZ-архив со специальным DESKTOP-файлом, описывающим установку. Подробнее изучить структуру пакетов для этих платформ можно скачав из этого раздела необходимые файлы и открыв их в любом архиваторе, к примеру, в 7-zip.

<< Перейти к содержанию

3.4. Ресурсы

3.4.1. Предопределённые макросы

Некоторые из предопределённых макросов могут использовать уникальные DATA-файлы, не входящие в обычную поставку Cave Story или NXEngine. Так, например, если вы будете использовать макрос _480X272, то в каталог «data/» следует поместить файлы «bkFog480fix.pbm» и «bkMoon480fix.pbm», которые являются фиксами фонов для широкоформатных дисплеев. Найти эти файлы и их исходники в виде «*.psd»-файлов можно в репозитории на GitHub’е. При использовании макроса _SDL_MIXER музыка не генерируется приложением, а просто проигрывается из трекерных файлов. Поэтому в корневой каталог NXEngine следует поместить папку «xm/», содержащую трекерную музыку в формате «*.xm». Скачать архив с директорией «xm/» можно здесь. Благодаря использованию этого макроса снижается нагрузка на процессор, позволяя NXEngine работать на слабых устройствах. Используя макрос _L10N_CP1251 вместе с _320X240 или _480X272, не забудьте поместить файл «DroidSansMono.ttf» в корневой каталог с игрой. Благодаря шрифту Droid Sans Mono русские буквы при разрешении 320×240 или 480×272 не выглядят слишком маленькими и отлично читаются.

Макрос

Платформа

A320
RZX-50
LIN 32/64
WIN
MAGX
EZX
ENG
RUS
ENG
RUS
ENG
RUS
ENG
RUS
ENG
RUS
ENG
RUS
_480X272
Off
Off
On
On
Off
Off
Off
Off
Off
Off
Off
Off
_320X240
On
On
Off
Off
Off
Off
Off
Off
On
On
On
On
_DINGUX
On
On
On
On
Off
Off
Off
Off
Off
Off
Off
Off
_MOTOMAGX
Off
Off
Off
Off
Off
Off
Off
Off
On
On
Off
Off
_SDL_MIXER
On
On
On
On
Off
Off
Off
Off
On
On
On
On
_DEBUG
Off
Off
Off
Off
Off
Off
Off
Off
Off
Off
Off
Off
_L10N_CP1251
Off
On
Off
On
Off
On
Off
On
Off
On
Off
On
_MOTOEZX
Off
Off
Off
Off
Off
Off
Off
Off
Off
Off
On
On

Таблица предопределённых макросов и их использование в проекте NXEngine

Помимо этого, будет полезно прочитать файл «nx.pro», в котором тоже описывается назначение каждого макроса.

3.4.2. Локализация

Для включения русской локализации нужно расскоментировать в Makefile строчку, содержащую «-D_L10N_CP1251» или изменить строку #20 в файле «nx.pro»:

на

После чего необходимо полностью пересобрать NXEngine. Следует заметить, что для русской версии игры используются русифицированные DATA-файлы, выдернуть которые можно из русскоязычных пакетов в этом разделе.

3.4.3. DATA-файлы

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

<< Перейти к содержанию

4. Центр загрузки

Загрузить последние версии NXEngine, собранные из исходного кода для различных платформ и операционных систем, можно в таблице размещённой ниже. Архивы представляют собой готовые Bundle-версии движка с уже установленной игрой Cave Story, которые следует лишь распаковать или установить, а затем запустить.

Иконка

Платформа

Версия

Загрузка
Русская версия
Русская версия
English Version
English Version
Dingoo A320; OpenDingux|Dingux
Dingoo A320
(OpenDingux/Dingux)
v. 1.0.0.4 | Rev 4
A320-NXEngine-RUS-1.0.0.4-Rev-4.zip
A320-NXEngine-1.0.0.4-Rev-4.zip
Ritmix RZX-50; OpenDingux|Dingux
Ritmix RZX-50
(OpenDingux/Dingux)
v. 1.0.0.4 | Rev 4
RZX50-NXEngine-RUS-1.0.0.4-Rev-4.zip
RZX50-NXEngine-1.0.0.4-Rev-4.zip
Linux 32-bit; x86, i386; All distributions
Linux 32-bit
(x86, i386; All distributions)
v. 1.0.0.4 | Rev 4
LIN32-NXEngine-RUS-1.0.0.4-Rev-4.tar.gz
LIN32-NXEngine-1.0.0.4-Rev-4.tar.gz
Linux 64-bit; x86_64, amd64; All distributions
Linux 64-bit
(x86_64, amd64; All distributions)
v. 1.0.0.4 | Rev 4
LIN64-NXEngine-RUS-1.0.0.4-Rev-4.tar.gz
LIN64-NXEngine-1.0.0.4-Rev-4.tar.gz
Windows 32-bit; Windows 98, XP, Vista, 7, 8, 8.1
Windows 32-bit
(Windows 98, XP, Vista, 7, 8, 8.1)
v. 1.0.0.4 | Rev 4
WIN32-NXEngine-RUS-1.0.0.4-Rev-4.zip
WIN32-NXEngine-1.0.0.4-Rev-4.zip
Motorola ZN5, E8, EM30, Z6 etc.; MotoMAGX
Motorola ZN5, E8, EM30, Z6 etc.
(MotoMAGX)
v. 1.0.0.4 | Rev 4
MAGX-NXEngine-RUS-1.0.0.4-Rev-4.mgx
MAGX-NXEngine-1.0.0.4-Rev-4.mgx
Motorola E2, E6, A1200 etc.; EZX
Motorola E2, E6, A1200 etc.
(EZX)
v. 1.0.0.4 | Rev 4
EZX-NXEngine-RUS-1.0.0.4-Rev-4.pkg
EZX-NXEngine-1.0.0.4-Rev-4.pkg
Source Code; All Platforms
Source Code
(All Platforms)
v. 1.0.0.4 | Rev 4
Source Code; All Platforms

Готовые пакеты, предназначенные для запуска на конечной системе, спасибо за хостинг www.cavestory.org, зеркало файлов на Yandex.Disk

<< Перейти к содержанию

5. Обратная связь

Если вы собрали NXEngine из исходного кода, расположенного в моём репозитории на GitHub’е, добавив, например, поддержку какого-нибудь Handheld-устройства, или просто форкнули NXEngine, исправив ошибки или нарастив функционал — обязательно напишите мне, я обновлю эту страницу или добавлю ссылки для загрузки в таблицу.

Update 20-DEC-2016: В центр загрузки добавлены пакеты для смартфонов Motorola на платформе EZX, которые я собрал ещё в феврале прошлого года, специально для подаренного мне ROKR E6. Поскольку для разработки под платформу EZX используется старый кросс-компилятор GCC 3.3.6, возникли некоторые осложнения с выравниванием размеров структур. К сожалению, протестировать полностью Cave Story на этом устройстве мне не удалось из-за нехватки свободного времени, но до локации «Грасстаун» я смог дойти.



Запущенная русская версия игры Cave Story на движке NXEngine на смартфоне Motorola ROKR E6; платформа EZX

Все изменения для платформы EZX опубликованы в репозитории на GitHub, ссылку на который можно увидеть в предыдущем разделе. В раздел, посвящённый управлению в этой статье, добавлена соответствующая информация.

Update 22-DEC-2016: Администрация фанатского сайта www.cavestory.org заметила мой проект переноса NXEngine на различные платформы и любезно разместила установочные пакеты на своих серверах. Этот сайт содержит множество информации о Cave Story и обязателен к посещению каждым поклонником этой игры. Огромное спасибо andwhyisit и SkyeWelse за ваше внимание!

Установочные пакеты на всякий случай залиты ещё и на Yandex.Disk, играйте с удовольствием!

Update 22-FEB-2017: Со мной связался Ola Andersson и попросил скомпилировать ванильный NXEngine версии 1.0.0.6 для MS Windows 32-bit, я выполнил его просьбу и пакет был добавлен как на сайт Cave Story, так и в папку NXEngine на Yandex.Disk. По сути это просто обновление английской версии NXEngine до актуального состояния.

Кроме того, хочу посоветовать к использованию на современных системах форк NXEngine-evo от iSage, поскольку он имеет ряд исправленных ошибок и поддерживает популярные широкоформатные разрешения. Скачать готовые к запуску пакеты для основных настольных операционных систем можно в его репозитории.

<< Перейти к содержанию

Dev, Dingux, EZX, MotoMAGX

Cave Story (Doukutsu Monogatari) via NXEngine для различных платформ: 4 комментария

  1. Встреча с шипами просто потрясающая. Кстати, рекомендую — Hotline Miami и Droid Assault, потрясающие игрушки в 8 битном стиле.

  2. Пара поправок:
    1) Pixel сам никогда не портировал свой движок ни на какие платформы. Портировали энтузиасты на условиях: а) написать прототип самостоятельно б) получить после этого исходники и никому их не давать.

    2) Кейтлин (автор nxengine) — она.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *