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

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

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

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


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10521
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Просмотрел планы на конференцию предстоящую. Невооружённым глазом как-то не видно ECS.

Sh.Tac. :
зачем?

Чтобы быть в теме предметной области контекста Unity.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 15:03 15-06-2018   
Sh.Tac.
 151 EGP


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

Зарегистрирован: 27.07.2005
пожалуй поясню чего я так вдруг за ECS Улыбка

в игровой механике ООП приводит к нескольким негативным вещам:
- все иерархии искусственны потому как отношение "является" (is A) крайне сильно, например получилось что заградительные аэростаты это наземные модели хоть они и в воздухе, буи это корабли т.к. тоже умеют плавать, сами корабли так же наземные модели, ну не летают же
- вся функциональность норовит сместиться в базовый класс непомерно его раздувая
- код сильно зацеплен, правя что-то в одном месте можно поломать сразу в трёх, из-за этого удерживать "реакцию" на грани управляемой цепной требует усилий
- код исполняется неэффективно, любая виртуальная функция это автоматически кэш-промах, любая раздутая структура из которой нужно лишь несколько полей это сразу много кэш-промахов, указатели которыми связаны классы туда же
_________________
This is what you get ...
(c) Radiohead

Последний раз редактировалось: Sh.Tac. (12:30 16-06-2018), всего редактировалось 1 раз
    Добавлено: 12:26 16-06-2018   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10521
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Sh.Tac. :
пожалуй поясню чего я так вдруг за ECS

Ну, я как бы тоже за ECS и остальной пакет ништяков. Например, мне уже лет 10 назад не нравились однопоточные cyclic-executive приложения. Но проблема в том, что ECS это experimental package. Если бы он вышел в релиз пару лет назад, то я бы даже не сомневался в выборе.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (23:54 16-06-2018), всего редактировалось 1 раз
    Добавлено: 23:51 16-06-2018   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Minx :
А оно сейчас как experimental package .. is not production ready?

да, пока не стоит в проде использовать. желательно в hybrid mode. просто потому что ECS пока не дружит с редактором (только базовый просмотрщик есть)

Sh.Tac. :
в рамках нового здравого подхода переписывать нужно практически все подсистемы, некоторые из которых не самые тривиальные, UI, сеть, физика, да и рендер тоже

в процессе

Minx :
Так вопрос - стоит ли изучать легаси и когда эксперимент перестанет быть таковым?

Это еще не легаси. Так что изучать стоит я думаю. Хотя там изучать то и нечего - все просто.

Sh.Tac. :
ECS может использовать прежние GameObject'ы как реализацию компонента
GameObject наследует от MonoBehaviour

Это вот и есть hybrid mode, он далеко не такой производительный как чистый ECS, но лучше чем то что было до ECS
_________________
MOV topka, C++
    Добавлено: 14:48 17-06-2018   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10521
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Есть оказывается с десяток курсов на Coursera, связанных с Unity. Не обязательно gamedev, но и он тоже.

Есть даже специализация Unity. Но вроде за деньги, или неделя триала.

Полгода назад ещё рассматривал варианты на itvdn, там подписка.

Подборка курсов от IGN на тему, среди которых и Unity.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (19:40 24-06-2018), всего редактировалось 2 раз(а)
    Добавлено: 19:11 24-06-2018   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10521
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Прошёл курс Introduction to Game Development на Coursera.

Ушло на него где-то часов 12-15. У не-программиста и без опыта Unity должно быть побольше, но не намного. Если опыт Unity есть, то вероятно будет скучно.

Все материалы доступны забесплатно, за $ только возможность сдать тесты и получить диплом.

По содержанию хорошо подойдёт для изучения Unity с нуля, а также начинающим в геймдеве.

В отличие от других и то, что понравилось:
- все что внутри качественно, ненапряжно и воспроизводимо;
- английский простой и чёткий, но может быстрый;
- идёт базовое концептуальное изложение сути вещей (а не так, что "тык, я тут пык, смотрите как оно, вау!, у нас охренительная игра, .." )
- демонстритует использование стандартных наборов, как можно быстро из них собирать прототипы;
- приучивание к "философии Unity" - параметризация, сборка как конструктор, компоненты и пр.
- затрагивание базовых best practice.

