Синхронизация клиентов с сервером | Часть 1.
дравствуйте, сейчас я вам расскажу, что я успел сделать, на каком баге застрял и, что осталось сделать.
!!! ВАЖНО !!!
Эта статья не является уроком, так как это, пока что, показ частичного выполнения моего плана ( который я выкладывал в нашем telegram канале ). Как только весь план будет выполнен, по нему обязательно выйдет урок! А как правило, если все пойдет по плану, урок выйдет в субботу или же как только будет выполнен весь план.
Что сделано
Измененный код я буду помечать восклицательными знаками.
Немного изменен сервер:
Сейчас я продемонстрирую вам, что именно в сервере поменялось
1) Изменен класс User
2) Изменен класс ServerObject
Весь код я показывать не буду, а только методы, которые подверглись изменениям.
В начале класса появились эти строки, для MemoryStream, BinaryReader и BinaryWriter необходимо подключить библиотеку System.IO. Пока что останавливаться на MemoryStream не будем, он заслуживает отдельного поста, который выйдет позже, но знайте, он сильно упрощает запись и чтение массива данных.
Изменен метод Listen
Изменен метод BroadcastMessage и добавлена перегрузка этого метода
И последний метод который изменен в данном классе, это AddUser
3) А класс ClientObject был не большой, а изменений потерпел много, так что, этот класс я покажу весь.
Вот и все изменения, которые на данный момент потерпел сервер.
Скрин сервера на момент прекращения работы над ним
Клиент перенесен в Unity:
Немного скринов из Unity:
1) Как выглядел клиент в Unity, на момент завершения работы над ним.
2) Интерфейс клиента и его составляющие UI элементы, по поводу InputField'а со ScrollBar'ом я расскажу в последней части данного плана.
3) Иерархия клиента в Unity.
4) MainCamera и скрипт общения с сервером ( скрипт в самом низу, под названием "Client_TEST_UDP".
5) Скрипт на кнопке "Подключиться!".
6) Ошибка, которую я буду исправлять.
Возникающая при нажатии на кнопку "Статус", ее задача, вывести в InputField информацию о всех подключенных игроках в виде "NAME:COLOR".
Клиент в Unity:
Состоит он из 1 скрипта, под названием "Client_TEST_UDP"
Сейчас я покажу вам исходники данного скрипта, и сразу скажу, он сейчас находится в стадии разработки и он очень и очень грязный и плохой, это пример как писать не надо! К последней части статьи о плане, он будет выглядеть намного лучше, а еще я рекомендую убрать от экрана впечатлительных программистов :)
Строку, в которой возникает ошибка, я помечу символом 'X', может быть, кому то будет интересно. А возникает она, только при вызове метода Btn_Status_Click
Какие цели этими изменениями достигнуты:
1) Клиент успешно подключается к серверу, если следующие условия верны:
Сервер запущен
Клиент запущен и правильно указан адрес севера, порт 1 ( acceptPort) с портом 2 ( receivePort ) совпадают с указанными на сервере.
Нажата кнопка "Подключится!"
После нажатия на кнопку, на сервере появляется характерное сообщение о новом подключении и так же, появляется характерное сообщение на клиенте. Все наглядно видно на скрине сервера и первых 2-ух скринах клиента в Unity.
На этом все изменения подошли к концу
C изменениями и багом вы знакомы, теперь я познакомлю вас с оставшимися задачами.
1) Исправить баг. После исправления заработает получения информации о подключенных клиентах в виде "NAME:COLOR".
3) Добавить шифрование пакетов.
Заключение!
На этом, данный пост подходит к концу, я хочу поблагодарить вас за уделенное внимание и понимание. Надеюсь вам было интересно, а если нет - критикуйте, это очень важно! Благодаря вашим мнениям, посты будут меняться в лучшую сторону! Оставляйте свои комментарии, делитесь своим мнением, обращайтесь с вопросами ко мне ( контактные данные указаны ниже ), я обязательно на них отвечу!
Всем еще раз спасибо за внимание, поменьше багов и побольше удачи! Ждите новых постов, они обязательно скоро выйду! Всем пока!