МОБИЛЬНАЯ ВЕРСИЯ
Сайт :: Правила форума :: Вход :: Регистрация
Логин:   Пароль:     
 12ОСТАВИТЬ СООБЩЕНИЕ НОВАЯ ТЕМА НОВОЕ ГОЛОСОВАНИЕ
СИСТЕМА КОНТРОЛЯ ВЕРСИЙ ДЛЯ ПЕРЕВОДОВСообщений: 16  *  Дата создания: 03 февраля 2012, 00:27  *  Автор: HoRRoR
HoRRoR
03 февраля 2012, 00:27
Ретро-геймер
LV6
HP
MP
Стаж: 5 лет
Постов: 1752
horror_x
Барби
Компилятором булочек
Всем привет. Данный сабж довольно сложен для понимания (ввиду моего неумения доходчиво изъясняться), поэтому постараюсь оформить всё в виде небольшой статьи с картинками. Сразу оговорюсь, что всё пока лишь в теории, это проект ещё не существующей системы, а цель темы — получить общественное мнение. Осторожно, многобукаф, слабонервным не читать!

Немножечко введения

Многие из геймеров когда-либо пользовались патчами для локализации игры на язык, отличный от исходного. Стандартный пример - русификатор или дерусификатор. Есть и те, которые заинтересованы в существовании подобных патчей или версий игр. Также имеются и те, кто, собственно, эти патчи и делает.
Так вот, те, кто хоть немного в курсе, как это делается (неважно, на каком уровне), должны понимать, чем перевод игры отличается от перевода произвольного текста. Остальные же вполне могут догадаться.
Давайте попробуем составить примерный список отличий технически-зависимого текста от технически-независимого:
  • Служебная информация
    Программа — это такая вещь, которой лучше с максимальной точностью объяснять, что ей делать с данными. Поэтому в игровых текстах очень часто присутствует служебная информация, которой в книгах уж точно не встретишь.
  • Скриптовая составляющая
    Согласитесь, места, в которых должно произойти изменение в выводе текста, легче всего указывать в самом выводимом тексте. Именно поэтому интерактивная система вывода текста довольно популярна: для смены аватарки, воспроизведения звука, запуска следующей сцены и т.п. используются служебные коды. Иногда разработчики идут дальше — интегрируют систему вывода текста и систему игровых событий, т.е. разделения код/текст не существует.
  • Форматирование текста
    Что же здесь отличного? Ну, например, методы и способы форматирования зависят от конкретной реализации, т.е. стандартным набором жирный/курсив/подчёркнутый дело ограничивается далеко не всегда. Как вам, например, размер окна диалога или позиционирование текста на экране?
  • Технические ограничения
    Чаще всего игровые тексты имеют определённый набор разрешённых символов, способов форматирования и других характеристик текста (вплоть до длины строки). Любая вольность может просто-напросто поломать игру.
  • Предопределённая структура
    Главы, параграфы, абзацы - это всё не накладывает жёстких требований к структуре, скорей служит лишь средством для более лёгкого восприятия и разделения по общим признакам. Здесь же текст не идёт одним сплошным полотном, он разбит на атомарные элементы. Атомарность, конечно же, определяется контекстом — в названии предмета это слово или словосочетание, в диалоге это реплика и т.д. и т.п.



Думаю, этого достаточно, чтобы задуматься о сложностях, которые могут возникнуть.

Теперь о главном

