Перейти к содержимому
Zone of Games Forum

Рекомендованные сообщения

Кто бы мог помочь с тем, как вшить в эту игру русские шрифты, а то игра довольно таки весёлая, и диалоги есть, вот хотелось бы перевести её на русский язык, только со шрифтами не особо умею обращаться, так что прошу или помочь вшить русские шрифты, или подсказать как это сделать. Заранее спасибо!

Ах да и забыл сказать, игра есть на торрентс.ру.

Изменено пользователем Manfis

Поделиться сообщением


Ссылка на сообщение

    Уведомление:
    В игре есть официальный русский перевод
Изменено пользователем 0wn3df1x

Поделиться сообщением


Ссылка на сообщение
7 минут назад, Starastel сказал:

И шрифт сам по себе заменяет почти всю латиницу (оставил некоторые буквы).

Ограничение чаров 32-126?

Поделиться сообщением


Ссылка на сообщение

Не подсчитвал. Но мне пришлось занять некоторые неиспользуемые символы. В моём шрифте точно нет заглавной Х. Всё остальное (включая букву ё) вроде на месте. А буквы Y, Z, V, v я оставил вроде для “более лучшей ореинтации в управлении”.

Изменено пользователем Starastel

Поделиться сообщением


Ссылка на сообщение

Вот текст извлечённый из exe’шника (его примерно 50 кб).

Конвертер работает. Готовый текст скидывать сюда, я его сам уложу в игру.

Ограничение длинны строки (как сказал @artemon) можно обойти только в диалогах (таже самая система работает в терминалах). В остальных местах (названия уровней, всплывающий текст) ограничение обходить нельзя. Если предложение получается меньше — добавляем пробелы. Рекомендую переводить текст через обычный Блокнот (не Notepad++).

И обходить это ограничение даже имеет смысл.

Например после фразы:

At least we all
escaped, right guys?

идёт: ...guys?

И тут можно либо сократить до ...ребят, либо можно обойти ограничение

5TyleEtAmEM.jpg

Текст нужно переводить весь. Даже имена разработчиков.

В шрифте есть все буквы кроме заглавного Ъ и Ё. Также в нём есть латинские V, v, Z, Y (для управления и некоторых мест, где понадобятся V и v).

В 15.09.2020 в 00:42, DragonZH сказал:

Ограничение чаров 32-126?

Вроде 32 (если верить исходникам игры).

Поделиться сообщением


Ссылка на сообщение
8 часов назад, Starastel сказал:

Ограничение длинны строки (как сказал @artemon) можно обойти только в диалогах (таже самая система работает в терминалах). В остальных местах (названия уровней, всплывающий текст) ограничение обходить нельзя. Если предложение получается меньше — добавляем пробелы. Рекомендую переводить текст через обычный Блокнот (не Notepad++).

Как с куста вставился текст и увеличился. :)

image.png

И кнопка даже работает.
image.png
Названия уровней также увеличилось. Хз в чём у вас проблема. Весь текст открывается декомпилятором в pushstring всё. Вставку в exe я свою использовал от NeoScavenger, прокатила. :)

8 часов назад, Starastel сказал:

Вроде 32 (если верить исходникам игры).

Не знаю декомпиленые исходники мельком глянул ничего не нашёл, наверное квадратами координаты берутся, сделано так. По текстуре угадал, видно 32-127, так что доступно 96, но это с пунктуацией и цифрами конечно. Варианта два немножко сломать латиницу, либо для русского капс, первый предпочтительней. Вот только демка у меня стимовская, игры нет, но думаю это всё однотипное.

Поделиться сообщением


Ссылка на сообщение

Демка сделана на Flash. Полная версия сделана на C++ (у меня gog версия). Для экспериментов можно использовать VVVVVV: Make and Play edition. Она идентична Steam и GOG версиям игры, но она бесплатная и там убраны уровни из оригинальной игры (а так версия одинаковая — 2.2).

Изменено пользователем Starastel

