Tic-Tac-Toe - Part 3 - Multiplayer, with a Lobby

Favourite 32 favourites
Tutorial written by blackhornetOriginally published on 5th, May 2014 - 2 revisions

Translation Team:

1 revision
Just so you know: The English version has been updated since this translation has been published

Часть 3 -. Создание многопользовательской игры крестики-нолики, используя лобби сервера
Это продолжение моей крестики-нолики серии. Мы делаем прыжок здесь от начинающего до продвинутого, так что это будет намного меньше ручной передача, и некоторые сложные механизмы связи, хотя на это основание, есть необходимо сделать настольную игру для двух игроков очень мало связи, так мы надеемся, это будет не так плохо. Пожалуйста, просмотрите все официальном многопользовательской документации и руководств первым! Я не собираюсь заново объяснять все детали мультиплеера плагин, только реализацию игры лобби / переменного игроков.

Архитектура

Мультиплеер плагин C2 позволяет довольно простые связи между двумя людьми, чтобы играть в игру, но не иметь дело с людьми выборе, который они играют против. Это где концепция лобби приходит. Каждый игрок начинает свою игру, и вместо того, сразу же играть некоторые случайные лица, они входят в лобби-первых, где они могут видеть других игроков и играть против кого-то, выбранной в частности. Я не способствует очень сложный механизм, только один в самом простом. Там много способов расширить о том, как красивый холл будет работать - это только основы.

Как люди присоединяются к лобби, каждый узел автоматически обновляется с помощью Многопользовательский режим: на равных подключения и сверстников добавляет нового игрока собственный список игроков. После того, как игрок выбирает кого-то еще, чтобы играть против, они посылают сообщение к принимающей (лобби сервера), который перенаправляет сообщение другому игроку сообщая им сведения о том, как подключить к первому игроку. Оба игрока самом деле отключиться от лобби в этой точке, которая удаляет их из всех списков доступных игроков, и они создали свой собственный связи друг с другом, так что они могут играть в свою игру.Вестибюль из петли в этой точке.

* Лобби #
Лобби выделенный сервер / хост, который должен быть запущен в любое время. Там может быть только один, и должны быть приняты меры в коде сервера и код равный обеспечения этого.Сам вестибюль просто список, показывающий, все люди, которые вошли в. Даже то, что не является необходимым, но удобно для тестирования.GUI просто поле состояния (TextStatus) и лист (PeerList).
[описание изображения] [1]

Лобби код следующим стандартным Connect / регистрации / присоединиться к-комнатную модель всех многопользовательских реализаций.Только главное отличие в том, что, когда На сигнализации соединены номер срабатывает, мы проверяем, что мы хозяин, и что MyAlias именно имя, которое мы прошли, чтобы Войти с псевдонимом . Это гарантирует, что существует один и только один, активный лобби. Если второй был запущен, он будет иметь другой псевдоним, так что мы должны игнорировать этот экземпляр и выключить его.
[описание изображения] [6]
[описание изображения] [2]

Следующая мы имеем дело с лобби, выходя из комнаты. Здесь мы просто подождать 3 секунды, и если мы все еще связаны, просто снова присоединиться к лобби комнату. В противном случае, мы отключиться от сервера сигнализации.
[описание изображения] [3]
Когда мы действительно получаем отключение срабатывает, мы очищаем наш список, подождите 5 секунд, и начать соединять процесс снова и снова.

На ошибки мы регистрируем ошибку. Честно говоря, я не уверен, что еще можно сделать здесь в настоящее время.

Теперь мы начинаем дело с экспертными событий. Когда узел подключается, мы просто добавить их в наш список GUI, так что мы можем увидеть, что происходит.
[описание изображения] [4]

Когда вызов разъединяется, мы ищем для этого партнера в нашем списке GUI и снимите его.
[описание изображения] [7]

Далее мы просто войти любое сообщение, которое приходит в.

Наконец, мы добрались до мяса лобби, которое не так уж и много. Когда мы получаем StartGameWithClient сообщение, Сообщение текст будет содержать только PeerID в X-плеером, подчеркивания, и PeerID уплотнительного игрока. Событие 21 раз декодирует это в отдельных ее частей. Далее мы видим, если сверстников отправки сообщения имеет тот же идентификатор, что и X Player, и если да, отправить GameRequest сообщение O-плеером. В противном случае, отправитель должен быть O, так что мы должны отправить сообщение Х-плеером. Мы же сообщение мы получили, так что другой игрок четко знает, кто X, а кто О.
[описание изображения] [5]
Остальные события лишь некоторые испытания код, чтобы проверить отключается и восстановления.

Share and Copy this Tutorial

You are free to copy, distribute, transmit and adapt this work with correct attribution. Click for more info.

Leave a comment

Everyone is welcome to leave their thoughts! Register a new account or login.