Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - mialax

Страницы: 1 2 [3] 4 5 ... 8
31
Вообще, о багах в работе SDL_ttf хотел здесь написать, но поскольку после первого баг-репорта реакции не последовало, не стал этого делать, думал, тебе некогда этим заниматься.

http://www.dfwk.ru/images/e/e8/%D0%94%D0%BB%D1%8F_%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%8B_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0_V1_1.ZIP

По отлавливал баги. Фактически изменился только SDL_ttf.
Пришлось избавиться почти от всей оптимизации :(

Если на баг-репорт долго не реагирую, лучше напишите в личку, так как форум не всегда читаю.

32
Если просто переводить все фразы и слова, то перевод почти не будет иметь преимуществ по отношению к уже существующему. Была идея составить словарь комбинаций слов, но это приведёт к разрастанию словаря.
Надо понимать, что чем больше вариантов замен, тем сильнее тормазится сама игра.
Я считаю, что лучший вариант использования замены текста - это корректировка существующего перевода.
Например: "ы's" - "ы"
                   "ый слизь" - "ая слизь"

33
Arex, понял правильно. 80 символов взято с потолка и это ограничение можно свободно менять.  (Если привязывать перевод "мысли и предпочтения", то менять по любому придётся).
Переведётся только первое совпадение (я проглядел этот момент). Решить легко.
      if (find != NULL)
      {
                     .......................
                     i--;
      }

Вот изменённые исходники sdl библиотек. Правда разобраться там будет ещё сложнее (также поленился раскомментировать). Да и для компиляции много чего хотят (Потому то я вынес перевод в отдельную библиотеку).
http://www.dfwk.ru/images/e/ef/SDL_ttf-2.0.11_ar.zip
http://www.dfwk.ru/images/1/15/SDL-1.2.15_ar.ZIP

34
mialax возможно ли сделать инструмент для превода с использованием скриптового языка(Питон, Луа) чтобы исключить процесс бесконечной компиляции в процессе перевода ? или это повлияет на производительность игры ?
...Или сделать подхват библиотекой списка замен из внешнего текстового файла вроде trans.txt?
Словарь замен во внешнем текстовом файле сделать недолго. Просто я не хотел загонять людей в рамки. Народ высказывал желание проводить анализ уже переведённого текста, с тем чтобы сделать перевод более красивым.
Так что я сделал болванку (ChangeText), чтобы людям не пришлось мучиться с исходниками sdl_ttf. А дальше уже кто на что горазд. Хоть питон, хоть внешний текстовый файл, хоть хитрый лексический и семантический анализатор.

Если с программированием плохо, то могу написать вариант библиотеки ChangeText.dll где будет производится замена по словарю во внешнем текстовом файле.

PS: Набросал по быстрому. Словарь замен берёт из words.txt
http://www.dfwk.ru/images/8/81/For_Arex.zip

35
Выложил инструмент для замены текста выводимого через ttf.

http://www.dfwk.ru/images/9/93/%D0%94%D0%BB%D1%8F_%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%8B_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0_V1_0.ZIP

Сделанная мной sdl_ttf.dll не будет работать без ChangeText.dll.
ChangeText.dll содержит только одну функцию - wchar_t* ChangeText(wchar_t* inText)    , в которой необходимо описать алгоритм изменения текста. (На вход получаете оригинальный текст, а вернуть надо изменённый).
ChangeText.dll в моём примере просто меняет пару слов.
Исходники ChangeText.dll приведены на Visual Studio 2010, но думаю для знающих (и не очень) людей не составит труда сделать свою библиотеку по подобию, для любой другой среды.
Во общем компилите ChangeText.dll и кидаете её вместе sdl_ttf.dll в папку DF.

Экран "мысли и предпочтения" ни как не затрагивается (Лень было делать). Если кто-нибудь сделает что-то путное запилю и для него обращение к ChangeText.dll

Надеюсь кому-нибудь пригодится.

36
Русификация игры / Re: Русификация Dwarf Fortress
« : 26 Февраля 2013, 22:12:31 »
Извините за тупой вопрос. Я поставил SDL файл, после все черное пространство экрана заполняется синими буквами ''Я''. Исправляет только CTRL как и написано. Но чтоб прочитать мысли и предпочтения. Мне приходится включать эти назойливые синии буквы. В скриншотах в ВИКИ я видел нормальный черный экран в Мыслях и предпочтениях без этих русских ''я''  Наверное придется качать графическую версию? Помогите, что делать? :-[
В папке \data\art\ есть файлы начинающиеся на curses. Открываем их в паинте, в нижнем правом углу рисуем белую точку, сохраняем. По идее должно помочь, но не гарантирую, сейчас проверить не могу. Смысл в том, чтобы последний символ шрифта (который в правом нижнем углу, и который впоследствии заменяется на "я") по виду отличался от пустого места на экране.

Так и есть. Надо, чтобы 256-й(16 строка, 16 столбец) символ в тайлсете отличался от пробела. Это проблема актуальна для не графических версий. Тут был вариант либо не рисовать "я" либо проблемы со стандартной версией. Я предположил, что те кто играют в не графические версии, скорее всего не имеют проблем с английским и оставил "я".
Так, что ставьте точки над "я" и будет вам счастье.

37
Русификация игры / Re: Русификация Dwarf Fortress
« : 22 Февраля 2013, 12:31:41 »

Можно привести пример, как оно должно выглядеть?

Ну вот вам пример. :)
Тут входной текст отправляется онлайн переводчику. Менее извращённых вариантов на работе у меня нет.

Uint16* TranslRus(Uint16* text)
{
   KeyNum = Control::IsKeyLocked( Keys::NumLock);
   if (KeyNum)
   {
      System::String ^inter = "                                                                                  ";
      System::String ^ chr = " ";
      System::String ^r;
      int leng = wcslen((wchar_t*)text);

             for ( int i =0; i < (int)wcslen((wchar_t *)text); i++)
             {
                chr = ((wchar_t)text).ToString();
                inter = inter->Insert(i, chr);
             }

            System::String ^url = "http://translate.yandex.ru/tr.json/translate?lang=en-ru&text=" + inter;
            WebRequest^ request = WebRequest::Create(url);
            request->Credentials = CredentialCache::DefaultCredentials;
            HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
            Stream^ dataStream = response->GetResponseStream();

            StreamReader^ reader = gcnew StreamReader( dataStream );

             r = reader->ReadToEnd();
            for ( int i =1; i< r->Length-1; i++)
               rez[i-1] = r;
            rez[r->Length-2] = 0;
            memcpy(cash_eng[h],text,sizeof(rez));
            text = rez;
            memcpy(cash_rus[h],rez,sizeof(rez));
            }
   return text;
}


38
Русификация игры / Re: Русификация Dwarf Fortress
« : 22 Февраля 2013, 10:31:48 »
Я бы попробовал, только очень слабо представляю, как прикрутить какой-нибудь инструментарий к библиотеке. Как ты сделал отображение мыслей и предпочтений, я так и не понял.

Скачал исходники библиотек и дописал в них свой текст. :)
Возню с библиотеками могу взять на себя. От вас требуется написать функцию формата:
  Uint16* TranslRus(Uint16* text)