Поделиться сообщением


Ссылка на сообщение

Скачал уж пиратку глянуть.
Да, если на С++ то гемор будет.
Тут пуши, хотя в теме про них написано. Руками тут конечно не вариант,  но в Dungeon Dredmor кто-то ковырял. Есть софт от Домины, там такой же трамтарарам, также на движках Диаблы тестил. Но всякое может получиться даже с помощью софта.
image.png

Вот тут увеличилось quit game. Но в версии VVVVVV: Make and Play edition. в этом месте пуша нет.
Кстати в шрифтах теперь доступны 1-127, так что, возможно, все буквы получится закатать.

Поделиться сообщением


Ссылка на сообщение
10 часов назад, DragonZH сказал:

Кстати в шрифтах теперь доступны 1-127, так что, возможно, все буквы получится закатать.

Не знаю. У меня в кодировках 866 и 1251 игра показывает ???????… (это было слово ЗАГРУЗИ...). Пытался увеличить font.png — бесполезно.

10 часов назад, DragonZH сказал:

Вот тут увеличилось quit game.

В exerus есть такая функция. Я про неё забыл т. к. в SanctuaryRPG такой фокус не работает. Хотя так особо не разгуляешься. Если в одном месте (с пушами) можно написать [КАРТА]. То в другом месте (где нет пушов) придётся писать КАР. Но всё равно это очень сильно облегчает работу. Спасибо @DragonZH

Поделиться сообщением


Ссылка на сообщение
6 часов назад, Starastel сказал:

То в другом месте (где нет пушов) придётся писать КАР.

Так вроде где их нет само увеличивается через радиаликс, а потом уж где есть пуши фиксятся черер .rdmap файл их проще находить от того же радиаликса. С exerus не встречался. SanctuaryRPG что-то раньше ковырял, но так толком не начали, толком не разбирался, строки текста как попало вроде раскиданы были.
На кодировках 866 и 1251 вроде вылет, они байты больше 127 используют.
1-31 байты символов это часть текстуры до уже существующих, там пусто в оригинале. А после 127 внизу тоже пусто, но там как и сказал у меня вылет был. Так что в начало можно буквы прорисовать и с этих байт их вызывать. Ну естественно на таб 9 и переносы не поставить 10 и 13.

Поделиться сообщением


Ссылка на сообщение
11 часов назад, DragonZH сказал:

Так вроде где их нет само увеличивается через радиаликс, а потом уж где есть пуши фиксятся черер .rdmap файл их проще находить от того же радиаликса.

Это действительно работает. Я так полностью меню без сокращений сделал (ну и от КАР избавился). Жаль только у Radialix’а нет встроенного конвертера текста (в exerus он есть). Желательно сделать новый.

 

11 часов назад, DragonZH сказал:

SanctuaryRPG что-то раньше ковырял, но так толком не начали, толком не разбирался, строки текста как попало вроде раскиданы были.

Нет. Там текст находится по порядку. Я его сам извлекал. Перевод даже был частично начат. Шрифт готов. Да там вообще игра воспринимает и 866 и 1251 кодировку (сам перевод пока работает на 866). Но я перевожу игру через exerus.

 

11 часов назад, DragonZH сказал:

На кодировках 866 и 1251 вроде вылет, они байты больше 127 используют.

Ну у меня не вылетало. Возможно это из-за exerus’а. И в Radialix’е он вылетает.

 

11 часов назад, DragonZH сказал:

1-31 байты символов это часть текстуры до уже существующих, там пусто в оригинале. А после 127 внизу тоже пусто, но там как и сказал у меня вылет был. Так что в начало можно буквы прорисовать и с этих байт их вызывать. Ну естественно на таб 9 и переносы не поставить 10 и 13.

Для меня это тёмны лес. В Radialix’е я нашёл табы, но я не знаю как они работают.

Изменено пользователем Starastel

Поделиться сообщением


Ссылка на сообщение

Подготовил новый конвертер текста. Начинаю пока переводить игру.

