Вариант альтернативной реформы альянсовых сетей

Сообщение  Сообщение #20 
Группа guest
Всем доброго времени суток!

Недавно администрация уведомила игроков о проблеме с альянсовыми сетями, их возможной будущей урезке на почве того, что не могут создать рабочий адекватный алгорим для вычисления алянсовых сетей.

Основной проблемой в алгоритме КА была неоднозначность принадлежности систем к сетям альянсов. То есть при определении принадлежности граничных систем, там где сети альянсов накладываются друг на друга получаестся так, что рассчитывая станцию альянса А, она перекрывает несколько других вражеских станций альянса Б, приходится пересчитывать сеть Б, а она построена таким образом, что тоже перекрывает при расчете часть сети альянса А. Получаем необходимость кучи цикличских перерасчетов и хорошо если они конечные.

Поэтому предлагаю свой вариант расчета альянсовых сетей с однозначным определеним принадлежности без отказа от существующих радиусов и серьезного изменения параметров альянсовых структур.

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

То есть, если отображать графически, то выглядеть это в идеале должно аналогично картине потенциалов полей электрических зарядов на плоскости.


У нас же это все равно будет немного не так.

Цитата: Принцип действия
Мощность (P) станции будет выражаться в радиусе ее действия. Например АС 4 будет иметь значение мощности 6000 (То же самое значение что и сейчас).

Значение сигнала S на расстоянии r от станции вычисляется как S = P/r.

Система принадлежит тому альянсу, значение сигнала которого от его станции выше.

Системы, в которых сигнал менее единицы не принадлежат никакому альянсу.

Системы, в которых сигнал от не союзных станций равен считаются спорными территориями и тоже никому не принадлежат.


Очевидно, что сигнал падает обратнопропорционально расстоянию до системы.

Я создал рабочую модель описанного выше варианта в экселе Вариант альтернативной реформы альянсовых сетей, как бы ни смешно это звучало. Для примера взял территорию 10*10 для простоты эксперимента, но растянуть до больших размеров не составит труда, тупо машинальные растягивания.

Станция альянса 1 стоит в точке (5;3), имеет 4 уровень, мощность 6000, для более приятного отображения просто поделил на 1000, то есть мощность 6.

Слева - расстояния от станции до конкретных систем в тысячах укм. Справа величина сигнала в каждой из систем.


Станция альянса 2 стоит в точке (3;3), 4 уровень, мощность 6.


Станция альянса 3 стоит в точке (8;6), 4 уровень, мощность 6.


Результат наложения сетей по принципу вышеописанному принципу. Слева результат, справа сервисная матрица для расчета всего этого хозяйства.


Пример для станций в тех же точках 10, 5 и 2 уровня соответственно:


Еще пример.
1 - станция в (1;1), 5 лвл;
2 - станция в (5;7), 3 лвл;
3 - станция в (10;10), 7 лвл.


Еще пример с двумя альянсами.
1 - станция в (3;3), 1 лвл;
2 - станция в (5;7), 5 лвл.


Примеров накидать могу массу каких угодно как захотите.

Как видно из примеров, при таком варианте перекрыть сеть станет сложнее, что логичнее с точки зрения реализма. Я считаю абсолютно неправильным, когда за 15к+ укм накрывают сетью без возможности ее перкрытия, кроме как построить сеть более высокого уровня.

Обращаю внимание, что речь шла не про бонусы от альянсовых объектов или сети, а именно про принадлежность сетей к альянсам!!!

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

Теперь для Mr-Snake алгоритм реализации.

Станция 1 имеет координаты (x1;y1) с радиусом действия r1, откуда получаем массив систем М1 в которых следует посчитать сигнал от этой станции.
Вычисленные значения записываются в общий массив G, который отображает галактику в целом и хранит значения сигнала станций и их принадлежность к альянсам.
G - трехмерный массив, в котором по третьей размерности хранятся данные. Допустим G0 - текущее значение сигнала в системе, G1 - принадлежность системы, G2 - предыдущее значение сигнала в системе.

Предположим, что эти станции имеют пересечение.

Станция 2 имеет координаты (x2;y2) с радиусом действия r2, снова считаем массив систем М2 и перед записью каждого элемента M2 в G производим проверки:

1. Элемент m2 больше 1? Если нет, то переходим к другому элементу m2.
2. Элемент G1 равен нулю?
Если да, то не является ли он уже спорной территорией? Если спорная территория, сравниваем с предыдущим значением G2 и если больше, то меняем значение принадлежности, m2 записывается в G1, если меньше то остается спорная территория.
3. Элемент G1 не равен нулю. Сравниваем m2 c G0. Если m2 меньше, переходим к следующему m2. Если больше, записываем m2 в G0. Если равен, то m2 записывается в G2, а в G1 устанавливается 0.

Начать расчеты лучше всего со станций максимального уровня.

После пересчета всех станций и заполнения G1 запускаем ваш алгоритм по присоединению станций к центру сети, а после него уже алгоритм окружения и сети готовы.

Подобные пересчеты можно делать не каждые 15 минут, как делалось ранее, а раз в N часов или даже 1-2 раза в сутки.

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

Считаю что при таком подходе все игроки должны остаться довольны, а игра не сведется к "игре в точки", как это предлагает Вася.

Конечно я понимаю, что все вышеописанное в реализации будет не просто, но должно решить проблему и привести эти самые сети в порядок.

Если надо табличку, то скину. Могу увеличить размер.

В конце немного риторических вопросов.
Во-первых, если ТЗ было невыполнимо, то может быть сразу стоило поменять ТЗ, обосновав нецелесообразность попыток?
Во-вторых, что за привычка решать проблемы КА за счет урезания? Ладно бы что-то быстронаживное, но сети альянсов строятся годами!
В-третьих, почему мне ничего не сказали до самого последнего момента, что сети перерабатываются?
19 Марта 2018 19:59:07
19 Марта 2018 19:59:07
Сообщение  Сообщение #21 
Репутация 22
Группа xerj Альянс ZAVET 65 16 31 Очков 10 470 630 Сообщений 602
Ага, там по 15 станций бывают в одном месте и надо как то это все разруливать.
20 Марта 2018 10:04:57
20 Марта 2018 10:04:57
Сообщение  Сообщение #22 
Группа guest
Mr-Snake, уже ответил. Считать их просто спорной территорией, не принадлежащей никому, а следовательно не распространяющей сеть.
Цитата: Ulrezaj
Подобный случай можно решить элементарно путем отрубания обеих сетей в системах (прерывания распространения сигнала), где находятся станции нескольких альянсов. Они будут являться спорной территорией до тех пор, пока не останется только одна.


Цитата: VasyaMalevich
а представьте что там 4 альянса друг друга перекрывают в зависимости от порядка чью сеть первой считать

Предвосхищал вчера этот вопрос, думал никто не задаст, но я вчера специально посмотрел глобальную карту и нашел только одно пересечение трех альянсов в районе 19:73. 

Цитата: VasyaMalevich
боюсь что пол карты придётся вырубить

Боюсь что не придется, так как подобные пересечения, как в задачке бывают лишь на границах. 
20 Марта 2018 10:07:44
20 Марта 2018 10:07:44
Сообщение  Сообщение #23 
Репутация 22
Группа xerj Альянс ZAVET 65 16 31 Очков 10 470 630 Сообщений 602
Поверьте там много больше всяких непонятных случаев, а случись один - сами же начнете писать администрации почему так закрасилось а не иначе :)
20 Марта 2018 10:09:55
20 Марта 2018 10:09:55
Сообщение  Сообщение #24 
Группа guest
Mr-Snake, хорошо, вам удалось пока что только посеять сомнения, но еще я не согласился с вами и не отказался от своей идеи. Требуется время на размышления.
20 Марта 2018 10:15:17
20 Марта 2018 10:15:17
Сообщение  Сообщение #25 
Репутация -2495
Группа relict 16 3 73 Сообщений 666
Цитата: Ulrezaj
Боюсь что не придется, так как подобные пересечения, как в задачке бывают лишь на границах.
Мы проведём эксперимент с отрубанием всех спорных территорий через несколько минут на рабочем сервере. Спасибо за идею.
20 Марта 2018 11:09:19
20 Марта 2018 11:09:19
Сообщение  Сообщение #26 
Репутация 132
Группа toss Альянс BATTLESTAR 90 23 32 Очков 12 937 556 Сообщений 50
Вася   Че как? С экскрементом/экспериментом?
21 Марта 2018 00:30:17
21 Марта 2018 00:30:17
Сообщение  Сообщение #27 
Репутация -2495
Группа relict 16 3 73 Сообщений 666
Эксперимент показал что старый алгоритм можно попытаться доработать и вообще ничего не резать и не менять. Будем дорабатывать и смотреть. Вероятнее всего мы доделаем старый алгоритм и оставим все значения как есть. Спорные участки как и написал РБ будем просто вырубать.
21 Марта 2018 09:20:42
21 Марта 2018 09:20:42
Сообщение  Сообщение #28 
Репутация -2495
Группа relict 16 3 73 Сообщений 666
реализовано
6 Декабря 2018 13:05:17
6 Декабря 2018 13:05:17

Информация

Вы не авторизованы

1 чел. читают эту тему (гостей: 1)

Пользователей: 0

Космическая онлайн стратегия Xcraft это бесплатная игра для алигархов. Пример боя >> Регистрация >> И космос весь ваш на тысячи лет...

2009 — 2524