Мультиязычные миссии: как это сделано

Автор Zontik, 25 октября 2018 11:00:47

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Zontik

Ну а вот это кто написал?
ЦитироватьЗАЧЕМ заставлять игрока читать ридми? Почему нельзя всю необходимую информацию передать через геймплей во время самой игры?
Я себе именно так представляю передачу через геймплей.
Хотя, возможно, мы о разном. Только сейчас подумал, что мог иметь в виду совсем другое - предысторию, краткое содержание и т.п. сюжетные составляющие. Этому действительно не место в Readme. Я оттуда даже исполнителей удалил, чтобы не спойлерить.
А вообще да, есть проблема, с которой я справиться не в состоянии. К переводам это, правда, не имеет отношения, но нужно прочитать readme, чтобы узнать, что есть еще одна обязательная операция помимо установки. Хотя совсем не обязательно копировать папку после какого-то момента в игре. Если не пытаться "передать информацию через геймплей", то можно скопировать эту папку и до начала. Хотя и потом тоже не поздно.
Дайте глазам отдохнуть! Тёмное место

Force

Zontik, а разве это не разрулить средствами установщика? Почему нельзя всё сделать во время установки миссии?
ЦитироватьХотя, возможно, мы о разном. Только сейчас подумал, что мог иметь в виду совсем другое - предысторию, краткое содержание и т.п. сюжетные составляющие. Этому действительно не место в Readme.
Я просто не в курсе, какого рода у тебя проблемы. Сейчас вроде как стало понятно, что технические. Значит решать их надо программно и желательно таким образом, чтобы пользователь вообще ничего не делал дополнительного.

Призрак Boris'а3000

А я вообще думал, что это как-то связано с тем разговором про слишком быстрое попадание по горячим клавишам. Сложновато, наверно, вести диалог без малейшей конкретики...
Единственное, что умеет делать дополнительного ФМ-селектор при установке, это перекодирование звуковых файлов. Хотя "установкой" это всё сложно назвать -- просто распаковка архива и прописывание пары строк в ini. Это можно руками всё сделать, без всякого "установщика".
Непонятно только, почему этой загадочной папке, коль уж ей позволено оказаться внутри игры ещё до её начала, не быть включённой в состав ФМ сразу же, "в коробке"? Чё-то мутит Зонтик...
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

Zontik

#33
Да я уже писал об этом в профильной теме. Все дело в скриптах Lua. Они подключаются только из корневой папки игры. Пока дело делал Dark Loader, это ни у кого не вызывало вопросов, поскольку все ресурсы ФМ располагались там же. Но теперь...
При этом тесты показали, что просто наличия скриптов в корневой папке недостаточно. Нужно еще, чтобы их копия была там, где установлена ФМ.
Поэтому как ни крути, а одну простую дополнительную операцию по ручному копированию папки игроку выполнить все-таки придется.
Справедливости ради отмечу, что даже если этого не сделать, мир не рухнет, кампанию можно будет пройти, но визуализация в некоторых местах сильно пострадает, ну и геймплей капельку изменится. Что, однако, заметит только тот игрок, который знал заранее, как это должно выглядеть на самом деле. То есть почти никто.
Когда еще только появились пользовательские скрипты, был даже написан один специально для подобных случаев: он отслеживал наличие скриптового модуля и при его отсутствии прямо в игре выдавал предупреждение на экран. (Что мешало включить модуль прямо в комплект поставки, я никогда не понимал.) Но я слишком бережно отношусь к создаваемому миру, чтобы внедрять в него подобные божественные послания.
На самом деле моя (а может, и не только моя) проблема наверняка решается достаточно просто. Надо всего лишь переписать загрузочный модуль Lgs.osm, заставив его искать скрипты там, где они действительно находятся. Трудность только в том, что этим некому заняться.
Дайте глазам отдохнуть! Тёмное место

Призрак Boris'а3000

Цитата: Zontik от 29 октября 2018 11:02:49
Да я уже писал об этом в профильной теме. Все дело в скриптах Lua.
Тот разговор закончился на том, что Нёмыч собрался переписать твои скрипты на актуальный язык. Я думал, проблема давно решена на корню.

Цитата: Zontik от 29 октября 2018 11:02:49
Надо всего лишь переписать загрузочный модуль Lgs.osm, заставив его искать скрипты там, где они действительно находятся. Трудность только в том, что этим некому заняться.
Естественно. Потому что пользоваться под Нью-Дарком олд-дарковскими запчастями -- это извращение. И каждый человек, выбирая на что потратить время, конечно же выберет изучение актуального языка с наверняка гораздо большими возможностями, а не переписывание старого модуля.
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