Суть такова: я собираюсь писать диплом, и примерное название диплома соответствует заголовку темы (если, конечно, вдруг не решу её внезапно сменить). Так что для меня эта тема актуальна независимо от актуальности для остальных. Но то, чем это в теории будет являться, на самом деле гораздо большее, чем просто VCS.
Я несколько раз брался за реализацию, но дело не идёт, потому что я не могу определиться с архитектурой проекта: постоянно понимаю недостатки текущего варианта и совершенствую модель. Поэтому я решил остановиться, подумать, и проконсультироваться с теми, кого данная тема может заинтересовать.
Итак, мне будут полезны любые адекватные обсуждения на эту тему, любые предложения и мнения людей. Я хочу знать, какие недостатки вы здесь видите, что вы считаете необходимым добавить.
Обращаюсь я, в первую очередь, именно сюда. Почему не на ромхакерские сайты? Скажем так, 4F в этом плане менее специализированный ресурс, здесь больше вероятности получить более ценное мнение, чем мнение дилетанта, набившего руку на переводах Марио и в принципе не способного представить практическую пользу подобных вещей. Также, среди обитающих здесь дилетантов гораздо больше грамотных людей, а многие и вовсе не дилетанты. Я знаю, тут есть и переводчики, и программисты, и просто заинтересованные люди.


Основные требования к поставленной задаче

Рассуждая над основными проблемами, с которыми мне приходилось сталкиваться, я выдвинул следующие требования к будущей системе:

  • Гибкость использования
    Несмотря на кучу планируемого функционала, архитектура должна позволять выборочно им пользоваться. Т.е. использование данной системы не обязывает делать все операции её средствами, она не должна фактом своего использования накладывать какую-либо монополию.
  • Сочетание технического и лингвистического функционала
    Технические данные и текст идут бок о бок, и их разделение может быть чревато ошибками. Поэтому всё должно быть в одном месте, но не в одной куче.
  • Удобство для всех сторон
    Техническая сторона должна по-минимуму сказываться на судьбе переводчика, и наоборот: трудности перевода не должны быть техническими трудностями.
  • Максимальное абстрагирование
    Универсальность важна везде. Согласитесь, классно, когда одно и то же средство можно применить ко всем случаям. Ну, или почти ко всем.
  • Простота и функциональность
    Использование системы на базовом уровне не должно требовать от пользователей уметь обращаться с ней в целом на всех уровнях. Пусть порог вхождения определяется особенностями проекта, а не самой системы.
  • Неприхотливость к аппаратной платформе
    Всё просто: чем больше компьютеров подойдут для использования, тем лучше. Например, я хочу иметь возможность крутить всё это на своём ноутбуке, и я постараюсь избежать препятствующих этому ограничений.

Со средствами разработки я определился (если кому-то интересна техническая сторона вопроса): это C++/Qt, упор на MSVC 9.0 (2008), но с рассчётом на поддержку других компиляторов после небольшого рефакторинга.

Добавлено (через 8 сек.):

Обо всём по порядку

Я перечислю некоторые возможности, которые, как я считаю, должны присутствовать в программе. Всё, что я опишу ниже — не высосано из пальца. Я лишь попытался выделить из своего опыта наиболее острые проблемы, с которыми мне приходилось сталкиваться и хочу охватить как можно больше случаев. Для большего понимания, зачем нужна та или иная возможность, я опишу проблемы, которые сподвигли меня занести эту возможность в список необходимых.
Прошу заметить, список не полон, и содержит лишь то, что пришло мне в голову на момент написания.

Возможность: Контроль версий
Проблема: Сложности организации процесса перевода, необходимость ведения история и откатов изменений.
Пример: Произведены ненужные изменения, потеряны данные, etc.
Решение: Производить контроль версий.
Аналоги: SVN, Git, Dropbox


Возможность: Многопользовательская поддержка
Проблема: Необходимость организации коллективного перевода с централизованным хранилищем.
Пример: Несколько переводчиков переводят одну игру и не могут постоянно иметь актуальные данные.
Решение: Клиент-серверное приложение с возможностью создания централизованного репозитория перевода.
Аналоги: Notabenoid, вышеприведённые системы контроля версий.

Возможность: Распределение прав пользователей
Проблема: Ввиду отсутствия инкапсуляции данных возможны потенциальные ошибки.
Пример: Переводчик случайно задел техническую информацию проекта.
Решение: Создание системы распределения прав доступа.

Возможность: Управление разницей версий перевода
Проблема: Сверение и ведение разных версий перевода требует лишних усилий, приводит к избыточности данных
Пример: Отличия пользовательского интерфейса компьютера, телефона и консоли (нажмите Start / кликните мышью / коснитесь экрана); отличия версий разных регионов, цензура (church / hospital).
Решение: Создание контекстов и диалектов, которые хранят лишь обусловленную ими разницу.
Аналоги: Неизвестны.


