Итак, вы открыли старый (Game Maker 8 или ниже) проект в Game Maker 8.1 / GameMaker: Studio / GameMaker Studio 2 / ..., и заметили, что вся ваша кириллица превратилась в �.
Эта запись о том, как сконвертировать проект, не убив весь текст.
В чем вообще проблема
Версии GameMaker до 8.0 включительно сохраняли текст внутри файлов в одно-байтовой системной кодировке.
Обывателю эффекты данного решения были преимущественно незаметны, но это могло изрядно насолить, если вы хотели добавить локализацию в игру (скажем, какой-нибудь Ñ в кириллической кодировке Windows-1251 просто нет), или пытались открыть проект, что писался человеком с другой системной кодировкой.
Поэтому с времен Game Maker 8.1 весь текст хранится в кодировке UTF-8, с помощью которой можно представить немыслимое множество символов от латиницы и кириллицы до иероглифов, арабских лигатур, и смайликов.
Но есть подвох: поскольку теперь и сам Game Maker работает в UTF-8 режиме, программа не знает, как интерпретировать несуществующие в UTF-8 символы из однобайтовой кодировки. Ну и, в общем-то, не интерпретирует.
К счастью, GameMaker — не единственный способ открыть проект на GameMaker.
Как решать
Для данного фокуса нам понадобится несколько малоизвестных инструментов и немного смекалки.
- Устанавливаем Java,
если она у вас ещё не установлена.
Проверить можно, открыв Командную Строку / PowerShell (в текущих версиях Windows можно открыть меню Пуск и начать вводить название), и написавjava -version
. Если показывает "java version 1.6.x" или выше, всё хорошо. - Скачиваем gmk-splitter
и распаковываем куда-нибудь.
gmk-splitter позволяет "распаковывать" файлы проектов на старых версиях GameMaker в более простой формат в виде папки с ресурсами, и запаковывать их обратно.
В своё время это преимущественно использовалось с системами управления версиями. - Копируем ваш
.gmk
/.gm6
/.gmd
файл в ту же папку, чтобы он был рядом сgmksplit.jar
. - Открываем Командную Строку или PowerShell из меню по нажатию правой кнопки мыши на пустом месте в папке с зажатым Shift.
Распаковываем файл проекта в под-папку:
java -jar gmksplit.jar вашфайл.gmk orig
Если никаких ошибок не возникло, должна появится папка
orig
с грудой папок (Backgrounds, Fonts) и.xml
файликов внутри.
Если заглянуть в.xml
или.gml
файлы в этой папке (в Scripts или Objects), можно заметить, что кириллица всё ещё нечитаема, но теперь превратилась в разные символы.
Окно можно не закрывать, оно ещё понадобится.- Добавляем все файлы из под-папки в новый ZIP-архив.
- Открываем мою программу для преобразований символов.
Нажимаем на "Load a rule preset?", выбираем "Fix Windows-1251 saved as UTF-8 codepoints".
Нажимаем на кнопку загрузки файлов в секции Convert File(s).
Выбираем только что созданный ZIP-архив.
Нажимаем на "Click here to save!", сохраняем новый ZIP-архив в папку с gmk-splitter (или копируем его туда, если ваш браузер любезно сохранил его в папку загрузок, не спросив вас). - Распаковываем скачанный архив в под-папку
converted
, чтобыConstants.xml
был вconverted\Constants.xml
(без дополнительной вложенности).
Если заглянуть в.xml
или.gml
файлы из папкиconverted
, в них уже "настоящая" кириллица. Возвращаемся в окно Командной Строки / PowerShell и запаковываем папку обратно в файл-проект:
java -jar gmksplit.jar converted вашфайл.gm81
(важно:
.gm81
).
Теперь мы можем открыть этот файл в Game Maker 8.1, или импортировать его в GameMaker: Studio, или сделать иные нужные манипуляции для открытия в нужной версии.
Как-то так.