Изменено пользователем Starastel

Поделиться сообщением


Ссылка на сообщение

Господа, можете скинуть ссылки на радиалекс и на эхерус? Нужно опробовать их на других проектах. 

Поделиться сообщением


Ссылка на сообщение

exerus брал тут (последняя версия 1.1.0.22 в самом низу).

Raidalax брал здесь.

Изменено пользователем Starastel
  • Лайк (+1) 1

Поделиться сообщением


Ссылка на сообщение
В 15.09.2020 в 02:33, Starastel сказал:

Я добавил в игру русский шрифт (где-то в апреле 2020). Но дальше переводить игру я почему-то не решился. Если нужно, я подготовлю текст для перевода. Я пока занят другим проектом.

Ниже представлено практически всё, что я перевёл. И шрифт сам по себе заменяет почти всю латиницу (оставил некоторые буквы).

  Пример перевода (Скрыть содержимое)

TFrnNTyYCjI.jpg

TB9av0sm2is.jpg

ZhDj8ahBtPo.jpg

nsXRyce6cFA.jpg

w8kgqFUdz_Q.jpg

Wsqlx8kZWr4.jpg

 

 

Чудесно

Изменено пользователем ikito-san

Поделиться сообщением


Ссылка на сообщение
В 22.09.2020 в 10:38, Starastel сказал:

exerus брал тут (последняя версия 1.1.0.22 в самом низу).

Raidalax брал здесь.

