🌐 Онлайн игра: полный туториал, часть 2 [Unity 3D][Photon] - произвольные параметры и игровая карта

  Рет қаралды 42,814

Emerald Powder

Emerald Powder

5 жыл бұрын

Сегодня мы разберёмся с синхронизацией произвольных параметров в Фотоне, и начнём делать карту для игры.Ссылка на первое видео: • 🌐 Онлайн игра: полный ...
Это второе видео из серии про создание онлайн игры. В этих видео я буду пошагово создавать игру в Unity 3D с использованием Photon Unity Networking (PUN), и подробно показывать и рассказывать всё что я делаю. Фокус сделаю всё таки на мультиплеере, так что если у вас есть даже базовые навыки программирования на C# в Unity, и вы хотите разобраться в тонкостях онлайна и мультиплеера, то эти видео для вас
Игра которую мы будем делать в процессе этих видео будет чем-то в стиле .io игр, с простым управлением и идеей. В ней будет стандартный matchmaking из Фотона, и не будет никакого сложного мета-геймплея (уровней, предметов, валюты)
Содержание:
Синхронизация параметров - 0:32
Пересылка произвольных типов - 6:11
Начинаем создавать карту - 12:23
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

Пікірлер: 61
@rezist8746
@rezist8746 5 жыл бұрын
самый подробный туториал в рунете, Лайк и подписка
@tubixpvp4659
@tubixpvp4659 4 жыл бұрын
Может всё таки в ютубе?
@alicewithalex
@alicewithalex 5 жыл бұрын
Спасибо, очень понятно) Жду продолжения и новых видео)
@valeronik_vlr
@valeronik_vlr 5 жыл бұрын
Годнота! Лайк глядя)
@evgeniyrakov4598
@evgeniyrakov4598 5 жыл бұрын
Ждал эту часть урока. Спасибо, автор! И очень жду следующую)))
@acap-cf6pz
@acap-cf6pz 4 жыл бұрын
Спасибо за збс туториал, и за обьяснения того как передать обьект по байтах. =) Я пройдусь и пролайкаю все видоcы на твоем канале Огроменный + в карму!
@oooooooooooooooooooooooooook
@oooooooooooooooooooooooooook 5 жыл бұрын
Отличное видео.Продолжай в том же духе! Лайк
@user-ef4yx3mu2q
@user-ef4yx3mu2q 4 жыл бұрын
Прикольно смотреть как профессионалы прогают. У меня в юнити по десять минут уходит только на то, чтобы назвать переменную и решить, что лучше паблик ее сделать или сериализованную с геттерами. А тут всю игру за пол часа закончили. Лайк и подписка.
@maksimchibisov6164
@maksimchibisov6164 Жыл бұрын
Отличное видео, спасибо)
@josefsmakal3719
@josefsmakal3719 2 жыл бұрын
3rd time this video has been recommended to me lol, I don’t speak or understand what I think is Russian
@projectmarka2539
@projectmarka2539 3 жыл бұрын
Странно 3й раз переписываю, про смену красного цвета работает, про разворот нет
@OverLord20121
@OverLord20121 4 жыл бұрын
Здесь, кстати баг есть, если блоки были сломаны и подключился новый игрок, то сломанные блоки у него будут целыми
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Да, там пока только для двоих, когда они одновременно начинают работает, в 6 части это доделано
@RedIlEye
@RedIlEye 5 жыл бұрын
Классные уроки! А анимацию делать дальше будешь?
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
Спасибо! Анимацию в смысле в этой игре или из какого-то другого урока?
@RedIlEye
@RedIlEye 5 жыл бұрын
@@EmeraldPowder Хотелось бы узнать именно в онлайне. Просто, когда я делаю анимацию для персонажа ,то он перестает двигаться. Добавлял animation view, переставлял в preserved components ,но ничего не работает.
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
​@@RedIlEye Animation View должен по идее либо синхронизировать переменные аниматора, либо ещё и текущий фрейм, чтобы у всех одинаково выглядело, в фотоне я его ещё не использовал А раз перестаёт двигаться - возможно в самой анимации установлены ключевые кадры для position объекта? Что фотон его двигает вроде как, а аниматор потом обратно как в анимации задано. Если так то можно ещё один объект внутри создать и на него повесить аниматор, а двигать родительский
@RedIlEye
@RedIlEye 5 жыл бұрын
@@EmeraldPowder Да, теперь все работает. Большое спасибо! Жду следующих уроков
@alicewithalex
@alicewithalex 5 жыл бұрын
А то, что мы выставляем SetActive(false) у ячейки при спавне персонажа - это не нужно синхронизировать? Я не очень понял, как у обоих клиентов блоки убирались без синхронизации. Может туплю сильно, не объяснишь?)
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
Отдельно это мы никак не синхронизируем. Когда игрок заходит в комнату, он генерит рандомную позицию и спавнит в ней объект персонажа (В GameManager) через Photon.Instantiate. Этот Instantiate уже автоматом рассылает сообщение с типом объекта и его положением, так что объект персонажа создастся на всех клиентах в одном и том же месте. Когда создастся у него (опять же на каждом клиенте) вызовется Start, и там он дернет MapController, а то выколет блок по положению персонажа, которое уже Фотоном синхронизировано Я тоже не с первого раза к такому пришёл, вроде когда пытаешься продумать как это будет слаться по сети всё звучит просто (при спауне - координаты, каждую секунду - направление, и всё). А когда всё это в коде реализовывать начинаешь то вот в таких цепочках порой теряешься)
@alicewithalex
@alicewithalex 5 жыл бұрын
@@EmeraldPowder, спасибо большое за ответ)
@zettazed468
@zettazed468 4 жыл бұрын
Привет, очень нужна твоя помощь, как синхронизировать: Вот есть объект, он включается по нажатию на клавишу, как сделать так, чтобы у другого игрока объект тоже включался? SendNext(object.activeInHirrarchy); object.activeInHierarchy = (bool) ReciveNext(); ????
@tankix7975
@tankix7975 2 жыл бұрын
Так просто накинь на этот объект PhotonView
@MercyMainerSha
@MercyMainerSha 2 жыл бұрын
зачем геткомпонент, он же не нужен?
@vg-vovagatova289
@vg-vovagatova289 2 жыл бұрын
Привет помоги я сделал оружие (3д игра) и сделал так чтобы вылетела пуля игроки видят оружие а как вылетает пуля нет вообще пулю не видят только один игрок стоит photon view и photon translation может надо что то сделать у меня пуля создаётся в пушке и скрипт даёт ей энерцию
@evgeniyrakov4598
@evgeniyrakov4598 4 жыл бұрын
Привет! Есть вопрос, над которым коптюсь много-много времени. Работаю над простеньким риалтайм сражением (2 персонажа). Синхронизируются повороты и позиции. Уже через минуту начинаются лаги и со временем очень ситуация усугубляется. Есть какие-то идеи, что с этим делать? Пробовал использовать стандартные скрипты, также писал свой кастомный - результат одинаковый. Буду благодарен за хоть какую-то подсказку :)
@backrussia8486
@backrussia8486 4 жыл бұрын
получилось решить проблему?
@firstit57
@firstit57 3 жыл бұрын
@@backrussia8486 я не понял что за лаги, но если лаги в передачи позиции то я вместо photon transform view использовал photon transform view classic потыкал там и потом персонажи нормально передовали своё положение
@backrussia8486
@backrussia8486 3 жыл бұрын
@@firstit57 спасибо, запишу себе на будущее
@user-ml5tn8qn8j
@user-ml5tn8qn8j Жыл бұрын
Вопрос: почему просто не отрабатывает OnPhotonSerializeView В отладке и через дебаг он просто не заходит в него никогда В списке компоненотов в PhotonView он висит
@user-fh3wg8oj6q
@user-fh3wg8oj6q 4 жыл бұрын
тратить 8 байт на поворот это довольно расточительно... и тут я умер, т.к. на курсач делаю 3Д игрульку поставленную на физических движениях и коллизиях
@mouth430
@mouth430 4 жыл бұрын
Помогите, у меня выскакивает ошибка типа:InvalidCastException: Specified cast is not valid. Character.OnPhotonSerializeView (Photon.Pun.PhotonStream stream, Photon.Pun.PhotonMessageInfo info) (at Assets/Scripts/Character/Character.cs:35).... Код точно такой же что и у тебя но почему то выдает эту ошибку, я пытался с этим разобраться но уж совсем не получается, дайте какого совета.
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
А какой код в Character.cs на 35 строчке? Похоже что пытаешься преобразовать объект к типу, которым он не является
@tercat-games4308
@tercat-games4308 3 жыл бұрын
А как сделать так, чтобы игроки друг в друге не спавнились?
@dooblix3162
@dooblix3162 2 жыл бұрын
Мб добавить два коллайдера и проверять методом EnterCollision2d, хотя не уверен что это будет работать без передачи каких-то переменных
@dimasource8414
@dimasource8414 4 жыл бұрын
У меня не хочет работать передача цвета . Подскажите пожалуйста что мне делать?
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Написать свои функции сериализации/десериализации, так же как я делал с Vector2Int, для типа Color
@dimasource8414
@dimasource8414 4 жыл бұрын
@@EmeraldPowder Я уже решил проблему, у вас в начале видео в строке If (!photonView.IsMine) есть знак восклицания, а после он пропадает и ввел меня в замешательство.
@GrandMax13
@GrandMax13 5 жыл бұрын
А почему именно PUN почему не BOLT
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
Выбирал между ними, но тут несколько причин решили. Во-первых там меньше всяких супер high level возможностей, и везде можно показать где какие байты летят по сети, а мне хотелось про это рассказать. Во-вторых - игра задумывалась как мобильная, так что всякие возможности PUN'a, переходящий от игрока к игроку "мастер клиент", прямо полная пересылка пакетов через их сервер, для плохого интернета подходят лучше. Ну и в-третьих его, насколько я понял, проще подключить к какой-нибудь авторизации или PlayFab, что тоже может пригодиться Хотя у болта я так понял куда больше возможностей и преимуществ, так что конечно надо почитать прежде чем самому выбрать, вот их официальное сравнение doc.photonengine.com/en-us/pun/current/reference/pun-vs-bolt
@rycun5147
@rycun5147 Жыл бұрын
Люди, как синхронизировать здоровье? Я просто не понимаю как это сделать. Буду очень благодарен за помощь
@GrandMax13
@GrandMax13 5 жыл бұрын
А как уменьшить задержку? Поменять PhotonNetwork.sendRate(), или есть еще способа?
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
С этим он будет чаще отправлять данные, т.к. обычно они копятся и отправляются одним пакетом несколько раз в секунду. То есть чем чаще тем меньше будет ощущаться задержка, но меньше чем 100-200 мс, которые занимает передача между двумя клиентами достичь никак не получится
@GrandMax13
@GrandMax13 5 жыл бұрын
@@EmeraldPowder Спасибо!
@DarkIllusoire
@DarkIllusoire 5 жыл бұрын
Легко, переехать поближе к серверам фотона
@GrandMax13
@GrandMax13 5 жыл бұрын
это не решит проблему
@BOGZOERT
@BOGZOERT 5 жыл бұрын
@@GrandMax13 от части решит, а если ещё продавать игру только на территории близлежащей у серверов то вообще будет найс)
@user-vr9ij6zq8e
@user-vr9ij6zq8e 3 жыл бұрын
Странно, у меня int идёт только от хоста к клиенту, а обратно ни в какую
@dooblix3162
@dooblix3162 2 жыл бұрын
У меня кстати тоже самое, у хоста сервера если что-то менять, то и у подключенных меняется, а в обратку не работает, хотелось бы узнать как исправить. Ты случайно за 6 месяцев не пофиксил?)
@goosesuka
@goosesuka 3 жыл бұрын
я одно не пойму что быстрей он код пишет или он говорит через месяц два вернусь рановато еще сюда заходить :D
@hoyhevmiio
@hoyhevmiio 3 жыл бұрын
2 месяца прошло :)
@Toki-
@Toki- Жыл бұрын
прошёл год, вернулся?)
@goosesuka
@goosesuka Жыл бұрын
@@Toki- не я увлёкся 3д моделированием cdn.discordapp.com/attachments/1005545246949646417/1006569800648114226/unknown.png
@Toki-
@Toki- Жыл бұрын
@@goosesuka Вдохновился симулятор козла?)
@Kostya_bro
@Kostya_bro 2 жыл бұрын
У меня не работает. Я делаю огромный проэкт. А У МЕНЯ НЕ РАБОТАЕТ public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if (stream.IsWriting) { stream.SendNext (winedname); } else { winedname = (string) stream.ReceiveNext(); } } Я СОВАЛ КОМПОНЕНТ В PhotonView
Загрузочный экран и смена сцен в Unity 3D
20:59
Survival skills: A great idea with duct tape #survival #lifehacks #camping
00:27
Became invisible for one day!  #funny #wednesday #memes
00:25
Watch Me
Рет қаралды 30 МЛН
Luck Decides My Future Again 🍀🍀🍀 #katebrush #shorts
00:19
Kate Brush
Рет қаралды 8 МЛН
Heartwarming: Stranger Saves Puppy from Hot Car #shorts
00:22
Fabiosa Best Lifehacks
Рет қаралды 15 МЛН
⚡ Всё про события в Unity 3D
21:38
Emerald Powder
Рет қаралды 102 М.
What happens if you put portal in a portal? Explanation
24:00
optozorax
Рет қаралды 1 МЛН
Все СЕКРЕТЫ графики за 30 лет развития
20:23
Роман Сакутин
Рет қаралды 35 М.
Unity 3D Mouse Input Rotation (In 2 Minutes!!)
1:29
Royal Skies
Рет қаралды 97 М.
Survival skills: A great idea with duct tape #survival #lifehacks #camping
00:27