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

Сообщение добавлено пользователем SerGEAnt

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

LUNARK

header.jpg?t=1688072893

  • Жанр: Платформер
  • Платформы: PC
  • Разработчик: Canari Games
  • Издатель: WayForward
  • Дата выхода: 30 марта 2023
  • Движок: GameMaker
     
Скрытый текст

 

Скрытый текст

ss_1cdf66fcc365b71e832f341a428ce2536ebf9

ss_b1988ae11395b7366976f52d0f4b7bf57d0d9

ss_b25bad4440f64660a255006ecf934deb88132

Скрытый текст

LUNARK — это современная интерпретация кинематографических 2D-платформеров из 90-х. Действие происходит на далекой планете, где царит тоталитарный режим. В роли Лео — курьера с уникальными способностями и загадочным прошлым — вы будете бегать, прыгать, висеть, карабкаться, кататься и стрелять, находясь в анимированных пиксельных средах. Например, в антиутопичном мегаполисе, жутких пещерах или внеземном лесу. Выбирайтесь из ловушек, решайте головоломки, получайте улучшения, сражайтесь со вражескими дроидами и боритесь за выживание. На пути Лео встретит ярких персонажей, которые заставят его усомниться в своих идеалах. Раскройте страшную тайну нового дома, уготованного для человечества, и узнайте всю правду о главном герое в этом эпичном научно-фантастическом приключении!

 

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


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

@0wn3df1x в игре двигло Game Maker Studio. Заменить шрифт не особая-то и проблема. Текст лежит отдельно в json файле language.json

Скрытый текст

Screenshot-5.jpg

 

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

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


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

Стилистика мое почтение. The Way ещё напомнило от разработчиков Puzzling Dream.

header.jpg?t=1724959391

 

  • Лайк (+1) 1

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


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

@0wn3df1x в игре двигло Game Maker Studio. Заменить шрифт не особая-то и проблема. Текст лежит отдельно в json файле language.json

  Скрыть содержимое

Screenshot-5.jpg

 

Скрипт для экспорта language.json в csv файл и обратного импорта:

Скрытый текст

import json
import csv
import os
import tkinter as tk
from tkinter import filedialog, messagebox

class LanguageFileManager:
    def __init__(self, root):
        self.root = root
        self.root.title("Language File Manager")
        
        self.label = tk.Label(root, text="Укажите путь к language файлу:")
        self.label.pack(pady=10)
        
        self.path_entry = tk.Entry(root, width=50)
        self.path_entry.pack(pady=5)
        
        self.browse_button = tk.Button(root, text="Обзор", command=self.browse_file)
        self.browse_button.pack(pady=5)
        
        self.export_button = tk.Button(root, text="Экспорт", command=self.export_to_csv)
        self.export_button.pack(pady=5)
        
        self.import_button = tk.Button(root, text="Импорт", command=self.import_from_csv)
        self.import_button.pack(pady=5)
        
    def browse_file(self):
        file_path = filedialog.askopenfilename(filetypes=[("JSON files", "*.json")])
        self.path_entry.delete(0, tk.END)
        self.path_entry.insert(0, file_path)
        
    def export_to_csv(self):
        file_path = self.path_entry.get()
        if not file_path:
            messagebox.showerror("Ошибка", "Путь к файлу не указан")
            return
        
        try:
            with open(file_path, 'r', encoding='utf-8') as file:
                data = json.load(file)
            
            csv_file_path = filedialog.asksaveasfilename(defaultextension=".csv", filetypes=[("CSV files", "*.csv")])
            if not csv_file_path:
                return
            
            with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:
                writer = csv.writer(csv_file, delimiter='\t', quoting=csv.QUOTE_NONE, escapechar='\\')
                
                # Заголовок
                header = ["ID", "Type"] + list(data.keys())
                writer.writerow(header)
                
                # Данные
                all_keys = set()
                for lang in data.values():
                    all_keys.update(lang.keys())
                
                for key in sorted(all_keys, key=int):
                    row = [key, "string"]
                    for lang in data.keys():
                        value = data[lang].get(key, "")
                        if isinstance(value, int):
                            row[1] = "int"
                            value = str(value)
                        # Заменяем \n на \\n
                        value = value.replace('\n', '\\n')
                        row.append(value)
                    writer.writerow(row)
            
            messagebox.showinfo("Успех", f"Данные успешно экспортированы в {csv_file_path}")
        
        except Exception as e:
            messagebox.showerror("Ошибка", f"Ошибка при экспорте: {e}")
    
    def import_from_csv(self):
        file_path = self.path_entry.get()
        if not file_path:
            messagebox.showerror("Ошибка", "Путь к файлу не указан")
            return
        
        csv_file_path = filedialog.askopenfilename(filetypes=[("CSV files", "*.csv")])
        if not csv_file_path:
            return
        
        try:
            with open(csv_file_path, 'r', encoding='utf-8') as csv_file:
                reader = csv.reader(csv_file, delimiter='\t', quoting=csv.QUOTE_NONE, escapechar='\\')
                header = next(reader)
                
                data = {lang: {} for lang in header[2:]}
                
                for row in reader:
                    key = row[0]
                    value_type = row[1]
                    for i, lang in enumerate(header[2:], start=2):
                        value = row[i]
                        # Заменяем \\n на \n
                        value = value.replace('\\n', '\n')
                        if value_type == "int":
                            value = int(value)
                        data[lang][key] = value
            
            json_file_path = os.path.splitext(file_path)[0] + "_update.json"
            with open(json_file_path, 'w', encoding='utf-8', newline='') as json_file:
                json.dump(data, json_file, ensure_ascii=False, indent=2)
            
            messagebox.showinfo("Успех", f"Данные успешно импортированы в {json_file_path}")
        
        except Exception as e:
            messagebox.showerror("Ошибка", f"Ошибка при импорте: {e}")