Чтобы пройти опыта программирования не нужно, вообще. В курсе даются готовые скрипты, которые потом описываются, и далее по желанию можно с ними поиграться. Под капотом сборка эмуляции солнечной системы и пары игрушек (где-то таких).

Лично мне помогло восстановить то, с чем возился полгода назад и понять ряд базовых вещей.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 11:27 03-07-2018   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Засмотрел видео про суть ECS, с примерами.
Не оставляет ощущение, что Юнити пришли к тому, что я делал, когда писал игры на конкурсы. У меня было полное отдеделние данных от методов из обработки. И тут в демке натыкаюсь на пример, как теперь нужно хранить transformation и rotation как поля в struct и обрабатывать их из другого объекта, то бишь в System...
Странные чуЙства - то, что ты делал десять лет назад, теперь получается передовой технологией? Хы...
_________________
У меня бисера не доxеpа.

Последний раз редактировалось: Shirson (06:26 24-09-2018), всего редактировалось 1 раз
    Добавлено: 03:40 24-09-2018   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
Ширсон, я тебе открою страшную весч... Все новое - хорошо забытое старое.

Я вообще в последнее время думаю что мир IT сошел с ума, после того как туда пришли потребители смузи.

Вообще я Перловик, когда прочел про DI, я ржал в голос. До сих пор не понимаю зачем они паттерн Factory переименовали. Судя по названию - это должен был быть аналог перлового "push в ISA" (задание родителей на этапе рантаймовой инициализации). А в результате костыли и велосипеды...

Насчет ECS - первый вариант ECS (прообраз) был... в Ultima Online, внезапно.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 05:17 24-09-2018   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Устойчивое (навязчивое) ощущение, что для Unity это будет... если не губительно, то сильно не в лучшую сторону. IMHO.
_________________
У меня бисера не доxеpа.
    Добавлено: 06:27 24-09-2018   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Shirson :
Устойчивое (навязчивое) ощущение, что для Unity это будет... если не губительно, то сильно не в лучшую сторону. IMHO.

Это сильно поднимет планку сложности разработки, конечно. Но все это ради самого главного - производительности. Подготовил данные, прошелся по ним с минимальными затратами на чтение ненужного.
Скоро будет новая демка ECS, поймете о чем я говорю
_________________
MOV topka, C++
    Добавлено: 15:55 24-09-2018   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Да я то как раз понимаю, учитывая что у себя я сам это всё на пузе прополз от и до - я эту систему сам для себя и придумал. Плюшки этой схемы мне понятны целиком и полностью, как и её минусы. А минусы это как раз сложность разработки и её длительность.
Сейчас начал смотреть обучалки по Юнити - куча вещей, которые приходилось самому кодить, в Юнити работают просто линковкой нужного объекта к нужному объекту. Гениально! Быстро, просто, надёжно. Просто бери и делай.
А вот с ECS будет не так просто всё и сильно в разрез с тем, к чему народ привык. Надеюсь, старую систему они тоже оставят (да, hybrid mode, все дела), иначе беда будет.
_________________
У меня бисера не доxеpа.

Последний раз редактировалось: Shirson (17:12 24-09-2018), всего редактировалось 1 раз
    Добавлено: 17:11 24-09-2018   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Старая останется, конечно. Но медленно ECS будет заменять все что есть сейчас, такая идея. MonoBehaviour и ООП - это сильно большой оверхед
_________________
MOV topka, C++
    Добавлено: 17:56 24-09-2018   
Sh.Tac.
 151 EGP


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

Зарегистрирован: 27.07.2005
Shirson :
что ты делал десять лет назад, теперь получается передовой технологией?
оно передовое потому что ECS органично переплетено с DOD посредством Burst compiler
сейчас в CPU полно длинных регистров (SSE/AVX) и никто их толком не использует
плюшки от SIMD в вычислениях много больше чем от многопоточки той же