Возможность: Глоссарий
Проблема: Переводчик может не учесть, что переводимое им слово есть в утверждённом глоссарии и перевести его по-своему.
Пример: Несколько переводчиков по-разному перевели термин.
Решение: Глоссарий должен быть легко доступен, элементы глоссария должны визуально выделяться на фоне остального текста.
Аналоги: Любое средство хранения списка терминов - MS Excel, OO Calc.


Возможность: Редакторские правки
Проблема: Редактор должен аргументировать и комментировать внесённые изменения, делать пометки; также изменения должны быть видны сразу (зачёркнуто, помечено и т.п.).
Пример: Для дальнейшего перевода необходимо знать причины правок, а редактор в этот момент недоступен.
Решение: Создание системы редактуры с данными возможностями.
Аналоги: Системы код-ревью: Atlassian Crucible; в том же Word'е вроде бы есть такие функции.


Возможность: Удаление дубликатов
Проблема: Дублирование текста приводит к необходимости излишней работы, сулит расхождениями шаблонных текстов.
Пример: В каждом уровне игры повторяется описание одних и тех же предметов.
Решение: Выборочно или полуавтоматически убирать дубликаты, оставляя ссылку на один уникальный элемент.
Аналоги: Память переводов.

Возможность: WYSIWYG-представление тегов форматирования
Проблема: Форматирование текста тегами и кодами ведёт к потенциальным ошибкам, мешает процессу перевода
Пример: %format=bold%Нещадно%resetformat% %image=0x39f7d4dc3199bd0a%отформатированный %pushformat%%format=underlined%тегами%format=italic%текст%popformat%.
Решение: Система представления тегов и кодов форматирования визуально отформатированным «чистым» текстом, т.н. WYSIWYG.
Аналоги: Неизвестны. Например, по отношению к doc или rtf, это MS Word и OO Write; по отношению к HTML какой-нибудь Dreamweaver и т.п.

Возможность: Подсветка синтаксиса
Проблема: Порой визуально очень сложно воспринимать текст с наличием служебной информации.
Пример: См. скриншот ниже.
Решение: Реализовать возможность подсветки синтаксиса.
Аналоги: Notepad++.


Возможность: Визуализация текста
Проблема: Необходимость подгона текста под размеры предоставленных для его вывода областей в игре.
Пример: В игре нет автоматического переноса текста, приходится вручную подгонять каждую предложение, проверять в игре.
Решение: Система визуализации текста.

[ Оригинальный размер (1) ] [ Оригинальный размер (2) ]

Возможность: Списки свойств
Проблема: Связанные с текстом данные приходится хранить отдельно, либо же непосредственно с текстом.
Пример: К тексту привязаны координаты вывода на экран.
Решение: Реализовать систему свойств, позволяющую задать настраиваемые свойства у каждого объекта.
Аналоги: Неизвестны. Подобная система реализована в Qt.


Возможность: Свойства-переменные с определяемой семантикой
Проблема: Часто попадаются данные, которые необходимо менять в зависимости от текста. Это создаёт необходимость создавать дополнительный инструментарий или проверять всё в игре.
Пример: В игре размер диалогового окна задаётся фиксированными значениями.
Решение: Создание системы семантики для свойств. Свойства смогут меняться автоматически при изменении объекта, на который указывает семантика.
Аналоги: Неизвестны. Подобная система реализована в Render Monkey для тестирования шейдеров (predefined variables).

[ Оригинальный размер ]

Возможность: Импорт и экспорт
Проблема: Не каждый захочет использовать данную систему или захочет использовать её частично.
Пример: Кто-нибудь любит переводить в блокноте или Word'е.
Решение: Реализовать систему импорта/экспорта, позволяющую в итоге работать с данными там, где удобно пользователю.
Аналоги: Ммм... даже не знаю, что в данном случае вписать :)