Force

Zontik, неужели скрипты настолько много места занимают, что нельзя их копию разместить в нужной папке заранее? Ну и что, что дважды, зато пользователю ничего не придется мудрить. Ты ведь знаешь, что если что-то может быть сделано неправильно, оно будет сделано неправильно.

Призрак Boris'а3000

"Нужная папка" -- корень игры. Ни ФМ-селектор, ни NDL ничего не кидают в корень игры и вообще не вылезают за пределы папки FMs. И правильно делают. Проблема оттого, что под Нью-Дарком предполагается использовать древний загрузчик столь же древних (ману)скриптов, написанный в древние времена в расчёте на Old-Old-Dark и древний DarkLoader, который вообще всё кидает в корень.
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

Zontik

ЦитироватьТот разговор закончился на том, что Нёмыч собрался переписать твои скрипты на актуальный язык.
Все оказалось не так просто. Поломать что-то - как делать нечего. Поэтому сошлись на том, что лучше заведомо исправная и отлаженная пишущая машинка, чем вечно глючащий и зависающий Word.
Цитироватькаждый человек, выбирая на что потратить время, конечно же выберет изучение актуального языка с наверняка гораздо большими возможностями
Если бы все исходили из такой логики, никто бы давно уже не занимался дизайном на Dark Engine.
А впрочем, здесь это все тоже в тему. Речь ведь о переводе с одного языка на другой, пускай это и не человеческие языки. Так вот, я пришел к выводу, что в данном случае необходимость перевода не перевешивает связанные с этим опасности. То есть все останется как есть.
Дайте глазам отдохнуть! Тёмное место

Призрак Boris'а3000

Цитата: Zontik от 29 октября 2018 14:16:08
Если бы все исходили из такой логики, никто бы давно уже не занимался дизайном на Dark Engine.
В Дромеде народ сидит для того, чтобы получающиеся миссии хоть немного смахивали на оригиналы и вышибали ностальгическую слезу. То есть это нечто иррациональное, фанатское. А вот типом скриптов вряд ли кто фанатеет, и при одинаковом алгоритме тип скрипта никак не скажется на конечном виде миссии, поэтому тут прагматизЬм и только прагматизЬм.
В общем, не шибко корректное сравнение, т. к. ФМ-ка в виде конечного продукта, каким её воспринимает игрок, и скрипт находятся на больно разных уровнях абстракции и, соответственно, разном уровне восприятия человеком.
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

Zontik

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

Chuzhoi

#40
Исходники LGScript есть на github.

Предположительно ключ к решению кроется в файле ScriptModule.cpp в строке 270 (она вторая в этом фрагменте):
char ffpath[FILENAME_MAX];
strcpy(ffpath, ".\\scripts\\");
strcat(ffpath, "*");
int hFFile = _findfirst(ffpath, &ffdata);

Решение в том, что вместо точки перед \\scripts\\ следует поставить полный или относительный путь к папке с FM-кой. Это можно, например, сделать с помощью функции GetModuleFileName(), передав в нее хэндл выполняющейся в данный момент DLL-ки (которой и является lgs.osm в папке с миссией - при условии, что автор не забыл ее туда положить); хэндл можно принять через DllMain() или получить через GetModuleHandleEx(). В данный же момент скрипты ищутся в папке .\scripts\, где точка означает текущую папку (которой, очевидно, является корневая папка Thief2).

Кстати, именно это и происходит в файле Dll.cpp - устанавливается переменная progdir вызовом GetModuleFileNameA(), хэндл принимается через DllMain(). Однако дальше эта переменная, похоже, никак не используется (что странно). Успешно ли она устанавливается, также неизвестно.

Я бы поразбирался с этим дальше, но тут уже нужно произвести переход от теории к практике, а я пока очень загружен. Но если никто не выразит желания взять этот труд на себя, я попробую управится до релиза кампании. Можно также попробовать связаться с автором, если он еще жив и питает интерес к своему детищу (судя по предыдущему посту Зонтика, это не так).

***

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

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

Zontik

