Помощи прошу Вашей в задаче серверной, интересной неимоверно

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 09 дек 2012, 15:35

Здорово, бродяги виртуальных дорог!

Я, ничтожный странник Unity, таки решился обнаглеть до крайней степени, и хочу просить помощи Мастеров в решении неимоверно сложной задачи.
Суть такова: создать подобие MasterServer'а.

Пролог сей истории:
Думаю, многие из Мастеров силушку свою пробовали в действиях World Of Tanks. В этой забаве есть знаменитая кнопка "В БОЙ!", которая ссылает Вас в сражение со вражинами случайными и картой, Всевышним выбранной. Бой идет там до последней крови вражеской, али до таймаута пятнадцатиминутного, после чего обильно награждают участников сей баталии.

Сие есть интересное решение.
И позарился я идею эту воровать. Преступного тут ничего нет, и совесть моя чиста, однако приключились тут беды горестные...


Кульминация:
И пошел Лео отважный идею свою в жизнь воплощать!
Много побед у него было, много трудностей не смог он преодолеть.
В те времена часто видали его, вопрошаюшего задачи свои сумасбродные на форумах русско- и англоязычных, но везде сторонились люди его, посылая в справку, нубом ходячим называя...
Зато понял он, что MasterServer ему не подходит, ибо при отключении зачинщика боя - вылетят все участники.
Значит, сервер один быть должен, и иметь отделы для каждого боя?
Авторитарный не требуется.

Эпилог:
И так Лео создал себе эту тему, где находится и по сей день, ожидая помощи, но и своей работы не прекращая.


Модеры, можно, пожалуйста, я буду апать тему, а после решения - выложу в первом посте видеоурок?
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 09 дек 2012, 16:38

Думается мне, что сие предложение реализуемо на девственно чистой Unity без помощи заморских Photon'ов и им подобных существ.
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение Receptor 09 дек 2012, 16:53

Зато понял он, что MasterServer ему не подходит, ибо при отключении зачинщика боя - вылетят все участники.
Значит, сервер один быть должен, и иметь отделы для каждого боя?


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

Можно на "облаках" сделать, бить по комнатам, но опять же, ежели хозяин комнаты соизволит покинуть игру, то и баталия будет такова. :)
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение Good1101 09 дек 2012, 19:27

все это легко реализуемо осталось только освоить любое сетевое решение для юнити...

выложу в первом посте видеоурок?

одним уроком тут правда будет не отделаться если хотите чтобы было понятно непосвященным юзерам, придется выглаживать целую серию уроков...
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 10 дек 2012, 00:29

Receptor писал(а):Можно на "облаках" сделать, бить по комнатам, но опять же, ежели хозяин комнаты соизволит покинуть игру, то и баталия будет такова. :)

Весьма прискорбное известие...
Надеюсь, друг мой, Вы ошиблись.

Good1101 писал(а):все это легко реализуемо осталось только освоить любое сетевое решение для юнити...
......
...придется выглаживать целую серию уроков...

Какое сетевое решение может подойти в моей ситуации?

Да, я и предполагал серию уроков.
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 10 дек 2012, 00:48

Вообще, мне надо только передавать координаты и пару переменных между игроками комнаты.

Возможна ли бессерверная связь? :0
Вернее, чтобы сервер всех собрал, а после его отключения - клиенты общались сами.

Или же, сделать всех игроков серверами? Есть несколько вариантов, как это сотворить...

Я понимаю, что порю какую-то дьявольщину, и меня в самый раз на костре сжечь, но все же?
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 10 дек 2012, 04:46

Ладно, можно мотивировать людей не отключаться, если они - сервер.

Тогда я буду рассуждать...

Создать обычный сервер из 2 части M2H Networking Tutorial, где изучаются RPC. Клиент при запуске подключается к этому админсерверу (моему компу с запущенной Юнечкой) - и отправляет ему RPC со своим IP. Админсервер забивает его в массив активных IP.
Теперь можно отослать всем подключениям основного админсервера буферизированное RPC, что юзер онлайн, так?
Можно каждые 2 минуты проверять доступность этого IP, и, если он не ответил - удалять из массива.

Так можно контролировать онлайн.


Теперь как будут создаваться комнаты?
Клиент нажимает кнопку "В БОЙ!", смотрит в массив ожидающих юзерсерверов. Если доступных юзерсерверов нет - создает юзерсервер, забивает IP в массив ожидающих юзерсерверов. Лобби с ожиданием. При старте боя - юзерсервер удаляется из списка ожидающих.
Каждые две минуты проверка, ожидает ли еще юзерсервер.

Если доступные юзерсервера есть - подключаемся к старшему.

Если подключение к юзерсерверу невозможно - говорим админсерверу, он проверяет, и, в случае подтверждения, удаляет из массива.
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 10 дек 2012, 14:37

Может быть, БД MySQL надо?