Добавлено (через 14 сек.):

Модель данных

Представляю простую схему текущей модели данных. Это не UML, не реляционная схема, это просто овальчики и стрелочки, для интуитивного понимания.
Одна из возникших на данный момент проблем банальна — я не могу определиться с терминологией, то бишь с именованием элементов данной модели. Поэтому буду писать как текущий вариант наименования, так и альтернативные.

Теперь подробнее:

  • Project (Book, Translation) — собственно, проект перевода. Содержит в себе все остальные элементы.
  • Context — буквально контекст перевода. Одна из двух вещей для реализации разницы версий перевода.
    Здесь остановимся подробнее. Лично у меня это ассоциируется с наследованием в программировании, коллеги поймут почему: ведь контекст, по сути, неявно наследует весь текст каждого языка, и может переопределять элементы и добавлять новые. Думаю, легче будет объяснить на примере.

    У нас есть два языка - English и Russian, вроде бы всё просто. Но у нас есть три целевых платформы, некоторые сообщения на которых будут различны независимо от языка (ну, разве что если не попадётся язык, на котором можно одним текстом описать хотя бы два из трёх случаев). Можно было бы просто создать три полных варианта перевода, каждый с платформо-зависимыми отличиями, но тут на помощь приходит контекст, который позволяет просто создать три глобальных (это главное отличие от диалекта) ответвления.
    Теперь про глобальность — суть в том, что контекст не зависит от конкретного языка (поэтому на схеме он выше по иерархии). Своим существованием он говорит о том, что каждый язык должен реализовать описанные в нём элементы (переопределённые или добавленные). В описанном примере в каждом из контекстов есть один элемент, который реализован на всех языках.
    Вот сейчас пишу это и понимаю один из недостатков текущей модели: независимо от платформы присутствует сообщение о необходимом действии для начала игры. А значит, необходим элемент, по иерархии стоящий выше контекста, и обязывающий все контексты иметь данный элемент текста. Возможно, стоит просто добавить какой-либо глобальный контекст, от которого будут наследоваться все остальные.

  • Language — язык. В классическом случае — это именно самые настоящий язык, но по факту им может являться что угодно, любая вещь, на которую можно что-то перевести.
  • Volume (Folder, Directory, Partition) — элемент структуры, эквивалент папки.
  • List — user-defined список строк. Вспомогательная вещь.
  • Chapter (Group) — группа, набор Entry.
  • Dialect — вторая вещь для реализации разницы. В отличии от контекста, это уже ответвления непосредственно языка, привязанные конкретно к этому языку. Например, версии перевода — прозаическая и поэтическая (вспоминая эксперименты Dangaard'а). В остальном тот же контекст.
  • Entry (Item, StringItem, Prototype, Entity) — пожалуй, это главный герой нашей сказки.
    Скажем так, это прототип строки, который существует независимо от языка, а сама строка уже должна быть реализована на каком-либо языке. Реализована — значит должен быть текст, который соответствует этому прототипу.
    Эту штуку можно сопоставить с переменной — она одна и характеризуется фиксированным именем, а уже её значение зависит от области применения (язык и прочее, в нашем случае). Прототип может характеризоваться именем, индексом или чем-нибудь ещё. А может ничем не характеризоваться — просто быть и всё (если где-нибудь необходимо просто множество элементов), это уже зависит от конкретного проекта.
  • String (Data, StringData, Implementation) — строка, непосредственно текст. Другими словами — реализация прототипа строки.
    Можно представить строку в виде следующей функциональной зависимости:
    <текст> = String(Entry, Context, Dialect)
    При этом обязательные аргументы тут Entry и Dialect (в качестве основного диалекта выступает сам Language), Context использовать необязательно.


Что, чёрт возьми, это будет из себя представлять?

Когда я задумываюсь об этом, клиентская часть мне представляется как подобие IDE с интегрированной системой контроля версий. Назовём это ITE — Integrated Translation Environment, интегрированная среда перевода :) В теории это будет среда, делающая всё для удобства перевода. Как ворд для набора текста или IDE для программирования.
С серверной частью всё гораздо проще - это обычно приложение без графического интерфейса, которое выдаёт и сохраняет данные по запросам клиента. В качестве графической оболочки для управления им можно использовать ту же клиентскую часть, но можно настраивать и ручками, в консоли.