спасибо!

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: SerGEAnt
      Whirlight: No Time To Trip

      Метки: Приключение, Казуальная игра, Point & Click, 90-е, Юмор Платформы: PC Разработчик: imaginarylab Издатель: imaginarylab, Vsoo Games Серия: imaginarylab Дата выхода: 14 мая 2026 года Отзывы Steam: 22 отзывов, 86% положительных
    • Автор: SamhainGhost

      Steam
      Afallon - это однопользовательская RPG с элементами MMO. Выберите свой класс и расу, чтобы создать уникального персонажа, исследуйте большой открытый мир с разнообразными зонами и биомами и познакомьтесь с живым миром, который меняется в зависимости от ваших действий.
      Так вот, следующая игра в списке "похожих на WoW, но синглплеерных" - Afallon. Я провёл в игре 18 часов и посмотрел весь текущий контент, претензий к автору нет (а Afallon создан одним разработчиком). Он сделал всё, что было в его силах, но впереди ещё предстоит сделать многое.
      C 25/06/26 Afallon получил русскую локализацию. Часть текста в интерфейсе осталось на английском, текст где-то вылезает за пределы рамок. Однако мне больше не нужно ничего делать с русификатором и это отлично.
       
      Русификатор от SamhainGhost, v1d (от 24.02.2026) — гугл диск / boosty
      По ссылке 2 русификатора:
      v1c_uni (Универсальный, но шрифт хуже) — Поддерживаемые версии игры - 0.13.0 и выше
      v1d — (для конкретной версии, но шрифты лучше) — только для версии 0.13.2 от 23.02.26 (по Steamdb билд 22051402)

      Переведено через Deepseek, доработано и проверено человеком.

  • Сейчас популярно

  • Продвигаемые темы

  • Последние сообщения

    • Люди, подскажите, какой русификатор на lost judgment самый более-менее цивильный? И если есть возможность, скиньте его ссылкой в ЛС.
    • Игрушка вроде красочная, но отзывы: что очень глупый сюжет. Юмора вроде достаточно, но как ИИ справился с его адаптацией?
      Меня отпугнуло больше количество голубцов, которое якобы в игре присутствует (судя по отзывам). Я не гомофоб, но все же...
    • Это чтобы наши с Мирославом жопы горели в унисон?
    •  что это.   Нет, я помню что что-то  такое писал, но мать твою.... Кратковременный пик это то, что может не засеч мониторинг если у тебя там не а 1/10 сек строчит. Я слышал, что у 5090 это может быть 1200-1300w.
    • Ну к слову, я в основном играю c достаточно серьезным андервольтом снижающем постоянное потребление с 330w до 250w но теперь мне охота посмотреть будут ли тикие пики под 600w или хотя бы 400-500w
    • Будет ли апдейт под 2.0?
    • //------------------------------------------------ //--- 010 Editor Binary Template // // File:        Asura_TXTH.bt // Authors: Giza+AI // Description: Asura Engine Text Resource (.ASRBE / .ASR / TXTH chunk) // File Mask:   *.ASRBE,*.asr,*.bin // ID Bytes:    41 73 75 72 61 20 20 20 54 58 54 48 // "Asura   TXTH" //------------------------------------------------ BigEndian(); // ------------------------------------------------ // Header Definition (36 bytes / 0x24) // ------------------------------------------------ struct HEADER {     char   magic[8]        <comment="Engine signature: 'Asura   '">;     char   chunkType[4]    <comment="Chunk signature: 'TXTH' (Text Header)">;     uint32 chunkSize       <comment="Total size of remaining chunk payload (FileSize - 24)">;     uint32 version         <comment="Structure version (typically 1)">;     uint32 flags           <comment="Resource flags">;     uint32 entryCount      <comment="Number of localized string entries">;     uint32 archiveHash     <format=hex, comment="Archive/File 32-bit Hash ID">;     uint32 totalTextBytes  <comment="Total raw byte size of all UTF-16 text data">; } header <style=sHeading1>; // ------------------------------------------------ // Localized Text Entry // ------------------------------------------------ typedef struct {     uint32  keyHash   <format=hex, comment="32-bit hash identifier for the key name">;     uint32  charCount <comment="String length in UTF-16 characters (including null terminator)">;     wchar_t text[charCount] <comment="UTF-16BE encoded text">;          // 4-byte padding alignment     local int textBytes = charCount * 2;     if ((textBytes % 4) != 0) {         ubyte padding[4 - (textBytes % 4)] <comment="Alignment padding">;     } } TEXT_ENTRY <read=ReadTextEntry>; wstring ReadTextEntry(TEXT_ENTRY &entry) {     return entry.text; } // ------------------------------------------------ // Text Entries Table // ------------------------------------------------ struct TEXT_ENTRIES {     TEXT_ENTRY entries[header.entryCount] <optimize=false>; } textEntries <style=sSection1>; // ------------------------------------------------ // Key Names Table (ASCII / null-delimited) // ------------------------------------------------ typedef struct {     string keyName <comment="Identifier key corresponding 1-to-1 with entry index">; } KEY_ENTRY <read=ReadKeyEntry>; string ReadKeyEntry(KEY_ENTRY &k) {     return k.keyName; } struct KEY_TABLE {     uint32 keyTableSize <comment="Total size in bytes of raw string table">;     KEY_ENTRY keys[header.entryCount] <optimize=false>;          // Remaining alignment padding to EOF (aligned to 16 bytes)     if (!FEof()) {         ubyte filePadding[FileSize() - FTell()] <comment="End-of-file padding">;     } } keyTable <style=sSection2>;   на основе этого ии написал пайтон скрипт:
        #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Asura Engine TXTH (.ASRBE) Text Exporter & Importer Supports Big-Endian Asura text archives (PS3 / Xbox 360). """ import sys import os import struct import json import argparse def export_asrbe(file_path, output_path=None): if output_path is None: output_path = os.path.splitext(file_path)[0] + ".json" with open(file_path, "rb") as f: data = f.read() if len(data) < 36: raise ValueError("File is too small to be a valid ASRBE file.") magic = data[:8].decode("latin1") chunk_type = data[8:12].decode("latin1") if magic != "Asura " or chunk_type != "TXTH": raise ValueError(f"Invalid header signature: {magic!r} / {chunk_type!r}") chunk_size, version, flags, entry_count, archive_hash, total_text_bytes = struct.unpack(">IIIIII", data[12:36]) offset = 36 entries_data = [] for i in range(entry_count): key_hash, char_count = struct.unpack(">II", data[offset:offset+8]) offset += 8 text_raw = data[offset:offset + char_count * 2] text = text_raw.decode("utf-16-be").rstrip("\x00") offset += char_count * 2 # 4-byte padding alignment if offset % 4 != 0: offset += 4 - (offset % 4) entries_data.append({ "key_hash": f"0x{key_hash:08X}", "raw_hash": key_hash, "text": text }) # Read Key Table key_table_size = struct.unpack(">I", data[offset:offset+4])[0] offset += 4 keys_raw = data[offset:offset + key_table_size] # Split null-delimited keys key_names = [k.decode("latin1") for k in keys_raw.split(b"\x00") if k] # Combine keys and entries output_entries = [] for i in range(entry_count): k_name = key_names[i] if i < len(key_names) else f"UNKNOWN_KEY_{i}" output_entries.append({ "index": i, "key": k_name, "key_hash": entries_data[i]["key_hash"], "text": entries_data[i]["text"] }) meta = { "format": "Asura_TXTH", "endian": "big", "version": version, "flags": flags, "archive_hash": f"0x{archive_hash:08X}", "raw_archive_hash": archive_hash, "entry_count": entry_count, "entries": output_entries } with open(output_path, "w", encoding="utf-8") as f: json.dump(meta, f, ensure_ascii=False, indent=2) print(f"[+] Successfully exported {entry_count} entries to {output_path}") def import_asrbe(json_path, output_path): with open(json_path, "r", encoding="utf-8") as f: meta = json.load(f) entries = meta["entries"] entry_count = len(entries) version = meta.get("version", 1) flags = meta.get("flags", 0) archive_hash = meta.get("raw_archive_hash") if archive_hash is None: archive_hash = int(meta["archive_hash"], 16) # Build text entries block text_entries_bytes = bytearray() total_text_bytes = 0 for entry in entries: raw_hash = entry.get("raw_hash") if raw_hash is None: raw_hash = int(entry["key_hash"], 16) text = entry["text"] + "\x00" # include null terminator text_utf16 = text.encode("utf-16-be") char_count = len(text) entry_bytes = bytearray() entry_bytes.extend(struct.pack(">II", raw_hash, char_count)) entry_bytes.extend(text_utf16) # 4-byte padding text_len = len(text_utf16) total_text_bytes += text_len if len(entry_bytes) % 4 != 0: pad_len = 4 - (len(entry_bytes) % 4) entry_bytes.extend(b"\x00" * pad_len) text_entries_bytes.extend(entry_bytes) # Build keys table keys_raw = bytearray() for entry in entries: keys_raw.extend(entry["key"].encode("latin1")) keys_raw.append(0) # null terminator key_table_bytes = bytearray() key_table_bytes.extend(struct.pack(">I", len(keys_raw))) key_table_bytes.extend(keys_raw) # Payload = text entries + key table payload = text_entries_bytes + key_table_bytes # Pad payload to 16 bytes alignment pad_rem = len(payload) % 16 if pad_rem != 0: payload.extend(b"\x00" * (16 - pad_rem)) # Total chunk size = total file size - 24 # Header is 36 bytes -> header[24:] is 12 bytes + payload chunk_size = 12 + len(payload) header = bytearray() header.extend(b"Asura ") header.extend(b"TXTH") header.extend(struct.pack(">IIIIII", chunk_size, version, flags, entry_count, archive_hash, total_text_bytes)) full_data = header + payload with open(output_path, "wb") as f: f.write(full_data) print(f"[+] Successfully packed {entry_count} entries to {output_path} ({len(full_data)} bytes)") def main(): parser = argparse.ArgumentParser(description="Asura Engine TXTH (.ASRBE) Converter") subparsers = parser.add_subparsers(dest="command", required=True) # Export p_export = subparsers.add_parser("export", help="Export .ASRBE to .json") p_export.add_argument("input_file", help="Path to input .ASRBE file") p_export.add_argument("-o", "--output", help="Path to output .json file") # Import p_import = subparsers.add_parser("import", help="Import .json back to .ASRBE") p_import.add_argument("input_json", help="Path to input .json file") p_import.add_argument("output_file", help="Path to output .ASRBE file") args = parser.parse_args() if args.command == "export": export_asrbe(args.input_file, args.output) elif args.command == "import": import_asrbe(args.input_json, args.output_file) if __name__ == "__main__": main()  
    • А вот были бы мы друзьями....          Выяснил, что мне дают.  Во первых по одной табле антидепрессанта, потом укол чего-то, что влияет на сосуды мозга, что-то связанное с кислородом, ну и наеоч дают микс из фена и циклобарбитала. А вчере я сказал, что всё равно плохо сплю, тогда мне перед миксом дали какую-то ж5ёлтенькую таблетку, а потом сразу микс.   Меня так срубило, сто я даже не помню успел ли я доесть ту сырную булочку, а чай я вышел походу себе на яйца, потому что проснулся в полномьа хуе и "обосанным"  Очень сильная вещь.
    • в 0xC размер блока указана. Скрипт видимо его не меняет у вас. Отсчёт начинается с 0x18, не скажу что прям во всех файлах. Но то что скинули так.
  • Изменения статусов

    • axe66  »  SerGEAnt

      здравствуйте. можете добавить на сайт раздел для игры She’s Leaving и русификатор к нему? и как и куда вам скинуть фото и сам русификатор?
      [h2] Версия: 1.0.1 (от 22.05.2026)
      Совместимость: для сборки 20909321 [/h2]
       Информация:
      Машинный перевод моделью gemma2:9b-instruct с несколькими этапами автоматической перепроверки (модель "самопроверялась") и финальными ручными правками.
      Это не финальная версия — по мере нахождения ошибок перевода будут выходить обновления.
      Известные нюансы:
      * Возможны неточности и ошибки в переводе.
      * Некоторые элементы интерфейса остались без перевода.
       Установка:
      1. Запустить Russifier.exe
      2. Нажать "Выбрать папку"
      3. Выбрать папку с игрой и нажать ОК
      4. Нажать "Установить"
      5. Дождаться завершения установки и закрыть программу.
      После установки запустите игру и наслаждайтесь!
      Если заметили ошибки или некорректные формулировки — оставляйте комментарии, будем исправлять!
       
      Автор: Serjik Sokolov История изменений:   Версия 1.0.1 от 22.05.2026 - Установщик теперь автоматически определяет корневую папку игры, даже если случайно выбрана вложенная папка.   Версия 1.0.0 от 03.12.2025 - Релиз
      · 0 ответов
    • Perfect End Strange  »  SerGEAnt

      Привет, озвучку для Silent Hill 4: The Room выпустил энтузиаст под ником Perfect End Strange, а вы написали совсем другую студию, пожалуйста, исправьте эту оплошность
      · 0 ответов
    • Jimmi Hopkins  »  SerGEAnt

      я его уже открыл в свободный доступ, чтобы не потерялось среди новинок
      · 0 ответов
    • NekoNya  »  Onzi

      https://www.dropbox.com/scl/fi/4xncxr2tqy77vz4644q08/text_RU_FINAL.json?rlkey=xckxss3jkql4gjmc1ah6qjb5e&st=k5ql651f&dl=0 
       
      Вот, то что вышло. Извинюсь, что зря говорил, что помогу (
      · 2 ответа
    • serfly  »  SerGEAnt

      Доброго времени! Недавно столкнулся с проблемой автоперевода XUnity AutoTranslator BeplnEx iL2cc. Пару последних лет часто пользовался, теперь консольные команды виснут на стадии загрузки библиотек, хотя они есть там изначально. На GitHub есть подобные вопросы, но ни одного рабочего ответа я не нашел. А Вы что можете посоветовать?
      · 0 ответов
  • Лучшие авторы


×