Get your own planet in online strategy Xcraft. Conquer the cosmic space, create your own empire! QUICK START (2 minutes): for Humans or for Xerjs +2500 of metal +2500 of minerals

Now: 18 August 2019 16:59

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

Post  Post #20 
Reputation 551
Group Terminator Alliance Тень Experience 195 59 264 Points 46 825 452 Messages 2896
Warnings
Всем доброго времени суток!

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

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

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

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

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


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

Цитата: Принцип действия
Мощность (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 March 2018 19:59
19 March 2018 19:59
Post  Post #21 
Reputation 18
Group Terminator Alliance Experience 39 6 15 Points 7 416 049 Messages 503
Warnings
Ага, там по 15 станций бывают в одном месте и надо как то это все разруливать.
20 March 2018 10:04
20 March 2018 10:04
Post  Post #22 
Reputation 551
Group Terminator Alliance Тень Experience 195 59 264 Points 46 825 452 Messages 2896
Warnings
Mr-Snake, уже ответил. Считать их просто спорной территорией, не принадлежащей никому, а следовательно не распространяющей сеть.
Цитата: Ulrezaj
Подобный случай можно решить элементарно путем отрубания обеих сетей в системах (прерывания распространения сигнала), где находятся станции нескольких альянсов. Они будут являться спорной территорией до тех пор, пока не останется только одна.


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

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

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

Боюсь что не придется, так как подобные пересечения, как в задачке бывают лишь на границах. 
20 March 2018 10:07
20 March 2018 10:07
Post  Post #23 
Reputation 18
Group Terminator Alliance Experience 39 6 15 Points 7 416 049 Messages 503
Warnings
Поверьте там много больше всяких непонятных случаев, а случись один - сами же начнете писать администрации почему так закрасилось а не иначе :)
20 March 2018 10:09
20 March 2018 10:09
Post  Post #24 
Reputation 551
Group Terminator Alliance Тень Experience 195 59 264 Points 46 825 452 Messages 2896
Warnings
Mr-Snake, хорошо, вам удалось пока что только посеять сомнения, но еще я не согласился с вами и не отказался от своей идеи. Требуется время на размышления.
20 March 2018 10:15
20 March 2018 10:15
Post  Post #25 
Reputation -2577
Group relict Alliance Experience 16 3 72 Points 530 310 922 Messages 666
Цитата: Ulrezaj
Боюсь что не придется, так как подобные пересечения, как в задачке бывают лишь на границах.
Мы проведём эксперимент с отрубанием всех спорных территорий через несколько минут на рабочем сервере. Спасибо за идею.
20 March 2018 11:09
20 March 2018 11:09
Post  Post #26 
Reputation 132
Group toss Alliance BATTLESTAR Experience 90 23 32 Points 14 535 012 Messages 50
Warnings
Вася   Че как? С экскрементом/экспериментом?
21 March 2018 00:30
21 March 2018 00:30
Post  Post #27 
Reputation -2577
Group relict Alliance Experience 16 3 72 Points 530 310 922 Messages 666
Эксперимент показал что старый алгоритм можно попытаться доработать и вообще ничего не резать и не менять. Будем дорабатывать и смотреть. Вероятнее всего мы доделаем старый алгоритм и оставим все значения как есть. Спорные участки как и написал РБ будем просто вырубать.
21 March 2018 09:20
21 March 2018 09:20
Post  Post #28 
Reputation -2577
Group relict Alliance Experience 16 3 72 Points 530 310 922 Messages 666
реализовано
6 December 2018 13:05
6 December 2018 13:05

Information

You are not authorized

1 users are reading the topic (guests: 1)

Users: 0

Xcraft is a free browser strategy game with unique combat system.
Battle demonstration >>
Registration >>

2009 — 2519