Мультиплеер в игре на Юнити. Помогите разобраться.

Сеть в Unity3D

Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение hommer345 19 фев 2018, 23:03

Делаю игру на Юнити в жанре пошаговая стратегия. Ранее программированием не занимался, всему учусь, что называется, на ходу. Базовая механика практически готова, теперь нужно реализовать возможность играть по сети.
Для меня это, честно говоря, самый страшный этап разработки - в сетевых делах я вообще не шарю. Почитал про Network: https://docs.unity3d.com/ru/current/Scr ... twork.html, но в голове каша. Я не понимаю главного - как мне создать взаимодействие между компами.
Вот есть два компа, не связанные между собой ни в какую локальную сеть, а просто подключенные к интернету через маршрутизаторы. У каждого свой публичный и приватный IP-адрес. На обоих компах запущены копии игры. Как сделать так, чтобы две копии приложения увидели друг друга через интернет без использования внешних средств типа Хамачи?
Сразу оговорюсь, что какой-то внешний сервер для поиска игр не нужен, это я точно не потяну. Предполагается, что игроки знают друг друга и могут сообщить друг другу свои IP-адреса. То есть, грубо говоря, схема такая: Один из игроков нажимает кнопку "Сетевая игра"/"Присоединиться", вбивает IP другого игрока и копии приложения коннектятся.
Если что-то звучит глупо - заранее извиняюсь, в сетевых вопросах я вообще нуб.
hommer345
UNец
 
Сообщения: 11
Зарегистрирован: 19 май 2017, 20:08

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение Friend123 20 фев 2018, 08:26

Если дружите с английским, то достаточно изучить оф. мануал юнити: https://docs.unity3d.com/Manual/UNet.html.
Я пару лет назад потратил порядка месяца, чтобы изучить как там всё работает, плюс на оф. сайте есть примеры проектов, которые тоже помогают в изучении сети юнити, например те же танки 2D.
Для ваших нужд этого будет достаточно и не нужно иметь какой-то отдельный сервер, в данном случае - им будет один из игроков (т.н. хост).
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение Filosov 26 фев 2018, 14:53

hommer345 писал(а):Вот есть два компа, не связанные между собой ни в какую локальную сеть, а просто подключенные к интернету через маршрутизаторы. У каждого свой публичный и приватный IP-адрес. На обоих компах запущены копии игры. Как сделать так, чтобы две копии приложения увидели друг друга через интернет без использования внешних средств типа Хамачи?
Сразу оговорюсь, что какой-то внешний сервер для поиска игр не нужен, это я точно не потяну. Предполагается, что игроки знают друг друга и могут сообщить друг другу свои IP-адреса. То есть, грубо говоря, схема такая: Один из игроков нажимает кнопку "Сетевая игра"/"Присоединиться", вбивает IP другого игрока и копии приложения коннектятся.
Если что-то звучит глупо - заранее извиняюсь, в сетевых вопросах я вообще нуб.


Без Хамачи, без белого Ай-пи у хоста - никак. Пробивание NATа это не тривиальный процесс.
Filosov
UNец
 
Сообщения: 38
Зарегистрирован: 30 май 2016, 11:51

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение hommer345 28 фев 2018, 20:26

Filosov писал(а):Без Хамачи, без белого Ай-пи у хоста - никак. Пробивание NATа это не тривиальный процесс.

А как вообще в инди играх сейчас этот вопрос решается? Пишут сетевую логику только под локалку с расчётом на Хамачи или, всё-таки, внешний сервер? С одной стороны, игроки сейчас избалованные и с Хамачи заморачиваться не будут... С другой стороны, запускать внешний сервер - задача для инди команды из двух человек неподъёмная...
hommer345
UNец
 
Сообщения: 11
Зарегистрирован: 19 май 2017, 20:08

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение Filosov 02 мар 2018, 17:00

hommer345 писал(а):
Filosov писал(а):Без Хамачи, без белого Ай-пи у хоста - никак. Пробивание NATа это не тривиальный процесс.

А как вообще в инди играх сейчас этот вопрос решается? Пишут сетевую логику только под локалку с расчётом на Хамачи или, всё-таки, внешний сервер? С одной стороны, игроки сейчас избалованные и с Хамачи заморачиваться не будут... С другой стороны, запускать внешний сервер - задача для инди команды из двух человек неподъёмная...


Не делают сетевых игр. А вообще, да, заказывают хостинг. Самое распространенное решение через Фотон. Второй по популярности Фордж. Я сам не знаю куда приткнусь. Можно вообще на стороне. Сейчас я экспериментирую через друга с белым Ай-пи. Были эксперименты арендой с сервера, но там от компа мало отличалось, да и заливался туда мастер сервер. Не могу сказать подробности, делал это не собственноручно, но оно работало. Главная проблема всех этих решений - за хостинг надо платить. Что для простой игры может быть не подъемно. По идее Фотон дает возможность использовать свои сервера бесплатно до определенного лимита(вроде 50 игроков + ограничения по траффику).
Filosov
UNец
 
