forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Чат в игре. Непонятные моменты. (http://forum.boolean.name/showthread.php?t=2972)

Nunan 17.03.2007 17:34

Чат в игре. Непонятные моменты.
 
Всем привет.
Я делаю сетевую 3д игру на Блитце, сейчас обдумываю все моменты которые необходимо продумать...
И у меня возникли вопросы:
1) Как сделать в Блитц3д ввод текста во время игры чтобы изображение не замерало (при Input()) ?

2) в игре будет сервер и много клиентов, как сделать такую чтобы чат-сообщения игроков не терялись , но и чтобы трафик был оптимально маленький (тоесть не посылать в тупую постоянно все сообщения чата). Как сделать чтобы сервер посылал сообщения клиету до тех пор пока он 100% их не получит, и чтобы клиент посылал серверу со 100% доставкой.

Chrono Syndrome 17.03.2007 17:48

Re: Чат в игре. Непонятные моменты.
 
Цитата:

Как сделать в Блитц3д ввод текста во время игры чтобы изображение не замерало (при Input()) ?
При Input() - никак. Для асинхронного ввода текста тебе придется писать собственные процедуры.

HolyDel 17.03.2007 18:34

Re: Чат в игре. Непонятные моменты.
 
насчет того чтоб они точно доходили.
SendMessage tchat_,chat_text$,selfID,0,1
tсhat_ - константа

ЗЫ. Не использый это!!! будут задержки ктороые никому не нужны, думаю если придет текст типа "вᝊе ок", то можно понять о чем речь.

начсет ввода. возьми исходник любой моей сетевой игры и выдери оттуда блок.

Progger_Leo 17.03.2007 19:43

Re: Чат в игре. Непонятные моменты.
 
Юзай проверенное средство - GetKey() ;)

HolyDel 17.03.2007 22:14

Re: Чат в игре. Непонятные моменты.
 
где то я видал наиполезнейшую либу для Blitz - про многопоточность, в таком случае (если ието настоящая многопоточность) можно было-бы и Input использовать. Только теоретическти.

Nunan 17.03.2007 22:28

Re: Чат в игре. Непонятные моменты.
 
Всё, с набором сообщений я разобрался. Всё оказалось намного проще чем я думал :) , GetKey() - это хорошо.


Все сообщения через ДиректПлей я отправляю с SendMessage ,,,,0
Я понял что надо:
Сервер получил сообщение и отправляет всем клиентам.
Сервер отправляет это сообщение клиенту пока от него не придёт подтверждение что он принял. А клиент , когда получил сообщение отправляет подврждение, тоесть :
если клиент получил сообщение, отправил подтверждение, если сервер не получил подтверждение то он ещё раз пошлёт клиенту его, а клиент когда ещё раз получит то ещё раз отправит подтверждение (!но он недолжен его вписывать с лог чата, так как будут копии), и это продолжается до тех пор пока сервер не получит подтверждение и не перестанет отправлять сообщение. :)

Но чтобы не было копий надо чтобы каждое сообщение нумеровалось, чтобы сервер когда получал сообщение повторно то не добавлял его в массив последних сообщений чата и не отправлял его как новое всем. И чтобы клиент не думал что это новое сообщение.
Надо наверно просто i++ при каждом новом сообщении.

tormoz 17.03.2007 23:47

Re: Чат в игре. Непонятные моменты.
 
Все эти "телодвижения" уже реализованы на Директплей
То есть сервер сам отслеживает посылку сообщения клиенту пока он его не получит.
Так что не нужно дублировать то, что уже есть :)
А вообще лучше найди библиотеку сетевую по вкусу из бесплатных, там все реализовано намного прямее чем в блитцевском ДП.

moka 18.03.2007 00:38

Re: Чат в игре. Непонятные моменты.
 
Nunan скача вот по этой ссылке код, там в mGUI.bb в функции UpdateTextField ниже будет про ввод, используя GetKey. Ну если конечно ещё нужно. Можешь использовать как удобно.

Nunan 18.03.2007 12:46

Re: Чат в игре. Непонятные моменты.
 
А кто-нибудь разбирался или использовал dll - K-NetLib в которой реализована работа с сетью?
Какие её плюсы относительно простого Блитсовского ДиректПлей?
K-NetLib - я увидел только больше возможностей и то что некоторые вещи уже сделаны, а через ДиректПлей их придётся делать.

tormoz 19.03.2007 00:01

Re: Чат в игре. Непонятные моменты.
 
я пользовался.
хорошая либа.
недостатков не нашел


Часовой пояс GMT +4, время: 01:32.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot