Наборы улучшений Train Simulator

Обсуждение вопросов и решение проблем, связанных с внутриигровым редактором, а также процессом разработки самостоятельных дополнений или игровых модификаций.
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

Света
gBrakeState берёт значения движкового TrainBrakeControl и может быть от 0 до 1 с десятыми, сотыми и тысячными долями. Не туда копаем просто. Здесь в чём-то другом соль. Или я код не в том месте пишу, либо чего-то там не хватает.
*Train Simulator 2018*
Изображение
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Света »

Cross
Вот ещё один вариант блокировки, принципиальное различие заключается в подмене значения переменной gBrakeState:

Код: Выделить всё

function Initialise ()
   gBrakeState = 0 -- эта штука служит связующим звеном между движковым и виртуальным тормозом.
   gBrakeLock = false -- данная переменная служит проверочным звеном (по умолчанию выключена)
  
end

function OnControlValueChange ( name, index, value )
if name == "VirtualBrake" then
	if (gBrakeLock == false) then									--Если ручка разблокирована,
	gBrakeState = Call( "*:GetControlValue", "VirtualBrake", 0)		--мы считываем её значение
	else															--если же блок не снят,
	gBrakeState = 1													--мы подставляем значение, независимое от положения ручки
	end
    Call( "*:SetControlValue", "TrainBrakeControl", 0, gBrakeState ) -- разрешаем передачу состояния ручки реальному контролу
end	

...
if gDSDStartCount > DSDDELAY + 5 and not isDSDTriggered and not isSafetyIsolated then
   isDSDTriggered = true
   Call( "*:SetControlValue", "TrainBrakeControl", 0, 1 )
   Call( "*:SetControlValue", "Regulator", 0, 0 )
   Call( "*:SetControlValue", "Reverser", 0, 0 )
   gBrakeLock = true -- видим, что значение приобрело TRUE, а условие на синхронизацию было FALSE. То есть так мы рассинхрон сделали и теперь ручка тормоза двигается, но сам движковый тормоз в экстренном и заблокирован.
end
Хотя, опять таки, сразу после того, как педаль DSD была нажата, в реальный контрол будет мгновенно передано положение рукояти, независимо от того, где она находится. В принципе, здесь также можно применить двойное блокирование, тогда движок будет стабильно получать данные о положении виртуального контрола, в момент срабатывания DSD движок будет "думать", что рукоять в положении "экстренный тормоз", хотя это будет не так; а после того, как педаль DSD будет нажата и рукоять переведена туда, куда надо, в движок снова пойдут реальные данные о положении виртуального контрола. В этом алгоритме для движка не будет резкого изменения положения тормозов, когда связь контролов восстанавливается, а ручка в случайной позиции.
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

Света
немного не так. gBrakeState задаёт положения как раз ручки тормоза, так что поставив её на 1 мы не добьёмся разблокировки управления.
во второй части кода есть условие

Код: Выделить всё

если начало отсчёта таймера больше задержки в 5 секунд и DSD ещё не сработала и система в целом не изолирована, тогда
isDSDTriggered = true -- DSD срабатывает и ниже применяет значения для движковых функций
   Call( "*:SetControlValue", "TrainBrakeControl", 0, 1 )
   Call( "*:SetControlValue", "Regulator", 0, 0 )
   Call( "*:SetControlValue", "Reverser", 0, 0 )
gBrakeLock = true -- блокирует тормоз из условия выше в первой части скрипта.
По логике вещей я так понимаю, что дальше нужно писать условие проверки, что isDSDTriggered == true and gBrakeLock == true тогда
если активна пищалка тогда
если получить значение педали DSD == 1 тогда
если получить значение виртуального тормоза == 1 тогда
gBrakeLock = false
isDSDTriggered = false

Это должно по идее вернуть синхронизацию, когда выполнено условие отключения пищалки, затем тормоз переведён в "экстренное" и на этом моменте, если потянуть ручку назад, то мы свяжемся с TrainBrakeControl и сможем снова контроллировать параметр. Но этого почему-то не происходит. Вот оно как блокируется разово, так и всё
*Train Simulator 2018*
Изображение
Аватара пользователя
Света
Разработчик
Сообщения: 752
Зарегистрирован: 13 мар 2015
Репутация: 1470

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Света »

Cross
Вот тот вариант, а котором я пишу, с учетом Вашей поправки:

Код: Выделить всё

