NML версия набора (обсуждаем только вопросы кода!)

Модераторы: eraserkry, Smoky555, ihim4, Wowan, Группа модераторов

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение дворник » Ср фев 01, 2012 21:44

Дополнительные исследования показали, что livery_override() можно делать самому себе. При этом контролируется длина элемента (shorten_vehicle) и вид спрайта. Как-то упустил это, думал, что можно оверрайдить только другие элементы. Это выливается в то, что можно получить непрерывный блок id одного типа вместо текущих "дырок": ЛД-ЛД-ЛД, где Л - локомотив, Д - невидимка. Вместо этого ЛЛ-ЛЛ-ЛЛ с корректным отображением. Но есть подвох - груз будет считаться для каждого элемента. Т.е. фактически удваиваться, т.к. мы эмулируем большие вагоны двумя мелкими. Для локомотивов без груза это по барабану. Не по барабану это для пассажирских электричек и дизелей. И для вагонов.
Если предположить, что реализм не пострадает, если груз у нас будет исключительно чётный, то мы существенно упростим себе логику программирования, поделив всё на 2.
Вагоны оверрайдить нельзя, только локомотивы можно. Но получить последовательность ВВ-ВВ-ВВ вместо ВД-ВД-ВД тоже очень хочется. А для этого тоже надо допустить только чётность груза для вагонов от 9 до 16.

Внимание, вопрос: не пострадает ли реализма, если мы в силу технологических особенностей сделаем все грузы для ПС длиной 9-16 чётными? При этом получаем глоток профита в реализации логики. Ну, к примеру, можно будет иметь возможность анализировать блоки ПС как блоки за одну операцию вместо перебора по одному. Учитывая, что перебор осуществляется с конечной глубиной, т.к. в GRF нет циклов, то это существенный бонус.

Какие будут мнения?
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение George » Ср фев 01, 2012 23:15

дворник писал(а):Какие будут мнения?
что-то мне кажется, что у ARV у второй части можно сделать CB и установить вместимость в 0, а у первой - как надо, и никаких вопросов чётности вместимости быть не должно. Перепроверил бы ты это.
Аватара пользователя
George
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1345
Зарегистрирован: Пн сен 20, 2004 12:02
Откуда: SPb, Russia

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение дворник » Чт фев 02, 2012 08:16

Это сработает после покупки. А до неё, в меню покупки будет лажа. Видишь одно, покупаешь кота в мешке.

Завёл пару пожеланий на трекере.
http://bugs.openttd.org/task/5036
http://bugs.openttd.org/task/5037

Надеюсь, мой английский там кто-нить разберёт. :)
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение George » Чт фев 02, 2012 09:45

дворник писал(а):Это сработает после покупки. А до неё, в меню покупки будет лажа. Видишь одно, покупаешь кота в мешке.
см. http://bugs.openttd.org/task/2581
Аватара пользователя
George
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1345
Зарегистрирован: Пн сен 20, 2004 12:02
Откуда: SPb, Russia

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение дворник » Чт фев 02, 2012 10:50

Почитал. Георгий, ты же понимаешь, чего я хочу?

Я хочу для больших вагонов, реализованных через сочленёнку из частей с одинаковыми ID, как-то различать эти части, чтобы исходя из этого подстраивать их атрибуты. В частности, ёмкость груза.

Важно именно это - одинаковые ID. С разными нет проблем в плане атрибутов, и я этот вариант реализовал. Но с разными есть проблемы в логике, потому что из-за разрывов (от разных ID) нет возможности анализировать непрерывный фрагмент цепочки из одинаковых ID. И приходится прибегать к просмотру ID по смещению, а это не везде разрешено, а во вторых в спецификации нет циклов, и в NML пока нет подпрограмм.

Зачем мне эти непрерывные цепочки ID? Ну, как пример анализа локомотивов в составе поезда. Возьмём локомотив из одной или двух секций, типа ТЭП10Л. Собираем состав из одного такого локомотива и скажем пассажирских вагонов ЦМВ.
Цепочка сейчас: "ЛД-ВД-ВД-ВД", где Д - невидимая заглушка, цепляемая к каждому ПС (локомотиву и вагону) для задания нужного размера (shorten_vehicle). Дефис показывает границу между большими вагонами, Л и Д - маленькие локомотив и вагон.
Желаемая цепочка: "ЛЛ-ВВ-ВВ-ВВ". На ней выигрыш не очень замечен.
Но вот если мы добавляем вторую секцию, тогда:
"ЛЛ-ЛЛ-ВВ-ВВ-ВВ" - мы в коде для Л по позиции элемента в цепочке одинаковых ID (position_in_vehid_chain, num_vehs_in_vehid_chain) можем за одну операцию в scope SELF выяснить конфигурацию локомотива.
Т.е., если будет "ЛЛ-ЛЛ-ЛЛ-ВВ-ВВ-ВВ", мы сразу увидим, что третий лишний, а сейчас для этого надо аж 2 операции со сменой scope и суммированием.
А например, в случае "ЛЛ-ЛЛ-ВВ-ВВ-ВВ-ЛЛ-ЛЛ-ЛЛ" мы сможем различить и корректно изобразить два локомотива - один в голове из двух секций, а другой в хвосте из трёх. Более из жизни пример такой "ЛЛ-ЛЛ-ММ-ММ-ММ-ВВ-ВВ-ВВ", где ММ - локомотив с др. ID, который можно цеплять к первому. Оперировать индексом в цепочке одинакового ID проще, чем считать элементы с этим ID за два шага, а потом ещё надо проверять позицию каждого.