Честно говоря, как эталон графического интерфейса подобных программ у меня в мозгу прочно засел Круптар.

[ Оригинальный размер ]

Это можно заметить и глядя на различные сриншоты визуализаторов выше :) Не стану скрывать, инструментов со схожим интерфейсом мною было написано over 9000.

Я не говорю, что буду копировать. Я лишь сделаю схожую идею интерфейса — будет дерево проекта, будет список строк, будут окошки с текстом. Но это будет гибко, настраиваемо, клонируемо. Можно открыть сколько угодно окон для любого количества языков/строк, расположить их как угодно, привязать к каким угодно спискам (по клику на элементе привязанного списка меняется текст в текстовом поле). Но у истоков стоят такие же базовые элементы - дерево, список, текстовое поле.
Но я постараюсь свести к минимуму необходимость использования элементов навигации. Постараюсь сделать так, чтобы вообще не было необходимости касаться мыши (а тогда можно будет скрыть с экрана лишние элементы управления). Примером тому может послужить Visual Assist X для Microsoft Visual Studio — почти вся навигация там осуществляется в доли секунды посредством удобных горячих клавиш и ввода пары ключевых слов. Мне нравится эта идея, это чертовски удобно.
В прочем, я всё это пишу, чтобы услышать ваше мнение на этот счёт. Так что это всё не принятые решения, а лишь планируемые варианты.

Я набросал такой вот макет:

[ Оригинальный размер ]
Не стоит пугаться, это лишь голый макет возможного расположения элементов, ничего общего с реальностью он не имеет. Хотя проблема размещения элементов на экране тут ещё как актуальна. Тем, кто использует два монитора, повезло — это в два раза удобней, чем использовать один монитор (мои личные выводы после подобной практики). Но вот расположить всё необходимое на экране одного монитора (особенно на экране ноутбука) — это сущий ад, поэтому надо подумать об автоматически скрываемых элементах.

Итого: что я хочу вынести на обсуждение

  • Восприятие: какие моменты слишком непонятны, что лишнее, что вообще как китайская грамота?
  • Идея: ваше отношение к идее, концепции?
  • Востребованность: насколько актуален и востребован проект?
  • Возможности: что лишнее, чего не хватает, что непонятно?
  • Модель: адекватность, недостатки структуры?
  • Терминология: как называть элементы модели данных?
  • Интерфейс: каким он должен быть?
  • Помощь: есть ли те, кто хочет и может помочь в разработке?
Rem
03 февраля 2012, 01:18
LV9
HP
MP
Стаж: 13 лет
Постов: 9734
zmaxachz
Изучением нового танца
 HoRRoR @ 03 февраля 2012, 00:27 
Восприятие: какие моменты слишком непонятны, что лишнее, что вообще как китайская грамота?

Если честно, весь текст очень трудно понимаем. Как понимаю, это альфа версия вступления к диплому? Тут всё-таки сидят нормальные люди, которым такой текст даётся сложно. А так, вроде всё понятно, но по кусочкам, общую картину в уме воспроизвести трудно.

 HoRRoR @ 03 февраля 2012, 00:27 
Идея: ваше отношение к идее, концепции?

Всё отлично, даже при том, что в ближайшее время я не намерен заниматься переводами игр, идея мне нравится.

 HoRRoR @ 03 февраля 2012, 00:27 
Востребованность: насколько актуален и востребован проект?

Всё зависит от технических возможностей программы, но мне, нубу в технической стороне это сложно описать. Я смутно представляю как происходит раскодировка текстов из игры и обратно.

 HoRRoR @ 03 февраля 2012, 00:27 
Возможности: что лишнее, чего не хватает, что непонятно?