function Initialise ()
	gBrakeState = 0		-- эта штука служит связующим звеном между движковым и виртуальным тормозом.
	gBrakeLock = false	-- данная переменная служит первым блоком (пока пищит DSD (по умолчанию выключена)
	gBrakeLock_2 = false-- данная переменная служит вторым блоком (пока есть рассинхрон)(по умолчанию выключена)
	gBrakeState_2 = 0	-- буферная переменная; 
end


function OnControlValueChange ( name, index, value )
if name == "VirtualBrake" then
	gBrakeState = Call( "*:GetControlValue", "VirtualBrake", 0)	--Считываем значение виртуального контрола
	gBrakeState_2 = gBrakeState									--копируем это значение в буфер
	if	(gBrakeLock == true) or (gBrakeLock_2 == true) then		--если стоит хотя бы 1 блок
	gBrakeState_2 = 1											--мы подставляем значение, независимое
																--от положения ручки
		if	(gBrakeLock == false) then							--и проверяем, какой именно блок установлен
																--Выполнение условия означает, что педаль DSD нажата
			if   (gBrakeState == TrainBrakeControl) then   		--теперь, если ручка тормоза в положении 1
																--(как и сам реальный тормоз)
		gBrakeLock_2 = false                       				--мы можем отключить второй блок
			end														
		end
	end
    Call( "*:SetControlValue", "TrainBrakeControl", 0, gBrakeState_2 ) -- передаем значение реальному контролу
end	


...
if gDSDStartCount > DSDDELAY + 5 and not isDSDTriggered and not isSafetyIsolated then
   isDSDTriggered = true
   Call( "*:SetControlValue", "TrainBrakeControl", 0, 1 )
   Call( "*:SetControlValue", "Regulator", 0, 0 )
   Call( "*:SetControlValue", "Reverser", 0, 0 )
   gBrakeLock = true	
   gBrakeLock_2 = true	-- До тех пор, пока переменные содержат такое значение,
						-- на реальный тормоз будет передаваться подмененные данные
						-- т.е. движение ручки влиять на него не будет
end
Суть алгоритма: данные на движковый тормоз передаются постоянно, т.е. с точки зрения движка с момента срабатывания DSD ручка тормоза неподвижна и стабильно находится в положении "экстренный тормоз". Мы можем её двигать, но это ничего не даст, даже если мы поставим её в положение 1, т.е. блокировка будет, хотя движок этого даже не заметит :) . После нажатия педали DSD ручка все равно будет "отсоединена" от реального тормоза, зато мы получим возможность снять второй блок, установив её в положение 1. Когда ручка будет поставлена в положение 1, движок начнет получать данные уже от нее, хотя даже не "заметит" этого - ведь он получит 1, и до этого получал 1. Значит, движок будет "уверен", что он ни на секунду не терял контроль над положением ручки. После этого смена положения ручки будет передаваться без резкого скачка. Вернее, будет 1 скачок - в момент срабатывания DSD, но ведь это предусмотрено, а других не будет.

--- добавлено позже в 09 авг 2015, 14:20 ---
Cross писал(а):По логике вещей я так понимаю, что дальше нужно писать условие проверки, что isDSDTriggered == true and gBrakeLock == true тогда
если активна пищалка тогда
если получить значение педали DSD == 1 тогда
если получить значение виртуального тормоза == 1 тогда
gBrakeLock = false
isDSDTriggered = false

Это должно по идее вернуть синхронизацию, когда выполнено условие отключения пищалки, затем тормоз переведён в "экстренное" и на этом моменте, если потянуть ручку назад, то мы свяжемся с TrainBrakeControl и сможем снова контроллировать параметр. Но этого почему-то не происходит. Вот оно как блокируется разово, так и всё
А разве isDSDTriggered == true и gBrakeLock == true не дублируют друг друга? Ведь фактически, при срабатывании DSD обе эти переменные получают значение "да", а после нажатия педали - "нет". По-моему, можно отказаться от переменной gBrakeLock и ориентироваться на isDSDTriggered. Но это так, заметка, проблему это не решит. (Возможно, я не до конца понимаю значения переменной isDSDTriggered).
Все же мне кажется, что основной причиной является восстановление связи при различных значениях виртуального и реального контрола. Ведь, насколько я понимаю, на реальном тормозе завязана анимация тормозных механизмов, звуки, и вот - он стоит на 1, а мы восстанавливаем связь, и он получает новое значение, допустим, 0,4. Разве это не стресс для движка? Мой алгоритм позволяет этого избежать, попробуйте, пожалуйста, кто знает, вдруг поможет? Хуже точно не будет :) . Скорей всего, в моем коде есть ошибки синтаксиса, но сам алгоритм однозначно должен быть рабочий.
Сильные люди - это не те, у которых всё хорошо, а те, у которых всё хорошо несмотря ни на что.
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

Света
попозже посмотрю, спасибо за советы.
--------------------------------------------------

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

