|
|
|
Канал Игры Мечты: «"Духи среди звезд"» |
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Jurec : |
Проблема - вывод геометрии
|
У ково это праблема? Я до нее еще не доходил. Не думаю, что в игре до этого дойдет. Я ж не эпические баталии в 1000000 КК делаю.
Jurec : |
Для каждой клетки считаются средняя гравитация объектов, удаленных дальше чем на 2-3 клетки (раз в n кадров * скорость времени).
|
А я уже прикидывал сколько времени уйдет, на просчет всей сетки
в итоге если в каждом квадрате только 1 КК, то мы считаем лишнии квадраты
Последний раз редактировалось: Tybloman (14:18 09-02-2008), всего редактировалось 1 раз |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
ЭЭэ, стоп. Если у тебя будет 5 кораблей в секторе, то ну его нафиг делить пространство!
_________________ MOV topka, C++ |
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Jurec : |
то ну его нафиг делить пространство
|
Ну не 5, но тысяча это уже перебор наверно будет...
Пространство делить придется, но не для гравитации.
Самые критические места это на малых орбитах, а там это тоже не решает вопрос.
А на пограничных переходных зонах СВ планет не так часто надо считать...
добавлено спустя 7 минут:
Сажусь прикручивать Кеплера. И прибивать всех на эллипсы.
Напоминаю, что идея сделать не симулятор ньютона и не второй ММО Orbiter. Идея попытаться сделать что-то играбельное на базе орбит, по возможности прибегая к задаче многих тел. И избегая ее, где только это будет не заметно. Нужно, чтобы задав маршрут, или орбиту оно так и было. А не проверять постоянно все разбалтывающиеся КК.
Второй момент, это мультиплеер. Синхрогизация кеплера - эту задачу можно и почтовыми голубями наладить
Последний раз редактировалось: Tybloman (17:46 09-02-2008), всего редактировалось 2 раз(а) |
|
|
Crimson
560 EGP
    Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
S_Xor : |
Я имею ввиду, что убирая силу солнца, мы заменяем ее просчетом КК относительно планеты. Тоесть Переходим от системы координат звезды, к планетным координатам.
|
Ну если тебе легче менять систему координат, чем отодвинуть планету, то флаг тебе в руки. И грабли под ноги
S_Xor : |
Тоесть если внутри СВ планеты сила звезды меняется так мало, что я предлагаю ее не считать. Точно также, как мы не считаем силы других тел вне СВ. воот.
|
Если очень хочется, можно внутри СВ считать ускорение КК от притяжения звезды равным ускорению самой планеты от притяжения звезды. Это вместо того чтобы двигать начало координат. Но если у тебя планета слишком близко к звезде, то это не решит проблему а усугубит. А насчет переходных зон - мне-то пофигу, главное чтобы автопилоты тебя поняли
Jurec : |
Да вариаций может быть очень много.
|
Вариаций может быть две - моя и неправильная
Ну нельзя численный метод, работающий с функцией, пропорциональной обратному квадрату аргумента, оптимизировать путем внесения погрешности. Блин, ну возьми компилятор и напиши симулятор Два тела вокруг звезды, одно к ней притягивается по m/(r*r), а другое по r-=r%100, m/(r*r). И то же самое сделай с координатами перед вычислением направления на звезду. И посмотри во что превратится орбита второго через пару витков.
Последний раз редактировалось: Crimson (14:31 09-02-2008), всего редактировалось 1 раз |
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Crimson : |
Ну если тебе легче менять систему координат, чем отодвинуть планету, то флаг тебе в руки. И грабли под ноги
|
Перестал понимать Куда отодвигать планету и почему это легче и нет грабель?..
Crimson : |
Если очень хочется
|
Crimson : |
жно внутри СВ считать ускорение КК от притяжения звезды равным ускорению самой планеты от притяжения звезды. Это вместо того чтобы двигать начало координат.
|
Двигаем систему один раз. Пересчитывать ускорения надо всегда + постоянно пересчитывать скорость, и будет там маааленькая погрешнасть, которая в конце концев обернется большим
Crimson : |
Но если у тебя планета слишком близко к звезде, то это не решит проблему а усугубит
|
Ну тут в любом случае панацеи небудет.
А вот идея сравнения правильная.
Последний раз редактировалось: Tybloman (15:03 09-02-2008), всего редактировалось 1 раз |
|
|
Xantcha
63 EGP
 Рейтинг канала: 1(3) Репутация: 7 Сообщения: 194
