Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Unity -- учим вместе | страница 12
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 12 из 18
На страницу: Пред.  1, 2, 3 ... 11, 12, 13 ... 16, 17, 18  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Unity -- учим вместе»
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Jurec :
а, я думал они все постоянно в движении

Нет. Есть пара розеток. Взяли провод за одну вилку, дотащили, подключили, взяли за другую, дотащили, подключили. Всё. Пока его никто не трогает (в т.ч. другой провод, падающий предмет и т.д.) - он лежит. Просто он должен лежать так, как положили, особенно после загрузки. Если, конечно, плясать не будет. А после загрузки скорее всего будет - физика после инициализации любит какие-нибудь силы ни с того, ни с сего генерировать.
Olorin :
Чем BinarySerializer плох?..

Ничем. Не пробовал. Бинарник текстовым редактором не посмотришь и не поправишь. Не то, чтобы это было нужно, просто удобно.
Но ок, почему бы и нет? Спасибо.
Olorin :
Выхлоп должен быть компактнее xml-я, но он пишет полные имена типов, ибо универсальный. При желании, на них можно бы сэкономить.

После сжатия ИМХО примерно один фиг. Пошерстил лицензию - gzip вроде как можно спокойно в коммерческих продуктах пользовать.
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 13:37 18-11-2013   
Olorin
 70 EGP


Рейтинг канала: 1(6)
Репутация: 12
Сообщения: 97
Откуда: Хьёрвард
Зарегистрирован: 27.02.2006
Guest :

Olorin :
Выхлоп должен быть компактнее xml-я, но он пишет полные имена типов, ибо универсальный. При желании, на них можно бы сэкономить.

После сжатия ИМХО примерно один фиг. Пошерстил лицензию - gzip вроде как можно спокойно в коммерческих продуктах пользовать.

System.IO.Compression.GZipStream Подмигиваю
Но не по сети же.. ))
1. Если изменения точечные - мб именно инфу о изменениях юзера передавать.. с периодической глобальной синхронизацией.
2. Из физики делать выжимку изменений. И эту выжимку передавать, применяя прямо к сцене у остальных игроков.
3. Если оно централизованное, и изменений на сцене в единицу времени мало, то вообще лафа: пусть за всю анимацию отвечает сервер, а остальные ему только командуют, как менять сцену извне.
_________________
Мы на многое не отваживаемся не потому что оно трудно; оно трудно именно потому, что мы на него не отваживаемся.
Сенека Старший
    Добавлено: 13:54 18-11-2013   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Olorin :
Но не по сети же.. ))
1. Если изменения точечные - мб именно инфу о изменениях юзера передавать.. с периодической глобальной синхронизацией.
2. Из физики делать выжимку изменений. И эту выжимку передавать, применяя прямо к сцене у остальных игроков.
3. Если оно централизованное, и изменений на сцене в единицу времени мало, то вообще лафа: пусть за всю анимацию отвечает сервер, а остальные ему только командуют, как менять сцену извне.

Да, по сети - согласен. Не в реалтайме же жать... Хотя сейчас и не такое можно Улыбка
1-3. Централизованное.
Например, сценарий: игрок1 работает, игрок2 страдает фигнёй Улыбка
Игрок2 заказал солярку, кабели, тройник и, скажем, генератор кислорода. Этот запрос ушёл на сервер, генерация префабов объектов со всеми их коллайдерами, апдейт клиентам - создание префабов объектов у них (в дальнейшем эти префабы будут получать инфу о своём состоянии с сервера), апдейты движения (десантирования с орбиты и разворачивания. Да-да, всё сложно Гы-гы ) - ну, допустим, там всего лишь координаты, вроде ничего страшного, но в реалтайме. Опять же - практически односторонняя передача, т.к. симуляция вся на сервере.
Игрок1 хватает кабель и тащщыт его к солярке. И вот тут наступают грабли. Во-первых, инициализатором изменения выступает клиент игрока1. Причём контрольный поинт префаба за него закреплён не жёстко, чтобы вырываться из руки, если не хватит длины. Но для простоты работы мы передаём на сервер только положение и вращение персонажа игрока. Во-вторых - это пересчёт всего провода на основе данных смещения и вращения руки персонажа игрока и взаимодействия с физикой всего остального мира (в том числе с тушкой персонажа второго игрока). И вот тут нас поджидает лаг, который физика ой как не любит...
Насчёт количества изменений в единицу времени - вот эти вот пляски физики во время таскания и задевания за предметы обновляются считай каждый апдейт физики, то бишь довольно часто (где-то 15-20 раз в секунду надо, иначе большой шаг = большая накопленная ошибка = физдипец с летающими макаронами). Перемещения персонажа вообще по-хорошему каждый апдейт надо. Остальное обновляется намного реже.
Я не знаю, насколько адекватно будет реагировать клиент, если он будет жить на предсказаниях, периодически синхронизируемых с сервером. Как бы оно не стало спазматически-судорожным.
С другой стороны, если физику имитировать на клиентах - она всенепременно будет расходиться у всех клиентов на фиг.
_________________
Трещит земля как пустой орех
Как щепка трещит броня