Текст в формате юникода.

39
Русификация игры / Re: Русификация Dwarf Fortress
« : 22 Февраля 2013, 08:46:46 »
"либо измыслить такую надстройку для DF, которая будет перехватывать уже сгенерированный текст (тот самый "She has blue eyes") и переводить его целиком."

Это как раз очень просто. Весь текст кроме "мысли и предпочтения" выводится через sdl_ttf.dll. Проблема в том, что различных сочетаний будет огромное количество и перебор всех вариантов на лету будет серьёзно тормозить. Если все-таки хочешь попробовать, то могу помочь с перехватом текста.

40
Русификация игры / Re: Русификация Dwarf Fortress
« : 15 Февраля 2013, 12:53:20 »
Раз никто не придумал ничего лучше для просмотра "мысли и предпочтения", чем моя SDL.dll, я решил доработать её.
В новой версии смог сделать отображение при масштабировании (через жуткие извращения). Старую версии не убирал, так не уверен в безглючности новой. Прошу скачать и протестировать новую версию SDL.dll. Ссылка ниже.


http://www.dfwk.ru/images/6/60/SDL_v2.ZIP

41
Во истину нет ничего более постоянного, чем временные заплатки

42
Теоретически, в качестве признака нужного момента, можно считать отсутствие использования ttf на всём экране кроме первой строки и наличии нескольких русских символов идущих подряд. При этом нужно формировать сразу два итоговых изображения, с переводом и без и в конце выводить требуемое.
Это может привести к некоторым подтормаживаниям, но другого способы не вижу.

Жалко, что нет заголовка на первой строке "мысли и предпочтения". Тогда было бы всё проще :)

43
Ну не так и сложно клавишу вкл/выкл перевода задавать через файл настройки.
Осталось только побороть лень.

Я тут подумал, если через TTF выводить не только русские буквы, но латинские, то ведь можно вообще избавиться от букв в тайлсете. Куча тайлов освободится под разные предметы. Интересно это кому-нибудь?

44
Выложил на своей странице новую версию SDL.dll для экрана размышлений и предпочтений.

Прошу попробовать на разных тайлсетах.

45
Вчера переделал sdl.dll для вывода русских букв в экране размышлений. Теперь работает и с графическими версиями. Вечером вернусь с работы выложу, если не будет проблем с форумом (вчера не мог зайти).

Осталось доделать 2 момента:
1) В стандартных тайлсетах "я"(символ с кодом 0хFF) это пустой символ и моя библиотека считает все пустые символы за "я". Пока достаточно в тайлсете поставить точку в любом месте этого тайла. Думаю к понедельнику найду время с этим разобраться на уровне самой библиотеки.

2) Я не уверен, что переключать отображение между обычным видом и заменой тайлов на русские буквы "левым Ctrl" удобно. Какие будут идеи как это сделать лучше?
Есть мысли автоматизировать переключение, но пока не вижу способа сделать это легко и красиво.

Страницы: 1 2 [3] 4 5 ... 8