Примечание: Озвучка для вагонов из патча убрана! Кто качал патч раньше 10.08.15, те могут удалить папку Bvmz 185 по пути
Assets\Kuju\RailSimulator\Audio\RailVehicles\Wagons. Звуки для этих вагонов теперь используются из дополнения DB BR 120 Bpmbdzf IC (vR), поэтому данное дополнение обязательно к установке.
В меню быстрой игры все локомотивы собраны в один класс (назван DB Class 101), в котором можно выбрать локомотив из разных дополнений.
ПС прописан с метками: MA, HH, CK, MR и без меток Kuju версии - Метки являются сокращёнными названиями машрутов, в комплект которых входят данные ПС.
Буду рад, если кто-нибудь поможет с составлением Quick Drive составов для ещё бОльшего разнообразия :)

Список изменений версии 1.02:

- Поддержка локомотива из дополнения Munchen - Rosenheim.

- В первую версию патча я не вложил Quick Drive, не уследил за этим. Пришлось создавать всё заново, но теперь все файлы на своих местах.

- Пропущенные файлы из перекраски Metropolitan (Clean) так же добавил в патч.

- Незначительные правки в конфигах озвучки. Уменьшен радиус у некоторых внутренних звуков кабины.

- Новые превью картинки в разрешении 512х256.

- Поправлено положение внешней камеры (Shift+F2), по умолчанию камера будет активироваться справа, со стороны машиниста.
*Train Simulator 2018*
Изображение
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

параллельно с другими разработками сделал Патч для Class 380. Ещё одна единица, на которой станет приятней кататься в симуляторе railworks.

Список изменений v1.0:

- Текстуры кабины пережаты в более качественный DXT5 формат, исправлен "пятнистый" альфа канал.
Убрана текстура псевдосвечения от лампочек на приборной панели.

- В кабине машиниста полноценно реализовано освещение. Добавил свет от монитора.

- Поправлена ручка тифона: анимация изначально настроена для высокого тона, однако звучал низкий - исправлено.

- Новые, более детализированные текстуры фар и красных огней в разрешении 512х512 пикселей. На фарах имеется эффект линзы (TS 2014). К сожалению текстура маркеров и фары связаны с одним "нодом", поэтому маркеры имеют ту же текстуру, что и фары. Исправить не представляется возможным.

- Новое превью изображение поезда в разрешении 512х256 пикселей.

- Поправлена камера в кабине, её положение соответствует уровню головы машиниста.
Внешняя камера сдвинута ближе к центру бокового окна.

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

- Озвучка для Class 380 вынесена в отдельный proxy c дополнительными правками под патч.

- Своя уникальная схема управления.

- Правки Quick Drive составов на 3 и 4 вагонов. Теперь составы обозначаются Class 380/0 - 3 вагона и Class 380/1 - 4 вагона.
Остальные не затрагивались.

- DRA теперь функционирует, но нет анимации на кнопке.

- Функционирующий реостатный тормоз.
*Train Simulator 2018*
Изображение
Аватара пользователя
British Railways
Специалист
Специалист
Сообщения: 237
Зарегистрирован: 28 авг 2012
Репутация: 27

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение British Railways »

Cross, мне кажется, что ты переборщил с заглушением class 170! Тифон почти не слышно.
webmoney R133610033561
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

British Railways
ещё поправлю, за этим не заржавеет. Там ещё баг есть звуком колёс, который слышится в кабинах, если 170 где-то рядом проезжает. Так что скоро обновление будет
*Train Simulator 2018*
Изображение
Аватара пользователя
British Railways
Специалист
Специалист
Сообщения: 237
Зарегистрирован: 28 авг 2012
Репутация: 27

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение British Railways »

Жду с нетерпением! Cross, ты героически исправляешь косяки DTG, продолжая славное дело AP!
webmoney R133610033561
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

иной раз приходится сильно поизощряться, чтобы добиться желаемого результата, кыс допускают частенько нелепые ошибки или оставляют сильно недоделанным кое-что. Надеюсь охватить как можно больше дополнений со временем, но проблему создают закрытые скрипты, не подсмотреть нужный мне код, хотя за последнее время скрипты стал лучше понимать и могу уже сам кое-что писать. Есть в планах патч для 170-го обновить и следом за ним займусь обновлением патча на Class 444-450, в который войдут дополнительно Class 360 и Class 350 из дополнения WCML Trent Valley, так как это одна Desiro серия поездов. У Class 360 планируется с нуля писать скрипт, сделать DSD с возможностью отключения и добавить новых ливрей
*Train Simulator 2018*
Изображение
Аватара пользователя
pROssO
Ветеран
Сообщения: 3519
Зарегистрирован: 21 май 2012
Откуда: Минск
Репутация: 4859

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение pROssO »