Зарегистрирован: 02.08.2007
 |
|
2 S_Xor> ээ.. на счет отбрасывать влияние солнца при входе в СОИ планеты - не стоит так делать.
Вот пусть имеем объект с нулевой относительной скоростью, для наглядности помещаем его на границу сферы, а другой - за границу. Тогда через полвитка этот объект там же и останется, только сдвинется к планете, а вернее всего - разобъётся. но это от конкретных условий зависит. А тот объект что летает честно по прежнему будет дальше от солнца ну и отстанет к тому же. Вот рисунок для наглядности:
Но, если я товю идею не так понял, то извиняюсь. И прошу пояснений.
|
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Да... зло вы со мной , я даже испугался.
Исходные данные справа накартинке, правильно?
Тут вы правильно заметили. Даже больше - 1,2 точки лагранжа поменяются местами, а в 900будут не на прямой планета-солнце, а перпендикулярно.
Значит добавляем еще вращение тел внутри системы планеты. На угол поворота планеты вокруг звезды. Тогда слева спутник тоже обернется на пол оборота. Договорились?
А еще проще (для вычислений) Поворачивать не тела, а систему координат. А у тел если надо(а надо оно только для отрисовки на экран и расчете импульса КК) добовлять этот угол к их углу /координаты не трогать/. ну это я запутанно сказал
И еще граница не резкая будет - два пунктирных кружка. (ну это вы для наглядности, я знаю)
Я ж не от своей прихоти. Я только хочу убрать(свисти к минимум) хаос от Солнца. Это в реальности оно молодец. А при дискретизации вносит полную
добавлено спустя 1 минуту:
это вы еще заморочились с картинкой? уважаю
Последний раз редактировалось: Tybloman (16:11 09-02-2008), всего редактировалось 4 раз(а) |
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Ладно, уболтали. Будут КК считаться вверх до солнца.
А вот этим самым Кеплером, ученой наружности никто не занимался? А то я чет книжок умных почитал, а там такие столько формул...
да, закон тяготения попроще будет
может кто чего подскажет, или самому... ой. завтра будет день опять.
|
|
|
Crimson
560 EGP
    Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
S_Xor : |
Перестал понимать Куда отодвигать планету и почему это легче и нет грабель?..
|
От звезды подальше, куда. Спрашивается, и для кого я на прошлой странице распинался про градиенты притяжения...
Ок, смотрим сюда внимательно:
Расстояние от Земли | Притяжение Земли | 100 | 100 | 200 | 25 | 300 | 11.11 | 400 | 6.25 | 500 | 4 | 600 | 2.78 | 700 | 2.04 | 800 | 1.56 | 900 | 1.23 | 1000 | 1 |
Это таблица для твоей Земли массой 1000000 убитых енотов, для гравитации m/r2. Обращаем внимание на то, что вблизи планеты притяжение падает очень резко, но уже через 800 единиц начинает спадать довольно плавно.
Теперь таблица притяжения Солнца в районе твоей Земли:
Расстояние от Солнца | Притяжение Солнца | 9000 | 12.34 | 9500 | 11.08 | 10000 | 10 | 15000 | 9.07 | 11000 | 8.26 |
А теперь начинаем думать. Для того, чтобы тело двигалось по кругу, к нему должна быть постоянно приложена сила, постоянная по модулю и направленная в одну и ту же точку - центр круга. У тела на орбите Земли с радиусом 1000 расстояние до Солнца будет меняться в пределах 9000-11000 единиц. На расстоянии 9000 от Солнца притяжение 12.34, а на расстоянии 11000 - 8.26. Даже чисто интуитивно сразу видно, что это много - притяжение уменьшилось в полтора раза. Но реально важно то, что абсолютная разница - 4.08 (единиц в тик квадратный) - на голову прикрывает собственно притяжение Земли на этом расстоянии. То есть ни о какой орбите с радиусом 1000 вокруг Земли не может быть и речи.
На орбите Земли радиусом 500 единиц разница будет составлять 2 единицы за тик квадратный (против 4х самой Земли), то есть 50% - это все равно очень много. Ближе Луну вешать просто нельзя по двум причинам. Во-первых слишком высокие ускорения (и, как следствие, скорости) сами по себе вносят серьезные погрешности. Во-вторых объекты на орбите Луны будут сами улетать так же, как сейчас улетает она с орбиты Земли. Да и на объекты на орбите Земли такая Луна будет наводить серьезный шухер.
Если отодвинуть Землю на расстояние 20000, то картина будет такая:
Расстояние от Солнца | Притяжение Солнца | 19000 | 2.77 | 19500 | 2.63 | 20000 | 2.5 | 20500 | 2.38 | 21000 | 2.28 |
На расстоянии 1000 единиц градиент все еще слишком высок - половина притяжения Земли на этом расстоянии. На расстоянии 500 градиент составляет 10%. Это означает, что Луна какое-то время провисит на такой орбите, даже если ее не прибивать гвоздями. Но это все равно слишком близко, по причинам указанным выше. Но отмечаем, что все-таки ситуация уже гораздо лучше.
Если Земля на расстоянии 30000 единиц:
Расстояние от Солнца | Притяжение Солнца | 29000 | 1.19 | 29500 | 1.15 | 30000 | 1.11 | 30500 | 1.07 | 31000 | 1.04 |
На расстоянии 1000 единиц уже можно вешать Луну. Если хорошо прибить гвоздями.
Земля на расстоянии 40000 единиц:
Расстояние от Солнца | Притяжение Солнца | 39000 | 0.66 | 39500 | 0.64 | 40000 | 0.63 | 40500 | 0.61 | 41000 | 0.60 |
Практически идеал, дальше уже можно не двигать.
Грабли есть в любой системе. Преимущество этого решения в том, что оно не добавляет новых грабель.
S_Xor : |
Двигаем систему один раз. Пересчитывать ускорения надо всегда + постоянно пересчитывать скорость, и будет там маааленькая погрешнасть, которая в конце концев обернется большим
|
Щаззже. Пересчитывать систему координат придется каждый раз, когда ты будешь что-то просчитывать между кораблем в СВ и кораблем вне СВ. И постоянно путаться, что у нас в какой СВ и относительно чего обсчитывается.
А погрешность в просчете притяжения будет всегда, независимо от того какому телу ты считаешь притяжение. Но если она достаточно мала, то хаоса ты просто не дождешься. А если она недостаточно мала, то ее нужно уменьшать. Либо выкидывать притяжение совсем.
Последний раз редактировалось: Crimson (09:05 10-02-2008), всего редактировалось 1 раз |
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Crimson : |
Спрашивается, и для кого я на прошлой странице распинался про градиенты притяжения
|
Иногда я туплю в самых неожиданных местах.
Сказали бы просто, что от солнца. Но раз вы уж так заморочились на пальцах - огромное спасибо
Crimson : |
Пересчитывать систему координат придется каждый раз, когда ты будешь что-то просчитывать между кораблем в СВ и кораблем вне СВ
|
Я ж говорю - убедили
Тогда кеплера вообще нафиг. Луна уже вроде не улетает. А Планеты слишком медлинно будут сдвигаться, что-бы за игру улететь
Еще вопрос, У Планет считать притяжение от Лун, или просто считаем только предков до звезды?..
|
|
|
Xantcha
63 EGP
 Рейтинг канала: 1(3) Репутация: 7 Сообщения: 194
