Правила

Новые идеи рассматриваются администрацией и могут быть приняты в разработку после обсуждения в Сенате, Конгрессе или ВМС.
0

Требуютя умы для вычисления местарасположения флота., просьба администарции

Репутация -2493
Группа relict 16 3 73 Сообщений 666
Уважаемые пользователи,

Сейчас формулы дистанций следующие (при вычитании берётся модуль результата):


Расстояние при перелёте между галактиками:
([галактика назначения] - [галактика старта]) *20000

Расстояние при перелёте между системами
([система назначение] - [система старта]) * 5 * 19 + 2700;

Расстояние при перелёте между планетами в 1 системе
([планета назначения] - [планета старта]) * 5 + 1000;

в остальных случаях дистанция = 5



Время полёта (в секундах):

Внутри системы:
10 + (35.000 / [%скорости] * ((1.000.000 + [количество планет] * 5.000) / [скорость]) ^ 1/2)
Между системами:
10 + (35.000 / [%скорости] * ((2.700.000 + [количество систем] * 95.000) / [скорость]) ^ 1/2)
Между галактиками:
10 + (35.000 / [%скорости] * ((([количество галактик]) * 20.000.000) / [скорость]) ^ 1/2)

Несколько особенностей, связанных с расстоянием:
При перелёте между системами, позиции планет не влияют на дальность и время полёта.
То же касается и систем при перелёте между галактиками.
В связи с этим, полёты через 184 систем и больше длятся дольше, чем перелёт в соседнюю галактику.
Полёт через 394 системы и больше длятся дольше, чем полёт в соседнюю галактику с возвратом.

Поэтому при перемещении флота дальше чем за 393 системы выходит быстрее лететь на колонию в соседней галактике, а оттуда \"возвращаться\" на колонию в изначальной галактике, которая удалена от первой планеты на 394 системы и больше.



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

Как правильно высчитать местонахождение флота с точностью до системы в любой точки полёта?

Мы имеем некоторое представление о том, как это сделать, однако среди наших игроков есть математики и программисты, которые могут предложить лучший вариант расчёта. Если у вас есть идеи формул - просим их опубликовать и помочь нам с выбором лучшей.
12 Июля 2010 15:34:01
12 Июля 2010 15:34:01
Репутация -187
Группа Terminator 98 7 48 Сообщений 8163
Wishmaster, как ты будешь перехватывать флот в полёте между 7:63:15 и 8:63:15? На какие координаты пойдёт перехватчик?
12 Июля 2010 21:20:01
12 Июля 2010 21:20:01
Группа guest
UnclanOne,
Т.е.,
x = 15 + 63 * 15 + 7 * 400 * 15 + 15 + 63 * 15 + 8 * 400 * 15.
х - это длина пути в планетах.

у = x / время полёта в секундах * прошло секунд.
у - текущая точка перехвата, в планетах от старта.

Теперь надо найти координаты.
Галактика = floor(y / 400 / 15).
Система = floor(y / галактика / 15). // тут могу ошибаться в расчёте.
Планета = у mod система * галактика.

Т.е., переводим расстояние в планеты умножая, находим прогресс полёта, вычисляем текущую точку зная путь и время, переводим точку из расстояния в координаты.
12 Июля 2010 22:06:42
12 Июля 2010 22:06:42
Репутация -187
Группа Terminator 98 7 48 Сообщений 8163
Wishmaster, бред какой-то. У тебя получается, что галактики присобачены друг к другу первыми системами, а это совсем не так. Они, скорее, расположены «друг над другом».
12 Июля 2010 22:13:15
12 Июля 2010 22:13:15
Группа guest
Цитата: UncleanOne
бред какой-то

Омская математика же.

Цитата: UncleanOne
Они, скорее, расположены «друг над другом».

Это как?
12 Июля 2010 22:22:26
12 Июля 2010 22:22:26
Репутация -187
Группа Terminator 98 7 48 Сообщений 8163
Wishmaster, это сложно объяснить в объектах, привычных человеческому сознанию.
12 Июля 2010 22:32:13
12 Июля 2010 22:32:13
Группа guest
<бред мод он>
Ещё омской математики.
Я в тридэ мыслю плохо, по этому буду абстрагировать только для систем и планет. Галактики пока опущу.

Судя по ОП-посту, галактику можно представить двухмерной таблицей, по оси у дающей систему, а по оси х - планету.