if __name__ == "__main__":
    root = tk.Tk()
    app = LanguageFileManager(root)
    root.mainloop()

 

Скрипт в виде готового приложения:

https://drive.google.com/file/d/1_wneaen93shN7jWzWTwdjffsEhlAMZiZ/view?usp=sharing
1) Нажимаем “обзор” и выбираем json файл.
2) Нажимаем “Экспорт” и сохраняем под любым названием.
3) После перевода нажимаем “Импорт” и выбираем отредактированный csv файл, после чего будет создан language_update.json с изменениями.

Wxq5q6P.png

Csv файл достаётся в таком виде:
32v0w1C.png

Можно скопировать и вставить на гугол-таблицы:
hOu8UCj.png

А затем скопировать и вставить в csv файл обратно. 

Скрытый текст
  1. Важно экранировать кавычки, если они технические — “ должно быть \”
     
  2. Переносы экранируются дважды. То есть должно быть \\n


Всего текста: 15742 слова без повторяющихся строк.
5394 слова — это имена разработчиков и поддержавших на кикстартере.
Оставшийся текст: 10348 слов.

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

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


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

@0wn3df1x Чувствую, что скоро можно будет поиграть на великом православном :)

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


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

@0wn3df1x Чувствую, что скоро можно будет поиграть на великом православном :)

Если кто-то захочет взяться за перевод.
SileNTViP знает про движок GM и про шрифты на нём.
Я могу достать текст в нужном виде, хотя выше уже выложил скрипт и standalone-приложение.

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


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

Временный Шрифт для торрент едишн LUNARK.Build.11060535. Как поведет себя архив на других билдах не знаю.

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


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

Думаю, раз время пока есть, попробую перевести и эту игру. Правда временный шрифт и вправду выглядит как временный. Уж больно странноватый. Пока просто займусь переводом, об остальном подумаю потом.

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


Ссылка на сообщение
18 часов назад, Ниорк сказал:

Думаю, раз время пока есть, попробую перевести и эту игру. Правда временный шрифт и вправду выглядит как временный. Уж больно странноватый. Пока просто займусь переводом, об остальном подумаю потом.

Да шрифт поправить не долго. Лишь бы найти толковый ttf/otf. Да пока и смысла без текста подбирать.

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


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

Да шрифт поправить не долго. Лишь бы найти толковый ttf/otf. Да пока и смысла без текста подбирать.

Тогда, могу завтра скинуть первую версию перевода, заодно протестировать что я ничего лишнего (системного не тронул).

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


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

Игрушка обалденная. За 2 выходных прошёл и получил массу удовольствия, всем любителям олдскульного геймплея в духе Flashback и Another World обязательно к прохождению. Музыка тоже зачёт, одна композиция однозначно пойдет в плейлист.

Позволю себе побыть немного тестером :)