Лично для меня, было бы удобно подсоединять к тексту озвучку из игры, чтобы лучше ориентироваться, особенно если есть японский звук и английский текст.

 HoRRoR @ 03 февраля 2012, 00:27 
Интерфейс: каким он должен быть?

Модульным. В процессе перевода можно включить те или иные функции для быстрого доступа или убрать не использующиеся, т.е. пользователь сам сможет настроить себе интерфейс (как пример фотошоп).

 HoRRoR @ 03 февраля 2012, 00:27 
Помощь: есть ли те, кто хочет и может помочь в разработке?

Максимум, чем могу помочь - тестингом.
~
HoRRoR
03 февраля 2012, 01:50
Ретро-геймер
LV6
HP
MP
Стаж: 5 лет
Постов: 1752
horror_x
Барби
Компилятором булочек
 Rem @ 03 февраля 2012, 01:18 
Если честно, весь текст очень трудно понимаем.

Увы, как уже писал, не умею доступно изъясняться :(

 Rem @ 03 февраля 2012, 01:18 
Как понимаю, это альфа версия вступления к диплому?

Ну, это скорее тренировка в объяснении сути :) Тут очень остро стоит вопрос терминологии, она как таковая отсутствует в моей голове, поэтому я с трудом объяснял эту идею даже преподавателям.

 Rem @ 03 февраля 2012, 01:18 
Я смутно представляю как происходит раскодировка текстов из игры и обратно.

Эти вопросы не рассматриваются. Можно условиться, что у нас есть игра и средство, которое само вынет текст и превратит его в проект.

 Rem @ 03 февраля 2012, 01:18 
Лично для меня, было бы удобно подсоединять к тексту озвучку из игры, чтобы лучше ориентироваться, особенно если есть японский звук и английский текст.

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

 Rem @ 03 февраля 2012, 01:18 
Модульным. В процессе перевода можно включить те или иные функции для быстрого доступа или убрать не использующиеся, т.е. пользователь сам сможет настроить себе интерфейс (как пример фотошоп).

Согласен. Склоняюсь в пользу dockable-виджетов (перемещаемых, приклеиваемых, комбинируемых). Но меня порой жутко бесит их поведение - сами приклеиваются куда не надо и т.п.
Cpt. Blank
03 февраля 2012, 01:56
LV3
HP
MP
Стаж: 5 месяцев
Постов: 179
Я правильно понимаю, что это проект универсальной программы для

А) Нахождения и вытаскивания графики, текста и прочего из образа игры
Б) Декомпресии
В) Компрессии
Г) Возвращения файлов в образ
?

Для каких консолей?

Исправлено: Cpt. Blank, 03 февраля 2012, 01:57
Rem
03 февраля 2012, 02:04
LV9
HP
MP
Стаж: 13 лет
Постов: 9734
zmaxachz
Изучением нового танца
 HoRRoR @ 03 февраля 2012, 01:50 
Вот это очень ценное замечание, как-то в голову не приходило в контексте этой задачи. А ведь думал над подобным кучу раз, даже ковырял некоторую озвучку.

Да, ещё отмечу, что визуализация перевода очень полезная вещь, особенно, где текст в окошках. Было бы ещё замечательно, если программа могла редактировать размеры таких окошек (если код игры позволяет), вручную (т.е. мышкой взял и растянул, а не копаться в коде и выписывать размеры вручную).

 HoRRoR @ 03 февраля 2012, 01:50 
Склоняюсь в пользу dockable-виджетов (перемещаемых, приклеиваемых, комбинируемых). Но меня порой жутко бесит их поведение - сами приклеиваются куда не надо и т.п.

Приклеивания меня самого раздражают, в принципе, несложно и вручную выставить, как надо (ну кроме тачпада на ноутбуке).

 Cpt. Blank @ 03 февраля 2012, 01:56 
Я правильно понимаю, что это проект универсальной программы для

А) Нахождения и вытаскивания графики, текста и прочего из образа игры
Б) Декомпресии
В) Компрессии
Г) Возвращения файлов в образ
?

Для каких консолей?

