Четверг, 28.03.2024, 14:56
Приветствую Вас Гость | RSS

Alpha Hole - MMOFPSS - онлайн космосим

Физика Unity3D - Страница 2 - Форум

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: BlackCat  
Форум » Обсуждение игры AlphaHole » Обсуждение движка игры » Физика Unity3D (Особенности и плюшки физики Unity3D)
Физика Unity3D
09thДата: Среда, 18.02.2009, 18:54 | Сообщение # 16
Рядовой
Группа: Проверенные
Сообщений: 15
Репутация: 0
Статус: Offline
Ну например, после взрыва машину кидает в воздух по всем законам физики, только вот во время красивого полёта она вдруг неожиданно телепортируется в другое место, просто потому что сервер сообщил, что на самом деле он считает, что машина полетела по другой траектории.
 
VenomДата: Среда, 18.02.2009, 21:00 | Сообщение # 17
Рядовой
Группа: Администраторы
Сообщений: 10
Репутация: 0
Статус: Offline
Насколько я понимаю, выход из этой ситуации в том, чтобы юзать физичесий движок (свой или сторонний), у которого результаты будут почти полностью совпадать при рассчётах на разных компьютерах?
Это позволяет считать физику и на клиенте (за счёт отсутствия большого разброса в результатах, момент синхронизации будет выглядеть более приятно, даже если и будет более редким) и на сервере (движок проще -> меньше вычислительных потребностей, чтобы обсчитать все объекты).
Насколько я понимаю, разработчики Halo, посчитали приемлимыми такие лаги ? Или всё упирается в "узкий" канал, который не позволяет часто проводить синхронизацию ?
Хотя, так или иначе помимо проблемы с высоким траффиком, при использовании движков вроде ODE, возникает ещё проблема, с требованиями к серверу, который в этом случае должен быть мега крутым, так что для ММО это действительно не самый удачный вариант ... А может кому-нибудь в голову придёт ноу-хау ? )
 
09thДата: Четверг, 19.02.2009, 00:27 | Сообщение # 18
Рядовой
Группа: Проверенные
Сообщений: 15
Репутация: 0
Статус: Offline
Да. Нужно использовать движок/рассчёты с однозначно предсказуемым результатом, что позволит делать проверки сервером не слишком часто. Я считаю, что в нашем случае наиболее приемлимый вариант - это фейк, состоящий из пары-тройки формул, ведь у нас не гоночный симулятор.
Примерно как-то так: Корабль имеет массу, угловую и линейную скорости. Считаем, что центр масс находится в геометрическом центре модели для упрощения рассчётов. Скорости постепенно затухают - считаем это компенсационной системой. Маршевые и маневровые двигатели добавляют линейную, либо угловую скорость по соответствующим осям на определённое значение в единицу времени (зависит от мощности движка и массы корабля) до получения определённого максимума по нужной оси. Попадание снаряда, либо иное физ воздействие просто добавляет вектора к соответствующим скоростям, которые считаются в зависимости от точки попадания снаряда и вектора вхождения. А вообще, скорее всего, это всё стоит считать на сервере. От клиента передавать только управляющую инфу из разряда включил маршевые двигатели, выключил, запустил ракету. С сервера принимать информацию о текущих скоростях, положении и ускорении.

Х.з. чего там считали разработчики хало, я в их диз док не заглядывал ). Факт в том, что при работе по сети из-за задержек в передаче данных состояние физической системы на разных машинах во время поступления информации о воздействии будет разным, в результате чего реакция на это воздействие так же будет различаться. Поэтому, чем проще и предсказуемей система, тем проще будет компенсировать эти различия.

Сообщение отредактировал 09th - Четверг, 19.02.2009, 00:46
 
BlackCatДата: Пятница, 20.02.2009, 18:23 | Сообщение # 19
Admin
Группа: Администраторы
Сообщений: 38
Репутация: 1
Статус: Offline
Ну вы прям мои мысли читаете. smile Единственное уточнение - скорость снижается со временем крайне незначительно (сопротивление среды в межпланетном пространстве довольно мало, хотя и присутствует при скоростях выше 3-ей космической). И снижение это экспоненциальное. Т.е. чем выше скорость, тем больше снижение скорости. В принципе - можно и линейную функцию использовать, пользователь вряд ли заметит. smile
По поводу применительности физики - если использовать реальную Ньютоновскую физику, то, думаю, сервер точно помрет уже на 50-ом клиенте, если не раньше. Да и играть в это никто не будет, кроме нескольких фанатов. Можете глянуть Orbiter. Штука прикольная, но не играбельная практически. Ибо пользователь жаждет двигаться по прямой, а не по орбитам... Это как минимум. Плюс компенсация маневров, точная дозация импульсов... По ходу полный Ньютон игру убьет. Поэтому нужно что-то более удобовариемой и достаточно быстро рассчитываемое.
 
Форум » Обсуждение игры AlphaHole » Обсуждение движка игры » Физика Unity3D (Особенности и плюшки физики Unity3D)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Copyright MyCorp © 2024
Сайт управляется системой uCoz