Зарегистрирован: 02.08.2007
 |
|
S_Xor : |
Еще вопрос, У Планет считать притяжение от Лун, или просто считаем только предков до звезды?..
|
А как у солнца притяжение от планет - можно всегда можно только когда GMr^2 будет сколько-нибудь значимым (чтоб на прибавление нуля время не тратить).
|
|
|
Crimson
560 EGP
    Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Вообще планеты и луны я бы таки поприбивал к Кеплеру. Или на худой конец к синусу-косинусу (тупо на круговую орбиту). Потому что они с одной стороны должны иметь постоянные орбиты, а с другой - не имеют никаких средств для стабилизации этих орбит (в отличие от КК, которые хотя бы могут сделать коррекцию курса при необходимости). Зато планеты имеют свойство друг друга таки расколбашивать, особенно если интегрировать Эйлером на ускоренном времени. Если через пару десятков часов игры Луна улетит погулять - будет конечно весело, но в то же время и не очень.
Почему я настаиваю на том, чтобы прибивать к Кеплеру только то, что и так вроде бы стабильно - опять-таки, потому что иначе получатся планеты, не подчиняющиеся законам физики. И кораблям, которые просчитываются по относительно честному Ньютону, взаимодействовать с такими планетами будет довольно сложно. Особенно на автомате.
Если не учитывать влияние спутника на планету, то это по сути равносильно добавлению в систему дополнительной внешней силы (которая компенсирует воздействие спутника), и соответственно внесению лишней энергии. Причем чем тяжелее спутник, тем больше энергии вкачивается в систему. По идее это черевато улетанием спутника, если его масса превышает где-то 1% массы планеты.
|
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Crimson : |
настаиваю на том, чтобы прибивать к Кеплеру
|
убедил.
Теперь, что имеем:
Считать надо только КК. Вот думаю надо придумать такой алгоритм, чтобы он не от чего не зависил. В смысле если во время Ч КК стартонет с такими-то параметрами, то эта траектория будет как на одном компе, так на другом. Не зависимо от времени интегрирования. При этом, что-бы КК летел именно по этой траектории и никак иначе. Видится мне отвязка общета от dt компа. Что-то вроде ключевых кадров или что-то в этом роде. В общем мысль кака ето такая.
Главное - избавится от
Я наверно не понятно написал... еще переформулирую...
А с Кеплером... разбираться еще.
|
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
Гм... Извините, что уже в сугубо научный физ. движок со своими ламерскими понятиями...
Опять же, была такая додревняя (под вынь 3.1) игрушка, Gravity. Небесные тела. Масса, вектор положения, вектор скорости. Всё. Ньютон. Только посчитать нужно все параметры - и получались таки довольно стабильные системы (потерь энергии нет ибо). Хотя при "параде планет" расколбас чувствовался уже через несколько тысяч циклов... Э-э-э... Десятков тысяч лет.
Автопилот можно заставить рассчитывать вектор расстояния до объекта, скорость и ускорение его изменения. И контр-импульсами приводить его к нужному... Последовательным приближением, раз за такт или реже... М-м-монте-кристо. Получаем непрерывное пространство.
Вообще, зависит от того, какие задачи перед ИИ ставятся, ИМХО...
А что касается предачи - если небесные тела прибиты гвоздями, а физикой управляются только корабли - то а) передавать достаточно вектора положения и скорости КК + служебная информация (стандартные параметры любого экшна), б) положение тел для момента t вседа известно...
_________________ Трещит земля как пустой орех
Как щепка трещит броня |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
"Вектор положения" - это что за зверь такой?
Если положение ВСЕХ гравитирующих тел вычисляются, то система развалится в любом случае. Сколько это займёт времени - зависит от исходных параметров. Дело в том, что их положение вычисляется алгоритмически - последовательными вычислениями. Этоприводит к накоплении ошибок и полном развале модели. Поэтому предлагается перейти на алгебраический вариант, где положение в любой момент времени вычисляется некоей формулой и независит от предыдущего шага вычислений. Не совсем честно, но в данном случае абсолютно приемлемо. Кстати в орбитере положение всех небесных тел считается по эфемеридам - предварительно просчитанным траекториям.
_________________ У меня бисера не доxеpа. |
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Guest : |
Извините, что уже в сугубо научный физ. движок
|
Не извиню - движок ни разу не научный.
Shirson : |
система развалится в любом случае
|
проверенно
Shirson : |
Поэтому предлагается перейти на алгебраический вариант, где положение в любой момент времени вычисляется некоей формулой и независит от предыдущего шага вычислений
|
Договорились Кеплером.
Shirson : |
Не совсем честно
|
У нас ньютон - жулик, ага
Shirson : |
эфемеридам - предварительно просчитанным траекториям
|
С орбитами по Кеплера понятно. Осталось придумать алгоритм просчета траектории КК. При чем такой, чтобы эта траектория была однозначной, и зависила только от начальных данных. Например времени пинка КК, вектор этого пинка и координаты КК. Все - дальше расчитывается однозначная траектория. Например 100 итераций с одинаковым dt. Тоесть на любом компе, да даже у вас с ручкой и бумагой должны получится такие же 100 точек.
Это еще важно не только для того, что-бы КК летел, куда захотелось. Еще и при передачи данных по сети (надеюсь до этого дайдет). Тоесть мы передали серверу время пинка и его вектор. И сервер вычислял такуюже траекторию, что и клиент. вот как-то так...
|
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Тебе принципиально, чтобы корабли летали честно, с расчётами притяжения? А то можно было бы замутить задание траектории как некоей кривой. Эллипс,порабола, гипербола.
_________________ У меня бисера не доxеpа. |
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
"Честно" - непринципиально. Но вот как можно(как получится ) похоже хотчется... и вроде как может быть что-то вроде надумывается...
надо для начало с Кеплером разобраться. А дальше экспериментировать.
На самом деле, Вы же не будете с линейкой и секундомером перед монитором у.енотов КК считать .
К томуже кривизну расчетов можно описать в мануале, как воздействие посторонних не учтенных тел
|
|
|
Варсик
545 EGP
    Рейтинг канала: 4(81) Репутация: 117 Сообщения: 4041 Откуда: Москва Зарегистрирован: 22.12.2002
 |
