Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сетевые игры\сеть для игры. [Delphi, Windows]


Страницы:   1 2 3

Galiaf ©   (2006-06-07 05:26:00) 

Привет. Кто делал сетевые игры, нужно узнать, что лучше использовать для динамических игр. Какой компонент лучше использовать? Сеть в игре ещё не делал но уже некоторую часть продумал, осталось только узнать с каким компонентом работать. ServerSocket & ClientSocket знаю немного(не думаю что это лучший вариант), возможно tspclient\server или winsock без компонентов. UDP отпадает, насколько я знаю дейтаграммы не надёжны хотя и легче. Других компонентов нет но может быть у вас есть идеи.


Majus   (2006-09-21 09:37:00) [1]

Спасибо. Очень много подчерпнул новой информации из этой темы. Вы бы на пару небольшой мануал настрочили что-то вроде "как делать сетевые игры" - цены бы ей не было!


tButton   (2006-06-22 08:51:00) [2]

другой пример
AoE 2: Conquest
предлагает
IPX, TCP/IP, Modem, Cable
Причём TCP/IP только как вариант для internet-play

ПыСы
> Ну так какого года Старка? ;)
1998


MeF Dei Corvi   (2006-06-21 21:28:00) [3]


> надысь играл в старку, предлагала законнектиться через модем,
>  IPX, кабель или БНет.интересно, почему Blizzard выбрал
> именно IPX?
Ну так какого года Старка? ;) Аллоды 2 тоже IPX предлагали, это щас TCP/IP...


tButton   (2006-06-21 21:07:00) [4]


> 1) И какие плюсы у IPX? ИМХО слегка устаревший протокол.

надысь играл в старку, предлагала законнектиться через модем, IPX, кабель или БНет.
интересно, почему Blizzard выбрал именно IPX?


@!!ex   (2006-06-21 18:01:00) [5]

1) И какие плюсы у IPX? ИМХО слегка устаревший протокол.
2) "Програмирование в сетях MS Windows" Э.Джонс, Д. Оланд


tButton   (2006-06-20 19:37:00) [6]

вопросы:
1) IPX?
2) посоветуйте литературу для ознакомления с программированием сетевого взаимодействия в Delphi.


Galiaf   (2006-06-19 21:22:00) [7]

а я уже решил на XProger'овском l_net'е писать, там всё просто, да и игра у меня простая


DeadMeat   (2006-06-19 19:12:00) [8]

А UDP быстрее...


@!!ex   (2006-06-19 17:57:00) [9]

Cash,
Да собственно лично мне уже нечего сказать в этой дискуссии.
ИМХО TCP более подходит для этого дела. Я попытался объяснить почему.
Решать автору. Немного изменил свое мнение об UDP, благодаря XProger'у. За что ему спасибо. Во многом он прав. Тут рассмотрели все плюсы-минусы.
Глядишь кому поможет выбрать.

XProger, спасибо за интересный разговор.


Cash   (2006-06-19 17:48:00) [10]

Cash, мы не воюем.
Мое дело предупредить. :)

О! Раз уж вы тут ссылками начали кидаться, мож наваляеете побольше! :)))
(А то чую, мой запас знаний в этой теме устаревает...)

пытаемся выяснить истину
Это многие пытаются сделать, но трение кроме огня ничего не дает...


@!!ex   (2006-06-19 16:37:00) [11]

>>2) советую почитать http://www.zeiss.net.ru/docs/technol/tcpip/tcp00.htm
Кстати, ты бы тоже почитал эту ссылочку. Потому что
Про 20 байт я оттуда взял.
"На рисунке 17.2 показан формат TCP заголовка. Обычно его размер составляет 20 байт, если не присутствуют опции."


@!!ex   (2006-06-19 16:35:00) [12]

Cash, мы не воюем. Легкий спор, истина рождаеться в споре. Не флудим, а пытаемся выяснить истину.
1) Ла это то понятно, но все равно большой объем данных придеться в ручную бить на сегменты. Иначе в случае не доставки придеться опять посылать всю большую датаграмму.
2) Как это не смешно, но я его уже читал. :) И на столе лежит "Программирование в сетях Windows"
3) А что делать с утерянными пакетами? НА TCP то синхра реалтаймовых игр - большая проблема, а тут вообще кошмар получаеться...
4) Мгновенная порверка.


XProger   (2006-06-19 16:25:00) [13]

@!!ex,
1) Прийдёт "How do you do?", UDP не бьёт пакеты на части...
2) советую почитать http://www.zeiss.net.ru/docs/technol/tcpip/tcp00.htm
а по поводу игр - подсказка: жми тильду ;)
3) UDP не разорвёт соединение и после реконнекта игра продолжится.
4) Основная контрольная сумма лежит в заголовке пакета и характеризует целостность его содержимого, TCP в любом случае бьёт данные на пакеты следовательно приходится вторично проверять целостность всего потока данных.


Cash   (2006-06-19 16:17:00) [14]

Народ! Спор здесь не уместен! Вы сейчас только ветку зафлудите...
@!!ex, ты чтоль до сих пор не понял на чем XProger настаивает?
(я не к тому, что ты не прав, пусть мое мнение будет темным, я к тому,
что спор надо завершать)