Сообщения: 38
Зарегистрирован: 30 май 2016, 11:51

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение M16 10 апр 2018, 17:33

hommer345 писал(а):С другой стороны, запускать внешний сервер - задача для инди команды из двух человек неподъёмная...


В смысле, по деньгам не подъемная что ли? Я сам не в теме, но, вроде, VDS хостинг вполне доступен по цене?
https://poiskvps.ru/index.php?search_price_max=1000&search_os%5B%5D=5&search_administration_type%5B%5D=3
M16
UNец
 
Сообщения: 18
Зарегистрирован: 30 апр 2015, 11:01

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение lol 21 апр 2018, 10:35

Используй unet matchmaking. 20 игроков онлайн одновременно там бесплатно. А если у тебя будет играть к тому времени больше, то начнешь думать как монетизировать.
Хотя пошаговые игры, наверное, лучше делать не через реалтайм мультиплеер. А через БД на сервере обычном или облачном.
lol
Старожил
 
Сообщения: 508
Зарегистрирован: 15 ноя 2009, 10:48
Откуда: Москва

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение Nanahaydo 22 апр 2018, 11:10

Дорогие друзья, на счет unet matchmaking, у меня одного не получается подключиться к сайту developer.cloud.unity3d.com для создания проекта что бы этот matchmaking работал?
Nanahaydo
UNец
 
Сообщения: 2
Зарегистрирован: 22 апр 2018, 10:32

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение Woolf 23 апр 2018, 05:32

Тогда уж лучше PUN, чем unet. Он и дешевле и как-то понадежнее, как мне кажется. Юнитехи известны своей "ветренностью", что-ли.. Сегодня сделали, завтра забили. А фотон развивается, ребята только с него кормятся, им "забивать" противопоказано.

https://www.photonengine.com/en-US/PUN
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение nikotin 29 май 2018, 18:49

Раньше пользовался vpsville.ru (платил 1145 р в месяц) пока не узнал что есть бесплатный GPGS (на андроид). Только я делал все на libgdx и писал все на java.nio (асинхронных сокетах). Подумал попробовать на C# подобное сделать, но тут у вас на форуме есть мнение что "сокеты только в unity pro android" viewtopic.php?f=18&t=28256 . Где это написано интересно и если так, то зачем сокеты в про задвинули?
На vps серверах нет видеокарты и игры/приложения с директ иуксом и опенжл не будут вообще запускаться (уже пробовал). Возникает вопрос, как может программа/сервер (написанная на юнити) запуститься на vps? (Да и вообще не ясно зачем серверу видео.) Не подскажите, можно ли писать сервер отдельно (не на юнити), а клиенты на юнити? Пакеты на юнити случайно не шифруются?
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение Dewa1s 21 июн 2018, 10:55

nikotin писал(а):Раньше пользовался vpsville.ru (платил 1145 р в месяц) пока не узнал что есть бесплатный GPGS (на андроид). Только я делал все на libgdx и писал все на java.nio (асинхронных сокетах). Подумал попробовать на C# подобное сделать, но тут у вас на форуме есть мнение что "сокеты только в unity pro android" http://www.unity3d.ru/distribution/view ... 18&t=28256 . Где это написано интересно и если так, то зачем сокеты в про задвинули?
На vps серверах нет видеокарты и игры/приложения с директ иуксом и опенжл не будут вообще запускаться (уже пробовал). Возникает вопрос, как может программа/сервер (написанная на юнити) запуститься на vps? (Да и вообще не ясно зачем серверу видео.) Не подскажите, можно ли писать сервер отдельно (не на юнити), а клиенты на юнити? Пакеты на юнити случайно не шифруются?

Тема 2014 года. С 5ой версии (2015 год) никаких искусственных ограничений для программистов. Сокеты на андроид работают.
Использовать стандартную сеть юнити на самописном сервере не получится, юнитеки грозились выпустить решение в виде отдельной библиотеки - но пока что тишина. Можно запустить клиент юнити в консольном виде и использовать родную сеть, но это будет однопоточная порнография. Имхо, малоюзабельно.
Выше уже советовали Photon, Woolf пишет свою ММО с преферансом и куртизанками , вроде доволен. Но велосипедостроение никто не отменял, да. Потоки работают, сокеты работают.
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

Re: Мультиплеер в игре на Юнити. Помогите разобраться.

Сообщение Frosmen 29 мар 2023, 20:42

Я тоже довольно долго мучался с этой проблемой, но всё решение заключается в том, что нужно соединить компьютеры локальной сетью(LogMeIn Hamachi или Radmin VPN) и в строку для поиска игры вписать Ipv4 игрока к которому ты хочешь подключиться. (я говорю про Mirror)
Frosmen
UNец
 
Сообщения: 20
Зарегистрирован: 16 авг 2021, 20:48


Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


cron