У меня сведения весьма косвенные. Судя по тому, что проблема со скриптами возникла заметно раньше выхода Белки и до сих пор ничего в этом плане не поправлено - автору все равно.
Однако есть и хорошая новость: я почти уверен, что он жив.
ЦитироватьКстати, именно это и происходит в файле Dll.cpp - устанавливается переменная progdir вызовом GetModuleFileNameA(),
Повторю в третий раз, здесь, кажется, самое место: просто переместить папку в корень игры не достаточно. Без ее копии в папке с ФМ ничего по-прежнему не работает. Так что, возможно, эта переменная все же где-то задействована. Иначе как программа узнает об отсутствии папки неизвестно где?
И лично у меня закралось подозрение, что планировалось-то все сделать правильно (и наполовину уже было сделано), но автор где-то либо забыл, либо ошибся. А обнаружить эту ошибку при тестировании с Dark Loader у него не было шансов.
ЦитироватьПрятать такие указания где-нибудь между брифингом и благодарностями
На данном этапе этот вопрос решен таким образом: брифинг - в игру, благодарности - в финальные титры, а среди немногого оставшегося нужная строка выделена ярким кровавым пятном. Плюс обязательное предупреждение рядом со ссылкой на скачивание. Плюс здесь все уже и так в курсе.
Но если вдруг кто-нибудь возьмет на себя своевременное исправление Lgs.osm, это будет намного лучшим решением. Из критического в Readme останутся только геймплейные советы. Рано или поздно напоровшиеся на неприятности все равно их там найдут.
Вот, кстати, насчет new_mantle и других настроек. Стоит заглядывать в readme к новым ФМ хотя бы по этой причине. Мне, например, new_mantle не нужен (хотя и навредить не сможет, даже при подключенных скриптах), а вот включение тумана и осадков... я бы сказал, даже критичнее той несчастной папки со скриптами. Да, их мало кто отключает сегодня. И все-таки.
Дайте глазам отдохнуть! Тёмное место

Chuzhoi

Цитата: Zontik от 29 октября 2018 16:31:53
Судя по тому, что проблема со скриптами возникла заметно раньше выхода Белки и до сих пор ничего в этом плане не поправлено - автору все равно.
А в Белке нет такой проблемы?

Цитата: Zontik от 29 октября 2018 16:31:53Повторю в третий раз, здесь, кажется, самое место: просто переместить папку в корень игры не достаточно. Без ее копии в папке с ФМ ничего по-прежнему не работает.
Похоже, проблема становится еще интереснее.

Цитата: Zontik от 29 октября 2018 16:31:53благодарности - в финальные титры
Ну зачем же так? Лично я совсем не против благодарностей и сам всегда с удовольствием ищу себя в Readme, если в чем-то поучаствовал. Хотя ладно. Если это будет сделано так же эффектно, как это было в заключительном ролике кампании Golden Book, тогда я совсем не против.

Призрак Boris'а3000

Цитата: Chuzhoi от 29 октября 2018 22:48:05
Похоже, проблема становится еще интереснее.
Не думаю, поскольку это совершенно не влияет на задачу -- отучить этот модуль лазить в корень. А в пределах папки с ФМ пусть хоть десяток копий требует.
Corsair HX1000i / Gigabyte GA-X48-DS4 / Intel Core2-Quad Q9650@4.1GHz / Hynix 8GB DDR2-800@1100MHz /
EVGA 6GB GDDR5 <GeForce GTX 980Ti> K|NGP|N Edition / Creative SB X-Fi Xtreme Gamer Fatal1ty Pro Edition /
2xSSD Intel X25-M 120GB в RAID 0 / Samsung SyncMaster 957MB (CRT 2048х1536) / UPS PCM SKP-2000A /
Windows XP Professional SP3 VL 32-bit + Windows 7 Enterprise SP1 U 64-bit / ForceWare 368.81 / New-Dark 1.26

Zontik

ЦитироватьНу зачем же так?
Единственно из-за объема. Участников накопилось тьма-тьмущая. Это к вопросу о работе в команде...
ЦитироватьЕсли это будет сделано так же эффектно...
Не уверен насчет эффектности (некоторые идеи способны выстрелить только один раз), но постарался сделать красиво. И звуковой ряд будет несколько неожиданным.
ЦитироватьА в Белке нет такой проблемы?
Я с ней не работал, но, учитывая, что сделано это было самими разработчиками New Dark, и никто ни на что не жаловался... думаю, действительно нет.
ЦитироватьПохоже, проблема становится еще интереснее.
Я несколько раз убирал/возвращал на место папки и смотрел, работает или нет. Во всяком случае, на моей конфигурации эффект воспроизводится однозначно.
Дайте глазам отдохнуть! Тёмное место