Страница 1 из 1

О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 00:23
desetfall
Вообщем возникла идея сделать простейшую игрушку(прятки) с одной локацией, поиграть с друзьями. Как возможно реализовать мультиплеер? В гугле наткнулся на множество материала, в т.ч. Photon, unet, пока не разбирался что это, но судя по описаниям создается впечатление что это серьезные толстые системы для создания мультиплеера на большое кол-во игроков, так вот вопрос: что из этого (или что-то другое) можно использоваться для реализации мультиплеера посредством хамачи (то есть в локальной сети) на 4 игроков максимум? Мне бы что-то простое, без огромного количества возможностей, бесплатное и желательно с наличием русскогоязычных пособий. Заранее спасибо

(Я прошу именно кинуть ссылки или дать названия систем для реализации такого мультиплеера, рассказывать как это делать мне вовсе не нужно, мало ли кто-то подумает, что я прошу тут создать игру за меня ;) )

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 00:27
Saltant
Unet используй, встроенный в юнити. Под твои нужны идеально подойдет. Указываешь локальную IP в настройках и всё будет хорошо, порт на роутере проверь только.

Принцип работы по сути прост, создаешь пустой префаб, кидаешь на него NetworkManager (это главный компонент сети), далее кидаешь NetworkManager GUI (вроде так называется, это визуальные настройки, создать хост, приконектиться и т.п). В менеджера указываешь пребаф игрока который будет спавниться, так же регистрируешь спавн точки (префабы с компонентом NetworkStartPosition как то так вроде), настраиваешь префаб игрока, кидаешь на него NetworkIdentity (без этого компонента объекты в сетевой игре не будут друг друга видеть) ставишь галку на Local Authority (в identity) это значит этим объектом будет управлять игрок который запустил игру. Далее настраиваешь раздельное управление (проверяешь компоненты префаба игрока через isLocalPlayer и если false то отключаешь скрипт управления). Надеюсь ничего не забыл. Удачи.

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 00:34
desetfall
Saltant, огромное спасибо!)

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 11:55
NAGIBATOR228pacan
desetfall писал(а):Вообщем возникла идея сделать простейшую игрушку(прятки) с одной локацией, поиграть с друзьями. Как возможно реализовать мультиплеер? В гугле наткнулся на множество материала, в т.ч. Photon, unet, пока не разбирался что это, но судя по описаниям создается впечатление что это серьезные толстые системы для создания мультиплеера на большое кол-во игроков, так вот вопрос: что из этого (или что-то другое) можно использоваться для реализации мультиплеера посредством хамачи (то есть в локальной сети) на 4 игроков максимум? Мне бы что-то простое, без огромного количества возможностей, бесплатное и желательно с наличием русскогоязычных пособий. Заранее спасибо

(Я прошу именно кинуть ссылки или дать названия систем для реализации такого мультиплеера, рассказывать как это делать мне вовсе не нужно, мало ли кто-то подумает, что я прошу тут создать игру за меня ;) )

Конечно же c# System.net.sockets за день можно простенький сервер создать для локальный игры(для локальной проще ибо не надо с читерами воевать и предсказывать пинг), с unity может работать, только чуть чуть чуть в многопоточности(не корунтины) надо понимать чтобы не возникало фризов в unity

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 16:18
Jarico
NAGIBATOR228pacan писал(а):с unity может работать, только чуть чуть чуть в многопоточности(не корунтины) надо понимать чтобы не возникало фризов в unity


Уже всё сделали https://github.com/vis2k/Telepathy

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 22:26
AngryCat
Saltant писал(а):Unet используй, встроенный в юнити. Под твои нужны идеально подойдет. Указываешь локальную IP в настройках и всё будет хорошо, порт на роутере проверь только.