Пускай точкой перехвата будет точка на воображаемой линии, соединяющей точки старта и финиша.
<бред мод офф>
12 Июля 2010 22:49:02
12 Июля 2010 22:49:02
Репутация -187
Группа Terminator 98 7 48 Сообщений 8163
Wishmaster, ну так это одна галактика. А прочие «нанизаны» на прямую, перпендикулярную такой двумерной таблице, как бы третье измерение. И между галактиками на этой прямой нет никаких систем.
12 Июля 2010 22:56:19
12 Июля 2010 22:56:19
Группа guest
UncleanOne,
Переводим воображаемую линию в 3-е измерение, координата зет будет галактикой, и при этом во всех расчетах будет округляться до целого.
12 Июля 2010 23:04:07
12 Июля 2010 23:04:07
Репутация -187
Группа Terminator 98 7 48 Сообщений 8163
Wishmaster, ну, тогда снова см. пост #21.
12 Июля 2010 23:27:48
12 Июля 2010 23:27:48
Группа guest
UncleanOne,
У меня ощущение что ты меня троллишь.
Пускай, галактика будет отвечать за координату зет, система - игрек, планета - икс.

Путь корабля будет прямой в пространстве от старта до финиша в заданной системе координат.

Флот летит линейно, значит мы можем просчитать его текущие координаты.
х = модуль(старт х - финиш х * время всего полета / время прошло).
Аналогично с игрек и зет.

А так как координаты планет у нас целые числа - флот перехвата будет отправляться по округленным координатам флота перехватываемого.
12 Июля 2010 23:40:13
12 Июля 2010 23:40:13
Репутация -187
Группа Terminator 98 7 48 Сообщений 8163
Цитата: Wishmaster
Пускай, галактика будет отвечать за координату зет, система - игрек, планета - икс.

Путь корабля будет прямой в пространстве от старта до финиша в заданной системе координат.

Флот летит линейно, значит мы можем просчитать его текущие координаты.
х = модуль(старт х - финиш х * время всего полета / время прошло).
Аналогично с игрек и зет.

X и Y равны. Z меняется на единицу. На каких координатах такой флот можно перехватить?
12 Июля 2010 23:41:57
12 Июля 2010 23:41:57
Группа guest
Цитата: UncleanOne
X и Y равны. Z меняется на единицу. На каких координатах такой флот можно перехватить?

Непонимат вопрос.
12 Июля 2010 23:55:50
12 Июля 2010 23:55:50
Репутация -187
Группа Terminator 98 7 48 Сообщений 8163
Wishmaster, о'кей, смотри так. Флот 1 летит с [Z:Y:X] на [Z:Y+2:X] — его можно «перехватить» посреди дороги, в системе [Z:Y+1]. Флот 2 летит с [Z:Y:X] на [Z+1:Y:X]. Где его можно перехватить?
Тебе к аватару не хватает подписи «я люблю всё простое и понятное!».
12 Июля 2010 23:58:22
12 Июля 2010 23:58:22
Группа guest
Ну, на Z+0.5 ничего нет, по правилам округления это будет Z+1.
Да, очень тупо и не правильно, а что поделать?

Цитата: UncleanOne
Тебе к аватару не хватает подписи «я люблю всё простое и понятное!».

Done.


Цитата: UncleanOne
Сообщений: 666
13 Июля 2010 00:05:26
13 Июля 2010 00:05:26
Репутация -187
Группа Terminator 98 7 48 Сообщений 8163
Цитата: Wishmaster
Да, очень тупо и не правильно, а что поделать?

Объявить такой полёт неперехватываемым, очевидно же.
13 Июля 2010 00:16:21
13 Июля 2010 00:16:21
Группа guest
UncleanOne,
Ящитаю, не нужно.
Полёт дальностью в 1-ну планету никто перехватывать не будет.
А на больших дистанциях ошибки округления не так уже и заметны.

Блджад, я уже спал, когда писал.
Перепутал планету с галой.
13 Июля 2010 00:22:33
13 Июля 2010 00:22:33
Группа guest
ИМХО идеи не айс

попытался представить - не получилось. пример перелета с координат [1:1:1] на [2:1:1] не удается смоделировать. вариант - флот виртуально "летит" с [1:1:1] на [1:93:1] и потом с [2:93:1] на [2:1:1], эдакая "петля" по системам. вопрос - в какую сторону делать петлю(уменьшение/увеличение)? то же самое о перелетах между соседними системами.

