🚀 New Age Facility.
Всем привет! Новый поворот жизни и я снова возвращаюсь к кодингу конкретно на шарпах в Unity и дальнейшему развитию Морпеха.
Так как давно не было особо конкретных новостей, то я бы хотел сделать небольшой обзор текущего состояния, взгляда на будущее развитие и что вообще коммитилось в основной репозиторий.
Всем привет! Новый поворот жизни и я снова возвращаюсь к кодингу конкретно на шарпах в Unity и дальнейшему развитию Морпеха.
Так как давно не было особо конкретных новостей, то я бы хотел сделать небольшой обзор текущего состояния, взгляда на будущее развитие и что вообще коммитилось в основной репозиторий.
🔥3
🔗 https://github.com/scellecs/morpeh
1. В текущем master вы можете наблюдать стабильный Morpeh 2020 года.
2. В develop есть версия с небольшими отличиями, часть из которых сегодня уже неочень актуальна.
3. Вся активная разработка сейчас ведется в ветке 2022-major.
На гитхабе есть Draft PR в котором можно отслеживать коммиты в эту ветку.
1. В текущем master вы можете наблюдать стабильный Morpeh 2020 года.
2. В develop есть версия с небольшими отличиями, часть из которых сегодня уже неочень актуальна.
3. Вся активная разработка сейчас ведется в ветке 2022-major.
На гитхабе есть Draft PR в котором можно отслеживать коммиты в эту ветку.
📚 Обзор новинок.
Кратко поделюсь об изменениях в 2022 версии, что сделано:
1. Installer теперь не sealed и от него можно наследоваться.
2. В системах добавлен шорткат, чтобы не писать this.World.Filter, можно писать просто this.Filter.
3. Добавлен Git Resolver, который позволяет подтягивать зависимые пакеты по гит урл в пакетном менеджере.
4. Улучшения для WorldViewer окна, чтобы можно было видеть несколько миров сразу.
5. Поддержка запуска Морпеха в чистом дотнет окружении без Unity.
6. У глобалов теперь нет NextFrame, только Publish, который публикует событие на следующий кадр как это раньше делал NextFrame. Такое изменение связано с тем, что во всех кодовых базах, что я видел события всегда публиковались связкой Publish+NextFrame.
7. Добавлен метод MigrateTo для сущностей, который позволяет переносить значения компонентов на другую энтити.
8. Добавлен CacheSize аттрибут, который можно вешать на компонент и выбирать стартовый размер кеша.
9. У фильтра исчезло поле Length и к нему на замену пришел метод IsEmpty() и для случаев, когда длина все-таки нужна ленивый метод GetLengthSlow(). Это позволило убрать лишнюю нагрузку из обновления фильтров.
10. Дефайн MORPEH_PROFILING, который позволяет более детально наблюдать в профайлере нагрузку от ецс кода без включение дип-профайлинга.
11. Сущности можно удалять прямым вызовом Dispose.
12. Переработаны архетипы под капотом, чтобы добиться максимальной скорости на обновлении фильтров и миграции энтити между фильтрами.
13. Кеши компонентов теперь можно получить прямо из мира и работать через них. Это альтернативная версия работы с фреймворком, похужую роль раньше выполняли ComponentsBag, но работа с кешами напрямую эффективнее, потому произошла полная замена старого API в этой области.
14. Работа над полной поддержкой работы с Jobs + Burst. В текущем состоянии можно итерироваться, получать компоненты и менять значения в них. Далее планы расширить до полного списка операций с энтити.
15. Для дебага можно подменять логгер Морпеха на свой кастомный.
Кратко поделюсь об изменениях в 2022 версии, что сделано:
1. Installer теперь не sealed и от него можно наследоваться.
2. В системах добавлен шорткат, чтобы не писать this.World.Filter, можно писать просто this.Filter.
3. Добавлен Git Resolver, который позволяет подтягивать зависимые пакеты по гит урл в пакетном менеджере.
4. Улучшения для WorldViewer окна, чтобы можно было видеть несколько миров сразу.
5. Поддержка запуска Морпеха в чистом дотнет окружении без Unity.
6. У глобалов теперь нет NextFrame, только Publish, который публикует событие на следующий кадр как это раньше делал NextFrame. Такое изменение связано с тем, что во всех кодовых базах, что я видел события всегда публиковались связкой Publish+NextFrame.
7. Добавлен метод MigrateTo для сущностей, который позволяет переносить значения компонентов на другую энтити.
8. Добавлен CacheSize аттрибут, который можно вешать на компонент и выбирать стартовый размер кеша.
9. У фильтра исчезло поле Length и к нему на замену пришел метод IsEmpty() и для случаев, когда длина все-таки нужна ленивый метод GetLengthSlow(). Это позволило убрать лишнюю нагрузку из обновления фильтров.
10. Дефайн MORPEH_PROFILING, который позволяет более детально наблюдать в профайлере нагрузку от ецс кода без включение дип-профайлинга.
11. Сущности можно удалять прямым вызовом Dispose.
12. Переработаны архетипы под капотом, чтобы добиться максимальной скорости на обновлении фильтров и миграции энтити между фильтрами.
13. Кеши компонентов теперь можно получить прямо из мира и работать через них. Это альтернативная версия работы с фреймворком, похужую роль раньше выполняли ComponentsBag, но работа с кешами напрямую эффективнее, потому произошла полная замена старого API в этой области.
14. Работа над полной поддержкой работы с Jobs + Burst. В текущем состоянии можно итерироваться, получать компоненты и менять значения в них. Далее планы расширить до полного списка операций с энтити.
15. Для дебага можно подменять логгер Морпеха на свой кастомный.
🚧 Work In Progress.
Что планировалось сделать, но пока в сомнительном состоянии:
1. Кастомный сериализатор, чтобы полностью в удобном виде поддерживать хотрелоад и потенциальные роллбеки. Возможно эта идея будет переработана сразу на поддержку кастомного аллокатора, чтобы добиться высокой производительности. В драфтовых версиях реализация выглядела бесперспективно.
2. Замена Odin Inspector. Я нанимал отдельного разраба, чтобы он сделал простенький аналог так же на аттрибутах, но в результате у нас получился достаточно сложный код, который требует отдельной поддержки. Я остался недоволен этой задумкой и пока точно не решил для себя в каком векторе стоит решить задачу с инспектором. Возможно стоит сделать обычный рукописный инспектор прямо в ядре.
3. Разделение Морпеха на пачку пакетов. Отделить голое ядро от обвязки для редактора и остальных инструментов. Идея хорошая, но мне не нравится рутинный менеджмент пакетов, когда необходимо обновляться. Пока не вижу четкого решения, которое мне бы понравилось.
Что планировалось сделать, но пока в сомнительном состоянии:
1. Кастомный сериализатор, чтобы полностью в удобном виде поддерживать хотрелоад и потенциальные роллбеки. Возможно эта идея будет переработана сразу на поддержку кастомного аллокатора, чтобы добиться высокой производительности. В драфтовых версиях реализация выглядела бесперспективно.
2. Замена Odin Inspector. Я нанимал отдельного разраба, чтобы он сделал простенький аналог так же на аттрибутах, но в результате у нас получился достаточно сложный код, который требует отдельной поддержки. Я остался недоволен этой задумкой и пока точно не решил для себя в каком векторе стоит решить задачу с инспектором. Возможно стоит сделать обычный рукописный инспектор прямо в ядре.
3. Разделение Морпеха на пачку пакетов. Отделить голое ядро от обвязки для редактора и остальных инструментов. Идея хорошая, но мне не нравится рутинный менеджмент пакетов, когда необходимо обновляться. Пока не вижу четкого решения, которое мне бы понравилось.
❓ Какие планы?
Морпех всегда позиционировался как решение для бизнеса, чтобы писать сложное просто, помогать в решении задач.
Чистое и минималистичное API, широкий вспомогательный тулчейн и интеграция с движком из коробки. Это основные столпы и идеология фреймворка.
Здесь ничего не поменялось, Морпех прошел испытание временем, ворох разработаных игр.
Я испытывал большие сомнения достаточно долгое время на счет целесообразности и какой-то необходимости дальнейшего развития.
DOTS Entities рано или поздно выйдет и каким классным или наоборот плохим он бы не был, он вытеснит большинство ECS фреймворков специализирующихся на Unity.
Что-то похожее было с выходом UGUI, когда в ассет сторе было множество NGUI-подобных фреймворков. Они все так или иначе вымерли, но на замену к ним пришли другие.
В ближайшем будущем GameObjects и куча старого кода никуда не испарится, а какое-то развитие необходимо сегодня и завтра.
DOTS-стек слишком категоричный и слабо дружит с огромным наследием.
Морпех займет нишу посредника между MonoBehaviours <—> DOTS.
Прямо сегодня можно мигрировать любые проекты с монобехов на Морпех путем гибридного кода с постепенным вытеснением старого.
В дальнейшем с развитием Jobs&Burst интеграции, пойдет развитие интеграции и c Entities, удобного существования вместе.
Это позволит разрабатывать проекты с использованием кода под DOTS при этом не требуя вставать на жесткие рельсы бессылочного программирования.
Из ближайшего будущего я считаю категорически важным наличие инспектора независящего от Odin. Прошлый путь решения меня не удовлетворяет, потому скорее всего появится наивная лобовая реализация прямо в ядре, без аттрибутов.
Тогда текущий мейджер можно будет считать оконченым и он уйдет на спокойный саппорт как 2020 версия.
Морпех всегда позиционировался как решение для бизнеса, чтобы писать сложное просто, помогать в решении задач.
Чистое и минималистичное API, широкий вспомогательный тулчейн и интеграция с движком из коробки. Это основные столпы и идеология фреймворка.
Здесь ничего не поменялось, Морпех прошел испытание временем, ворох разработаных игр.
Я испытывал большие сомнения достаточно долгое время на счет целесообразности и какой-то необходимости дальнейшего развития.
DOTS Entities рано или поздно выйдет и каким классным или наоборот плохим он бы не был, он вытеснит большинство ECS фреймворков специализирующихся на Unity.
Что-то похожее было с выходом UGUI, когда в ассет сторе было множество NGUI-подобных фреймворков. Они все так или иначе вымерли, но на замену к ним пришли другие.
В ближайшем будущем GameObjects и куча старого кода никуда не испарится, а какое-то развитие необходимо сегодня и завтра.
DOTS-стек слишком категоричный и слабо дружит с огромным наследием.
Морпех займет нишу посредника между MonoBehaviours <—> DOTS.
Прямо сегодня можно мигрировать любые проекты с монобехов на Морпех путем гибридного кода с постепенным вытеснением старого.
В дальнейшем с развитием Jobs&Burst интеграции, пойдет развитие интеграции и c Entities, удобного существования вместе.
Это позволит разрабатывать проекты с использованием кода под DOTS при этом не требуя вставать на жесткие рельсы бессылочного программирования.
Из ближайшего будущего я считаю категорически важным наличие инспектора независящего от Odin. Прошлый путь решения меня не удовлетворяет, потому скорее всего появится наивная лобовая реализация прямо в ядре, без аттрибутов.
Тогда текущий мейджер можно будет считать оконченым и он уйдет на спокойный саппорт как 2020 версия.
❤4
🔍 Current Version.
- Можно ли пользоваться Morpeh сегодня из ветки 2022-major?
- Если у вас есть Odin, то однозначно да.
Я буду здесь освещать все небольшие обновления в текущей версии, чтобы можно было понимать, что появилось и как это можно использовать уже сегодня.
Вопросы можно задавать в чате @morpeh_development_chat
- Можно ли пользоваться Morpeh сегодня из ветки 2022-major?
- Если у вас есть Odin, то однозначно да.
Я буду здесь освещать все небольшие обновления в текущей версии, чтобы можно было понимать, что появилось и как это можно использовать уже сегодня.
Вопросы можно задавать в чате @morpeh_development_chat
🔖 2022.1.0-rc7
1. Исправлен двойной дизпоуз систем.
https://github.com/scellecs/morpeh/pull/128
2. Поправлено обновление фильтров на кейсах с Dispose и FixedUpdate.
https://github.com/scellecs/morpeh/pull/129
За правки спасибо @v_vlad_v
1. Исправлен двойной дизпоуз систем.
https://github.com/scellecs/morpeh/pull/128
2. Поправлено обновление фильтров на кейсах с Dispose и FixedUpdate.
https://github.com/scellecs/morpeh/pull/129
За правки спасибо @v_vlad_v
❤3🌭1
🔖 2020.8.2
Бекпорт правки в мастер. Проблема заключалась в том, что при использовании компонента с одним поля типа bool, морпех считал его маркером.
https://github.com/scellecs/morpeh/pull/135
Бекпорт правки в мастер. Проблема заключалась в том, что при использовании компонента с одним поля типа bool, морпех считал его маркером.
https://github.com/scellecs/morpeh/pull/135
🔥3
🚧 WIP Entity Generation
Связка ID+Gen в виде структуры давно обсуждается для реализации.
Это важная фича для использования энтитей в джобах, потому что ссылочные типы там использовать нельзя, а одного айди энтити не достаточно.
Фичу пилит @boikoigorigorevich
Прогресc и драфтовый вариант можно посмотреть тут:
https://github.com/scellecs/morpeh/pull/136
и подробности тут:
https://github.com/scellecs/morpeh/issues/85
Связка ID+Gen в виде структуры давно обсуждается для реализации.
Это важная фича для использования энтитей в джобах, потому что ссылочные типы там использовать нельзя, а одного айди энтити не достаточно.
Фичу пилит @boikoigorigorevich
Прогресc и драфтовый вариант можно посмотреть тут:
https://github.com/scellecs/morpeh/pull/136
и подробности тут:
https://github.com/scellecs/morpeh/issues/85
👍2
🚀 2022.1.0-rc
Релиз очень близко!
Мы планируем зафиналить и выпустить новый мажор 1 ноября.
Миграция со старых версий требует некоторых доработок, потому мы приложим полный гайд, как и что поправить, как изменилось поведение.
Релиз уйдет в мастер, девелоп снова станет основной веткой для разработки.
Релиз очень близко!
Мы планируем зафиналить и выпустить новый мажор 1 ноября.
Миграция со старых версий требует некоторых доработок, потому мы приложим полный гайд, как и что поправить, как изменилось поведение.
Релиз уйдет в мастер, девелоп снова станет основной веткой для разработки.
🔥8👍6
🚀 2022.1.0 - Halloween Edition
Наконец-то релиз 2022 версии спустя 2 года разработки.
Ссылка на чейнджлог: https://github.com/scellecs/morpeh/releases/tag/2022.1.0
Гайд по миграции прилагается, а так же есть в ридми.
🎉🥂🍾🎉
Наконец-то релиз 2022 версии спустя 2 года разработки.
Ссылка на чейнджлог: https://github.com/scellecs/morpeh/releases/tag/2022.1.0
Гайд по миграции прилагается, а так же есть в ридми.
🎉🥂🍾🎉
❤8🍾5🎉3⚡1🤩1
🔖 2022.1.2
Исправлен метод MigrateTo().
После переработки на кеши метод начал неверно работать и сущности не меняли свои архетипы.
Фикс сделан @v_vlad_v
Исправлен метод MigrateTo().
После переработки на кеши метод начал неверно работать и сущности не меняли свои архетипы.
Фикс сделан @v_vlad_v
👍2
🚀 2022.2.0 - Happy New Year Edition
Второй и последний мажор в уходящем году.
Ссылка на чейнджлог: https://github.com/scellecs/morpeh/blob/2022.2.0/CHANGELOG.MD
Гайд по миграции: https://github.com/scellecs/morpeh/blob/2022.2.0/MIGRATION_RU.md
Для тех, кто прикручивает к проектам на чистом дотнет, теперь есть официальный нюгет пекедж по ссылке:
https://www.nuget.org/packages/Scellecs.Morpeh
Всех с наступающим! Успехов и крутых релизов в следующем году! 🍾🥂🎉🎄
Второй и последний мажор в уходящем году.
Ссылка на чейнджлог: https://github.com/scellecs/morpeh/blob/2022.2.0/CHANGELOG.MD
Гайд по миграции: https://github.com/scellecs/morpeh/blob/2022.2.0/MIGRATION_RU.md
Для тех, кто прикручивает к проектам на чистом дотнет, теперь есть официальный нюгет пекедж по ссылке:
https://www.nuget.org/packages/Scellecs.Morpeh
Всех с наступающим! Успехов и крутых релизов в следующем году! 🍾🥂🎉🎄
🎉15🔥1
🔖 2022.2.1
1. EntityProvider.map теперь публичный.
2. Ворнинги в Unity 2021+ теперь не вылезают.
https://github.com/scellecs/morpeh/tree/2022.2.1
1. EntityProvider.map теперь публичный.
2. Ворнинги в Unity 2021+ теперь не вылезают.
https://github.com/scellecs/morpeh/tree/2022.2.1
🔖 2022.2.3
1. RemoveEntityOnDestroy теперь работает корректно.
2. Git LFS отключен. Старые версии можно будет скачать по окончанию месяца.
Ветки main, stage-2022.2, stage-2023.1 переведены на новый формат без лфс.
Рабочие версии, которые можно спокойно скачивать на текущий момент:
2022.2.3
2023.1.0-rc52
https://github.com/scellecs/morpeh/tree/2022.2.3
1. RemoveEntityOnDestroy теперь работает корректно.
2. Git LFS отключен. Старые версии можно будет скачать по окончанию месяца.
Ветки main, stage-2022.2, stage-2023.1 переведены на новый формат без лфс.
Рабочие версии, которые можно спокойно скачивать на текущий момент:
2022.2.3
2023.1.0-rc52
https://github.com/scellecs/morpeh/tree/2022.2.3
🔥7
🚀 2023.1.0 - Totally Free Edition
Морпех не имеет платных зависимостей, теперь мы используем Tri Inspector по-умолчанию. Для тех, кому нравится Odin могут оставаться на нем.
Добавлены аспекты.
Переработаны архетипы и фильтрация для работы в комплексных условиях, где сущности имеют огромные вариации компонентов на них и очень часто меняются.
Добавлены окно метрик, чтобы отслеживаться основные количественные показатели: сколько сущностей, архетипов, миграций, систем.
Небольшие переработки в нативной части.
Всё остальное в гайде по миграции.
https://github.com/scellecs/morpeh/blob/2023.1.0/MIGRATION_RU.md
Морпех не имеет платных зависимостей, теперь мы используем Tri Inspector по-умолчанию. Для тех, кому нравится Odin могут оставаться на нем.
Добавлены аспекты.
Переработаны архетипы и фильтрация для работы в комплексных условиях, где сущности имеют огромные вариации компонентов на них и очень часто меняются.
Добавлены окно метрик, чтобы отслеживаться основные количественные показатели: сколько сущностей, архетипов, миграций, систем.
Небольшие переработки в нативной части.
Всё остальное в гайде по миграции.
https://github.com/scellecs/morpeh/blob/2023.1.0/MIGRATION_RU.md
🔥29
🔖 2023.1.1
Фокус релиза был направлены на фиксы и девиртуализацию стешей, что улучшит производительность.
Со списком можете ознакомиться по ссылке:
https://github.com/scellecs/morpeh/blob/2023.1.1/CHANGELOG.MD
Дальше как замыкающая версия под конец года выйдет 2024.1.0.
Фокус релиза был направлены на фиксы и девиртуализацию стешей, что улучшит производительность.
Со списком можете ознакомиться по ссылке:
https://github.com/scellecs/morpeh/blob/2023.1.1/CHANGELOG.MD
Дальше как замыкающая версия под конец года выйдет 2024.1.0.
🔥22
🚀 2024.1.0 - Stability Edition
Вся версия была сосредоточена на внутренней переработке ядра. Большая часть кода покрылась Unit тестами с прицелом на крупные работы связанные с использованием кодогенерации в последующих версиях ядра.
Это повлекло за собой большое количество ломающих изменений, которые мы считаем важным для развития фреймворка.
С этой версии мы уходим от использование ScriptableObject для систем и Installer на GO как инструмента по-умолчанию. Оно всё еще остается в ядре, чтобы миграция была не такая неприятная.
Теперь ISystem и SystemsGroup это дефолтный инструмент до момента внедрения кодогенерации и полной девиртуализации вызовов систем.
Мы значительно уменьшили метаданные IL2CPP в рантайме, которые порождал фреймворк, что на больших проектах больно било по расходу оперативной памяти.
Относительно 2023 версии проделано много работы по оптимизациям (холостого хода, методов фильтров, стешей и так далее)
Переработано окно WorldBrowser, чтобы им было возможно пользоваться на крупных проектах, добавлена фильтрация как номеру сущности так и по компонентам.
Добавлена возможность во время брекпоинта посмотреть все компоненты на сущности.
Всё остальное в гайде по миграции и чейнджлоге.
https://github.com/scellecs/morpeh/blob/main/MIGRATION_RU.md
https://github.com/scellecs/morpeh/blob/main/CHANGELOG.MD
Вся версия была сосредоточена на внутренней переработке ядра. Большая часть кода покрылась Unit тестами с прицелом на крупные работы связанные с использованием кодогенерации в последующих версиях ядра.
Это повлекло за собой большое количество ломающих изменений, которые мы считаем важным для развития фреймворка.
С этой версии мы уходим от использование ScriptableObject для систем и Installer на GO как инструмента по-умолчанию. Оно всё еще остается в ядре, чтобы миграция была не такая неприятная.
Теперь ISystem и SystemsGroup это дефолтный инструмент до момента внедрения кодогенерации и полной девиртуализации вызовов систем.
Мы значительно уменьшили метаданные IL2CPP в рантайме, которые порождал фреймворк, что на больших проектах больно било по расходу оперативной памяти.
Относительно 2023 версии проделано много работы по оптимизациям (холостого хода, методов фильтров, стешей и так далее)
Переработано окно WorldBrowser, чтобы им было возможно пользоваться на крупных проектах, добавлена фильтрация как номеру сущности так и по компонентам.
Добавлена возможность во время брекпоинта посмотреть все компоненты на сущности.
Всё остальное в гайде по миграции и чейнджлоге.
https://github.com/scellecs/morpeh/blob/main/MIGRATION_RU.md
https://github.com/scellecs/morpeh/blob/main/CHANGELOG.MD
🔥36👍2🫡1