Принцип работы по сути прост, создаешь пустой префаб, кидаешь на него NetworkManager (это главный компонент сети), далее кидаешь NetworkManager GUI (вроде так называется, это визуальные настройки, создать хост, приконектиться и т.п). В менеджера указываешь пребаф игрока который будет спавниться, так же регистрируешь спавн точки (префабы с компонентом NetworkStartPosition как то так вроде), настраиваешь префаб игрока, кидаешь на него NetworkIdentity (без этого компонента объекты в сетевой игре не будут друг друга видеть) ставишь галку на Local Authority (в identity) это значит этим объектом будет управлять игрок который запустил игру. Далее настраиваешь раздельное управление (проверяешь компоненты префаба игрока через isLocalPlayer и если false то отключаешь скрипт управления). Надеюсь ничего не забыл. Удачи.

Я думал, что его больше не поддерживают :-?

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 22:27
AngryCat
Всю жизнь использую Photon :-bd

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 22:29
AngryCat
AngryCat писал(а):
Saltant писал(а):Unet используй, встроенный в юнити. Под твои нужны идеально подойдет. Указываешь локальную IP в настройках и всё будет хорошо, порт на роутере проверь только.

Принцип работы по сути прост, создаешь пустой префаб, кидаешь на него NetworkManager (это главный компонент сети), далее кидаешь NetworkManager GUI (вроде так называется, это визуальные настройки, создать хост, приконектиться и т.п). В менеджера указываешь пребаф игрока который будет спавниться, так же регистрируешь спавн точки (префабы с компонентом NetworkStartPosition как то так вроде), настраиваешь префаб игрока, кидаешь на него NetworkIdentity (без этого компонента объекты в сетевой игре не будут друг друга видеть) ставишь галку на Local Authority (в identity) это значит этим объектом будет управлять игрок который запустил игру. Далее настраиваешь раздельное управление (проверяешь компоненты префаба игрока через isLocalPlayer и если false то отключаешь скрипт управления). Надеюсь ничего не забыл. Удачи.

Я думал, что его больше не поддерживают :-?

Там если не ошибаюсь, какую-то другую канитель изобрели. Разве нет?

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 22:53
Saltant
AngryCat писал(а):
AngryCat писал(а):
Saltant писал(а):Unet используй, встроенный в юнити. Под твои нужны идеально подойдет. Указываешь локальную IP в настройках и всё будет хорошо, порт на роутере проверь только.

Принцип работы по сути прост, создаешь пустой префаб, кидаешь на него NetworkManager (это главный компонент сети), далее кидаешь NetworkManager GUI (вроде так называется, это визуальные настройки, создать хост, приконектиться и т.п). В менеджера указываешь пребаф игрока который будет спавниться, так же регистрируешь спавн точки (префабы с компонентом NetworkStartPosition как то так вроде), настраиваешь префаб игрока, кидаешь на него NetworkIdentity (без этого компонента объекты в сетевой игре не будут друг друга видеть) ставишь галку на Local Authority (в identity) это значит этим объектом будет управлять игрок который запустил игру. Далее настраиваешь раздельное управление (проверяешь компоненты префаба игрока через isLocalPlayer и если false то отключаешь скрипт управления). Надеюсь ничего не забыл. Удачи.

Я думал, что его больше не поддерживают :-?

Там если не ошибаюсь, какую-то другую канитель изобрели. Разве нет?

Новой канители пока что нет в мастер релизе, там еще старая Unet.

