Создание мультиплеера на Photon Cloud

Онлайн игра от 24-06-2013, 10:10

Точнее сказать, с помощью Photon Cloud можно сделать не просто мультиплеер, а что-то похожее на многопользовательскую онлайн игру, где не нужно создавать сервер, и можно просто заходить в любое время в игру.

 

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

 

А вообще рекомендую посмотреть сервер Гарена. Скачать Гарену можно на сайте наших друзей. Это обычная программа, позволяющая создать игровой сервер на своем компьютере. С ее помощью можно играть в варкрафт или ту же контру.

 

Для того, чтобы подключить себя к игровому миру, нужно прописать в скрипте пару строк инициализации фотона и проверить список созданных комнат. Если комната уже создана - подключится к существующей, а если нет - создать новую. Комната это игровое пространство сети (фотона) у которой есть определенный лимит, одновременного максимального количества игроков (в бесплатной версии до 20). Когда вы подключились к комнате, вы создаете своего персонажа из префаба. Если вы хотите разместить персонажа из скрипта, когда не используете фотон, вы вызываете функцию Instantiate. Но, используя фотон, нужно брать версию этой функции, предлагаемую фотоном. Когда он размещает персонажа с помощью этой функции, он следит за тем, чтобы персонажа видели все остальные игроки, а также передаются координаты и вращение.

 

Добавив нужный скрипт из библиотеки Photon Cloud, в качестве компонента к персонажу, и проделав еще пару манипуляций,- вы сможете передавать переменные всем игрокам на сцене. Этот трюк можно использовать для написания чата. Когда вы написали что-то в окне чата и нажали кнопку отправить, нужно один раз передать значение написанной строки в специальную функцию фотона. Все остальные игроки, у которых ваш персонаж есть на сцене смогут получить эту строку и отобразить в своем окне чата. Функция которая позволяет этого достигнуть размещается в скрипте на том объекте (персонаже), который размещался на сцене фотоном. Она состоит из двух частей: первая вызывается если игрок это вы (тот кто управляет персонажем), вторая часть вызывается только в том случае, если объект (персонаж), не управляется вами и есть только отображением другого игрока на вашей сцене. По сути, все игроки на сцене используют один и тот же скрипт, поскольку они были размещены из одного префаба, но благодаря тому, что на них был нацеплен специальный компонент фотона,- он может следить за тем, кто есть игрок а кто отображение других персонажей.

 

Создать базу не очень сложно, но потом вы увидите большое поле для совершенствования. Например, вы заметите, что другие персонажи движутся рывками, из за того, что информация о их положении передается по интернету примерно раз в 0.1 секунду. Чтобы перемещение было плавным, вам нужно сглаживать позицию игрока между старыми и новыми данными, полученными из интернета.