Свои изобретения в Railworks
Re: Свои изобретения в Railworks
Вопрос к нашим программистам или людям, кто в этом что-то понимает.
Я тут из спортивного интереса решил попробовать перегнать OUT скрипты в читаемый формат LUA и столкнулся с первой сложностью. Конечно ничего не получилось
Попытался выяснить, какой версией компилятора были созданы эти скрипты. Вроде в папке с игрой лежит luac (компилятор скриптов) версии 5.0.2. И я так думаю, все скрипты были пропущены через него. Попробовал прогнать скрипт LUA от стандартного Class 47 (Class47EngineScript.lua), на выходе получил luac.out. В нём первые строки такие: (кликабельно)
Затем я решил открыть скрипт от DB 101 из маршрута Мюнхен и вот что увидел:
Я так понимаю, вначале, где прописана строка LuaP ( индекс P означает версию компилятора скрипта - в данном случае 5.0.2, если не ошибся)
Смотрим ниже и видим различия в строчках @Class47EngineScript.lua и на том же месте в скрипте DB 101 стоит=( none)
Когда я пытался хотябы прочитать этот скрипт с помощью програмки Lua через командную строку, в случае с class 47 это сделать получилось. В случае с DB 101 нет. Тогда я решил принудительно прописать вместо =( none) название самого скрипта от DB 101, как на примере с Class 47.
Вместо этого вышло сообщение что-то про память, типо её не хватает или что-то в этом духе.
Ещё хочу заметить, что другие версии декомпиляторов не подходят к скриптам. То есть скрипт будет читаться только той версией, которая его скомпилировала
Я тут из спортивного интереса решил попробовать перегнать OUT скрипты в читаемый формат LUA и столкнулся с первой сложностью. Конечно ничего не получилось
Попытался выяснить, какой версией компилятора были созданы эти скрипты. Вроде в папке с игрой лежит luac (компилятор скриптов) версии 5.0.2. И я так думаю, все скрипты были пропущены через него. Попробовал прогнать скрипт LUA от стандартного Class 47 (Class47EngineScript.lua), на выходе получил luac.out. В нём первые строки такие: (кликабельно)
Затем я решил открыть скрипт от DB 101 из маршрута Мюнхен и вот что увидел:
Я так понимаю, вначале, где прописана строка LuaP ( индекс P означает версию компилятора скрипта - в данном случае 5.0.2, если не ошибся)
Смотрим ниже и видим различия в строчках @Class47EngineScript.lua и на том же месте в скрипте DB 101 стоит=( none)
Когда я пытался хотябы прочитать этот скрипт с помощью програмки Lua через командную строку, в случае с class 47 это сделать получилось. В случае с DB 101 нет. Тогда я решил принудительно прописать вместо =( none) название самого скрипта от DB 101, как на примере с Class 47.
Вместо этого вышло сообщение что-то про память, типо её не хватает или что-то в этом духе.
Ещё хочу заметить, что другие версии декомпиляторов не подходят к скриптам. То есть скрипт будет читаться только той версией, которая его скомпилировала
*Train Simulator 2018*
Re: Свои изобретения в Railworks
насколько я понимаю, out - это частичное преобразование скрипт в бинарный формат. Т.е. это как компиляция программы исходный код не получить.
Преобразование out идёт по следующей схеме:
1) отсев переменных их значений от синтаксиса языка Lua;
2) компиляция.
Компилируется в бинарный в данном случае синтаксис, мы лишь видим малую часть языковых конструкций, да названия переменных. Компиляция - это не только улучшенный метод защиты скриптов (тот метод с прогонкой в string() раскрывался на раз при должном умении), но и увеличенная скорость их выполнения, т.к. скомпилированный код шустрее выполняется чем обычные исходные lua. Выгода составляет до 15% в расчётах. Тестил свой 60 КБ скрипт в чистом виде и после прогонки в out (сжался до 38 КБ).
Если конечно найдётся способ получения исходного (что маловероятно) кода это было бы очень классно. Но не вижу предпосылок к его получению...
Преобразование out идёт по следующей схеме:
1) отсев переменных их значений от синтаксиса языка Lua;
2) компиляция.
Компилируется в бинарный в данном случае синтаксис, мы лишь видим малую часть языковых конструкций, да названия переменных. Компиляция - это не только улучшенный метод защиты скриптов (тот метод с прогонкой в string() раскрывался на раз при должном умении), но и увеличенная скорость их выполнения, т.к. скомпилированный код шустрее выполняется чем обычные исходные lua. Выгода составляет до 15% в расчётах. Тестил свой 60 КБ скрипт в чистом виде и после прогонки в out (сжался до 38 КБ).
Если конечно найдётся способ получения исходного (что маловероятно) кода это было бы очень классно. Но не вижу предпосылок к его получению...
Re: Свои изобретения в Railworks
supermax
Ну смотрите, я для примера взял скрипт от немецкого 101-го (тот, который стандартный)
Сначала я его скомпилировал утилитой LuaC, она лежит прямо в директории с игрой. Потом полученый out файл прогнал через luadec версии 0.1
Выкладываю файлы сюда (оригинал и он же расшифрованый после компиляции), чтобы вы посмотрели и сказали, не разбился ли скрипт и рабочий ли он
--- добавлено позже в 11 май 2013, 22:29 ---
а вот при попытке расшифровать тот же файл, но уже оригинальный из маршрута Мюнхена luadec вываливается с ошибкой.
После этого правлю ту самую строку =( none) на @br101_enginescript.lua и после этого luadec выдаёт вот что:
D:\>luadec.exe br101_enginescript.out
luadec.exe: not enough memory
что это может значить?
Ну смотрите, я для примера взял скрипт от немецкого 101-го (тот, который стандартный)
Сначала я его скомпилировал утилитой LuaC, она лежит прямо в директории с игрой. Потом полученый out файл прогнал через luadec версии 0.1
Выкладываю файлы сюда (оригинал и он же расшифрованый после компиляции), чтобы вы посмотрели и сказали, не разбился ли скрипт и рабочий ли он
--- добавлено позже в 11 май 2013, 22:29 ---
а вот при попытке расшифровать тот же файл, но уже оригинальный из маршрута Мюнхена luadec вываливается с ошибкой.
После этого правлю ту самую строку =( none) на @br101_enginescript.lua и после этого luadec выдаёт вот что:
D:\>luadec.exe br101_enginescript.out
luadec.exe: not enough memory
что это может значить?
*Train Simulator 2018*
Re: Свои изобретения в Railworks
Прикольно, 2 файла идентично, просто у расшифрованного изменилась запись функций, вместо
function [имя функции] стало [имя функции] =function (параметры). Такое допустимо, скрипт рабочий в принципе...
Но попробовал свой out прогнать через luadec, тот что Вы мне давали, тоже 0.1 версия. Крашится luadec.exe - отказывается out расконвертить
function [имя функции] стало [имя функции] =function (параметры). Такое допустимо, скрипт рабочий в принципе...
Но попробовал свой out прогнать через luadec, тот что Вы мне давали, тоже 0.1 версия. Крашится luadec.exe - отказывается out расконвертить
Re: Свои изобретения в Railworks
дааа, почти докапались до истины и снова тупик. Даже не знаю, что и делать. Ну а по поводу замены второй строчки =( none) на @br101_enginescript.lua. По какой причине пишет, что не хватает памяти?
--- добавлено позже в 11 май 2013, 22:53 ---
Кстати, посмотрите скрипт для Class 465. Его мне удалось расшифровать без проблем и геморроя
--- добавлено позже в 11 май 2013, 22:53 ---
Кстати, посмотрите скрипт для Class 465. Его мне удалось расшифровать без проблем и геморроя
Код: Выделить всё
Initialise = function()
boolAWSReady = true
boolAWSTest = false
Call("*:SetControlValue", "Active", 0, 1)
Call("BeginUpdate")
end
OnControlValueChange = function(name, index, value)
if Call("*:ControlExists", name, index) then
Call("*:SetControlValue", name, index, value)
end
end
Update = function(time)
if Call("*:GetControlValue", "Startup", 0) == -1 then
boolAWSReady = Call("IsExpertMode") ~= 1
boolAWSTest = false
Call("*:SetControlValue", "Reverser", 0, 0)
end
boolAWSTest = boolAWSReady ~= Call("*:GetControlValue", "Reverser", 0) <= 0.9
Call("*:SetControlValue", "AWSWarnCount", 0, 1)
Call("*:SetControlValue", "AWS", 0, 0)
boolAWSReady = false
if boolAWSTest == boolAWSReady ~= Call("*:GetControlValue", "AWSReset", 0) <= 0.9 then
Call("*:SetControlValue", "AWSWarnCount", 0, 0)
Call("*:SetControlValue", "AWSClearCount", 0, 1)
Call("*:SetControlValue", "AWS", 0, 1)
boolAWSTest = false
end
if Call("GetControlValue", "CabLight", 0) == 1 then
Call("CabLight1:Activate", 1)
else
Call("CabLight1:Activate", 0)
end
end
OnConsistMessage = function(msg, argument, direction)
end
*Train Simulator 2018*
Re: Свои изобретения в Railworks
ого...Вы получили для 465-го из out? Я при релизе ВЛ10к буду переживать за свой скрипт Я то полагал, что out нормальная защита, теперь могу ноу-хау вводить в РВ, а оказывается всё можно тырить
Делали всё тем же методом: out прогнали через luadec.exe?
Делали всё тем же методом: out прогнали через luadec.exe?
Re: Свои изобретения в Railworks
supermax
всё верно, но это единственный скрипт, который мне удалось выковырнуть. У остальных прописана строка =( none), из-за чего при попытки вытащить код, пишет, что неправильный заголовок скрипта и дальше ничего не выходит. Пробовал подставлять вместо этого none аналогичные названия, которые прописываются при компиляции lua в out, но это не помогает. При декомпиляции пишет, что не хватает памяти.
Дальше дело не идёт
и ещё хочу сказать, что в скрипте от 465-го, где обычно стоит none прописан полный путь до этого скрипта, но в формате lua.
В общем и целом хочу сказать, что дальше дело за понимающими процесс людьми. Может кому и удасться докопаться до раскрытия кода
всё верно, но это единственный скрипт, который мне удалось выковырнуть. У остальных прописана строка =( none), из-за чего при попытки вытащить код, пишет, что неправильный заголовок скрипта и дальше ничего не выходит. Пробовал подставлять вместо этого none аналогичные названия, которые прописываются при компиляции lua в out, но это не помогает. При декомпиляции пишет, что не хватает памяти.
Дальше дело не идёт
и ещё хочу сказать, что в скрипте от 465-го, где обычно стоит none прописан полный путь до этого скрипта, но в формате lua.
В общем и целом хочу сказать, что дальше дело за понимающими процесс людьми. Может кому и удасться докопаться до раскрытия кода
*Train Simulator 2018*
Re: Свои изобретения в Railworks
Имхо. здесь очевидно разница в компиляции. Естественно... синтаксический анализатор не прочтет вручную добавленную строку уже в скомпилированный экземпляр, так как это, так сказать "не входит в кодировку" компилятора. Он, просто проигнорирует, пройдет мимо или выдаст ошибку наличие "инородного тела", что было добавлено вручную, редактором, напрямую в кодировке ANSI/Unicode и т.д. Все верно... Я не программист , но так видно, что все это вызывается через другую, "промежуточную" функцию.Cross писал(а):Тогда я решил принудительно прописать вместо =( none) название самого скрипта от DB 101, как на примере с Class 47.
Вместо этого вышло сообщение что-то про память, типо её не хватает или что-то в этом духе.
Re: Свои изобретения в Railworks
Проковырял все варианты, всё-таки я спокоен. Не взламывается скрипт, который сконверчен через Luac.exe вызовом из BlueprintEditor Рад, что мой скрипт теперь в безопасности, с другой стороны теперь фишки у более услужливых RSC-шникам разрабов не потырить
Re: Свои изобретения в Railworks
чему радоваться то? Мне кажется наоборот хреновым то, что теперь никак эти скприпты не взломать. А если захочется подсмотреть какую-нибудь функцию и прописать её выполнение на какую-нибудь клавишу? Ну например свет в кабине поезда. Есть же локомотивы, у которых только мышкой можно щёлкнуть тумблер, а клавиши нету.
*Train Simulator 2018*
Re: Свои изобретения в Railworks
Cross, ни что не мешает RW_Tools-ом вскрыть engine файл и заценить имена контролов, их обычно немного+в локах про свет их имена осмыслены - содержат слово Light ну и стоит глядеть теги Detailed Description и Brief Description
Re: Свои изобретения в Railworks
supermax
у меня нет rw tools, считаю её слишком громоздкой для выполнения каких-то операций. Я пользуюсь serz.exe для перегона бинарников в xml.
Я обазначил лишь малую часть. Ведь хочется полноценно поковыряться в скриптах, может быть какие-то новые функции вытащить, что было бы полезно для разработки собственных дополнений, но с зашифрованными скриптами этого сделать не получается.
Я ещё в интернете нашёл программку Open SSL. С её помощью как-то можно обработать скрипт, только как это сделать, не знаю. Может вы что-то слышали или пользовались?
--- добавлено позже в 18 май 2013, 16:07 ---
Всё же мне нужна помощь по скриптам. Щас занимаюсь патчем для локомотива SW1500. Это уже старое дополнение, но к нему прикрутили квик драйв только. Мой патч будет включать эффекты TSX (дождь и свет). Но возникла проблема как раз-таки со скриптовой частью. Свет я прикрутил и он теперь работает как надо. Если смотреть скрипт старого локомотива, то естественно в нём нету команд на включение и отключение света, то есть свет в кабине и на ступеньках горит всегда. А теперь вопрос, каким образом теперь посмотреть скрипт и вытащить из него столь необходимые функции??? С назначением кнопок управления будет проще. А вот без скриптовых функций никак не обойтись к сожалению
у меня нет rw tools, считаю её слишком громоздкой для выполнения каких-то операций. Я пользуюсь serz.exe для перегона бинарников в xml.
Я обазначил лишь малую часть. Ведь хочется полноценно поковыряться в скриптах, может быть какие-то новые функции вытащить, что было бы полезно для разработки собственных дополнений, но с зашифрованными скриптами этого сделать не получается.
Я ещё в интернете нашёл программку Open SSL. С её помощью как-то можно обработать скрипт, только как это сделать, не знаю. Может вы что-то слышали или пользовались?
--- добавлено позже в 18 май 2013, 16:07 ---
Всё же мне нужна помощь по скриптам. Щас занимаюсь патчем для локомотива SW1500. Это уже старое дополнение, но к нему прикрутили квик драйв только. Мой патч будет включать эффекты TSX (дождь и свет). Но возникла проблема как раз-таки со скриптовой частью. Свет я прикрутил и он теперь работает как надо. Если смотреть скрипт старого локомотива, то естественно в нём нету команд на включение и отключение света, то есть свет в кабине и на ступеньках горит всегда. А теперь вопрос, каким образом теперь посмотреть скрипт и вытащить из него столь необходимые функции??? С назначением кнопок управления будет проще. А вот без скриптовых функций никак не обойтись к сожалению
*Train Simulator 2018*
- Sergey1507
- Мастер
- Сообщения: 360
- Зарегистрирован: 06 янв 2012
- Откуда: Калининград (МО)
- Репутация: 224
Re: Свои изобретения в Railworks
Собеседники!
Может кто из вас знает, где можно найти габаритки зарубежного ПС.
Интересует "class 318".
Может кто из вас знает, где можно найти габаритки зарубежного ПС.
Интересует "class 318".
Re: Свои изобретения в Railworks
1. В Engine конфиге добавить 2 контрола (саму теговую структуру можно взять из других контролов):Cross писал(а): Всё же мне нужна помощь по скриптам. Щас занимаюсь патчем для локомотива SW1500. Это уже старое дополнение, но к нему прикрутили квик драйв только. Мой патч будет включать эффекты TSX (дождь и свет). Но возникла проблема как раз-таки со скриптовой частью. Свет я прикрутил и он теперь работает как надо. Если смотреть скрипт старого локомотива, то естественно в нём нету команд на включение и отключение света, то есть свет в кабине и на ступеньках горит всегда. А теперь вопрос, каким образом теперь посмотреть скрипт и вытащить из него столь необходимые функции??? С назначением кнопок управления будет проще. А вот без скриптовых функций никак не обойтись к сожалению
к примеру (имена выберите какие хотите), я выбрал LightCab и LightStep:
Код: Выделить всё
<cControlContainerBlueprint-cControlValue d:id="27465080">
<ControlName d:type="cDeltaString">LightCab</ControlName>
<DefaultValue d:type="sFloat32">0.000000</DefaultValue>
<MinimumValue d:type="sFloat32">0.000000</MinimumValue>
<MaximumValue d:type="sFloat32">1.000000</MaximumValue>
<BriefDescription d:type="cDeltaString"></BriefDescription>
<DetailedDescription d:type="cDeltaString"></DetailedDescription>
<ApplyToConsist d:type="cDeltaString">eFalse</ApplyToConsist>
<InterfaceElements>
<cControlContainerBlueprint-cInteriorNotchedLever d:id="19011672">
<ElementName d:type="cDeltaString"></ElementName>
<DifficultyType d:type="cDeltaString">Intermediate</DifficultyType>
<PickTransformName d:type="cDeltaString"></PickTransformName>
<MovementType d:type="cDeltaString">MoveUpDown</MovementType>
<AnalogInputSensitivity d:type="sFloat32">10.000000</AnalogInputSensitivity>
<DigitalInputSensitivity d:type="sFloat32">10.000000</DigitalInputSensitivity>
<AnimationName d:type="cDeltaString"></AnimationName>
<RestInNotchedPosition d:type="cDeltaString">eTrue</RestInNotchedPosition>
<NumberOfNotches d:type="sFloat32">2.000000</NumberOfNotches>
</cControlContainerBlueprint-cInteriorNotchedLever>
</InterfaceElements>
</cControlContainerBlueprint-cControlValue>
<cControlContainerBlueprint-cControlValue d:id="27465080">
<ControlName d:type="cDeltaString">LightStep</ControlName>
<DefaultValue d:type="sFloat32">0.000000</DefaultValue>
<MinimumValue d:type="sFloat32">0.000000</MinimumValue>
<MaximumValue d:type="sFloat32">1.000000</MaximumValue>
<BriefDescription d:type="cDeltaString"></BriefDescription>
<DetailedDescription d:type="cDeltaString"></DetailedDescription>
<ApplyToConsist d:type="cDeltaString">eFalse</ApplyToConsist>
<InterfaceElements>
<cControlContainerBlueprint-cInteriorNotchedLever d:id="19011672">
<ElementName d:type="cDeltaString"></ElementName>
<DifficultyType d:type="cDeltaString">Intermediate</DifficultyType>
<PickTransformName d:type="cDeltaString"></PickTransformName>
<MovementType d:type="cDeltaString">MoveUpDown</MovementType>
<AnalogInputSensitivity d:type="sFloat32">10.000000</AnalogInputSensitivity>
<DigitalInputSensitivity d:type="sFloat32">10.000000</DigitalInputSensitivity>
<AnimationName d:type="cDeltaString"></AnimationName>
<RestInNotchedPosition d:type="cDeltaString">eTrue</RestInNotchedPosition>
<NumberOfNotches d:type="sFloat32">2.000000</NumberOfNotches>
</cControlContainerBlueprint-cInteriorNotchedLever>
</InterfaceElements>
</cControlContainerBlueprint-cControlValue>
3. В Engine скрипт в функцию OnControlValueChange(name, index, value) добавляем уже работу со светом.
Код: Выделить всё
function OnControlValueChange(name, index, value)
if(name == "LightCab") then
if(value == 0) then
Call("Node1:Activate", 0) -- в кабине свет выкл. если контрол 0
else --если значение контрола 1-а
Call("Node1:Activate", 1) -- в кабине свет вкл. если контрол 1
end
elseif(name == "LightStep") then
if(value == 0) then
Call("Node2:Activate", 0) -- свет на подножках выкл. если контрол 0
else --если значение контрола 1-а
Call("Node2:Activate", 1) -- свет на подножках вкл. если контрол 1
end
end
end
LightCab - это контрол кабинного света (по дефолту 0 значение - что соответствует выкл.), LightStep - это контрол света подножек (по дефолту 0 значение - что соответствует выкл.).
Re: Свои изобретения в Railworks
supermax
спасибо за разъяснения. Значит скоро будет готов мой первый патч
спасибо за разъяснения. Значит скоро будет готов мой первый патч
*Train Simulator 2018*
Re: Свои изобретения в Railworks
supermax, думаю не будут проигнорированы, так как значение d:alt_encoding="", если его просмотреть как шестнадцатеричный,(а оно так и есть), то ни как не совпадает со значением d:precision=" в теге, как десятичного эквивалента. Это или относится к другому или же другое/внутреннее счисление. Тоже, сейчас смотрел... не сходится. Ну, например E07040=14708800, а не E07040=270, к которому можно отнестись как эквивалентного значения. Далее, поискал применение 14708800, но не нашел ни чего.supermax писал(а): P.S.Для меня остаётся пока только неясным одно - если менять значения между тегами, а не будут они проигнорированы, мб движок кушает 16-ричные значения в d:alt_encoding=""...Я работаю в основном с исходниками, там немного по другому выглядит всё, не так исковеркано как конверченное, к примеру тот же TractiveEffortVsThrottle.dcsv, но как бы он выглядил как TractiveEffortVsThrottle.csv:
- Sergey1507
- Мастер
- Сообщения: 360
- Зарегистрирован: 06 янв 2012
- Откуда: Калининград (МО)
- Репутация: 224
Re: Свои изобретения в Railworks
Уважаемые собеседники! Хочу поделиться некоторой информацией относительно дальности прорисовки объектов.
В данном топике
http://railworks2.ru/viewtopic.php?f=5& ... %8C#p40007
Я определил причину исчезновения объектов, и вот она в чем заключается.
На рисунке схематично изображена область видимости объектов. Квадратики - это tiles (тайлы. В редакторе можно включить их границы)
Зеленым обозначен тайл где находится игрок, серые тайлы вокруг - это смежные тайлы, на которых будут отображаться объекты. На прочих тайлах объкты не отображаются, хотя могут там и находится. Когда происходит перемещение в другой тайл, игра создаст новую область видимости, но строго по схеме на рисунке (ступеньками не делает). Размер тайла 1023м×1023м (точнее не измерял).
Дальше простая математика и геометрия. Минимальное расстояние, на котором объект появится (при условии, что для ЛОДа не установлено меншее значение) - 1023 метра. Максимальное расстояние, при котором объект исчезнет (опять таки при условии, что для ЛОДа не установлено меньшее значение) 1023*2*√2 , что примерно равно 2893 метра.
И вот еще что заметил, когда в модели для ЛОДа записано, например, 1_1200_name, то 1200 это не 1200 метров, это 1,2 мили. А для случая 1_0050_name - не 50 метров, а 0,05 мили (примерно 84 метра). Это неоднократно установлено тестами.
Вот такая картина.
Кстати. Прорисовка земли подчиняется другим правилам. Если сделать горы, то, когда в настройках стоит высокая дальность видимости горы прорисовываются и на 4 км и на 6 км (дальше не обращал внимания). При минимальной дальности видимости прорисовка земли несколько больше области видимости объектов, или такая же. Точно не помню, но с большой высоты уже видно черную бездну.
В данном топике
http://railworks2.ru/viewtopic.php?f=5& ... %8C#p40007
Казалось бы, что объекты с бесконечно большой дистанцией прорисовки не должны исчезать, но они исчезают.supermax писал(а): ......... В том же ТРС на Мариасе объекты аж уже через 400 метров исчезают, тут только свыше 1 км у меня начинают пропадать. Да, детализация очень далёких гор не радует...
P.S. ЛОДы пока максимальны в РВ для объектов - 1300м, думаю многие обратят внимание RSC и напишут им (я в твиттер им написал), что пора бы и увеличить максимальную дальность ЛОДов хотя бы до 3-4 км...
Я определил причину исчезновения объектов, и вот она в чем заключается.
На рисунке схематично изображена область видимости объектов. Квадратики - это tiles (тайлы. В редакторе можно включить их границы)
Зеленым обозначен тайл где находится игрок, серые тайлы вокруг - это смежные тайлы, на которых будут отображаться объекты. На прочих тайлах объкты не отображаются, хотя могут там и находится. Когда происходит перемещение в другой тайл, игра создаст новую область видимости, но строго по схеме на рисунке (ступеньками не делает). Размер тайла 1023м×1023м (точнее не измерял).
Дальше простая математика и геометрия. Минимальное расстояние, на котором объект появится (при условии, что для ЛОДа не установлено меншее значение) - 1023 метра. Максимальное расстояние, при котором объект исчезнет (опять таки при условии, что для ЛОДа не установлено меньшее значение) 1023*2*√2 , что примерно равно 2893 метра.
И вот еще что заметил, когда в модели для ЛОДа записано, например, 1_1200_name, то 1200 это не 1200 метров, это 1,2 мили. А для случая 1_0050_name - не 50 метров, а 0,05 мили (примерно 84 метра). Это неоднократно установлено тестами.
Вот такая картина.
Кстати. Прорисовка земли подчиняется другим правилам. Если сделать горы, то, когда в настройках стоит высокая дальность видимости горы прорисовываются и на 4 км и на 6 км (дальше не обращал внимания). При минимальной дальности видимости прорисовка земли несколько больше области видимости объектов, или такая же. Точно не помню, но с большой высоты уже видно черную бездну.
- fighter2012
- Ветеран
- Сообщения: 2993
- Зарегистрирован: 07 мар 2011
- Откуда: Россия
- Репутация: 1329
Re: Свои изобретения в Railworks
интересно, проблему с прорисовкой смогут ли решить игроки самостоятельно, без RSC?
- Sergey1507
- Мастер
- Сообщения: 360
- Зарегистрирован: 06 янв 2012
- Откуда: Калининград (МО)
- Репутация: 224
Re: Свои изобретения в Railworks
Частично это возможно.
1. Делать сложные объекты километровых размеров, но это подойдет для далеких боковых объектов. Объекты находящиеся по ходу или позади движения, будут вести себя как призраки - исчезать/пропадать прямо в шаговой доступности. (получится хуже чем есть сейчас).
2. Найти способ изменить размеры тайлов. Это было бы куда лучше, но в редакторе настроек для размеров тайлов нет. Поэтому, если кто вдруг, случайно, знает как менять размеры тайлов, напишите как это сделать.
1. Делать сложные объекты километровых размеров, но это подойдет для далеких боковых объектов. Объекты находящиеся по ходу или позади движения, будут вести себя как призраки - исчезать/пропадать прямо в шаговой доступности. (получится хуже чем есть сейчас).
2. Найти способ изменить размеры тайлов. Это было бы куда лучше, но в редакторе настроек для размеров тайлов нет. Поэтому, если кто вдруг, случайно, знает как менять размеры тайлов, напишите как это сделать.
Re: Свои изобретения в Railworks
Sergey1507,парочку моментов:
1) ЛОДы вообще во всех играх приняты по единой метрической системе и РВ не исключение, офишиал пруф:
http://www.railsimdownloads.com/wiki/ti ... e%20Manual
Да тем более, я тоже делал объекты с ЛОДами и замерял, так что откуда вы там нашли деление на 100 и дистанция в милях - ХЗ.
2) Насчёт тайл и 8 смежных тайлов - я говорил про 1300 м, потом меня одолели сомнения и решил проделать кое-какой опыт.
создал в 3дс максе куб, 15*15 м,
у него задан ЛОД, 0000 - по спецификации, когда все нули это неограниченный ЛОД, т.е. максимум из возможного.
Вот этот объект с дистанции 2.5 км (вымерено по 2 путям которые пролегают от куба, виден тупичок +инструментом линейка из редактора померил, чтобы вышло прям ровненько 2.5 км):
Объект виден, хоть и стал крошечным. Тут дело не в тайлах, а в самом создаваемом ЛОДе - делают ЛОДы не большие, чтобы меньше кушало+если объект мелкий он пропорционально расстоянию уменьшается и что будет видно? 15*15 куб за 2.5 км превратился в малюсенький квадратик (правее от пыхтящего тепловоза).
Мои опыты могут быть подтверждены если залезть в исходники деревьев, что засажены Мариасе (смотреть файл геометрии через RW_Tools) и найти блок касательно ЛОДов и посмотреть каковая дистанция последнего ЛОДа.
Дело не в тайлах и ЛОДах даже, а в том, что объект уменьшается пропорционально расстоянию вот в чём ещё беда...Реальность куда сложнее передать отрендеренным изображением-)
3) размер тайла - константа, как и не сделать сетку шага рельефа меньше 8 м - это юрисдикция уже RSC, т.е. менять надо в самом движке.
1) ЛОДы вообще во всех играх приняты по единой метрической системе и РВ не исключение, офишиал пруф:
http://www.railsimdownloads.com/wiki/ti ... e%20Manual
Да тем более, я тоже делал объекты с ЛОДами и замерял, так что откуда вы там нашли деление на 100 и дистанция в милях - ХЗ.
2) Насчёт тайл и 8 смежных тайлов - я говорил про 1300 м, потом меня одолели сомнения и решил проделать кое-какой опыт.
создал в 3дс максе куб, 15*15 м,
у него задан ЛОД, 0000 - по спецификации, когда все нули это неограниченный ЛОД, т.е. максимум из возможного.
Вот этот объект с дистанции 2.5 км (вымерено по 2 путям которые пролегают от куба, виден тупичок +инструментом линейка из редактора померил, чтобы вышло прям ровненько 2.5 км):
Объект виден, хоть и стал крошечным. Тут дело не в тайлах, а в самом создаваемом ЛОДе - делают ЛОДы не большие, чтобы меньше кушало+если объект мелкий он пропорционально расстоянию уменьшается и что будет видно? 15*15 куб за 2.5 км превратился в малюсенький квадратик (правее от пыхтящего тепловоза).
Мои опыты могут быть подтверждены если залезть в исходники деревьев, что засажены Мариасе (смотреть файл геометрии через RW_Tools) и найти блок касательно ЛОДов и посмотреть каковая дистанция последнего ЛОДа.
Дело не в тайлах и ЛОДах даже, а в том, что объект уменьшается пропорционально расстоянию вот в чём ещё беда...Реальность куда сложнее передать отрендеренным изображением-)
3) размер тайла - константа, как и не сделать сетку шага рельефа меньше 8 м - это юрисдикция уже RSC, т.е. менять надо в самом движке.