2Darth Fett
все проще. сервак с определенным интервалом собирает пакет команд от игроков, просчитывает и отдает им обратно информацию о том что получилось. интервал выбран с таким учловием, чтобы игроки с разной скоростью... скорее рекцией их компьтеров на события, имели равные условия. Интервал как я понимаю не постояный а меняется динамически в зависимости от количесва тел в системе (может гриде) и от количества событий, которые эти тела пытаются передать.
Например, одно тело хочит залочить, другое отварпать. Один комп отправлят на сервер команду лок и например параметры сканреза, другой отрпавлят команду отварп, направление, начальную скорость, радиус сигнатуры ... Cервер независимо от игроков считает интервалы (tick). Это как часы, которые определяют последовательность событий. Допустим интервал равен 1 сек.
1 cекунда
Лок от пользователя A сканрез 1000, отварп от пользователя Б
Сервер посчитал что пользователю А нужно 3 секуднды на лок и в этот интервал он не может сообщить пользователю А об успешном локе и пользователю Б что его залочили. Для пользователя Б, сервер посчитал что его скорость к концу первой секунды будет 100 м/с что недостаточно для варпа.
2 cекунда.
копму ползователя А оправляем собщение что попытка залочить продолжается
3 секунда
сервер посчитал что к концу третей секунды, скорость пользователя Б будет 320 м/с что достаточно для варпа даже если на начло 3 секунды скорость была недостаточна. Пользователь А получает сообщение что попытка лока не удалась.
Я очень грубо описал. Есть не очень затратные средсва для просчета боев с участием 100000 человек. Сейчас это не проблема. Проблема с коннектом и пингами и всем нужно создать равные условия игры
Сообщение отредактировал elizaroff: 23 May 2012 - 4:17