добавлено спустя 12 минут:
и такое положение дел сложилось благодаря упоротости Intel как ни странно, читал сей блог и проникался Улыбка
https://pharr.org/matt/blog/2018/04/30/ispc-all.html
_________________
This is what you get ...
(c) Radiohead

Последний раз редактировалось: Sh.Tac. (23:02 24-09-2018), всего редактировалось 2 раз(а)
    Добавлено: 23:01 24-09-2018   
Jurec
 348 EGP


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

потом JobSystem сделал использование многопоточности намного проще. посмотри на threadripper, там очень большой буст будет от многопоточности, куда больший чем просто от simd.

а burst это не только векторизация (simd'ификация). векторизацию на самом деле много где используется - llvm на -O3 сам умеет векторизировать код довольно неплохо.
burst в целом берет сабсет c# кода, без референс типов (никаких строк, динамических массивов и все такое) и с большим кол-вом дополнительных знаний, с гарантией отсутствия aliasing'а (самая серьезная проблема которую решает burst, по факту) - передает все это в llvm, который уже может автовекторизировать и делать другие оптимизации намного круче чем даже с++
_________________
MOV topka, C++
    Добавлено: 23:40 24-09-2018   
Sh.Tac.
 151 EGP


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

Зарегистрирован: 27.07.2005
Jurec :
в первую очередь организация данных в памяти
в первую безусловно,
но как оно полезет в регистр тоже важно, я когда увидел interleaving тогда всё встало на свои места, так я не особо втыкал, ну клади всё в линейный массив, делов-то
Цитата:
burst это не только векторизация (simd'ификация)

да, но в связке с шарпом просто идеально из-за JIT, в том же ispc приходится складировать в объектнике все реализации под разные таргеты
Цитата:
с гарантией отсутствия aliasing'а
ну вот Мэтт просто поленился реализовывать алиасинг у себя Улыбка
а по мне так иммутабельность и RVO уже снижают остроту проблемы

Цитата:
посмотри на threadripper
да, пожалуй надо мне глянуть прежде чем огульно рассуждать
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 02:14 25-09-2018   
Jurec
 348 EGP


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

так когда тебе надо все поля классов класть в массив - это невозможно в ооп. поэтому нужен новый способ дизайна приложений - ecs

Sh.Tac. :
но в связке с шарпом просто идеально из-за JIT

никакого JIT. компиляция происходит через llvm в машинный код (ну на самом деле в llvm ir, но это детали). То есть еще раз - C# компилируется в машинный код во время компиляции burst'ом. это il2cpp 2.0
_________________
MOV topka, C++
    Добавлено: 12:40 25-09-2018   
Sh.Tac.
 151 EGP


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

Зарегистрирован: 27.07.2005
да уж, не угадал ни одной буквы
вот только не понятно Улыбка
 Cкрытый текст   (кликните здесь для просмотра)

по мне так товарищ Jonathan Blow идёт более верным путём
https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 02:46 26-09-2018   
WandererX
 77 EGP


Рейтинг канала: 1(6)
Репутация: 2
Сообщения: 243

Зарегистрирован: 05.12.2007
Есть вопросы по работе с данным в юнити.
Вот например есть астероид, у него соответственно есть общая масса и содержание полезных ресурсов. Где лучше хранить эти данные?
Вопрос второй как к этим данным обращаться? Через GetComponent или вообще напрямую имяскрпита.параметр ?
А самое главное как их в файл сохранения записывать? Я смотрел пару видео на ютубе, там вроде всё просто, но такой подход годится для какой-нибудь PUBG где надо сохранять не так много параметров. А если это старкрафт например, как эти данные в одну кучу собрать или можно всю сцену целиком в файл закинуть?
    Добавлено: 11:24 16-01-2019   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10521
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
При попытке сделать резиновый дизайн столкнулся с некоторыми проблемами после развертывания на устройстве или запуска из сборки. Поиск гуглами как-то результатов не принёс.. Может кто знает.

В интерфейсе Unity при изменении размеров все работает, а после сборки нет.

Есть ортографическая камера, и есть игровое поле 40х30 (т.е. пропорция 4:3 в этом примере). Хочется вписать поле в экран в зависимости от разрешения.

Пробую сделать так:

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

        // Camera adjusting.
        _camera.orthographicSize = Screen.height / 2 / 100.0f;

        Debug.Log("_camera.orthographicSize:" + _camera.orthographicSize);

        Debug.Log("Screen.height:" + Screen.height);
        Debug.Log("Screen.width:" + Screen.width);

        // Field Plane - back of allplane with drag events.
        {
            var t = _fieldPlane.GetComponent<Transform>();
            var l = t.localScale;

            l.y = Screen.height / 100.0f;

            l.x = l.y * Env._instance._fieldWidth / Env._instance._fieldHeight;

            if (l.x > Screen.width / 100.0f)
            {
                float k = l.x / (Screen.width / 100.0f);
                l.x /= k;
                l.y /= k;
            }
            t.localScale = l;
            Debug.Log("t.localScale:" + t.localScale);

            _one_cell_x = l.x / Env._instance._fieldWidth;
            _one_cell_y = l.y / Env._instance._fieldHeight;
            Debug.Log("_one_cell_x:" + _one_cell_x);
            Debug.Log("_one_cell_y:" + _one_cell_y);

            var pos = t.localPosition;
            pos.y = 0;
            pos.x = 0;
            t.localPosition = pos;
        }

_fieldPlane - фоновый компонент, т.е. он должен получиться размером в поле и вписываеым в экран; _one_cell_x, _one_cell_y - это размеры получаемой ячейки.

Код запускается на GameObject сцены, в его методе Start. Настройки камеры:

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

Например, запускаю на iPhone 8:

 Cкрытый текст   (кликните здесь для просмотра)
Код:
_camera.orthographicSize:3.75
Screen.height:750
Screen.width:1334
t.localScale:(10.0, 7.5, 1.0)
_one_cell_x:0.25
_one_cell_y:0.25


Т.о. есть ортографическая камера, её настраиваем по высоте экрана, как по книжке. На телефоне разрешение 1334x750, совпадает с документцией.
Получаем localScale 10х7.5 - т.е. 750 в высоту, 1000 в ширину, должно вписаться по высоте и две полосы без поля от неё по бокам, по (1334 - 1000)/2 слева и справа. Ячейка 0.25, для поля 40х30.

При запуске на телефоне получается, что поле оказывается больше, чем камера. Т.е. камера видит только часть поля. Аналогичное явление наблюдается если запустить сборку под Win.

Может кто-нибудь знает как правильнее настраивать камеру для произвольного разрешения?

Через сутки добавил тжс на форум юнити.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (17:01 27-03-2019), всего редактировалось 3 раз(а)
    Добавлено: 00:37 25-03-2019   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10521
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Исследование принесло некоторые результаты. Это или непонимание работы префабов, или даже глюк движка, или одно из трёх.

Особенность в том, что в реализации выше камера сделана в виде префаба, и заранее инстанцирована в синем объекте на сцену. Для настройки на сцене есть GameObject со скриптом, и код выше запускается в его Start().

"_camera" в коде это ссылка на камеру, которая прописана в поле скрипта и видна в инспекторе:

Код:
[SerializeField] public Camera _camera;


Если перетащить на ссылку (_camera) префаб который оригинальный префаб в директории со всеми префабами, то глюк есть. Если перетащить инстанцированный префаб, то глюка нет.

Т.е. если работа идёт в среде юнити, то изменение оригинального префаба приводит к изменению синей камеры на сцене, если же после развертывания приложения, то изменения инстанцированных объектов не происходит.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 16:46 27-03-2019   
Канал Игры Мечты: «Unity -- учим вместе»
На страницу: Пред.  1, 2, 3 ... 15, 16, 17, 18  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Хоть и интересная игра, но там же уже клан Elite-Games, так что понтов все равно никаких... (Baron De Raven о ЕЖах в онлайн-играх)

  » Unity -- учим вместе | страница 16
Каналы: Новости | 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