Модератор Сталкер
|
Насчёт дискретной передачи физики по сети - забудьте. Возникнет масса проблем с синхронизацией при малейшем лаге/потере пакетов. Все наверное видели как выглядят тормоза в Ил-2? Самолёты летают как НЛО, сворачивают под 90 градусов и сбивают тебя не выстрелив ни разу. Нам такого не надо.
В принципе, мне вот что в голову пришло. Может такой вариант и рассматривался и от него отказались, может у него есть непреодолимые проблемы реализаци... Короче.
Передавать от сервера к клиенту не сами данные о физических перемещениях объектов, а некий минималистический "хэш", который позволяет отследить объект лишь сильно приблизительно, причём для разных объектов точность нужно варьировать - для персонажей, ракет, автомобилей... - поточнее, для осколков, гильз, листьев и т.п. - похалявнее.
В итоге каждый клиент отрабатывает физику по-своему, после чего они резко отчитываются серверу о произошедших изменениях методом этого "приблизительного кодирования". Если сервер видит, что примерно всё в нормальных рамках - то ничего не делает, иначе высылает коррективы. Нормальные рамки - это когда погрешность размещения важных объектов не более 30-50% их размера, а для не важных не потребуется вносить поправки даже если пусть там плюс-минус 300% будет.
Таким образом можно разгрузить канал от сервера к клиенту, переложив часть нагрузки на обратный поток.
Изменено: cpcat, 25-04-2005 в 17:56
|