Последний раз редактировалось: Guest (14:28 18-11-2013), всего редактировалось 1 раз
    Добавлено: 14:25 18-11-2013   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
Olorin :
Чем BinarySerializer плох?
Это ужасная штука, она для чего-то в стрим засовывает все имена снятые рефлекшном, гораздо дешевле иметь на обоих концах сети заранее известный набор пакетов и не передавать кажный раз инфу о структуре данных, тока сами данные

_________________
This is what you get ...
(c) Radiohead
    Добавлено: 14:27 18-11-2013   
Olorin
 70 EGP


Рейтинг канала: 1(6)
Репутация: 12
Сообщения: 97
Откуда: Хьёрвард
Зарегистрирован: 27.02.2006
Guest :

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

Из полагающихся на мелкие пакеты - Quake, CS, Freelancer.. играбельны.))
Из более тяжелого, стратегии какие-нибудь, обычно используют комбинацию - в реалтайме передается дельта, плюс периодически полная синхронизация.
Пробовать надо.


Sh.Tac. :
Olorin :
Чем BinarySerializer плох?
Это ужасная штука, она для чего-то в стрим засовывает все имена снятые рефлекшном, гораздо дешевле иметь на обоих концах сети заранее известный набор пакетов и не передавать кажный раз инфу о структуре данных, тока сами данные

Olorin :

.., но он пишет полные имена типов, ибо универсальный. При желании, на них можно бы сэкономить.

Инфу о структуре он не передает. Он передаёт поток внутренних перекрёстных ссылок экземпляров, в который разложен граф объектов. Когда граф восстанавливается, информация о структуре берётся из типов, которые ресолвятся по этим именам из потока. Если быть более точным, она даже не нужна, он воссоздает экземпляр того типа, на который отматчилось имя из потока, после чего друг за другом читает из потока значения для полей этого экземпляра и пытается назначить в подряд идущие поля. Если полей больше, чем значений, - значит локально имеем тип более поздней версии, чем сериализованный. Если меньше или не совпали тип значения и поля - ексцепшон. Примерно так. Как удалённые поля обрабатываются - не помню.

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

Эффективнее будет только вручную для каждого типа написать сериализацию и десериализацию. Но на этапе разработке имхо на это лучше забить. Потом, когда протокол в терминах типов устоится.
_________________
Мы на многое не отваживаемся не потому что оно трудно; оно трудно именно потому, что мы на него не отваживаемся.
Сенека Старший
    Добавлено: 14:57 18-11-2013   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Olorin :
стратегии какие-нибудь, обычно используют комбинацию - в реалтайме передается дельта, плюс периодически полная синхронизация.


Просто дельта, стратегии полностью ничего не синхронизируют - это очень дорого
_________________
MOV topka, C++
    Добавлено: 15:07 18-11-2013   
Olorin
 70 EGP


Рейтинг канала: 1(6)
Репутация: 12
Сообщения: 97
Откуда: Хьёрвард
Зарегистрирован: 27.02.2006
Jurec :
Olorin :
стратегии какие-нибудь, обычно используют комбинацию - в реалтайме передается дельта, плюс периодически полная синхронизация.


Просто дельта, стратегии полностью ничего не синхронизируют - это очень дорого

Естественно, не тотально глобальное состояние. Улыбка Но, к примеру, полностью фрагмент карты со всем, что в него попало, - да.
Если дельта передается по протоколу без гарантии факта и/или порядка доставки пакетов - без синхронизации никак.

Хотя еслиб Dune2000 умела синхронизировать глобальное состояние - это пошло бы на пользу. Обрывы сетевой игры с сообщением "Потеря синхронизации" весьма и весьма доставляли. Гы-гы В её случае, движок изначально на мультиплеер рассчитан небыл, его докручивали сбоку, от того видимо так и получилось. Улыбка
_________________
Мы на многое не отваживаемся не потому что оно трудно; оно трудно именно потому, что мы на него не отваживаемся.
Сенека Старший

Последний раз редактировалось: Olorin (15:37 18-11-2013), всего редактировалось 2 раз(а)
    Добавлено: 15:15 18-11-2013   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Olorin :
Если дельта передается по протоколу без гарантии факта и/или порядка доставки пакетов - без синхронизации никак.


Нее, только TCP.

Глобальное состояние в стратегиях не передает никто. Именно поэтому во всех RTS надо ждать пока все присоединяться, нельзя зайти в середине игры. И сплошной ад у разрабов на синхронизацию.
_________________
MOV topka, C++
    Добавлено: 18:00 18-11-2013   
Olorin
 70 EGP


Рейтинг канала: 1(6)
Репутация: 12
Сообщения: 97
Откуда: Хьёрвард
Зарегистрирован: 27.02.2006
Jurec :
Olorin :
Если дельта передается по протоколу без гарантии факта и/или порядка доставки пакетов - без синхронизации никак.


Нее, только TCP.

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