Использовал первый вариант шрифта, и в моменте, когда должны пойти титры (финальные) вылетела ошибка:

Скрытый текст

############################################################################################
ERROR in
action number 1
of Draw Event
for object obj_ENDING_credits:

REAL argument incorrect type undefined############################################################################################
gml_Script___scribble_gen_6_build_lines (line 350)
gml_Script___scribble_class_model (line 324)
gml_Script_anon___scribble_class_element_gml_GlobalScript___scribble_class_element_4115868___scribble_class_element_gml_GlobalScript___scribble_class_element (line 1379)
gml_Script_anon___scribble_class_element_gml_GlobalScript___scribble_class_element_45680___scribble_class_element_gml_GlobalScript___scribble_class_element (line 164)
gml_Script_format_backers (line 310)
gml_Script_draw_credits (line 258)
gml_Object_obj_ENDING_credits_Draw_0 (line 20)

Совсем не критично, ибо после титров никаких дополнительных сцен нет и прохождению не мешает, но я любитель досматривать титры до конца. Фетиш такой :) Был бы рад фиксу, если такое представляется возможным. Возможно, со 2 вариантом шрифта не так, не проверял (придется переиграть всю 12 главу целиком).

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


Ссылка на сообщение
4 часа назад, lordik555 сказал:

Игрушка обалденная. За 2 выходных прошёл и получил массу удовольствия, всем любителям олдскульного геймплея в духе Flashback и Another World обязательно к прохождению. Музыка тоже зачёт, одна композиция однозначно пойдет в плейлист.

Позволю себе побыть немного тестером :)

Использовал первый вариант шрифта, и в моменте, когда должны пойти титры (финальные) вылетела ошибка:

  Error (Показать содержимое)

############################################################################################
ERROR in
action number 1
of Draw Event
for object obj_ENDING_credits:

REAL argument incorrect type undefined############################################################################################
gml_Script___scribble_gen_6_build_lines (line 350)
gml_Script___scribble_class_model (line 324)
gml_Script_anon___scribble_class_element_gml_GlobalScript___scribble_class_element_4115868___scribble_class_element_gml_GlobalScript___scribble_class_element (line 1379)
gml_Script_anon___scribble_class_element_gml_GlobalScript___scribble_class_element_45680___scribble_class_element_gml_GlobalScript___scribble_class_element (line 164)
gml_Script_format_backers (line 310)
gml_Script_draw_credits (line 258)
gml_Object_obj_ENDING_credits_Draw_0 (line 20)

Совсем не критично, ибо после титров никаких дополнительных сцен нет и прохождению не мешает, но я любитель досматривать титры до конца. Фетиш такой :) Был бы рад фиксу, если такое представляется возможным. Возможно, со 2 вариантом шрифта не так, не проверял (придется переиграть всю 12 главу целиком).


Ошибка REAL argument incorrect type undefined может возникать, если в некоторых функциях ожидались числа (например, идентификаторы или количественные значения), а вместо них переданы текстовые строки или несуществующие значения. Это может происходить, если ключи с числовыми значениями (такие как "1901": 1, "2101": 1) указаны неверно или отсутствуют.

Возможно, конечно, дело в data.win.

@Ниорк глянул json с локализацией.
Заметил, что у строк:

417023	What are you doing?
803012	If you want to go further, you'll have to deal with these missile launchers.

Отсутствует перевод в русском.

Ещё есть строка

1209019	...

Она одинаковая во всех переводах, идёт тремя точками и только в русском идёт одним символом многоточия … 
Но то, что подобное может спровоцировать краш бывает в исключительных случаях.
Сам json валидный поэтому не уверен, в нём ли проблема.
Я бы копал в сторону изменений в data.win.

@lordik555
Можешь глянуть конец этого видео и сказать таймкод, где конкретно вылетело? Чем конкретней, тем лучше.

P.S. Возможно имеет смысл откатить файлы до оригинальных и проверить финальные титры на оригинальном французском языке? Если вылетит — значит проблема на уровне игры. Тогда нужно будет просто перетащить локализацию на любой другой язык кроме французского.

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

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


Ссылка на сообщение
32 минуты назад, 0wn3df1x сказал:

глянул json с локализацией.
Заметил, что у строк:

Интересно, проходил дотошно, но абсолютно все фразы, которые мне встретились были переведены. Были неточности в роде и во времени глагола несколько раз только.