Люди, отзовитесь!
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 11 дек 2012, 03:16

Стоп! Какая проверка раз в две минуты?!

OnPlayerConnected - пишем в БД player.ipAdress.

OnPlayerDisconnected - ищем в БД player.ipAdress, и удаляем.
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение Woolf 11 дек 2012, 03:38

JIeo_NEED писал(а):Стоп! Какая проверка раз в две минуты?!

OnPlayerConnected - пишем в БД player.ipAdress.

OnPlayerDisconnected - ищем в БД player.ipAdress, и удаляем.


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

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 11 дек 2012, 04:00

Woolf писал(а):Ничо, что у разных игроков может быть один IP?

Да ну ладно?! Никогда с таким не встречался!

И каков шанс выпада этого события?

P.S.: Поздравляю с 1200 постом! :)
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение eligma 11 дек 2012, 04:42

даже для стандартного мастер сервера. думаю это подключение к случайному серверу одному из 3 например
Синтаксис:
Используется javascript
function OnGUI() {
        var data : HostData[] = MasterServer.PollHostList();
        // Go through all the hosts in the host list
var i : int;        
var dat = data[i];

dat = [Random(1,3)]
if (GUILayout.Button("Connect"))
        Network.Connect(dat);  

//      for (var element in data)
//      {
//              GUILayout.BeginHorizontal();   
//              var name = element.gameName;
//              GUILayout.Label(name); 
//              GUILayout.Space(5);
//              if (GUILayout.Button("Connect"))
//              {
//                      // Connect to HostData struct, internally the correct method is used (GUID when using NAT).
//                      Network.Connect(element);                      
//              }
//              GUILayout.EndHorizontal();     
//      }
}

При отключении зачинщика клиенты вылетят поэтому необходимо как я раньше говорил работать на дедикайтед серваке и арендовать выделенный сервер на хостинге и ставить там дедикайтед сервер, тогда он не будет зависеть от того кто зашел первым. Но естественно для такой серьезной задачи стандартная сеть юньки не подходит - только фотон. Ну и в стандартной есть дедкайтед, но тут запросы чересчур серьезные на манер танков и т п
Gleeko Multiplayer Gameplay------Знаете ли вы что протокол IPV6 в 1 000 000 раз превышает по возможностям протокол IPV4? А также протокол IPV6 официально был запущен в прошлом году 6.06 числа в 6 часов утра. Это событие отмечали во всем мире.
Аватара пользователя
eligma
Старожил
 
Сообщения: 778
Зарегистрирован: 29 фев 2012, 03:35
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение Good1101 11 дек 2012, 06:28

JIeo_NEED писал(а):
Woolf писал(а):Ничо, что у разных игроков может быть один IP?

Да ну ладно?! Никогда с таким не встречался!

И каков шанс выпада этого события?

P.S.: Поздравляю с 1200 постом! :)


намного чаще чем вы думаете. например сижу я с другом и играю с одного модема на разных компах в вашу игру да еще и в 2 окна каждый так как 2й бафер или тп :) а в тоже время так как у меня вайфай не запаролен, приконектились еще 3е соседей с соседних квартир и тоже рубят в вашу игру по 2 окна каждый, вот уже 10 игроков с одним ип адресом :) могут быть и другие ситуации когда у провайдера несколько юзеров на одном внешнем ип адресе сидят.
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение JIeo_NEED 11 дек 2012, 07:43

eligma, спасибо за такие важные советы!
Насчет копии сервера W.o.T: я не настолько самоуверен, чтобы браться за такое.
Мне нужно простейшее костыльное подобие...


Good1101, может быть, закрыть эту пробоину сообщением "Ваш IP на данный момент уже кем-то используется. Попробуйте подключиться позднее."?
Аватара пользователя
JIeo_NEED
UNITрон
 
Сообщения: 228
Зарегистрирован: 01 мар 2012, 14:37
Откуда: Владивосток, Приморский край, Россия.
Skype: Develeone
  • Сайт

Re: Помощи прошу Вашей в задаче серверной, интересной неимоверно

Сообщение KorsaiR 11 дек 2012, 09:49

Тема очень интересная, кстати говоря, я недавно тоже задумывался о такой системе игры в своём проекте :)

Но к большому сожалению руки кривые у меня пока что, с сетью всё плохо..писать пишу,но вникнуть никак не могу как всё работает))
Мои игры: Sunrise, Fireground, Spacerift
Sunrise: _www.sunsurv.ru , _https://store.steampowered.com/app/6631 ... _survival/
Fireground: _https://store.steampowered.com/app/1026 ... ND/?beta=0
Spacerift: _https://vk.com/spacerift
Аватара пользователя
KorsaiR
Старожил
 
Сообщения: 797
Зарегистрирован: 09 июл 2012, 12:20
Откуда: Новосибирск
Skype: pwiliya

След.

Вернуться в Почемучка

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

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