PeerJS (Peer to Peer, p2p)

другие уроки, мануалы, советы по Construct 2

Сообщение PeerJS (Peer to Peer, p2p)
» 08 июл 2018, 20:35

Итак, выложу краткую инструкцию, как и обещал.
Речь пойдет о мультиплеере. Будем соединять двух игроков напрямую на равных правах (т.е. без того, что один из игроков будет хостом и при его выходе комната игроков распадается, как в стандартном мультиплеере).
Сразу скажу, что это не для новичков, т.к. нужно будет самому изобретать велосипед создавать систему объединения игроков в комнаты, т.е. для этого потребуeтся знание ЯП (лично мой выбор пал на php + MySQL).

1) Регистрируемся на https://heroku.com. Этот сервис послужит нам сервером для сигнального сервера (сервер соединяет между собой игроков и ВСЁ, после соединения игроки общаются напрямую, даже если сервер отключить).
1.1) Заполняем поля, в последнем (Primary development language) выбираем Node.js.

2) Теперь заходим сюда https://github.com/peers/peerjs-server и где-то в середине страницы ищем фиолетовую кнопку Deploy to Heroku. Нас перекидывает на сайт Хероку. Вводим там название сервера (на свое усмотрение) и выбираем его расположение. Ждем окончания установки. Всё, сервер готов. Нажимаем кнопку Manage App. Нас перекидывает в панель управления. Там в правом верхнем углу ищем кнопку Open App и нажимаем. Если всё окей - откроется новая вкладка с таким содержанием:
Код: Выделить всё
{"name":"PeerJS Server","description":"A server side element to broker connections between PeerJS clients.","website":"http://peerjs.com/"}

Не спеши эту вкладку закрывать - ссылка на эту страницу нам еще пригодится.

3) Теперь нам нужно установить плагин для с2. Автор оригинального плагина R0J0hound. Плагин соединяется с сервером разработчика PeerJS, но плагин устарел и подключиться к серверу нет возможности. Потому я модифицировал плагин и теперь мы можем подключиться к любому (собственному) серверу.
peerjs.zip
(150.38 КБ) Скачиваний: 216

После установки плагина переходим непосредственно в Construct 2.

4) Расписывать логику мультиплеера не буду, т.к. она схожа с другими подобными плагинами. Уроки по ним (стандартный мультеплеер, Фотон) есть на форуме, ищите в этом же разделе. Я лишь опишу ивенты этого плагина, с которыми нам придется работать и приложу базовый исходник чата для двоих.

 Условия (Conditions)
Connection is open - проверяет, подключены ли мы к конкретному пиру по его ID
On connection closed - срабатывает, если соединение с пиром было закрыто
On connection error - срабатывает, если произошла ошибка при подключении к пиру
On connection open - срабатывает, если мы успешно установили соединение с пиром
On data recieved - срабатывает, если мы получили данные от другого пира
On peer error - срабатывает, если произошла ошибка при подключении к серверу
On peer open - срабатывает, если успешно подключились к серверу

 Действия (Actions)
Close connection - закрывает соединение с пиром по его ID, вызывает триггер On connection closed
Connect to peer - подключает к пиру по его ID, вызывает триггеры On connection open или On connection error
Send data - отправляет данные (data) пиру (id)
Close Peer - отключает от сервера, теперь никто к тебе больше не подключится.
Initialize Peer - подключаемся к серверу. Необходимо указать адрес сервера. В поле ID указываем желаемый ID (если оставить пустым - ID будет сгенерирован рандомно)

 Выражения (Expressions)
PeerJS.myId - возвращает твой ID
PeerJS.numConnections - текущее кол-во соединений
PeerJS.lastData - содержит последнее сообщение от другого пира. Использовать с условием On data recieved
PeerJS.lastError - описание/код ошибки. Использовать с On connection error или On peer error
PeerJS.lastId - ID другого пира. Используется почти со всеми условиями. Лень перечислять.


Ну вот и всё. Пробуйте, учитесь, развивайтесь.

Исходник с чатом, как и обещал.
peerjs-chat.capx
(8.45 КБ) Скачиваний: 196
Аватара пользователя

Игродел
Сообщений: 1428
Я тут с 06 июл 2015
Репутация 365 [ ? ]

