[РЕШЕНО]Про стандартную сеть

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

[РЕШЕНО]Про стандартную сеть

Сообщение kitakun 14 ноя 2011, 22:56

Сейчас у меня есть простой скрипт с
Синтаксис:
Используется csharp
Network.InitializeServer(32, listenPort, useNat);
и игрок где перемещение идет через
Синтаксис:
Используется csharp
transform.position += Vector3.right * 4f * Time.deltaTime;

Пробовал ставить network view на reliable delta compresion и observed на Player(transform). В сети все говорят мол кубик передвигается задержками.
Может есть какая то хитрость? Или встроенная сеть в юнити настолько убогая и без фотона(ну или чего то такого) не обойтись?
Последний раз редактировалось kitakun 16 ноя 2011, 17:39, всего редактировалось 1 раз.
Аватара пользователя
kitakun
UNIт
 
Сообщения: 65
Зарегистрирован: 25 июл 2011, 22:11
Откуда: Новосибирск

Re: Про стандартную сеть

Сообщение Левш@ 15 ноя 2011, 00:53

Может есть какая то хитрость?

Надо сглаживать все и вся при создании сетевой игры.
Нужно время чтоб передать и принять по сетке значения, отсюда и рывки.
Новичку создать сетевое приложение будет оч. нелегко, лучше пока отточить навыки программирования на синглах. ;)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Про стандартную сеть

Сообщение kitakun 15 ноя 2011, 14:56

Ну неужели передача позиции и ротации может занимать весь канал передачи? Если использовать
Синтаксис:
Используется csharp
void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
    {
       
        if (stream.isWriting)
        {
            Vector3 pos = transform.position;
            Quaternion rot = transform.localRotation;
            stream.Serialize(ref pos);
            stream.Serialize(ref rot);

        }
        else
        {
            Vector3 pos = Vector3.zero;
            Quaternion rot = Quaternion.identity;
            stream.Serialize(ref pos);
            transform.position = pos;
            stream.Serialize(ref rot);
            transform.rotation = rot;

        }
    }

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

офф топ
Скрытый текст:
А и пытаюсь что-то создавать для друзей и сингл меня не очень интересует...
Аватара пользователя
kitakun
UNIт
 
Сообщения: 65
Зарегистрирован: 25 июл 2011, 22:11
Откуда: Новосибирск

Re: Про стандартную сеть

Сообщение Левш@ 15 ноя 2011, 16:09

Ну неужели передача позиции и ротации может занимать весь канал передачи?

Дело не в канале, дело в задержках.
Попробуйте движение прописать в FixedUpdate и убедитесь что то же движение будет рывками, а ведь там незначительная задержка...
При передаче данных через сетку задержки значительно больше. Идеальных сетей не бывает, а тем более через инет.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Про стандартную сеть

Сообщение gnoblin 15 ноя 2011, 16:16

kitakun писал(а):Ну неужели передача позиции и ротации может занимать весь канал передачи? Если использовать
Синтаксис:
Используется csharp
void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
    {
       
        if (stream.isWriting)
        {
            Vector3 pos = transform.position;
            Quaternion rot = transform.localRotation;
            stream.Serialize(ref pos);
            stream.Serialize(ref rot);

        }
        else
        {
            Vector3 pos = Vector3.zero;
            Quaternion rot = Quaternion.identity;
            stream.Serialize(ref pos);
            transform.position = pos;
            stream.Serialize(ref rot);
            transform.rotation = rot;

        }
    }

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

офф топ
Скрытый текст:
А и пытаюсь что-то создавать для друзей и сингл меня не очень интересует...


Синтаксис:
Используется csharp
Vector3 pos;
Quaternion rot;
void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
    {
       
        if (stream.isWriting)
        {
            pos = transform.position;
            rot = transform.rotation;
            stream.Serialize(ref pos);
            stream.Serialize(ref rot);

        }
        else
        {
            stream.Serialize(ref pos);
            stream.Serialize(ref rot);
        }
    }
void Update()
{
     if(я не управляю этим объектом)
{
     transform.position = Vector3.Lerp(transform.position, pos, 5f*Time.deltaTime);
     transform.rotation = Quaternion.Slerp(transform.rotation, rot, 5f*Time.deltaTime);
}
}
 


+ я бы для передвижения поставил тип синхронизации unreliable
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Про стандартную сеть

Сообщение Kann 15 ноя 2011, 17:03

kitakun писал(а):Может есть какая то хитрость? Или встроенная сеть в юнити настолько убогая и без фотона(ну или чего то такого) не обойтись?

читайте
http://developer.valvesoftware.com/wiki ... working:ru
юнити, предоставляет средства для разработки, но не делает за вас игру...
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06


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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 20