на мой взгляд основная проблема - координаты и время должны быть взаимосвязаны однозначно, то есть "через час флот будет на координатах [Х:ХХХ:ХХ]" и "на координатах [1:1:1] данный полет можно поймать через ХХХХ секунд".второй вариант гораздо сложнее и там ошибки округления даже ±5 секунд уже решают многое.

у игроков было куча хороших идей по протосам, вы выбрали, мягко говоря, не самую удачную
1. убивает "подлов флота"
2. по протосам уже говорил
3. "бомбу" ксерджей можно вешать и на поле обломков, "подлетающие флоты и ракеты" пусть бьются об нее там
4. это вообще не хочу комментировать. тем более когда снесут овера(а его снесут обязательно), 7й мозг больше никто не построит
13 Июля 2010 07:39:09
13 Июля 2010 07:39:09
Группа guest
вот подумал... потому постучим в дурака. Тоесть я порассуждаю, вы покритикуете и сами дойдете до нужной темы. Как у нас обстоят взаимоотношения с галактиками? Они как млечный путь, как ряд параллельных линий?.. Ну пусть у нас классическая спиральная галактика, этакий Млечный путь.

Пусть флоты движутся именно "от планеты к планете", тоесть не напрямую, игнорируя все вокруг, а от одной планеты к следущей, от той еще дальше и т д...

Пример. летит кораблик с 1:133:1 на 2:333:6... Если по спирали, то с 1:133 идет переход на 2:133. А затем уже во 2 галактике от 133 к 333...

Предположим, что добраться до соседней солнечной системы можно только лишь через х:х:16. И входит в другую систему черех х:х+1:16.

Таким образом можно посчитать, сколько ПЛАНЕТ пересечет летящий флот. (16-1) (чтобы добраться до 1:133:16) + (333-133)*16 (пусть пересекает все планеты) + (16 - 5) (от 16 до нужной 5-ой планеты) = 3226.

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

Тоесть через 10 минут будет в 2:145:15, через 20 в 2:228:15 и т д...

Если перелет осуществляется с 8 в 2 галу, например, добавляем к итоговому числу позиций (8-2)*16, те системы, что пересекаются при переходе из галактики в галактику.

Чтобы снизить нагрузку (а я уверен, этот вариант КРАЙНЕ тяжел) расчет производить только если необходимо что-то сделать. Например, с судьей чтото замутить или флот через фалангу перехватить.
13 Июля 2010 16:14:53
13 Июля 2010 16:14:53
Группа guest
Цитата: Den55Tiger
Пример. летит кораблик с 1:133:1 на 2:333:6... Если по спирали, то с 1:133 идет переход на 2:133. А затем уже во 2 галактике от 133 к 333...

Предположим, что добраться до соседней солнечной системы можно только лишь через х:х:16. И входит в другую систему черех х:х+1:16.

Таким образом можно посчитать, сколько ПЛАНЕТ пересечет летящий флот. (16-1) (чтобы добраться до 1:133:16) + (333-133)*16 (пусть пересекает все планеты) + (16 - 5) (от 16 до нужной 5-ой планеты) = 3226.


когда координаты разные по всем измерениям(или хотябы по солнечной системе), то все относительно просто, можно придумать много моделей. но вот если по твоей схеме лететь с [1:133:1] на [2:133:1], сколько планет пересечет?
14 Июля 2010 06:00:35
14 Июля 2010 06:00:35
Репутация -2493
Группа relict 16 3 73 Сообщений 666
Мы пришли к модели линейных функций, собственно модели администрации.

Пример 1:
Летим из [1:1] в [2:1]
Первые 50% времени полёта мы будем находится в [1:1], вторые в [2:1]

Пример 2:
Летим из [1:1] в [3:8]
Первые 25% времени летим в первой галактике, меняя систему каждые 14% времени, затем 50% времени будем находится во 2 галактике и последние 25% в третьей. Т.е. в середине полёта мы будем пролетать из [2:4] на [2:5], а скажем на 80% времени координаты будут [3:7].
14 Июля 2010 07:04:17
14 Июля 2010 07:04:17

Информация

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

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

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

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

2009 — 2524