Тема: TCP сеть
Показать сообщение отдельно
Старый 07.10.2011, 02:00   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: TCP сеть

Не советую использовать Direct функционал для сети, это мало чего тебе даст в будущем, кроме как немного опыта в понимании сетевой игровой логики.
НО, тот же TCP будет намного лучше, но в блице им заниматься, это имхо большой изврат, многое приходится делать руками, очень не удобно, постоянно дублировать кучу всего. Те же пакеты, тебе для каждого придётся писать свой паковщик в бинарник (или текст, если трафика ваще не жалко, и пофиг на скорость коммуникации), и распаковщик в данные.
Стабильность тоже очень низка.

TCP - лучше, хоть и более низкого уровня абстракции.

Вообще почитай описание в чём "прикол" того же TCP, и в блице он не столь низкого уровня как в более серьёзных языках.

Другое дело, в сети очень важна логика самого взаимодействия и модели сетевых игр. Например есть peer-to-peer (p2p), когда каждый клиент соединяется с каждыйм другим клиентом. Клиенты считают у себя каждый всю логику, и лишь сверяют на соответствия, и при необходимости синхронизируют.
А есть Server <> Client, когда все клиенты соединяются с сервером, и сервер считает игровую логику, а клиенты только визуализируют.
Далее есть другая абстракция в сетевых приложениях, писсимистичная или оптимистичная консистенция. Что отличает то как ты работаешь с данными и временем. Учитывая такой фактор как пинг, и время задержки, клиенты могут тупо считать свою логику, и интерполировать данные которые приходят к ним. В p2p весьма сложно реализовать "честную" коммуникацию, т.к. в тех же шутерах, пинг в 200, имеет большое значение, и как узнать что тот клиент на самом деле попал, когда у другого он в другом месте. Поэтому тут важно делать очень много логических махинаций. Фиксированный цикл, с временным шагом, просчёты в прошлом и т.п.
Есть оптимистичная консистенция, используется в сервер <> клиент архитектуре. Когда клиенты предсказывают (экстраполируют) данные вперёд на длительность их пинга. Стараясь этим симулировать игровой мир таким же как в реальном времени на сервере. Но отправляя данные на сервер например о выстреле, сервер всёравно должен возвращаться в прошлое на один пинг, и делать все вычисления в прошлом (тот же снимок состояния по времени, как и на клиенте когда он выслал сообщение). Крч это весьма геморно, и требует МНОГО практики и размышлений.
Поэтому сетевых реалтайм игр очень мало от разработчиков любителей. И предупреждаю, что там будет намного больше подводных камней, чем вы можете предположить..
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
Colossus (07.10.2011), Hulk-DS (07.10.2011)