P.S Я тут покрутил юнет и фотон и что то пришел к выводу что в соло за неимением какого то вменяемого опыта программирования, вообще лучше не лезть в эту тему, какой то легкий проектик можно и на сокетах сделать, на вебе и т.п что легче в понимании и реализации. Мое недавнее знакомство в сетевым программированием сложилось не очень хорошо, пока что для меня это чуть ниже космоса, хотел свой проект сделать с сетью, но понял что пока что пытаюсь прыгнуть выше головы и в силах сделать "сеть" только на уровне браузерных игр. Если рассматривать юнет и фотон, то на мой нубский взгляд, Юнет более понятен чем фотон, надеюсь что когда юнитеки выпустят новую сеть, моё знакомство с ней пройдет более продуктивно, а то хочется всё же игру с сетью сделать, но нипалучаеца и знакомых нет кто бы во всем этом варился, по сути и решил сюда на форум прийти, тут хоть какое то комьюнити, а то в соло депресняки иногда бывают.

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 22:59
AngryCat
Со временем приходит опыт) если долго мучится, то что-то да получится. Вообще всем рекомендую не использовать готовые сети, а писать свою, через FTP ~o)

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 23:29
boronnikovAI
На самом деле Photon очень прост в использовании.
По факту нужно написать компонент NetworkManager, где ты обрабатываешь "создание" комнаты при подключении игрока, если их нет. Потом выбираешь оъект, который нужно синхронизировать и накидываешь на него PhotonView. Внутри компонента просто указываешь что нужно синхронизировать(другие компоненты в виде ссылки).
Те же трансформ синхронизировать - будет более чем достаточно для совместной "бродилки-пряток".
Если какой сложный компонент синхронизировать - OnPhotonSynhronizedView() или тип того (Точно не помню)
Лучше потратить день - два на битву с фотоном и полноценно расшариться в нём, чем страдать ерундой.
Photon бесплатен, если игроков менее 20 будет

Re: О мультиплеере в unity

СообщениеДобавлено: 11 мар 2019, 23:55
Saltant
boronnikovAI писал(а):Photon бесплатен, если игроков менее 20 будет

На самом деле, вот это всё и отбивает желание изучать фотон и т.п решения, 20 игроков это как говорится ни туда ни сюда. Вот как понять сколько ccu надо? Цифра 20 не внушает доверия. Дайте 100 бесплатно и тогда уже можно более уверенно изучать фотон с целью боевого использования. Например выложил проект в паблик, менее 100 игроков, проект не взлетел = ничего не потерял, а так как щас, думаю полюбому слоты нужно докупать, 20 слотов только одни тестеры считай сожрут, это взгляд человека который ни одной сетевой игры еще не сделал, чисто вот теоретический расклад. По этому, я бы искал варианты с б0льшим кол-вом халявных ccu или вообще фреймворк без ограничений на собственной машине.

Re: О мультиплеере в unity

СообщениеДобавлено: 12 мар 2019, 08:01
AngryCat
Saltant писал(а):
boronnikovAI писал(а):Photon бесплатен, если игроков менее 20 будет

На самом деле, вот это всё и отбивает желание изучать фотон и т.п решения, 20 игроков это как говорится ни туда ни сюда. Вот как понять сколько ccu надо? Цифра 20 не внушает доверия. Дайте 100 бесплатно и тогда уже можно более уверенно изучать фотон с целью боевого использования. Например выложил проект в паблик, менее 100 игроков, проект не взлетел = ничего не потерял, а так как щас, думаю полюбому слоты нужно докупать, 20 слотов только одни тестеры считай сожрут, это взгляд человека который ни одной сетевой игры еще не сделал, чисто вот теоретический расклад. По этому, я бы искал варианты с б0льшим кол-вом халявных ccu или вообще фреймворк без ограничений на собственной машине.

Если через глобал делать, то сколько угодно можно игроков. Фотон на 100 человек дается бесплатно, но не навсегда. Да и стоит тн копейки

Re: О мультиплеере в unity

СообщениеДобавлено: 12 мар 2019, 11:34
Jarico
Saltant писал(а):б0льшим кол-вом халявных ccu или вообще фреймворк без ограничений на собственной машине.


RakNet (с поддержкой мастер-сервера, была в Unity в древние времена, используется в MTA, SAMP, Rage MP (GTA V), Mafia 2 MP, Rust)
unity.network.transport (хрень - документация фуёвая, но если разобраться можно что-то дельное начиркать)
Telepathy (написана на C#, клиент сервер на TCP, на нём основывается неофициальная замена uNet'а под названием Mirror)
uNet (удалят скоро)
uLink (не знаю пойдёт ли на Unity 5)
Forge Networking (не пробовал но говорят в Москве кур доят)
DarkRift 2 (не понятный ассет, описание красочное а по факту я так и не понял что к чему, код обфусцирован)
.Net Sockets (UDP,TCP) - .Net сокеты