Я уже говорил, что текст очень сложно читать? >_>
~
Cpt. Blank
03 февраля 2012, 02:07
LV3
HP
MP
Стаж: 5 месяцев
Постов: 179
Я уже говорил, что текст очень сложно читать? >_>

Это азы ромхакинга)
Rem
03 февраля 2012, 02:19
LV9
HP
MP
Стаж: 13 лет
Постов: 9734
zmaxachz
Изучением нового танца
Cpt. Blank
Я про текст Хоррора говорил. >_>
~
HoRRoR
03 февраля 2012, 02:22
Ретро-геймер
LV6
HP
MP
Стаж: 5 лет
Постов: 1752
horror_x
Барби
Компилятором булочек
 Cpt. Blank @ 03 февраля 2012, 01:56 
Я правильно понимаю, что это проект универсальной программы для

А) Нахождения и вытаскивания графики, текста и прочего из образа игры
Б) Декомпресии
В) Компрессии
Г) Возвращения файлов в образ
?

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

 Rem @ 03 февраля 2012, 02:04 
Да, ещё отмечу, что визуализация перевода очень полезная вещь, особенно, где текст в окошках. Было бы ещё замечательно, если программа могла редактировать размеры таких окошек (если код игры позволяет), вручную (т.е. мышкой взял и растянул, а не копаться в коде и выписывать размеры вручную).

Вот поэтому и появилась идея определения семантики свойств (там скриншот из подобного редактора для FF7).
Cpt. Blank
03 февраля 2012, 02:40
LV3
HP
MP
Стаж: 5 месяцев
Постов: 179
Rem, а, понял)
HoRRoR, что за данные она хранит?
Что подается на вход, что получается на выходе?

И, э-э-э, вы точно понимаете, как происходит выемка и сборка? Это как бы самое сложное в ромхакинге.

Исправлено: Cpt. Blank, 03 февраля 2012, 02:42
Rem
03 февраля 2012, 02:45
LV9
HP
MP
Стаж: 13 лет
Постов: 9734
zmaxachz
Изучением нового танца
Как я понял, это прога именно для перевода и редактирования кода. Т.е. она вообще не занимается ромхакингом.
~
HoRRoR
03 февраля 2012, 02:50
Ретро-геймер
LV6
HP
MP
Стаж: 5 лет
Постов: 1752
horror_x
Барби
Компилятором булочек
 Cpt. Blank @ 03 февраля 2012, 02:40 
HoRRoR, что за данные она хранит?
Что подается на вход, что получается на выход?

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

 Cpt. Blank @ 03 февраля 2012, 02:40 
И, э-э-э, вы точно понимаете, как происходит выемка и сборка? Это как бы самое сложное в ромхакинге.

Как бы для меня это давно стало отнюдь не самым сложным в проекте. Куда сложнее всё грамотно организовать и автоматизировать.

 Rem @ 03 февраля 2012, 02:45 
Как я понял, это прога именно для перевода и редактирования кода. Т.е. она вообще не занимается ромхакингом.

Ну, если кодом можно назвать игровой скрипт, то да. Ромхакингом она не занимается, но использовать её как инструмент для ромхакинга вполне можно (визаулизация, списки свойств, работа с тегами и т.п. - всё это позволяет скрыть технические аспекты от переводчика и удобно обрабатывать данные). Повторюсь: ромхакинг - не единственная цель, а лишь одна из покрываемых областей применения, но опираюсь я, тем не менее, именно на опыт в ромхакинге.

Исправлено: HoRRoR, 03 февраля 2012, 02:52
Cpt. Blank
03 февраля 2012, 03:15
LV3
HP
MP
Стаж: 5 месяцев
Постов: 179
HoRRoR, " Куда сложнее всё грамотно организовать и автоматизировать. "
Не пойму, что "все"? Экстрактор, декомпрессор, компрессор и инжетор вы предлагаете писать самим. Остается лишь фактический перевод текста. Это называется скрыть технические аспекты?