|
S_Xor : |
дальше расчитывается однозначная траектория
|
Довольно сложно сделать ибо все зависит от компьютера пользователя. А если он не успевает просчитать этот "фрейм" за опр. цикл времени? Ну слабенький комп у пользователя. Или в фоновом режиме в 3д максе сцена рендерится! Поэтому на фреймы лучше не закладываться.
_________________ WARNING: By reading this post you accept that this post is genius. |
|
|
Tybloman
85 EGP
 Рейтинг канала: 2(14) Репутация: 12 Сообщения: 184 Откуда: Санкт Петербург Зарегистрирован: 24.09.2007
 |
|
Warstone : |
Довольно сложно сделать ибо все зависит от компьютера пользователя
|
Вот по этому я и подчеркиваю, что этот алгоритм должен и у вас с ручкой и бумагой (пусть за большее время) давать такой-же самый результат
В смысле отвязан от всего кроме входных исходных данных.
Warstone : |
Поэтому на фреймы лучше не закладываться
|
именно. Я ви демо как всегда вырожаюсь через
По анологии с 3Dmax'ом: У вас просчитываются keyframe(ключевые кадры) у КК, и вы можете свободно крутить таймлаин(время) как хотите. Хоть вперед, хоть назад. И эти самые keyframe(ключевые кадры) просчитываются на всех выч.машинах(хоть на калькуляторах) одинаково.
Последний раз редактировалось: Tybloman (22:49 11-02-2008), всего редактировалось 1 раз |
|
|
|
|
|
Канал Игры Мечты: «"Духи среди звезд"» |
|