Переосмысление и возраждение игры HardTime от MDickie
Игра разработана на движке Blitz3D с языком программирования BlitzBasic
- Ничего не вырезано, неперекодированно, игра полностью соответствует изначальной задумке автора, ничего не добавлено "от себя"
- Добавлена поддержка мультиязычности (ru, eng)
Добавлено устранение проблем с производительностью на современных компьютерах(в будущих обновлениях)- Добавлена поддержка FHD разрешения
- Добавлено переключение оконного режима
- Изменение настроек дисплея теперь происходит непосредственно в самой игре, без необходимости перезапуска
- Склонировать репозиторий
- Поместить в папку с репозиторием ассеты игры (скачать игру на оф. сайте и переместить все папки - Characters, Data, и т.д)
- Скачать и установить Blitz3D
- (Опционально) Создать новую переменную среды
blitzpath
для компиляции из командной строки.blitzpath
должен содержать путь до установленного Blitz3D (прим.C:\Program Files\Blitz3D
). Так же, для удобства, вынести путь до директории с компилятором в переменнуюPATH
(прим.C:\Program Files\Blitz3D\bin
). Что бы проверить правильность настройки окружения для компиляции выполните командуblitzcc -h
, должна будет отобразиться справка по компилятору - Стартовой точкой игры является файл
Gameplay.bb
. Пример компиляции в режиме отладки:blitzcc -d Gameplay.bb
Перевод игры выполняется с помощью написанного мною плагина, представленный в виде функции translate
Из за специфики языка BlitzBasic перевод выполнен в виде двумероного массива, содержащего строки с переводом вида:
array$(index, 0) = "Hello, #FIRST#"
array$(index, 1) = "Привет, #FIRST#"
Где index
- номер переводимой строки, 0
- строка на английском, 1
- строка на русском
Сам перевод осуществляется непосредственно в исходных файлах, для перевода нужно подключить файл Translate.bb
и использовать функцию translate
.
;Пример работы
Include "translate_plugin/Translate.bb"
Print translate("Hello, #FIRST#", "Вася")
;result: Привет, Вася
Функция имеет четыре аргумента, первый - обязательный, содержит ключ для поиска строк, второй, третий и четвертый - необязательные и используются для подстановки по подстрокам #FIRST#
, #SECOND#
, #THIRD#
соответственно.
Если заглянуть в файлы, которые содержат строки с переводом, в самом GitHub можно увидеть, что кириллица отображается в неправильной кодировке, из за чего редактировать и вносить вклад в "онлайн" режиме становится невозможным. К сожалению, это особенность движка или самой игры. HardTime не умеет работать с UTF кодировкой, если использовать ее, то кракозябры будут уже в самой игре. Поэтому файлы с переводами сохранены в Windows-1251
.
Ввиду того, что этот ЯП не поддерживает ассоциативные и динамические массивы необходимо заранее объявлять длину массива. Это может быть очень не удобным, потому, что строки с переводами разбиты по файлам, из за этого добавление или удаление строк приведет к полному переписыванию всех индексов в остальных файлах.
Что бы избежать проблемы, описанной выше, я написал отдельную вспомогательную программу с использованием flutter
, которая хранит все строки с переводом в sqlite
базе данных и позволяет автоматически экспортировать строки в нужном формате.
Скачать ее можно по этой ссылке
Краткое руководство к программе: Программа представленна в виде окна, разделенного на две части (левая и правая). В левой части содержится список групп. Они нужны для логического разделения пар строк с переводом, что бы упростить процесс перевода. Эти группы в конечном итоге будут экспортированы в виде файлов. Внизу левой части находятся две кнопки:
- Добавить - добавляет группу (рекомендую устанавливать названия групп на латинице без спец символов)
- Экспорт - экспортирует все строки с переводом в файлы
.bb
, которые в свою очередь перемещаются полностью с заменой в папку./translate_plugin
в папке репозитория
В правой части отображаются строки с переводом. Этот блок становится активным только после выбора группы. Здесь в верхней части блока находятся такие элементы управления, как:
- Поиск - ищет строки как в английской версии так и в русской, в рамках выбранной группы
- Изменить - позволяет переименовать группу
- Добавить - добавляет новую пару строк в группу
- Удалить - полностью удаляет всю группу, включая все вложенные в нее строки
Ниже лежат все доступные строки с переводом. В левой части каждой отдельной строки находится текстовое поле, считающееся ключем или английской версией строки. В правой - перевод. Далее две кнопки: сохранить изменения и удалить пару.
Для того, что бы подтянуть актуальную базу данных, нужно:
- Скачать актуальную базу данных (за актуальностью базы можно следить здесь) - файл data.db
- Переместить ее в папку
C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ\Documents\databases
- Запустить программу
Если все сделать правильно, у вас должны будут появиться уже созданные группы.
Если вы нашли ошибку или у вас есть идея, как можно улучшить игру - вы можете оставить запрос через соответствующую форму. По другим вопросам можете написать мне на почту info@softbie.ru или Telegram