Это сейчас сетки стали достаточно шустрые, чтоб по TCP можно было стратежить в реалтайме. В бородатые IPX юзали вовсю.)
Некоторые из тех игр можно попробовать с инкапсуляцией в UDP (см. ipxwrapper).
А так да.)

_________________
Мы на многое не отваживаемся не потому что оно трудно; оно трудно именно потому, что мы на него не отваживаемся.
Сенека Старший

Последний раз редактировалось: Olorin (23:49 18-11-2013), всего редактировалось 1 раз
    Добавлено: 23:48 18-11-2013   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
вроде бы не самый плохой блог про юнити
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 14:48 19-12-2013   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
Эм... Где почитать.. В Вебе платформе можно сокетами пользоваться? (TCP и UDP)
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 18:18 19-12-2013   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
можно, если сетевая часть на шарпе, как напрямую в скрипты совать, так и в dll
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 19:09 19-12-2013   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
Sh.Tac. :
можно, если сетевая часть на шарпе, как напрямую в скрипты совать, так и в dll
Ок. А где почитать про ограничения? Точно знаю что unsafe запрещен. Я это ограничение снимал для своего бота для BSGO, а еще что?..
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 00:42 20-12-2013   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
unsafe в скриптах низзя, в dll пожалста
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 00:51 20-12-2013   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
Sh.Tac. :
unsafe в скриптах низзя, в dll пожалста
А dll можно в веб?..

добавлено спустя 17 секунд:
Вернее можно. Это понятно, но как доставить-то?..
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (00:55 20-12-2013), всего редактировалось 1 раз
    Добавлено: 00:55 20-12-2013   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
тама папка Plugins должна быть вроде, оттуда цепляется

добавлено спустя 25 минут:
не, кажись наврал, для веб плейера можно тупо в Assets бросить
_________________
This is what you get ...
(c) Radiohead

Последний раз редактировалось: Sh.Tac. (01:25 20-12-2013), всего редактировалось 1 раз
    Добавлено: 01:25 20-12-2013   
Gladius
 52 EGP


Рейтинг канала: 1(9)
Репутация: 0
Сообщения: 124
Откуда: Санкт-Петербург
Зарегистрирован: 18.12.2007
Уважаемые коллеги, пробовал ли кто-нибудь вот эту штуку:

http://www.youtube.com/watch?v=2QnH3-9boUg

И если кто-то пробовал, то каковы впечатления?
_________________
Спасибо за внимание.
    Добавлено: 19:31 14-10-2014   
sedoy
 333 EGP


Рейтинг канала: 1(2)
Репутация: 65
Сообщения: 1057
Откуда: красноярск
Зарегистрирован: 25.07.2002
кто пробовал бету 4.6 ?
там какой-то демонский UI конструктор прикручен Улыбка

http://www.youtube.com/watch?v=EOX6itCuKOc

Последний раз редактировалось: sedoy (19:00 24-10-2014), всего редактировалось 1 раз
    Добавлено: 18:59 24-10-2014   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
хорошая презентация, я кажись понял чего это за "ромашка" в UE такая же Улыбка
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 20:49 24-10-2014   
Dalarsar
 65 EGP


Рейтинг канала: 1(3)
Репутация: 5
Сообщения: 93
Откуда: Челябинск
Зарегистрирован: 25.09.2011
Можно задать сюда вопрос по C#?
У меня массив под строкой "Enemy" переполняется, хотя массив "Player" точно такой-же, и работает нормально.

 Cкрытый текст   (кликните здесь для просмотра)

Код:
using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour {

   private Vector3 newPosition;

   public Enemy e;
   public Player p;

   void Update ()
       {
      
         if (Input.GetMouseButtonDown(0)) //если левый клик мыши,
         {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if(Physics.Raycast(ray, out hit, 100))
            {
            newPosition = new Vector3(Random.Range(-8f, 8f), Random.Range(-5f, 5f));//обновляем позицию

            hit.transform.position = newPosition;

            if(hit.transform.tag == "Player")//если щелкам по обьекту с тэгом плэер
            {
               ChangeColor("Player");
            }

            if(hit.transform.tag == "Enemy")
            {
               ChangeColor("Enemy");
            }

            }
         }
      }

   void ChangeColor(string objString)
   {
      if(objString == "Enemy")//почему-то массив здесь переполняется
      {
           int newCol = Random.Range(0, e.GetComponent<Enemy>().col.Length);
      
          e.renderer.material.color = e.GetComponent<Enemy>().col[newCol];
      }
      if(objString == "Player");
      {
         int newCol = Random.Range(0, p.GetComponent<Player>().col.Length);

         p.renderer.material.color = p.GetComponent<Player>().col[newCol];

      }
   
   
   }
}

    Добавлено: 17:49 26-10-2014   
Канал Игры Мечты: «Unity -- учим вместе»
На страницу: Пред.  1, 2, 3 ... 11, 12, 13 ... 16, 17, 18  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: На самом деле всё просто - закон Мэрфи перестает действовать тогда, когда вступает в силу закон равнобедренного бутерброда... (R_Alexis)

  » Unity -- учим вместе | страница 12
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18