Показать сообщение отдельно
Старый 04.04.2009, 23:43   #3
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Не могу понять, как оптимизировать, то, что написал....

ratttx, код я не смотрел (не могу), но дам вот несколько советов:
Первое это посылка данных не постоянная, представь что произойдёт если ты будешь посылать каждый цикл пакет с позицией, во первых он не дойдёт за длину цикла, во вторых это будет вот такая орда неактуальной информации..
Посылать пакеты нужно переодически (по прохождению времени, можно период сделать отличающимся, для оптимизации трафика).
Второе, когда я давно делал по сети перемещение игроков, и у меня было очень много объектов, которые были интерактивны (просты шарики, толкались игроками), задача была сделать клиент и сервер так, чтобы интерактивность с близстоящими шариками считалась на клиентах, и посылались дальше. Таким образом мы имели постоянную динамику того, что и где считается, если к шарику близко разные игроки, то тут уже считает сервер, таким образом клиент посылал много информации, поэтому я сделал систему индексов и категорий.
Посылал данные пакуя, к примеру первый Int значил категорию, это мог быть объекты, или игроки, или клиентский пакет. Вторая Int обозначала Index, тоесть на сервере и клиентах, у каждого эллемента который мог синхронизироваться и менять свои параметры зависимо от пакетов, имел свой уникальный ID, обычно это просто как массив. В одной категории, не могло быть 2 объекта с одинаковым ID. Далее после двух первых Int шёл третий, он обозначал индекс значения пакета, к примеру это жизнь, или позиция и т.д. далее конец пакета - это значения, которые уже ввезде были разные, и менялись в зависимости от категории и функции пакета.
Такая организация передачи данных дала мне возможность снять нагрузку просчёта мира с сервера, и рассеять её по актуальным клиентам. Но тут важный моммент что от разниц ping'а у клиентов, зависел игровой процесс..

Вообще совет тебе, продумай логику передачи данных, просто разбери сперва какие функции передачи данных у тебя есть, а затем разбери всё по косточкам, что нужно передаватЬ, как передавать/принимать, как исполнять и т.д. и т.п.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
3dr1aN (06.04.2009), newman (05.04.2009)