В http://bugs.openttd.org/task/2581 идёт речь о множителе, применяемом к разным ID, а мне надо к одинаковому. Там ровно один дурацкий недостаток - для ARV суммируется cargo_capacity составных частей, в то время как ничего более (масса, мощность, ТУ и пр.) не суммируется.
В покупке нет возможности различать части, т.к. недоступны почти все переменные. Поэтому неудобство в том, что видишь ты одно, а покупив получишь другое. Чётность груза решает эту проблему в текущей схеме моделирования. Но хочется красивого решения.
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение George » Чт фев 02, 2012 12:21

дворник писал(а):Почитал. Георгий, ты же понимаешь, чего я хочу?
Прочитал. Не понимаю, почему через CB15 ты не можешь в меню покупки вернуть правильные значения.
А после покупки выставляешь всё как надо.
В крайнем случае, ну напиши в меню большой текст, в котором опиши, какие значения игрок получит после покупки. Кот будет уже вне мешка.

Основная проблема в схеме ЛЛ, ВВ в GRF7 - у тебя только 128 таких вариантов. Все остальные ЛД и ВД
Или ты перевёл уже на GRF8?
Аватара пользователя
George
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1345
Зарегистрирован: Пн сен 20, 2004 12:02
Откуда: SPb, Russia

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение дворник » Чт фев 02, 2012 12:31

George писал(а):Не понимаю, почему через CB15 ты не можешь в меню покупки вернуть правильные значения.


Потому что в NML он мне не доступен. Самостоятельный вызов cb объявлен жутко deprecated, а стандартный расчитан на вызов cb36. Может, кнчн, они не прочувствовали возрождение cb15, и не знают, что с этим делать. :)

Как оказалось, с livery_override самого себя тоже не всё просто. Для переоборудования требуется задать ненулевую ёмкость (я задаю 1), а затем сбросить её в ноль в cb. При livery_override самого себя почему то cb36 со сбросом в ноль для оверрайденных не вызывается, и они считают себя == 1 и выдают красное предупреждилово, что чего-то неверно, потому ховайтесь. И один пассажир груза. Я дурею, понавыдумывают дичайших схем, а потом через разные костыли их сводят через дичайшую формулу.

Теперь даже не знаю, чего делать. Может месяцок подождать, пока доработают и openttd, и NML?
Питон или c++ учить не хочу. :)
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение дворник » Чт фев 02, 2012 12:33

George писал(а):Основная проблема в схеме ЛЛ, ВВ в GRF7 - у тебя только 128 таких вариантов. Все остальные ЛД и ВД
Или ты перевёл уже на GRF8?


Давно уже нет такой проблемы. У меня GRF8 ещё с до Нового года. Можно сказать, с первого публичного релиза.
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение дворник » Пт фев 03, 2012 09:38

Вчера с наводки Hirundo и серии экспериментов нарыл, как правильно использовать замену ливрей для самого себя. Т.е. собственного идентификатора. Оказывается, можно для одного ID задать раздельно весь набор callbacks для первого элемента и для последующих. Несколько непривычно, но это открывает новые возможности. planetmaker написал, что это нормальный и естественный способ. Что важно тем, что его не сломают и не отменят вдруг внезапно в следующей версии.

Единственный недостаток этой техники - её нельзя применить к элементам с power == 0, т.е. к вагонам.
Так что, локомотивы можно таки попробовать переработать под цепочки "ЛЛ-ЛЛ-ЛЛ".
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение George » Вс фев 05, 2012 01:30

дворник писал(а):Единственный недостаток этой техники - её нельзя применить к элементам с power == 0, т.е. к вагонам.
а я говорил ... делай всё локомотивами, а потом сбрасывай мощность в 0 :lol:
Аватара пользователя
George
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1345
Зарегистрирован: Пн сен 20, 2004 12:02
Откуда: SPb, Russia

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение дворник » Вс фев 05, 2012 12:06

Ты предлагал локомотивами делать дизеля и электрички.

Как-то не очень фонтан сделать вагоны локомотивами. С другой стороны, полный контроль над сортировкой в нужном месте, визуализация упрощается благодаря непрерывным цепочкам одинаковых ID. Это плюс.
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение George » Вс фев 05, 2012 14:06

дворник писал(а):Ты предлагал локомотивами делать дизеля и электрички.
Как-то не очень фонтан сделать вагоны локомотивами. С другой стороны, полный контроль над сортировкой в нужном месте, визуализация упрощается благодаря непрерывным цепочкам одинаковых ID. Это плюс.
Я о том же
Аватара пользователя
George
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1345
Зарегистрирован: Пн сен 20, 2004 12:02
Откуда: SPb, Russia

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение Wowan » Пн фев 06, 2012 22:32

George писал(а):а я говорил ... делай всё локомотивами, а потом сбрасывай мощность в 0 :lol:
А этот способ не делает набор более громоздким? Обработка лишних callback'ов не нагружает процессор? Или это разовые функции при покупке ПСа?
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1382
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение George » Вт фев 07, 2012 08:46

Wowan писал(а):
George писал(а):а я говорил ... делай всё локомотивами, а потом сбрасывай мощность в 0 :lol:
А этот способ не делает набор более громоздким? Обработка лишних callback'ов не нагружает процессор? Или это разовые функции при покупке ПСа?
Если я правильно понимаю - покупка, вход в депо, загрузка на станции. в пути не вызывается.
Аватара пользователя
George
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1345
Зарегистрирован: Пн сен 20, 2004 12:02
Откуда: SPb, Russia

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение дворник » Вт фев 14, 2012 15:07

Чтобы не расслабляться - последняя промежуточная версия.
Добавлены новые платформа и почтовый ЦМВ, технологические изменения.

xussr.447.grf.7z
(407.8 Кб) Скачиваний: 163
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Пред.След.

Вернуться в xUSSR Set

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1