Чат в игре. Непонятные моменты.
Всем привет.
Я делаю сетевую 3д игру на Блитце, сейчас обдумываю все моменты которые необходимо продумать... И у меня возникли вопросы: 1) Как сделать в Блитц3д ввод текста во время игры чтобы изображение не замерало (при Input()) ? 2) в игре будет сервер и много клиентов, как сделать такую чтобы чат-сообщения игроков не терялись , но и чтобы трафик был оптимально маленький (тоесть не посылать в тупую постоянно все сообщения чата). Как сделать чтобы сервер посылал сообщения клиету до тех пор пока он 100% их не получит, и чтобы клиент посылал серверу со 100% доставкой. |
Re: Чат в игре. Непонятные моменты.
Цитата:
|
Re: Чат в игре. Непонятные моменты.
насчет того чтоб они точно доходили.
SendMessage tchat_,chat_text$,selfID,0,1 tсhat_ - константа ЗЫ. Не использый это!!! будут задержки ктороые никому не нужны, думаю если придет текст типа "вᝊе ок", то можно понять о чем речь. начсет ввода. возьми исходник любой моей сетевой игры и выдери оттуда блок. |
Re: Чат в игре. Непонятные моменты.
Юзай проверенное средство - GetKey() ;)
|
Re: Чат в игре. Непонятные моменты.
где то я видал наиполезнейшую либу для Blitz - про многопоточность, в таком случае (если ието настоящая многопоточность) можно было-бы и Input использовать. Только теоретическти.
|
Re: Чат в игре. Непонятные моменты.
Всё, с набором сообщений я разобрался. Всё оказалось намного проще чем я думал :) , GetKey() - это хорошо.
Все сообщения через ДиректПлей я отправляю с SendMessage ,,,,0 Я понял что надо: Сервер получил сообщение и отправляет всем клиентам. Сервер отправляет это сообщение клиенту пока от него не придёт подтверждение что он принял. А клиент , когда получил сообщение отправляет подврждение, тоесть : если клиент получил сообщение, отправил подтверждение, если сервер не получил подтверждение то он ещё раз пошлёт клиенту его, а клиент когда ещё раз получит то ещё раз отправит подтверждение (!но он недолжен его вписывать с лог чата, так как будут копии), и это продолжается до тех пор пока сервер не получит подтверждение и не перестанет отправлять сообщение. :) Но чтобы не было копий надо чтобы каждое сообщение нумеровалось, чтобы сервер когда получал сообщение повторно то не добавлял его в массив последних сообщений чата и не отправлял его как новое всем. И чтобы клиент не думал что это новое сообщение. Надо наверно просто i++ при каждом новом сообщении. |
Re: Чат в игре. Непонятные моменты.
Все эти "телодвижения" уже реализованы на Директплей
То есть сервер сам отслеживает посылку сообщения клиенту пока он его не получит. Так что не нужно дублировать то, что уже есть :) А вообще лучше найди библиотеку сетевую по вкусу из бесплатных, там все реализовано намного прямее чем в блитцевском ДП. |
Re: Чат в игре. Непонятные моменты.
Nunan скача вот по этой ссылке код, там в mGUI.bb в функции UpdateTextField ниже будет про ввод, используя GetKey. Ну если конечно ещё нужно. Можешь использовать как удобно.
|
Re: Чат в игре. Непонятные моменты.
А кто-нибудь разбирался или использовал dll - K-NetLib в которой реализована работа с сетью?
Какие её плюсы относительно простого Блитсовского ДиректПлей? K-NetLib - я увидел только больше возможностей и то что некоторые вещи уже сделаны, а через ДиректПлей их придётся делать. |
Re: Чат в игре. Непонятные моменты.
я пользовался.
хорошая либа. недостатков не нашел |
Часовой пояс GMT +4, время: 01:32. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot