Показать сообщение отдельно
Старый 24.04.2008, 12:53   #15
jimon
 
Сообщений: n/a
Ответ: RakNet : большое время доставки пакетов

GoodWin
1) клиент подключается к серверу

2) сервер ловит ID_NEW_INCOMING_CONNECTION
и создает у себя игрока, получает индекс сойденения
но у нас было только подключение на заданный порт
глупо сейчас считать это подключение нормальным
будем считать что подключение требует инициализации

3) клиент получает ID_CONNECTION_REQUEST_ACCEPTED
после этого клиент может узнать индекс подключению к серверу
после подключения отправляем пакет инициализации на сервер
обычно в пакете задают информацию о типе програмы клиента,
её версии и прочего, иногда даже информация о шифровании

в худшем случае клиент подключает ID_CONNECTION_ATTEMPT_FAILED
тогда нужно подключится заново, а сервер удалит старое
не инициализированое подключение по time-out (прошло много
времени, а пакет инициализации не пришол)

4) сервер получает пакет инициализации, из пакета получаем
индекс подключения и ищем такого игрока
записываем нужную информацию что пришла с пакетом
генерируем уникальный индекс для игрока (индекс подключения
лутче не использовать, черт его знает что случится сним)

и отправляем примерно такой же пакет инициализации игроку
в нем записываем id игрока, версию протокола и прочее

5) клиент получает пакет инициализации
и записывает из него свой id и прочую нужную информацию

после всего этого подключение считается завершенным
и клиент и сервер начинают свою работу
ps. именно так у меня всё работает в проекте
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Crayzi (17.01.2012)