Cross, ты ничего не перепутал, у Class 360 (GEML) же есть DVD?
В целом, по ливреям для Desiro (кроме Class 185), известные мне:
Class 350: Neutral (совместно Silverlink и Central Trains), London Midland (половина тамбура жёлтая), London Midland (весь тамбур жёлтый), Neutral (TransPennine), First TransPennine Express, London Midland 'Project 110' (350110)
Class 360: First Great Eastern, National Express East Anglia (ex-FGE), National Express East Anglia (360115), Abellio Greater Anglia (ex-FGE), Heathrow Connect, Heathrow Express (старая), Heathrow Express (новая)
Class 380: First ScotRail, Abellio ScotRail
Class 444: SouthWest Trains
Class 450: SouthWest Trains, Southwest Trains HC
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

pROssO
Class 360 есть DVD, или DSD, нужно уточнить, но она не выключается и я хочу это исправить.
Список ливрей пригодится. Где-то на UKTS что-то было, тоже глянем
*Train Simulator 2018*
Изображение
Аватара пользователя
pROssO
Ветеран
Сообщения: 3519
Зарегистрирован: 21 май 2012
Откуда: Минск
Репутация: 4859

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение pROssO »

Cross, там DVD. Вообще, как я выяснил из документов, DVD - это DSD с дополнительным контролем бдительности. То есть, минутные проверки бдительности в связи с бездействием машиниста - работа DVD. C UKTS будь аккуратен, там есть вымышленные ливреи. Ситуация по краскам такова:
Спойлер
C350
LM (Half Yellow) - WCML TV, DPS (из Class 450)
Neutral (FTPE), LM (Full Yellow) и FTPE - DPS (Class 450)
C360
GA (ex-FGE) - GEML (+ бренд-патч UKTS)
FGE - AP
HConnect - UKTS
HXpress (old) - UKTS (есть неточности в связи с расположением номера)
C380
FSR - GARL
C444
RSC
C450
SWT - BML и PDL
SWT HC - UKTS - есть неточности в связи с компоновкой салона
Кстати, есть ещё новая краска Heathrow Express, список поправил
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

никак не могу запомнить отличия в работе этих двух систем. Но помню, что DSD работает по принципу, если не трогаешь тифон, педаль DSD, AWS кнопку и регулятор тяги в течение минуты, тогда срабатывает система. А вот DVD, кажется, с 48 секундным интервалом срабатывает и не зависит от того, дёргаешь ли ты рычаги, или нет. Надо бы уточнить, тогда и я точнее смогу её реализовать
*Train Simulator 2018*
Изображение
Аватара пользователя
pROssO
Ветеран
Сообщения: 3519
Зарегистрирован: 21 май 2012
Откуда: Минск
Репутация: 4859

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение pROssO »

DSD - просто требует, чтобы педаль всегда была нажата при положении реверса "вперёд" или "назад". Если педаль отпустить, через 5-7 секунд задействует экстренное торможение. Присутствует на любом локомотиве (или почти любом, возможно, некоторые первые тепловозы не имели), кроме паровозов.
DSD + DVD (или просто DVD) - в случае бездействия машиниста (основные рычаги не перемещаюся), раз в минуту производит дополнительную проверку бдительности, в ходе которой нужно отпустить, а затем снова нажать педаль. Времени на это отведено столько же. Присутствует на современных поездах и модернизированных локомотивах.
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

Начал потихоньку обновлять Class 170. Первым делом решил взяться за освещение в кабине. Что из этого вышло можно увидеть на двух скриншотах ниже.
Изображение
Изображение
*Train Simulator 2018*
Изображение
Аватара пользователя
fighter2012
Ветеран
Сообщения: 2993
Зарегистрирован: 07 мар 2011
Откуда: Россия
Репутация: 1329

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение fighter2012 »

Вышло супер
Изображение
Аватара пользователя
Cross
Разработчик
Сообщения: 6330
Зарегистрирован: 14 дек 2011
Откуда: Москва
Репутация: 2985

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение Cross »

как тестовый вариант сойдёт, но текстуру нужно будет всё равно получше сделать
*Train Simulator 2018*
Изображение
Аватара пользователя
maxvel
Магистр
Магистр
Сообщения: 922
Зарегистрирован: 18 сен 2010
Репутация: 271
Maxvel аватар
Загрузка…

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение maxvel »

и немного о желтить или что то в этом роде а то белые квадраты, так же сделать вид что это лампочки или люминесцентные или накаливания.
Электроника БК0010-01 и БК0011м.
Аватара пользователя
pROssO
Ветеран
Сообщения: 3519
Зарегистрирован: 21 май 2012
Откуда: Минск
Репутация: 4859

Re: Патчи для ПС, мини правки, замена сценариев на стандарт

Сообщение pROssO »

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