"Как бы для меня это давно стало отнюдь не самым сложным в проекте."
А какими проектами вы занимались? Какая консоль и игра?
HoRRoR
03 февраля 2012, 03:42
Ретро-геймер
LV6
HP
MP
Стаж: 5 лет
Постов: 1752
horror_x
Барби
Компилятором булочек
 Cpt. Blank @ 03 февраля 2012, 03:15 
Не пойму, что "все"? Экстрактор, декомпрессор, компрессор и инжетор вы предлагаете писать самим.

Не могу представить себе универсального "экстрактора, декомпрессора, компрессора и инжетора". Да и вообще, вставка/выимка текста - термины исключительно дилетантского происхождения. Если экстрактор ещё можно простить, то вот инжектор - это самый что ни на есть костыль. Данные должны собираться, исходя из структуры формата, а не "инжектиться" куда-то там внутрь. Никто же не "инжектит" файлы в zip-архив.

 Cpt. Blank @ 03 февраля 2012, 03:15 
Остается лишь фактический перевод текста. Это называется скрыть технические аспекты?

Я сказал скрыть от переводчика, при этом оставив доступными техническим специалистам и для интегрированных редакторов/визуализаторов. Помимо перевода тут может быть ещё и обработка этих самых данных.
Извините, но, например, системы контроля версий исходного кода сами код не пишут.

 Cpt. Blank @ 03 февраля 2012, 03:15 
А какими проектами вы занимались? Какая консоль и игра?

Сколькими занимался - не счесть. Завершённых куда меньше (хотя, если приплюсовать коммерческие потуги - прилично будет). Перечислять не буду, всё находится в два клика мышью.

Исправлено: HoRRoR, 03 февраля 2012, 03:43
Cpt. Blank
03 февраля 2012, 04:28
LV3
HP
MP
Стаж: 5 месяцев
Постов: 179
HoRRoR, фух, теперь полностью разобрался.
1) Ну с восприятием теперь вопрос вроде решен
2) Идея замечательная
3) Востребована, думаю, программа будет поболее на западе. Поэтому, ИМХО, русский и английский языки должны быть.
4) Можно на примере суть диалекта?
5) Над "контекстом" надо подумать, остальное было вроде интуитивно понятно.
Vitamant
03 февраля 2012, 09:13
LV2
HP
MP
AP
Стаж: 2 года
Постов: 73
См. подпись
Предложение к: Возможность: Многопользовательская поддержка
На первых парах оповещать о том, что документ в данный момент редактируется и блокировать к нему доступ. В дальнейшем - реализовать возможность совместного редактирования.

Имеются следующие проблемы:
Нарушение принципа универсальности:
Возможность: Визуализация текста
Возможность: Списки свойств
Возможность: Свойства-переменные с определяемой семантикой
Возможность: Импорт и экспорт (в контексте трех предыдущих)

Тяжеловестность:
Возможность: Контроль версий + Возможность: Управление разницей версий перевода

Конфликты:
Возможность: Управление разницей версий перевода + Возможность: Глоссарий

Единственное предложение по схеме:
Context -> Платформа

От интерфейса хочется гибкости:
Настраиваемые плавающие панели и контролы

---
1) Все понятно
2) Хорошее отношение
3) Актуально
4) Нет мыслей
5) см. выше
6) см. выше
7) Масса проектов, отсутствие времени, помочь смогу разве что по-мелочи.
Прогресс написания глав:
Final Fantasy IX - Глава 37 (29%)
Xenogears  - Глава 8 (0%)
26.08.12 - 23:50
FFF Форум » ТВОРЧЕСТВО » Система контроля версий для переводов (Или интегрированная среда перевода :))Сообщений: 16  *  Дата создания: 03 февраля 2012, 00:27  *  Автор: HoRRoR
12ОСТАВИТЬ СООБЩЕНИЕ НОВАЯ ТЕМА НОВОЕ ГОЛОСОВАНИЕ
     Яндекс.Метрика
(c) 2002-2019 Final Fantasy Forever
Powered by Ikonboard 3.1.2a © 2003 Ikonboard
Дизайн и модификации (c) 2019 EvilSpider