@!!ex   (2006-06-19 16:09:00) [15]

1) Ну и приавльно. А че ты будешь делать с половиной пакета?
Если вместе "How do you do?" придет "How "..."you do?", что это тебе даст? Все равно придеться ждать части пакета.
2) Размер TCP заголовка = 32 байтам. - Уверен? ;)
В шутерах типа Quake 2-3 был выбор протокола. В HL 1-2 он также присутствует. - не видел. Где?
3) В игре по интурнету могут возникнуть такие ситуации, когда связь полностью обрывается и идёт реконнект. UDP в этом случае всё разрулит ;)
Не понимаю. Какое здесь преимущество у UDP.
4) ТОрмознул.. Ведь контролька же драйвером проверяеться.


XProger   (2006-06-19 16:02:00) [16]

@!!ex,
1) TCP гарантирует порядок доставки и саму доставку. Допустим, посылаем 10 пакетов (блоков данных). Вдруг, первый же блок затерялся и нам приходится повторно выслать его (минимальное время до подтверждения = пингу). В это время вся сборка блоков стоит и ждёт когда этот пакетик прийдёт, чтобы сформировать поток...
2) Размер TCP заголовка = 32 байтам. В шутерах типа Quake 2-3 был выбор протокола. В HL 1-2 он также присутствует.
3) В игре по интурнету могут возникнуть такие ситуации, когда связь полностью обрывается и идёт реконнект. UDP в этом случае всё разрулит ;)
4) Зачем проверять контрольную сумму? Данные не поточные, сколько байт отправил в пакете, столько и принял. Если приходит пакет с позицией игрока - будь уверен, что там будет позиция игрока, а не половина данных о ней ;)


@!!ex   (2006-06-19 15:05:00) [17]

P.S.
Кстати, еще придеться реализовывать сборку пакетов в ручную, проверку контрольной суммы, писать реализацию повтороного отсылания пакета, если не прешло уведомление и т.д.
Все это в TCP уже реализовано.
Собственно TCP от UDP только этими вещами и отличаеться.
Гемороя море. А плюсы какие?


@!!ex   (2006-06-19 15:02:00) [18]

1) Если я правильно помню, очередь в TCP не зависит от доставки. Хотя не уверен.
2) Честно открыл сорсы кваки 2. Клиентсукю часть. UDPшный поиск серваков. Ткните мне, в каком хедере используеться UDP для передчачи данных во время игры?????
3 кваки сорсы на работе, не могу ща посмотреть.
Блитцкрига нету. Жаль.
StarCraft честно предложил для игры по инету TCP/IP, для локалки - IPX,
через модем, через последовательный порт.
HL 1 - TCP/IP.
HL 2 -  у меня сейчас нету. Но Steam - точно через TCP/IP.
3) Быстрее?
UDP - пакеты идут один за другим.
TCP - пакеты идут один за другим, в ответ идут подтверждения доставки.
Скорость отличаеться чуть-чуть.
4)Обычно размер TCP заголовка составляет 20 байт, если не присутствуют опции.
Минимальное значение для заголовка UDP составляет 8 байт.
Смешное отличие меньше чем в 3 раза. Далеко до порядка.
А учитывая размеры пакетов, вообще сущая ерунда.
5) Зачем реализовывать это на UDP, если это уже реализовано на уровне драйверов TCP.
6) Согласен. Идиот. Ступил.
7) Это не сетевой протокол. Хотя бы потому что сетевой портокол реализован на уровне драйверов. А 50 строк - это минимальный интерфейс для TCP.


XProger   (2006-06-19 12:50:00) [19]

@!!ex,
1) Асинхронная гарантированная доставка на UDP реализуется за 100 строк кода. Причём, очередь в случае "не доставки" не стоит на месте.
2) Quake 2-4, Блитцкриг, StarCraft, HL 1-2 и т.п... а ты за своё "никто не использует"...
3) UDP быстрее чем TCP (аксиома)
4) Заголовок UDP пакета на порядок меньше
5) TCP работает на таймаутах, так что не верти носом и без проблем реализуй его на UDP
6) Не вижу проблем (и не я один, см. п. 2) с работой UDP в интернете. И маршрутизаторы тут причём?
6) 50 строк кода на WinSock API - это не сетевой протокол игры, это бред...


@!!ex   (2006-06-19 02:02:00) [20]

UDP - это протокол не гарантированной доставки.
Broadcast'ы(еслия правильно помню) -  бросают сообщения по всей локалке.
Вообще UDP для передачи данных никто не использует.
Обычно с помощью него идет поиск серваков локалке.
А дальше TCP/IP - гарантированная доставка. Отличный протокол. Самый распространенный. Сеть не засоряет бесхозными сообщениям, через маршрутизаторы спокойной проходит, поэтому по инету можно играть. И в локалке рулит. Вот как ты в UDP узнаешь, что комп друга от сети отвалился? А никак. только таймаут ловить. Потому что соединения нету постоянного. А TCP/IP соединение постоянно держит. И если вдруг че случилось, сразу знаешь, а что собственно произошло.
Это из распространенных, универсальных протоколов - самый быстрый.
Просто компоненты - отстой полный. Тормозные, глючные.... Бррр.
WinSock API рулит.
Там кода то получаеться строк 50....


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо