Продолжаю копать во всех направлениях.
Выяснил экспериментальным путём - что причина по которой нельзя использовать русский и др. языки - это латиница в SQL, как заставить базу дружить с кириллицей увы не знаю - не специалист , - что интерестно имена объектов она не содержит(только stringID и ещё некоторую мелоч), но при этом переваривает через себя данные из тулсета при создании любого вида GFF - потому и офильтровывается русский при сохранении. Кстати единственный способ удалить что либо из палитры тоже SQL (но это думаю уже известно).
Что до второго пути "почему не работают tlk" - то тут всё более туманно, к примеру core_ru-ru.tlk - всё таки работает, однако возможности запихнуть туда что-либо выше 68105 (не путать с StringID) на данный момент не нашёл, ни через левый DAOTlkedit, ни через врезанный Gffeditor. Однако всё что попадает в эти рамки отлично работает причём всё равно на чём ты напишешь хоть латиница, хоть кириллица, хоть обе сразу. Возможно сам tlk - содержит, что-то особенное, а может и туслету где-то сказано не смотреть выше не знаю, надо думать.
Если вся проблема в SQL-базе, то все что нам нужно сделать - изменить кодировку на UTF8. Другой вопрос - сможет ли она потом это считать... но если сможет - проблема будет решена!
Биовари рекомендуют пользоваться вот этой гадостью:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796
или
MySQL Administrator'ом.
Попробуем? (увы, с базами тоже мало общался)
Хм... а должно помочь. Ведь он умеет даже работать с кастомными базами:
http://social.bioware.com/wiki/datoolset/index.php/ConfigureToolset.exe#Custom_Database_Settings
---
Тааакс... у них там Latin1 нам нужно либо cp1231 (виндовая русская), либо utf8. Голосую за вторую. Попытался изменить - не дали. Может, просто создать новую базу с кодировкой utf8 и их софтиной ткнуть в нее носом тулсет?
По идее, нам достаточно отправить запрос, вида:
ALTER DATABASE bw_dragonage_content CHARACTER SET utf8;
и всем будет счастье. Но у меня пока не получается. =\
Если я не ошибаюсь, важны не только чарсеты в базе. Помнится, запускал нвсервер на белорусском хосте, нвнх посылает ср1251, моя база в ср1251, а в полях - вопросики. И всё потому, что вход субд (утф8 кажется) не соответствовал выходу клиента. Решилось легко модификацией инициализации клиента, мускл позволяет настраивать кодировку каждой сессии.
Это я к тому, что если по каким-то причинам тулсет переведённой на несколько языков игры в 21м веке выдаёт в базу ср1250, то вряд ли что можно сделать без хака самого тулсета и лоботомии пары программистов.
В общем, пробуйте Только если у вас вин хр, то надо ср1251 ставить по идее.
А по поводу этого умные люди советую делать еще и вот так:
mysql_query(”SET NAMES ‘utf8′”);
mysql_query(”SET collation_connection=’utf8_general_ci’”); // сортировка, думаю не обязательно
mysql_query(”SET collation_server=’utf8_general_ci’”); // сортировка, думаю не обязательно
// а вот из-за этого, скорее всего, у тебя и слетало
mysql_query(”SET character_set_client=’utf8′”);
mysql_query(”SET character_set_connection=’utf8′”);
mysql_query(”SET character_set_results=’utf8′”);
mysql_query(”SET character_set_server=’utf8′”);
Вот только заглянул я сейчас в MSDN - нету там в ALTER DATABASE чарсета. О_о А вот писимистический настрой не разделяю, в вики наткнулся на очень интересный абзац:
Also: For international users (If Your sql server 2005 uses different database collations by default):
When creating db_dragonage_content please remember to change collation from Your local one to:
SQL_Latin1_General_CP1_CI_AS
this is the only collation that guarantees You that those .sql batch scripts will work properly.
То есть предполагается, что сортировка будет в этой самой Latin1 (кажется, CP1252), а все остальное - в произвольной... во всяком случае мне хочется на это надеяться... А если выбирать кодировку то, по уму, вообще неплохо бы делать unicode
--------------
Мда, советы умных людей, видимо, не помогут, потому что использовать их полагается именно при подключении к базе. А это за нас сделает тулсет... Тогда остается руководствуясь статьями:
http://social.bioware.com/wiki/datoolset/index.php/Database
и
http://social.bioware.com/wiki/datoolset/index.php/Manual_database_installation
собрать свою базу с нормальной кодировкой и посмотреть - что из этого выйдет.
--------------
Увлекательное чтиво по смене кодировки на русском:
http://sqlinfo.ru/articles/info/2.html
И чуть менее увлекательное на английском:
http://dev.mysql.com/doc/refman/5.0/en/charset-conversion.html
и еще:
http://dev.mysql.com/doc/refman/5.0/en/dynamic-system-variables.html
Я знаю, что надо (было) делать (к слову, не так, как ты советуешь), я к тому, что делается это ИЗ КЛИЕНТА. А клиент в текущем случае - тулсет
Верю. Мое общение с SQL всегда было специфично и далеко от традиционного. Учитывая, что сортировка проводится в Latin1(cp1252) то, могу предположить, что и выкидывает он в ней же. Тогда что нам мешает перенаправить 1252 в Unicide?
В свое время нашел вот такие советы:
In the toolset there is no tool to manage foreign languages (I read an answer from a Bioware guy explaining that the language tool they use was not implemented in the toolset for players). If you want to manage foreign languages, you have to create your own talktables.
Here is a nice tool done by anakin5 for that http://social.bioware.com/project/1586/#details
*************************************
- build your module/addin and use english as the core language because other languages do have display problems (like in german the umlauts)
- dialogues, item names and descriptions could use placeholders so that you are able to identify them later within the string editor
- after building your module/addin check in all your resources
- open up the string editor and check if all the needed resources are there
- export your module/addin and afterwards your talktable ("export talktable")
- you will get 3 talktables scattered around within the module's folders
- two of the 3 talktables have a suffix = _f and _c
i do believe that _f stands for foreign and _c is for core. the foreign language is always empty and can be deleted. the core talktable contains descriptions for skills, materials and so on. if you don't use custom ones this talktable can be deleted too. you just need the "your_modules_name_en-us.tlk"
- copy this tlk and rename it with the appropriate language suffix = e.g.: your_module_name_es-es.tlk for spanish
- drag'n drop this talktable within the toolset's window and it will open a node tree with all the string entries containing the english description
- rewrite all the entries and do the translation^^
- afterwards just save the tlk
- now place this tlk within the following folder:
your base tlk (modules_name_es-es.tlk) = my documents/bioware/dragon age/addins/modules_name/module/data/talktables
the core talktabe (modules_name_c_es-es.tlk, as said only useful if you are using custom skills and other custom core resources) = my documents/bioware/dragon age/addins/modules_name/core/data/talktables
- the last step is to push all your exported resources (like items, characters, dialogues and so on) through the flag patcher anakin5 provided and your are done
- now if you need other languages just grab your tlk, copy and rename it, drag'n drop within the toolset and rewrite all the entries
the tlktool is only needed if you are translating all the languages on the fly. i never used it and therefore it is not tested by me, although it may give you a more comfortable workflow. i like to do it manually
within the toolset's options you could also switch to another language but it seems that the toolset was never designed to use other string characters then the english ones or i am just too stupid^^
*************************************
first you only need the tlk file located at your module/override folder. the others are not important if you only want to translate dialogues, item descriptions and so on. if your tlk file is empty then you propably have not checked in your resources. after the check in you could open the string editor and verify that all of the resources, that need a translation, are there.
to check in a resource you right click it and select "check in".
it is highly recommended that you build your module in english as the core language - with other languages there will pop up problems with special characters (like umlauts in german). after exporting your english talktable you should make a copy of it and drag'n drop it into the toolset and edit the strings of the entries line by line to the targeted foreign language. than you have to rename the tlk file to the appropriate language (e.g. german = de_de, russian = ru_ru... check the installed tlk files of the official dlc within your documents folder for the correct names).
now you have to use the flag patcher anakin5 made so that the talktables get recognized by the game engine. after all this hassle you successfuly made your first translation in dragon age: origins
anakin also made a great tool to easily create lots of talktables for different languages. give it a try
http://social.bioware.com/project/1586/ собственно тулза Анакина5.
Усп, таки ссылк сверху есть.
Сам пробовал юзать, но как то не получилось (видимо не так использовал). =\
denis0k, пока не прочел что тулс обрезали, тоже удивлялся почему Био молчат на все запросы.
Теперь по теме..... Возможно если скопировать экспортированный ТЛК, переименовать его и после редактирования сохранить в my documents/bioware/dragon age/addins/modules_name/core/data/talktables получаем 2 ТЛК файла - 1 в папке оверрайд и 2 в базе данных модуля. Затем используя flag patcher игра подцепит файлы диалога, предметов и т.п.?
Продолжаю копать.
Вопрос: в диалогах русский у всех работает ? - я имею виду файлы вида *.dlg. Или это меня уже глючит ?
Интересная вещь получается, пишешь диалог - не сохраняя экспортишь = русский текст в игре работает, сохраняешь - не работает , - как выяснил если gff не сохранять - а прямо экспортить, то кириллица пишется прямо в gff-е. В диалогах при этом работает, а в названиях в виде квадратиков, а не "???" (следовательно лечится шрифтом - осталось его найти в ресурсах). Открывал gff - там к моему удивлению всё по русски, причём и сохраняется по русски . Короче в принципе, метод работы с кириллицей есть, - только вот он мне совсем не нравится, уж больно неудобно. Всё таки надо как-то заставить работать через тлк. Щас вот думаю - либо попробовать как-то core_*.tlk разширить, либо более радикально - сделать "пересадку" мозг... - то естьамодуля в тело singleplayer-а - по крайне мере такой метод лечит глюк с водой, может и здесь прокатит ? - короче буду пробовать.
Здорово! Если будет время на выходны...ом... тоже присоединюсь! (хотя пользы от меня... >_>). Но все же!
Расширять core_*.tlk (да и вообще синглплеер) это имхо извращение (но таки да, пока предложить всё ещё нечего). =\
з.ы. А что за глюк с водой?
Блин, не доберусь я сегодня до тулсета - ну да и ладно..
А про воду, есть один известный глюк - если просто экспортить левел в модуль, то waterplane-ы в итоге отображаются тулсетом в area, но совершенно исчезают в самой игре. Однако если экспортнуть левел в singleplayer, а потом перетащить соответствующие файлы/папки в свой модуль, по они прекрасно работают что в игре - что в тулсете. (столкнулся с этим когда собирал левел в теме Левел-дизайн). Одним словом ошибка происходит уже при сборке *.arl (или чего-то там связанного), - особо в подробности не вдавался (хотя надо бы), но почему-то думаю что с тлк похожая болезнь, - опять-же всё это домыслы, надо пробовать.
--------------------------------------------
Я таки добрался до тулсета
И так, есть две новости по обоим направлениям:
ТЛК:
С самими тлк-шками всё нормально, глючат gff-ки создаваемые тулсетом. Проверил просто взял utp-шку из компании, переименовал в экспортнутую, а в тлк забил stringID первой - и как и ожидалось всё заработало. Короче тулсет при экспорте чего-то не так записывает в StringID
БД:
Кажется нашёл таки способ заставить БД понимать русский Через SQL Server Managment Studio залез в Databases->bw_dragonage_content->Tables->System Tables->правой кнопкой на dbo.t_StringText->Modify поменял колонку text с text на ntext, сохранил (игнорируя матюки ). И собственно всё отныне кириллица принимается тулсетом в плейсиблах в поле NAME , на экпорте создаются utp-ки с кирилицей внутри, соответственно в игре нас ждут квадратики. Если у кого есть время большая просьба пошарьте по ресурсам (тулсет их может открывать *.erf *.rim и т.д ) и найдите эти вредные шрифты (вероятнее всего обычные *.ttf, может текстуры вида *.ddr/gfx а может и то и другое вместе или что-то ещё)
А то щас опять на неделю на работу, а там не до тулсета
Это здорово, но всё равно выглядит как костыли калеки.
Ghost, а тебе так и не удалось получить инфу от тех, кто переводил DLC?
Там всё банально и пошло, я сам так делал. Они переводили официальные ДЛЦ, а у них нет проблем с распознаванием тлк-файлов. Простое переименование en_en*.tlk в ru_ru*.tlk и перевод текста с помощью тлк эдитора. То есть тулсет не трогали вообще.
Тогда остается единственный путь, предлогаемый Айсом - подогнать БД под тулсет и найти шрифты.
Леоно, брысь!
Я понимаю что по другому пока никак, но меня не отпускает ощущение что это забивание гвоздей микроскопом. =\
А всё остальное на этом форуме конечно же не забивание гвоздей микроскопом
микроскоп достаточно тяжелый для забивания гвоздей
Господа Leon PRO, denis0k, Ghost, Laajin, вы озверели? Особенно это касается Leon PRO. Что за флудильню вы здесь устроили?! Есть желание ковырять редактор - ковыряем. Нет желания и хочется потрепаться о кастылях и микроскопах - в другой раздел, лучше - в ПМ.
Ладно я быстро и по делу:
GFX - идея интерестная, но увы это оказался всего лишь интерфейс - но не сам шрифт (кстати поддерживается просто swf ^) )
Nogard - пока не понял каким боком привязан, думаю...
А вот из интересного - arial12.dds из textures
http://radikal.ru/F/s007.radikal.ru/i301/1010/33/44b47966d9b5.jpg.html
Как видно они вообще иных языков не предусматривали
Буду потихоньку искать дальше...
PS. Что до забивания гвоздей.. - как по вашему был руссофицирован НВН1 ? И ведь ничего, устраивал. Кстати если у кого он под рукой, может гляните как выглядила эта руссификация ? За кроме dialog.tlk конечно, - а то я сомневаюсь что биовар чего-то там сильно нового выдумала, может всё же поможет найти искомое в ДА.
EqKeeper, а почему это меня касается больше остальных? Я вообще тут только одно предложение написал! (предлагаю мое слово в этом споре сделать последним )
А по сабжу - мне оч. интересно войдет ли тема в рамки программной модификации.
Был не прав - похоже это всё таки gfx-ина. На основе сведений добытых EqKeeper-ом у японцев, попробовал их fonts_en-us.gfx - действительно работает и вводит поддержку японского. К слову и весит он порядка 2-х Мб, наш же как и все остальные значительно меньше, видать дело в юникоде... Короче при переименовании fonts_en-us.gfx в fonts_ru-ru.gfx вместо квадратиков начинают проскальзывать японские иероглифы, а значит направление верное, вот только от flash -а, я человек ещё более далёкий чем от sql-а
PS. Хто-нить в курсе в ДА2 - тулсета точно не будет ? - а то может зря мучаемся.
Не в курсе. Но могу предположить, что Toolset будет или они доработают существующий для совместимости. Иначе нелогично создание Wiki. Вот только до выхода самой игры еще полгода, еще полгода биовари будут озабочены исключительно выпуском DLC. Потом, когда фанаты их окончательно одолеют, они, может, и займутся редактором, вот только никто не гарантирует, что в нем не будет той же проблемы. Да и творить то хочется сейчас, а не когда-нибудь потом. Тем более, что сценарий, модели, текстуры, звуки, большая часть скриптов - останутся неизменны. И намного проще будет освоить новый редактор (если он будет), умея пользоваться старым, чем начинать с нуля.
Ммм... сейчас попробую открыть флешей - посмотрю что там, да как. Правда, я от него тоже весьма далек...
Ну флешей так уж прямо не откроешь, в WIKI об это чего-то написано (в UI Tutorial) - там и декомпилятор понадобится и какие-то особенности перегонки gfx в swf - но я в общем в это особо не вдавался.
Про тулсет сказали, что его в DA2 не будет, но есть вероятность, что можно будет использовать существующий с какими-то доработками, которые должно сделать коммьюнити (Bioware, похоже, ничего нового предоставлять не будет).
Ну очевидно - EA никогда особой поддержкой моддинг-коммьюнити не отличалась.
дайте какой-нибудь минимально-весящий мод только для проверки русского текста, пожалста. А то у меня Тулсет не стоит.
Leon, а на фига он тебе без редактора? Свой тестовый удалил вместе в редактором более полугода назад.
Я GFX файл собрал, хочу его проверить. Хотя, скорее всего он бажный, поэтому решил пока не выкладывать а поковырять у себя. Нужен модуль, чтобы запустить его и посмотреть - появятся ли русские буквы вместо квадратиков. Для этого тулса не нужна.
Ради стремления решить проблему поставлю тулс вновь и создам локу с парочкой предметов и диалогом. Завтра-послезавтра выложу минимод.
Проще (размером), ИМХО сделать мод кампании, просто добавив в локацию отдыха, например тестового непися с диалогом.
Тебе повезло Нашел в папке Документы\Bioware\
http://rapidshare.com/files/428447767/Rus_lantest.rar 26кВ.
Если 100 мессаг флуда запустят тулсет ДА, я даю добро на сто мессаг.
Не дам, ибо поковыряв Китайский GFX я почти уверен, что напортачил, а позориться не охота
Я просто заменил ссылку внутри GFX на Arial.fft и TimesNewRomain.ttf а также на всякий случай включил файлы этих шрифтов в ERF. Оригинальные тексты в игре сразу стали квадратиками, и вот мне интересно, станут ли квадратики в новом моде нормальным текстом.
И, по-моему, просто заменой файлов шрифтов в GFX не обойтись =( кажется нужен еще "правильный" файл со шрифтами. Например те шрифты, что встроены в демонстрационный китайский мод содержат и английские и китайские символы (и еще и русские).
Мб, если мне сегодня включат интернет - найду как залить дамп БД в MS SQL без Enterprise Manager 2008.
Ммм... а банальная замена fonts_ru-ru.gfx на conversation.gfx не прокатывает?
В conversation.gfx всего навсего 2 шрифта:
Один определяется как "$BodyFont" (возможно шрифт по умолчанию) а другой как "Dragon Text" и один из них только на английском.
А вообще этот файл - представляет функционал панели диалогов.
Замена естественно не подойдет. Это совершенно разные файлы с разными скриптами и функциональностью.
Обещанный минимод:
http://depositfiles.com/files/ti2k9d3eg
или
http://www.mediafire.com/?99x393ben92r8px
Установка - как и любой DLC закинуть в DAUpdater затем искать в "других компаниях" в игре, либо соответственно в ....документах....\BioWare\Dragon Age\AddIns\Rus_mod\ - если хочется посмотреть на gff-ки прийдётся распаковать erf из data. Плейсибл (в названии "Рус") и диалог содержат вшитый русский соответственно никаких тлк-шек нет. Area layout на основе Arena и как ресурс в мод не включён - потому хз. будет он у "не" обладателей тулсета или нет.
Брр, так что проверять то ? =)
Сейчас имеем: Диалог на русском, а табличка - квадратики, все верно?
Надо: табличка - читабельна ?
Спасибо Айс, но лучше б ты максимальное количество разных типов строк квадратиками забил с полным набором Кириллицы.
UPD.1 У меня квадратики - квадратиками. Прдолжаю ковырять.
UPD.2 Попробую тулсет поставить =(
UPD.3 Установил тулсет, делаю первый модуль.
UPD.4 Слегка поосвоился с тулсетом, поковырял в HEX-редакторе .utp шки. К слову, вбивать текст можно прям через редактор и сохранять, не обязательно открывать GFF эдитором.
UPD.5 Иногда меня посещает ощущение, что копаем не в ту сторону, но пока что опыта слишком мало, чтобы предложить что-то другое.
Удалось запустить тлк !!!!!!!!!!!
Короче верное оказалось предположение что тулсет глючит и записывает кое-что левое в gff-ку (ну не совсем левое скорее эхкммм.. немного лишнее)
Чуть позже попробую объяснить подробней. Но если в крацах, испльзуйте gff-editor скажем от Ведьмака, ну или НВН2 - костыли конечно но реально работающие
--------------------------------------------------------------
Краткий порядок действий:
Качаем любой "толковый" gff editor способный работать с gff v 3.2
К примеру этот сойдёт:
http://mods.starwarsknights.com/tk102/utils/nwn2gff_123.rar
Открываем экспортнутую gff-ку (в моём случае это была itp-шка)
Ищем ветки LocName, а так же LocPopup и удаляем к "чёртовой бабушке" все LocalString-и что к ним привязаны.
И о чудо mod_ru-ru.tlk - теперь работает.
Короче если подчищать всё gff-ки после экспорта - то с русским проблема решена, хоть и через большую Ж.
Макрос нарисовал, осталось немножко стабилизировать. Племянник выгоняет из-за машины, так что итоговую версию скину уже ближе к ночи. После (видел исходники) примусь за написание более цивильной программки, которая будет сама сносить все лишнее, без использования чужих редакторов. Подскажите заодно - какие форматы файлов нужно вычищать? Помимо *.uti
Леончег танкист. Трабл был в том, что кастомные тлк файлы были до лампочки. Не видела их игра. Теперь, благодаря шаманствам Айса, она вроде как их видит.
Собственно, как и обещал. Макрос для массового изничтожения. Две версии под x64 и x86.
Поддерживается формат *.uti. Если нужны другие - пишите.
Тестировалось на группе файлов, проблем не обнаружено. Тем не менее - делайте бэкапы на первых парах.
Обо всех проблемах сразу же сообщайте.
Чтобы пользователь не смог помешать работе макроса, на время его выполнения полностью блокируется ввод с клавиатуры. Если что-то пойдет не так, и понадобится остановить работу - нажмите Alt+Ctrl+Del. Это вернет управление. Далее в трее (рядом с часами) щелкните правой кнопкой на появившийся там значок макроса и выберите в контекстном меню Exit.
http://www.rapidshare.ru/1678800
http://www.megaupload.com/?d=C3FM0SFA
http://webfile.ru/4876507
http://zalil.ru/29923901
А я начинаю раскапывать исходники эдитора, может смогу нарисовать свою программку для более цивилизованной очистки.
Добавил поддержку означенных форматов (но не тестировал), поправил попутно выявленный баг:
http://www.rapidshare.ru/1678980
http://www.megaupload.com/?d=UDEIBLTM
http://webfile.ru/4877104
http://zalil.ru/29924909
Поковырял сырцы. Понял, что а) Ненавижу перл, б) Легче будет написать с нуля.
Сейчас пошарю в Вики на предмет описания формата.
Так ладно обещал в крацах рассказать о русификации, рассказываю (само собой для неподготовленых непонятно, но у меня щаз у самого каша в голове)
И так первое что надо - это проверить какую Foreign Tlk экспортит тулсет, смотреть в tools->options->general->Foreign Tlk Table to Export, там должно стоять Russian - Russia.
Далее просто делаем скажем плейсибл:
И вот тут уже надо решать что делать с полем Name (..Popup text).Если БД модифицирована - то можно попробовать записать чего-нить по русски, если нет то по барабану (хотя конечно стоит написать чего нить по английски, что бы в дальнейшем упростить себе жизнь).
Далее просто сохраняем (Save) и ставим плейсибл в area, можно кстати уже экспортить и плейсибл и area, а так же подчищать их на предмет наличия LocString-ов gff-editor-е.
Вот дальше как раз начинается самое интересное, а именно экспорт Foreign Talk table.:
По идее всё просто делаем Tools->Export->Export Foreign Talk table - и получем рабочую русскую тлк-шку (а точнее их несколько и одна из них на английском - но об этом потом).
В общем как раз "Великая проблемма №2" и заключается в содержимом этой самой тлк-шки. - это связанно в частности с механизмом Check In (Check Out). Как я понял он то и создаёт записи в тлк, а точнее список tlkString-ов для них. Русский не переваривает ни в каком виде, забивая всё на ??? ??? ?????? и чихать ему на модификацию ntext-а. Глюк вероятнее всего кроется где-то в имопрте/экспорте БД - но там сам чёрт ногу сломит. Потому пока могу предложить несколько вариантов действий:
1. Локализовывать собственный Мод - по средством внешнего тлк редактора. Главный недостаток - в тулсете прийдётся всё писать на латинице. - Что "censored" само по себе. Но зато с минимумом глюков. Механизм работы подробно описывать смысла нет: но если в крацах - внешним тлк редактором, ищем в тлк-шке нужные strRer-ы и переписываем их на русский, кстати DAOTlkEdit умеет брать strRer-ы прямо из экспортнутых Gff - что весьма сильно упрощает работу. Однако в нагрузку ко всему этому способу прийдётся переписывать и диалоги, ибо руский текст в *.dlg - уже не прокатит.
2. Отказаться вообще от механизма Check In (Check Out). Это вынуждает писать тлк-шку фактически с нуля, забивая в неё свои strRer-ы (с вышеупомянутым DAOTlkEdit не такая уж проблема).
А потому можно использовать модификацию text на ntext в БД. После чего Тулсет начнёт переваривать русский в именах, названиях, описаниях, диалогах (а может и почти везде). *.dlg файлы будут внутри содержать русский текст, так что необходимость в тлк-шке для диалогов - отпадёт сама по себе. Ну и конечно всё это можно сохранять и загружать ( главное обходить стороной Check In). Что интересно: как я уже упоминал проблема подчистки русского всплывает при передаче данных тулсетом в БД механизмом Check In, если в БД заменить полученные от тулсета ????? на что-то более русское, то оно даже экспортится в тлк.
Второй вариант действий представляется особо непонятным. 0_о Прочитал несколько раз, но понимание пока смутно...
А первый способ таки смотрится съедобным.
Разница в том что во втором способе, ты работаешь в тулсете на русском, включая написание диалогов и имён, и палитра у тебя на русском. Как итог в выходную тлк-шку прийдётся забивать самому не только текст но и tlkString-и от названий и описаний, а вот зато диалоги к примеру будут экспортиться прямо с тулсета в исходном виде.
В первом же, ты полностью работаешь с тулсетом на английском, включая диалоги и всё прочее. Как следствие имеешь уже забитую tlk-шку, со стрингами - в которой просто меняешь английское написание на русское, но в нагрузку к именам и описаниям, - получаешь ещё и все диалоги.
Незнаю кому как, а мне приятней работать с изначально руссифицированой программой. Правда за это прийдётся заплатить, совместимостью с будущими патчами тулсета (замечу не игры) - НО .. будут ли они ????
ЗЫ. Что касается конкретных, действий - то конечно могу описать поподробней, - но вся эта идея с починкой тулсета и тлк, пока на грани скорее "удавшегося эксперимента", - нежели конкретного патча. Уж больно много ещё всего неясно.
Ладно, подробный план действий:
1. Качаем SQL Service Managment Studio 2005 (ну или аналог)
2. Открываем БД, и ищем таблицу dbo.t_StringText (Databases->bw_dragonage_content->Tables->dbo.t_StringText)
3. Жмём правой кнопкой на табице и выбераем Modyfy
4. В открывшейся панели, в поле Text меняем Data Type - text на ntext (Кстати в Description - тоже можно поменять)
5. Сохраняем таблицу (Правая кнопка мышы на Table - dbo.t_StringText и собственно Save t_StringText), появившиеся "матюки" игнорируем нажимая на всё ОК (там ничего серьёзного).
--------------------------------------------------------------------------
Всё теперь тулсет бутет переваривать руский, но не в механизме Check In.
Примечание:
В принцепе думаю и это можно починить, т.к если открыть эту таблицу (Open Table - вместо Modify) и забить в стринг что нибудь русское, то оно принимается БД и даже экспортится в тлк-шку
Соответственно в тулсете в Sting Editor-е (и соответственно в тлк-шке) имеем:
Отсюда вывод что глюк происходит при Check In. В БД довольно много скриптов да и самих таблиц - где может чего-то быть, но и есть вероятность что сам тулсет руку приложил. Х.З. Если эту проблему удастся решить, то тулсет фактически получит поддержку русского (с учётом подчистки gff-ок конечно). Впрочем даже в таком виде, всё довольно работоспособно - и при желании создать модуль на русском уже не проблема.
PS.
На дружественном (надеюсь) форуме, некоторые уверяют, что для корректного отображения русских букв достаточно "пропатчить" реестр патчиком от NWN. Есть те, кто говорят, что им это не помогло, но есть и такие, что божатся - у них все нормально.
Старый добрый глюк с Cp хмм... наврятли, даже если шрифт примет русский, его не примет БД - а следовательно тлк, но... как показала практика на тлк в определёных условиях можно вообще чихать, так что стоит попробовать.
----------------------------------
Попробовал:
Как и ожидалось - не работает, всё таки тлк пока остаётся единственным способом.
Блин, объясните мне, пожалста, как связать текст в к.л. кастомном ресурсе с ТЛК ???
Например я создал плейсибл, в нем есть PopUp text.
Как сделать, чтобы там был текст из ТЛК?
Повбивал несколько строк туда, сделал Export Foreign Talk table и просто Export Talk table, судя по логу создаются только "LNG01_en-us.tlk", заюитый моими русскими строками и "LNG01_c_en-us.tlk" в core - пустой.
Я сначала предполагал, что все строки с флагом RequiresReTranslation автоматом скидываются в ТЛК и связываются через ResRef прозрачно для пользователя, но, видимо ошибся =\
В принципе, сейчас, раз все в тулсете сохраняется-загружается, пишется и отображается, а также сохраняется в файлы с русскими буквами, как положено - хочу покопать ТЛК.
И, кстати предлагаю сделать каой-то закрепленный пост в начале, где перечислить по пунктам все существующие проблемы, а то, лично из-за пока еще малого времени работы с тулсой постоянно путаюсь - что заработало а что нет.
В данный момент, я так понял проблема с использованием кириллицы именно в UI тулсета полностью решена через БД? Все строки пишутся по русски, сохраняются и снова загружаются корректно.
Леоно, ты об этом?
Да, именно это, НО, оказалось, что Гриффон уже описывал это на первой странице:
http://www.city-of-masters.ru/forums/index.php?showtopic=6206&st=0#
Для помещения всего текста, нуждающегося в локализации в ТЛК надо просто напросто сделать чек-аут объекта. Строки сразу появятся в стринг эдиторе, и дальнейшая их правка там сразу отобразится и на связанных объектах.
В итоге весь русский текст попал в ТЛК, и после применения метода айса по включенияю ТЛК в игре все заработало!
Кстати, у меня так и экспортит en-us.tlk, но модуль берет строки оттуда.
Что имеем, значит на данный момент:
1. Ввод-вывод локализованных строк в UI тулсета сделан через модификацию БД.
2. Вывод в ТЛК автоматически производится по чк-аут и проблем тут нет. Все строки корректно пишутся сами.
Ну, значит получается, что всего-навсего осталось:
3. Сделать тулзу, которая во время (или, лучше после) экспорта, в фоне, или по запуску, пакетно чистит все GFFv3.2 ресурсы от LocString-ов. Для GFFv4.0 эта операция не нужна, т.к. там ресурс хоть и содержит ресреф и локстринг, но пишется по другому ("REF:LocString")и корректно работает.
И первое полноценное решение готово.
Поправьте меня если я не прав?
Благодарность Айсу, Леону и Киперу за титанический труд.
Пофиг какую. Можешь тулсетную вообще не ставить.
У айса вон 2005, у меня 2008 стояла, и я в нее залил дамп и пользовался, а тулсетную 2005 не ставил (отключил галку во время установки).
Если будешь модифицировать базу (для русификации) - понадобится еще и MS SQL management Studio подойдет Express версия для той версии БД что ты поставишь.
Но, если ничего не стоит вообще - ставь тулсетную, наверное. Меньше гимора будет с установками. Правда там какая-то мегапроблема была, если вин ХП не пропатчен до СП3, так что аккуратнее.
UPD.1 Ахах, народ, вы поняли, что рускоязычное (не пишу русское, т.к. тут не только из России товарисчи есть ) ) комюнити по ходу - первое в мире, которое смогло локализовать тулсет в приемлимом виде. И не просто локализовать, а найти универсальное решение для всех языков. =)
Вполне вероятно, что те же французы тоже нашли решение и тоже на подобном форуме, но не отпостили на биоваревском.
Я французский не знаю, но единственное, что понял по скринам, что там копали HEX-ы, и явно не те что мы.
По п.3 я займусь. Если не найдется к.л. школьника, студента с бОльшим количеством свободного времени, нежели "после работы".
Сейчас отпуск и огромное количество проектов, но, возможно, удастся выкроить один денек.
http://social.bioware.com/wiki/datoolset/index.php/GFF#Differences_between_GFF_V4.0_and_GFF_V3.2
Ткните пальчиком, какие типы полей неугодны и их надо убивать?
Нене, это Eclipse GFF, а надо работать с Aurora GFF. Его структура тут:
http://nwn.bioware.com/developers/Bioware_Aurora_GFF_Format.pdf
Там в корне списка в грязном файле ноды выглядят вот так (для наглядности написал в XML формате):
Хм... только дочерние? А сами ноды оставлять?
Ну да, на С++ это на порядок удобнее, хотя и на шарпе уже делал. (а вот кто такой Managed C# не знаю >_>)
Да, сами ноды оставлять без изменения.
C# он как бы Managed по умолчанию
А я этого термина не понимаю. Самоучка. Так что теория у меня на нуле + немного MSDN.
P.S. Ой... мы опять оффтопим. х_х
За темой слежу давно, но, так как сказать было нечего, молчал.
Я к тому, что в необходимости решения этой проблемы сомневаться не надо
Я решал проблему кардинально(на примере предмета):
1. Экспортировал и редактировал Foreign tlk.
2. В GFF-редакторе удалял текст из строк Name и Description.
После этого игра начинала читать текст из tlk-файла.
А так как вы тут уже почти решили всё, я с нетерпением жду
GFF Tool
День 1. Кой как разобрался с довольно неплохим способом чтения бинарных файлов и преобразования в структуры. Все бажит страшно. Технологию вижу впервые и совсем не разбираюсь еще. Лег в 4 утра. опоздал на работу на 3 часа
День 2. Ловил баги вчерашнего дня. Сегодня ЭТО уже в состоянии под дебагером читать структуру верхнего уровня и Labels нод из которых она состоит.
День 3. Добавил еще обработчиков на внутренние структуры GFF. Дошел как раз до CExoString и CExoLocString, которые нужны для исправления. Занялся оптимизацией классов чтения файла. Все разобрал, ничего не работает, собрать не успел )
--------------------------------------------------------------------------
Текущий статус - все разобрано, ничего не работает
--------------------------------------------------------------------------
Кстати, я столкнулся с проблемой, что при попытке удалить ресурс, даже если ссылки наи него не остались нигде (плейсибл удален из локи и с него снят конверсейшн тэг) все равно пишет, что ссылка на него осталась в локе и на конверсейшне.
Если эти ссылки хранятся в БД, то вылечить можно, т.к. действительно, все (не уверен, конечно, но, может почти все ) манипуляции с БД тулсет делает через хранимые в БД процедуры, которые можно править!!!
Также, возможно получиться избавиться и от некоторых других ошибок или/и улучшить работу с существующими функциями.
Я примерно также и читаю, только чуть попроще не каждый байт, а все сразу, только там нашлось несколько подводнх камней с маршаллингом, в бодании с которыми я провел несколько часов, чтобы структуры приходили чистые.
Хмм... подводные камни именно из-за способа чтения или вообще? (у самого проблем не было)
---
Да, и кто есть _br? А то у FileStream я .ReadBytes не вижу =\
Ну что, бандерлорги, проблему решили и вся активность закончилась на этом?
Ну ка быстро модули делайте!!!!!!!!!!!!
Вчера прогнал то, что получилось по GFF файлу, все отработало на ура. Т.е. в альфа-версии программа уже работает. Однако я в затруднении в каком виде ее делать? То ли просто экзешник который будет чистить все GFFv3.2 структуры в своей папке, то ли еще в каком виде. У меня не так много времени (работа и учеба началась) чтобы делать так, а потом еще и эдак. Нужен человек который на практике озабочен массовой чисткой, чтобы с начала подобрать оптимальный способ "обслуживания" таких файлов. а потом оттестить. В идеале нужно мнение нескольких моддеров о том, как она должна работать по их предпочтению, чтобы сделать оптимальный вариант.
Я могу, конечно, закинуть файл в social.bioware.com и там уже каменты почитать.
Оу! А я их все считывал массивами байтов произвольной длины. А кушакет, видимо, в поисках терминирующего нуля?
Понял.
Что касается проги.
Первое предложение - распространять как угодно, но с исходниками.
Второе - если поделишься исходниками, то скидывай (в сеть или лично мне). Сделаю все три варианта. Консольный по имени файла. Консольный по всем файлам в папке. WinForm по всем файлам в выбранных каталогах.
Можно. Цепляемся из самописной софтины к этой самой базе и делаем тоже самое, но в автоматическом режиме. Правда, в SQL-базы я никогда не использовл, но, когда вопрос станет ребром, сделаю, если других желающих не найдется. В итоге, я так понимаю потребуется "патч" с одной кнопкой? В общем, реализуемо (правда, при моем исполнении он будет требовать .NET Framework 3.5/4 ).
Что касается творения, то я только из-за этого и начал ковыряться в DA Toolset. Правда, никогда я не умел делать что-то маленькое, так что у меня долгострой.
Есть два модуля:
1. Руны и свитки - маленький, пара десятков предметов.
2. Project Iona - большой, пока в основном диалоги.
Могу потестить
Насчёт утилитки - WinForm, ну естественно, с выбором один файл чистить, несколько или все.
+1 Подправить БД можно нажатием 1 кнопки в самописной софтинке.
2 EqKeeper
А зачем так ограничивать сферу пользователей только .NET 3.5+ фреймворком? Это можно и на 2.0 сделать.
2 kelamor
Мнение учтено, спасибо =)
Ммм... да, наверное ты прав. Вот только с XP, насколько я помню, шел 1.1. Так что не все ли равно? Впрочем, чем ниже тем лучше... Кстати, попробую сейчас. Глядишь что и получится.
Не, 1.1 слишком старый, думаю его уже нет почти нигде.
Могу и ошибаться, но, кажется с WinXP SP2 уже шел .NET 2.0
Как правило, на деле пользователь уже имеет ведро дотнет-программ и фреймворк 3.5+, эта штука довольно-таки популярна, на ней ща пишется всё - от контрол центров драйверов до игр. Ну а если так важно 100%-е покрытие, портаните на с++, это не так сложно. Хотя имхо время гораздо дороже и оперативки, и пары мегабайт трафика.
Патч нарисовал, осталось заставить его работать.
дальнейшее обсуждение и отладка полученного решения идет в отдельной теме: http://www.city-of-masters.ru/forums/index.php?showtopic=6214
Почти доделал чистилку для GFF структур. Уже прикручиваю к мозгам ей графический интерфейс.
Делаю паузу на 4 дня - ибо контрольные на носу в ВУЗе.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)