Мультиплеер в деталях для чайников[PlayerIO].Часть 1
Добавлено: 04 июл 2016, 22:28
Мультиплеер в деталях для чайников[PlayerIO].Часть 1
Здравствуйте, эту не хитрую статью поделенную на несколько частей, я хотел бы посвятить в очередной раз мультиплееру в unity основанного на работе с сиcтемой PlayerIO. В этой статье я попробую провести небольшой экскурс по самой системе, рассказать почему выбрал именно эту систему для статьи, а не стандартное решение от unity, выделить ее особенности и недостатки, попробовать написать простейший клиент-сервер, а главное попытаться рассмотреть все возможные подводные камни с которыми мне приходилось встречаться за время работы с этим сервисом. Целью статьи является возможность показать и расширить границы работы с сетью в unity для начинающих разработчиков, коим являюсь и я сам.
Внимание: статья рассчитана на читателей мало знакомых с сетевыми системами в unity, но хотя бы на среднем уровне знакомых с самим редактором unity и программированием. Остальным приятного чтения.
Небольшое отступление, история страданий.
PlayerIO - мультиплатформенное сетевое решение для многопользовательских приложений. Данный сервис предлагает свое сетевое API для обеспечения коммуникации игроков через "сервер", а также базу данных, файловый архив, доступом к социальным сетям и систему внутриигровых покупок.
Этот сервис достаточно давно уже работает во многих играх, но не обладает большой популярностью у разработчиков. Этому есть несколько причин: во-первых сервис мало популярен у начинающих разработчиков в виду некоторой сложности работы с ним, во-вторых он так же мало популярен и у опытных разработчиков в виду своей слабой гибкости и капризности, и самое главное о нем действительно мало хорошей и качественной документации на родном языке.
В интернете можно найти уроки, статьи и даже видео уроки об этом системе, но к сожалению они дают лишь базовую подготовку к работе с системой и часто не упоминают важные детали в работе с сервисом.
Почему PlayerIO, а не unity network?
Unity network предлагает сетевые возможности прямо, как сказать, "из коробки", есть куча документаций, уроков, проектов, что и привлекает начинающих разработчиков, которые воодушевившись мечтами об "игре по сети" тут же начинают использовать данную систему чем и пользуются unitech зарабатывая на наивных разработчиках вроде меня. К счастью для тех кто идет дальше существуют сервисы вроде PlayerIO которые также предлагают свои услуги для многопользовательских приложений.
Unity network работает по схеме "от игрока к игроку", то есть обычно данные передаются между игроками через игрока - хоста, который является и сервером и игроком одновременно. Такая система изначально имеет больше недостатков чем преимуществ, главная из них - потеря связи с хостом(сервером) который является центром обработки данных, хотя unitech и попытались залатать эту дыру системой смены хостов в новой версии network. PlayerIO работает по принципу "от игрока к игроку через сервер", то есть данные от одного игрока прежде чем передадутся другим игрокам проходят обработку на "сервере". В этом случае вы можете контролировать от какого игрока приходят данные, что это за данные, и что с ними делать дальше.
К примеру: если мы используем unity network то для синхронизации каких то данных достаточно их пометить нужным атрибутом, вы(то есть хост) не контролирует как сами данные синхронизируются, он просто их принимает, что дает легкий повод для "читерства", в случае PlayerIO данные приходят на сервер, где мы можем их сравнить с базой данных игрока, которые расположены независимо на самом "сервере", и выявить угрозы "читерства" в игре.
Unity network предлагает два вида сетевых решений, это HLAip и LLApi. HLApi - высокоуровневая организация сети, при использовании этого api система берет на себя практически все обязанности по работе с сетью, вам лишь достаточно правильно ее настроить и наслаждаться игрой. LLApi - низкоуровневая организация сети, в этом случае система предоставляет самому разработчику решать какие данные и как будут передаваться между игроками. Недостаток этих систем заключается в том что, чтобы их использовать вам нужно подключить систему Matchmaking которая будет искать и соединять игроков по сети, а предоставляет она свои услуги за периодическую оплату. PlayerIO также предлагает некоторые свои услуги за оплату, но в базовую(бесплатную) комплектацию входит весь ее функционал для создания и поддержания полноценной сети, базу данных, файловый архив, систему поиска игроков и "серверов", а также полноценную статистику для контроля работы сети.
В итоге можно сказать, что если вы являетесь инди разработчиком, сервисы подобно PlayerIO решают большинство ваших проблем с организацией сети не создавая пары новых как в случае с unity network и их жаждой заработать на наивных пользователях.
На этом все в первой части статьи. В следующей части я расскажу об преимуществах и недостатках самой системы PlayerIO, а также разберу ее главные возможности.
следующая часть->
Автор: этот хрен.
ПС. Если у вас есть замечания или пожелания по этой статье с удовольствием их выслушаю, так как я сам начинающий разработчик и буду рад любой критике.
Здравствуйте, эту не хитрую статью поделенную на несколько частей, я хотел бы посвятить в очередной раз мультиплееру в unity основанного на работе с сиcтемой PlayerIO. В этой статье я попробую провести небольшой экскурс по самой системе, рассказать почему выбрал именно эту систему для статьи, а не стандартное решение от unity, выделить ее особенности и недостатки, попробовать написать простейший клиент-сервер, а главное попытаться рассмотреть все возможные подводные камни с которыми мне приходилось встречаться за время работы с этим сервисом. Целью статьи является возможность показать и расширить границы работы с сетью в unity для начинающих разработчиков, коим являюсь и я сам.
Внимание: статья рассчитана на читателей мало знакомых с сетевыми системами в unity, но хотя бы на среднем уровне знакомых с самим редактором unity и программированием. Остальным приятного чтения.
Небольшое отступление, история страданий.
Скрытый текст:
PlayerIO - мультиплатформенное сетевое решение для многопользовательских приложений. Данный сервис предлагает свое сетевое API для обеспечения коммуникации игроков через "сервер", а также базу данных, файловый архив, доступом к социальным сетям и систему внутриигровых покупок.
Этот сервис достаточно давно уже работает во многих играх, но не обладает большой популярностью у разработчиков. Этому есть несколько причин: во-первых сервис мало популярен у начинающих разработчиков в виду некоторой сложности работы с ним, во-вторых он так же мало популярен и у опытных разработчиков в виду своей слабой гибкости и капризности, и самое главное о нем действительно мало хорошей и качественной документации на родном языке.
В интернете можно найти уроки, статьи и даже видео уроки об этом системе, но к сожалению они дают лишь базовую подготовку к работе с системой и часто не упоминают важные детали в работе с сервисом.
Почему PlayerIO, а не unity network?
Unity network предлагает сетевые возможности прямо, как сказать, "из коробки", есть куча документаций, уроков, проектов, что и привлекает начинающих разработчиков, которые воодушевившись мечтами об "игре по сети" тут же начинают использовать данную систему чем и пользуются unitech зарабатывая на наивных разработчиках вроде меня. К счастью для тех кто идет дальше существуют сервисы вроде PlayerIO которые также предлагают свои услуги для многопользовательских приложений.
Unity network работает по схеме "от игрока к игроку", то есть обычно данные передаются между игроками через игрока - хоста, который является и сервером и игроком одновременно. Такая система изначально имеет больше недостатков чем преимуществ, главная из них - потеря связи с хостом(сервером) который является центром обработки данных, хотя unitech и попытались залатать эту дыру системой смены хостов в новой версии network. PlayerIO работает по принципу "от игрока к игроку через сервер", то есть данные от одного игрока прежде чем передадутся другим игрокам проходят обработку на "сервере". В этом случае вы можете контролировать от какого игрока приходят данные, что это за данные, и что с ними делать дальше.
К примеру: если мы используем unity network то для синхронизации каких то данных достаточно их пометить нужным атрибутом, вы(то есть хост) не контролирует как сами данные синхронизируются, он просто их принимает, что дает легкий повод для "читерства", в случае PlayerIO данные приходят на сервер, где мы можем их сравнить с базой данных игрока, которые расположены независимо на самом "сервере", и выявить угрозы "читерства" в игре.
Unity network предлагает два вида сетевых решений, это HLAip и LLApi. HLApi - высокоуровневая организация сети, при использовании этого api система берет на себя практически все обязанности по работе с сетью, вам лишь достаточно правильно ее настроить и наслаждаться игрой. LLApi - низкоуровневая организация сети, в этом случае система предоставляет самому разработчику решать какие данные и как будут передаваться между игроками. Недостаток этих систем заключается в том что, чтобы их использовать вам нужно подключить систему Matchmaking которая будет искать и соединять игроков по сети, а предоставляет она свои услуги за периодическую оплату. PlayerIO также предлагает некоторые свои услуги за оплату, но в базовую(бесплатную) комплектацию входит весь ее функционал для создания и поддержания полноценной сети, базу данных, файловый архив, систему поиска игроков и "серверов", а также полноценную статистику для контроля работы сети.
В итоге можно сказать, что если вы являетесь инди разработчиком, сервисы подобно PlayerIO решают большинство ваших проблем с организацией сети не создавая пары новых как в случае с unity network и их жаждой заработать на наивных пользователях.
На этом все в первой части статьи. В следующей части я расскажу об преимуществах и недостатках самой системы PlayerIO, а также разберу ее главные возможности.
следующая часть->
Автор: этот хрен.
ПС. Если у вас есть замечания или пожелания по этой статье с удовольствием их выслушаю, так как я сам начинающий разработчик и буду рад любой критике.