Сообщение PeerJS (Peer to Peer, p2p)
» 09 июл 2018, 01:22

Bishop, Я правильно понял?
(сервер соединяет между собой игроков и ВСЁ, после соединения игроки общаются напрямую, даже если сервер отключить).
- значит что теперь нет лимитов на игроков?
Аватара пользователя

Участник
Сообщений: 89
Я тут с 17 май 2016
Двиг: Construct 2
Лицензия: Bussines
Репутация 1 [ ? ]

Сообщение PeerJS (Peer to Peer, p2p)
» 09 июл 2018, 01:40

И ещё интересно что будет если на сервере будет два игрока с одинаковым ID

Edit: Проверено. Ошибка
Error: ID '3' is taken

По сути так можно сделать перебор игроков для создания общего сервера где каждый соединен с другими. Но было-бы лучше с действием для этого
Аватара пользователя

Участник
Сообщений: 89
Я тут с 17 май 2016
Двиг: Construct 2
Лицензия: Bussines
Репутация 1 [ ? ]

Сообщение PeerJS (Peer to Peer, p2p)
» 09 июл 2018, 08:25

RusCookie, лимитов то нет, но p2p не предназначена для большого кол-ва игроков. Вот представь, что ты, допустим, 10 раз в секунду отправляешь свои координаты другим пирам. А теперь представь, что ты одновременно подключен к сотне других игроков. x100 цикл по 10 раз в секунду крутить. Ну такое..
Аватара пользователя

Игродел
Сообщений: 1428
Я тут с 06 июл 2015
Репутация 365 [ ? ]

Сообщение PeerJS (Peer to Peer, p2p)
» 09 июл 2018, 09:13

Bishop, Это да. Но как сделать независимое подключение игроков между собой. Без ввода ИД
Аватара пользователя

Участник
Сообщений: 89
Я тут с 17 май 2016
Двиг: Construct 2
Лицензия: Bussines
Репутация 1 [ ? ]

Сообщение PeerJS (Peer to Peer, p2p)
» 09 июл 2018, 10:09

Придумал интересную тему с этим плагином

Можно создать торговлю между игроками. К примеру ставишь специальное здание, при этом идёт подключение к серверу + ник к примеру "ник_игрока-№_торговой_точки_игрока" и все кто подключаются к ней при помощи своей ТТ могут покупать у тебя электричество или предметы.
Аватара пользователя

Участник
Сообщений: 89
Я тут с 17 май 2016
Двиг: Construct 2
Лицензия: Bussines
Репутация 1 [ ? ]

Сообщение
» 01 окт 2018, 17:24

Фиолетовой кнопки на гитхабе нету
Как быть?)
Аватара пользователя

Участник
Сообщений: 36
Я тут с 28 май 2018
Репутация 1 [ ? ]

Сообщение PeerJS (Peer to Peer, p2p)
» 03 окт 2018, 20:25

127dan,
1. Заводим себе акк на гитхабе, если еще нет.
2. Форкаем (копируем) сервер к себе.
3. На Хероку привязываем акк от Гитхаба.
4. Выбираем уже свою копию сервера и ДЕПЛОООООЙ.

Надеюсь, ты разберешься. Мне лень все разжевывать.
:blum:
Аватара пользователя

Игродел
Сообщений: 1428
Я тут с 06 июл 2015
Репутация 365 [ ? ]

Сообщение PeerJS (Peer to Peer, p2p)
» 11 июн 2019, 22:46

Скажите: а проблема однотипных браузеров не решена? Т.е. по прежнему: если зайдут люди из под Firefox+Chrome - их не законнектит?

Для realTime-приложений оно работает или чисто для пошаговых вещей, типа чата?
Аватара пользователя

Участник
Сообщений: 6
Я тут с 11 июн 2019
Репутация 0 [ ? ]

Сообщение PeerJS (Peer to Peer, p2p)
» 14 июн 2019, 12:02

fireballpro, насчет коннектов не скажу, не помню. Тут только тестить надо.

Реалтайм сделать можно, если кол-во игроков не сильно большое.
Аватара пользователя

Игродел
Сообщений: 1428
Я тут с 06 июл 2015
Репутация 365 [ ? ]



Вернуться в Другие уроки по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх