[Советуюсь] как сделать передачу энергии по проводам.

608
5
15
Есть у меня вариант:
Когда ставишь провод, если он имеет больше двух подключений, то сканировать соеденённые провода на подключения к механизмам и каждому механизму сделать лист подключений. При раздалбливании провода -аналогично.

Есть ли более эффективный способ реализовать это?

Провода сделать как в ImmersiveEngineering, карта проводов по типу (от пункта А, в пункт Б), соответственно нужно 2 тайла. Или сделать обычные провода блоками, и сканировать алгоритмом "по ближайшим соседям"?
 
Не вполне понял твой первый вариант. Зачем отдельно выделять случай с двумя и менее подключениями провода?

Наиболее эффективный вариант это организовывать "сети". Хранить листы подключений (списки соединенных кабелем блоков) отдельно, а механизмам давать ссылки на эти листы. В этом случае можно не делать каждый блок провода тайлом.
В этом варианте потребуется сделать довольно много, в том числе объединение сетей, сохранение (отдельно от тайлов).

Вариант "по ближайшим соседям" проще, намного меньше шансов сделать ошибку, но значительно менее эффективный. Таким методом соединяются компы в Red Power 2, я сделал аналогично. Причем я сделал блоки провода с тайлами - так оказалось немного быстрее.
У этих алгоритмов, кстати, есть названия - поиск в глубину и поиск в ширину.
У меня получился такой результат:
h_1403545186_8812572_d3a72fb0c4.png
h_1403545313_2694582_e62460a8b5.png
Каждый тик ищется нужный блок, находящийся на конце кабеля, таким образом перебирается больше сотни блоков.

Также можно сделать систему энергии как в Red Power 2 - там кабель являлся небольшим хранилищем энергии и заряд "растекался" по кабелю.
 
Asd73 написал(а):
Не вполне понял твой первый вариант. Зачем отдельно выделять случай с двумя и менее подключениями провода?

Наиболее эффективный вариант это организовывать "сети". Хранить листы подключений (списки соединенных кабелем блоков) отдельно, а механизмам давать ссылки на эти листы. В этом случае можно не делать каждый блок провода тайлом.
В этом варианте потребуется сделать довольно много, в том числе объединение сетей, сохранение (отдельно от тайлов).

Вариант "по ближайшим соседям" проще, намного меньше шансов сделать ошибку, но значительно менее эффективный. Таким методом соединяются компы в Red Power 2, я сделал аналогично. Причем я сделал блоки провода с тайлами - так оказалось немного быстрее.
У этих алгоритмов, кстати, есть названия - поиск в глубину и поиск в ширину.
У меня получился такой результат:
h_1403545186_8812572_d3a72fb0c4.png
h_1403545313_2694582_e62460a8b5.png
Каждый тик ищется нужный блок, находящийся на конце кабеля, таким образом перебирается больше сотни блоков.

Также можно сделать систему энергии как в Red Power 2 - там кабель являлся небольшим хранилищем энергии и заряд "растекался" по кабелю.
А смысл делать каждый раз поиск, если подключение лишь 1? Когда 1 подключение - это означает что ты подливаешь сеть, а когда подключений 2, то ты подключаешь 1 сеть (или механизм) к другой, а значит в сеть могли добавиться новые механизмы.
[merge_posts_bbcode]Добавлено: 17.04.2016 13:28:32[/merge_posts_bbcode]

Исключение - когда ставишь механизм, а не провод :D
 
Механизм плавного распределения самый лёгкий в реализации. Либо же можно хитрожопо создавать тайл энтити лишь тем проводам, что подключены к машинкам.
 
Назад
Сверху