34 минуты назад, 0wn3df1x сказал:

Можешь глянуть конец этого видео и сказать таймкод, где конкретно вылетело? Чем конкретней, тем лучше.

2:14:28 — ровно в тот момент крашается, когда должна появится надпись Lunark (при этом она не появляется).

37 минут назад, 0wn3df1x сказал:

P.S. Возможно имеет смысл откатить файлы до оригинальных и проверить финальные титры на оригинальном французском языке? Если вылетит — значит проблема на уровне игры.

Попробую сначала на 2 варианте шрифта, а потом на французский переключусь. Отпишусь потом.

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


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

Я вроде после того как уже на зоге выложили, немного правил перевод (на бусти), но всё ещё не уверен, что титры пойдут. И пока времени на проверить нет, надо закончить оставшиеся переводы. Так что я не против бесплатных тестеров :D

Скорее всего дело именно в json файле, если быть совсем точным, то в строчках которые нельзя было трогать(ибо они ключи по которым игра ориентируется, какой диалог использовать). Как имена, если их трогать то игра вылетает при диалоге. Но если объект отдельный то всё норм (типа корабля).

Ну и цифры да, у меня exel зачем то увеличил все значения на 1, что не надо было делать. 

Изменено пользователем Ниорк

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: SerGEAnt
      Samson

      Метки: Экшен, Приключение, Гонки, Приключенческий экшен, Упрощённый рогалик Платформы: PC XS PS5 Разработчик: Liquid Swords Издатель: Liquid Swords Серия: Samson Дата выхода: 8 апреля 2026 года

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

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

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

    • Думаю, чтобы: Напомню, нашей темой было то, что производитель экономит на компонентах и отсюда и всплывают всякие наприятные моменты (треск, свист, щелчки и прочие посторонние звуки). Ну молодец. Моя практика включает в себя порядком поболее двух видеокарт. А щелчки от напряжения металла можно услышать не только в радиаторах отопления, но и на той же термостанции для пайки 
    • Как думаешь, зачем я предложил простой эксперимент на радиаторе отопления? Температуры воды в нём сравнимы с тем, до которых доходят температуры карты (разумеется, там отнюдь не кипяток — не то время года, да и не тот уровень “сервиса”). В том числе и нижние температуры и общие перепады при остывании. Повторюсь, у меня под рукой буквально есть внешняя видеокарта с корпусом из пластика и алюминия, которая ведёт себя схожим образом (уровень шума щелчков металла, разумеется, ниже, но звуки отчётливо слышны при остывании, и да, для подобных решений egpu это нормальное явление). Мой опыт в данном вопросе в том числе и практический. Проще говоря, я банально слышал эти щелчки (и изучал источник звука) и имею представление, что именно может щёлкать на практике, а не только лишь теоретически. Обычно металл щёлкает, пластик — трещит, это если совсем упростить. А касательно того, почему у одних трещит, а у других нет (в т.ч. на идентичных железках), например, одним из факторов может стать банально разное качество вентиляции в корпусе. А следовательно разный уровень как общего нагрева, так и разный перепад температур по итогу.
    • И что же там за такой невероятный перепад температур, что заставляет бэкплэйт 5060 аж трещать. Дело не в алюминии как материале, а в качестве изготовления (крепёж, подгонка и т.д.) Поэтому у одних трещит, а у других нет никаких посторонних звуков 
    • на нексусе описаны 2 варианта установки, рекомендуемый, я так понимаю идет взаимодействие с игровыми файлами в моих документах, и не рекомендуемый способ, установка в папку с игрой. Какой используется в установщике русификатора? Да и малость удивило, что в установщике русификатора есть пункт “официальный сайт — mes.ru” Московская школа экономики, это тут вообще причем?
    • Что бы я тебе ни ответил, ты всё равно скажешь, что я использовал интернет, т.к. ни это, ни обратное не проверить. Так что зачем спрашиваешь? В любом случае, ты спросил, к чему я привёл пример, я тебе ответил. Так что будь любезен не переходить на личности и не менять тему. Напомню, нашей темой было то, что именно может трещать в корпусе из начинки после перепадов температур. Ты чем-то там раньше хвалился, помню, но не помню чем именно. В любом случае, оценки меня мало интересуют, т.к.они мало что отображают на практике, по крайней мере по моему опыту оценки работников по их фактическим навыкам. К слову, материаловедение — это отдельный предмет от физики, но это ты, разумеется, знаешь.
    • А может и из анодированного алюминия  Ты наверное забыл, что у меня пятёрка по физике  Я сам кому хош урок преподам. Расскажи-ка мне закон Ома для полной цепи, без помощи интернета 
    • В плане материала. Бакплейт может быть алюминиевым. В т.ч. этот материал в массе своей и у радиаторов охлаждения карт. По сути это один из наиболее распространённых материалов в пк в целом. Потому и предлагаю тебе такой простой и наглядный прикладной урок материаловедения. Зная материалы, вполне возможно предсказать и их поведение в определённых сценариях перепада температур. А как следствие и заранее выбрать более подходящее для себя решение.
    • Запускал игру с v1.0 и v1.1a — такой проблемы не было.
    • Глупые. Надо было на Кипр.  P.S. Возможно это диверсия “бывших” разработчиков Чорнобыля  или Метро.
  • Изменения статусов

    • Jimmi Hopkins  »  SerGEAnt

      Это не просто перевод, а полноценная авторская сценарная адаптация. Диалоги переписаны так, чтобы персонажи звучали живо, остро и в характере. Добавлен чёрный юмор там, где авторы постеснялись. Убраны лорные противоречия, докручены мотивации. В результате игра стала умнее, злее и смешнее оригинала.
      · 0 ответов
    • ElikaStudio

      Долгожданный релиз полного сезона состоялся!
      https://youtu.be/mwBk2stm2OQ?si=qpJojB_XDABaC0We
      https://vk.com/video-48153754_456239394?sh=4&list=c62797c2b7d0725d6e
      Life is Strange: Before the Storm:
      Эпизод 1: "Прoбуждeниe"
      Эпизод 2: "О дивный новый мир"
      Эпизод 3: "Ад пуст"
      Бонусный эпизод: "Прощание"
      Русская озвучка уже доступна для скачивания!
      ElikaStudio выражает огромную благодарность всем, кто принял участие в создании проекта! 
      Группе Mechanics VoiceOver R.G. MVO , в частности их руководителю Дмитрию за неоценимую помощь в выпуске эпизода.
      Скачать для PC Classic (2018):
      GDrive: - https://drive.google.com/file/d/19CL_L80Mz0sIxcb54Ss64byAkeZmV22r/view?usp=sharing
      Скачать для PC Remastered (2022):
      GDrive: - https://drive.google.com/file/d/13q58Lpvw5_aYPYeZ7OGYZlAKOoS1gEbL/view?usp=sharing
      Скачать для Свитч(2022):
      GDrive: - https://drive.google.com/file/d/15e—T1LQiGQCYIHeNnj_C2qJA16Gvh1i/view?usp=sharing
      Ручная установка PC(оба издания):
      https://drive.google.com/drive/folders/1MJPd8965m4XxxAuOBt8enSHtv8_yy5xh?usp=sharing
      Баг репорт в обсуждении:
      https://vk.com/topic-48153754_55571577
      ___________________________________________
      Финансовый аппарат:
      www.donationalerts.com/r/elikastudio
      Пожертвовать средства на наши проекты:
      Кошелек ЮMoney 4100 1188 6818 3009
      карта Сбер банк 2202 2018 6334 1042
      карта Альфа банк 5559 4937 0209 8584
      Спасибо за вашу поддержку!
      #elikastudio #русскаяозвучка
      · 0 ответов
    • fox222  »  Siberian GRemlin

      Здравствуйте, хочу купить персональный доступ к переводам, сколько стоит?
      · 1 ответ
    • vitkach  »  eaZy

      Извините за беспокойство. Хотел спросить, а русификатор ещё когда-нибудь будет обновляться? Дело в том, что после его выхода выходили ещё обновления, в частности обновление 1.1, вышедшее летом 2023 года, где была добавлена целая сюжетная глава в конце если проходишь на лучшую концовку золотого пути, это где-то ещё полчаса диалогов. Также в игре присутсвуют иногда кракозябры вместо русского языка, это в основном связано с тем, что кое-где текст был изменён, в основном в обучающих сообщениях.
      · 0 ответов
    • TerryBogard  »  Siberian GRemlin

      C&C: RA: Retaliation (ПК) не работает.
      · 0 ответов
  • Лучшие авторы


Zone of Games © 2003–2026 | Реклама на сайте.

×