diff --git a/README-RU.md b/README-RU.md index 46c1558..fedf9cd 100644 --- a/README-RU.md +++ b/README-RU.md @@ -6,17 +6,18 @@ Version License Discord +QQ

# DragonECS - C# Entity Component System Framework | Languages: | [Русский](https://github.com/DCFApixels/DragonECS/blob/main/README-RU.md) | [English(WIP)](https://github.com/DCFApixels/DragonECS) | | :--- | :--- | :--- | -Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Без генерации кода и зависимостей. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite). +DragonECS - это [ECS](https://en.wikipedia.org/wiki/Entity_component_system) фреймворк нацеленный на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Разработан на чистом C#, без зависимостей и генерации кода. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite). > [!WARNING] > Проект в стадии разработки. API может меняться. -> Readme еще не завершен +> Readme еще не завершен, если есть не ястные моменты, вопросы можно задать тут [Discord](https://discord.gg/kqmJjExuCf) ## Оглавление - [Установка](#установка) @@ -64,6 +65,7 @@ + **Unity:** Минимальная версия 2020.1.0; ## Установка для Unity +> Рекомендуется так же установить расширение [Интеграция с движком Unity](https://github.com/DCFApixels/DragonECS-Unity) * ### Unity-модуль Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`: ``` @@ -71,7 +73,6 @@ https://github.com/DCFApixels/DragonECS.git ``` * ### В виде иходников Фреймворк так же может быть добавлен в проект в виде исходников. -
# Основные концепции @@ -359,7 +360,28 @@ poses.Del(entityID); > эта функция будет описана в ближайшее время ## Аспект -Это пользовательские классы наследуемые от `EcsAspect`, которые используются как посредник для взаимодействия с сущностями. Аспекты одновременно являются кешем пулов и маской для фильтрации сущностей. +Это пользовательские классы наследуемые от `EcsAspect` и используемые для взаимодействия с сущностями. Аспекты одновременно являются кешем пулов и маской компонентов для фильтрации сущностей. Можно рассматривать аспекты как описание того какие сущности запрашивает система. + +Упрощенный синтаксис: +``` c# +using DCFApixels.DragonECS; +... +class Aspect : EcsAspect +{ + // Кешируется пул и Pose добавляется во включающее ограничение. + public EcsPool poses = Inc; + // Кешируется пул и Velocity добавляется во включающее ограничение. + public EcsPool velocities = Inc; + // Кешируется пул и FreezedTag добавляется в исключающее ограничение. + public EcsTagPool freezedTags = Exc; + + // При запросах будет проверяться наличие компонентов + // из включающего ограничения маски и отсутсвие из исключющего. + // Так же есть Opt - только кеширует пул, не влияя на маску. +} +``` + +Явный синтаксис (результат идентичен примеру выше): ``` c# using DCFApixels.DragonECS; ... @@ -367,39 +389,20 @@ class Aspect : EcsAspect { public EcsPool poses; public EcsPool velocities; - - // вместо конструктора можно использовать виртуальную функцию Init(Builder b) - public Aspect(Builder b) + // вместо виртуальной функции, можно использовать конструктор Aspect(Builder b) + protected override void Init(Builder b) { - // кешируется пул и Pose добавляется во включающее ограничение. poses = b.Include(); - - // кешируется пул и Velocity добавляется во включающее ограничение. velocities = b.Include(); - - // FreezedTag добавляется в исключающее ограничение. b.Exclude(); } } ``` -Упрощенный синтаксис. Пример ниже, это аналог примера выше -``` c# -using DCFApixels.DragonECS; -... -class Aspect : EcsAspect -{ - public EcsPool poses; - public EcsPool velocities; - public EcsTagPool freezedTags; - public Aspect(Builder b) - { - poses = b.Inc; - velocities = b.Inc; - freezedTags = b.Exc; - } -} -``` -В аспекты можно добавлять другие аспекты, тем самым комбинируя их. Ограничения так же будут скомбинированы + +
+Комбинирование аспектов + +В аспекты можно добавлять другие аспекты, тем самым комбинируя их. Ограничения так же будут скомбинированы. ``` c# using DCFApixels.DragonECS; ... @@ -428,7 +431,8 @@ class Aspect : EcsAspect | OtherAspect1 | :heavy_minus_sign: | :heavy_check_mark: | :heavy_minus_sign: | :x: | :heavy_minus_sign: | Для `cmp2` будет выбрано :heavy_check_mark: | | Aspect | :x: | :heavy_minus_sign: | :heavy_minus_sign: | :heavy_minus_sign: | :heavy_check_mark: | Для `cmp1` будет выбрано :x: | | Итоговые ограничения | :x: | :heavy_check_mark: | :heavy_minus_sign: | :x: | :heavy_check_mark: | | - + +
## Запросы Используйте метод-запрос `EcsWorld.Where(out TAspcet aspect)` для получения необходимого системе набора сущностей. Запросы работают в связке с аспектами, аспекты определяют ограничения запросов, результатом запроса становится группа сущностей удовлетворяющая условиям аспекта. По умолчанию запрос делает выборку из всех сущностей в мире, но так же запросы можно применять и к коллекциям фреймворка(в этом плане это чемто похоже на Where из Linq). @@ -628,7 +632,7 @@ using DCFApixels.DragonECS; [MetaName("SomeComponent")] // Используется для группировки типов. -[MetaGroup("Abilities/Passive/")] +[MetaGroup("Abilities/Passive/")] // или [MetaGroup("Abilities", "Passive")] // Задает цвет типа в системе rgb, где каждый канал принимает значение от 0 до 255, по умолчанию белый. [MetaColor(MetaColor.Red)] // или [MetaColor(255, 0, 0)] @@ -800,6 +804,7 @@ public struct WorldComponent : IEcsWorldComponent * [Автоматическое внедрение зависимостей](https://github.com/DCFApixels/DragonECS-AutoInjections) * [Классическоя C# многопоточность](https://github.com/DCFApixels/DragonECS-ClassicThreads) * [Hybrid](https://github.com/DCFApixels/DragonECS-Hybrid) +* [One-Frame Components](https://gist.github.com/DCFApixels/46d512dbcf96c115b94c3af502461f60) * Графы (Work in progress) @@ -818,9 +823,11 @@ The type or namespace name 'ReadOnlySpan<>' could not be found (are you missing Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Есть 2 решения:
+ Если измненеия процесса глобальные, то создать новый `EcsPipeline` и в цикле обновления движка запускать соотвествующий пайплайн. + Разделить `IEcsRun` на несколько процессов и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска этого интерфейса и получайте раннер через `EcsPipeline.GetRunner()`. +## Перечень рекомендаций [DragonECS-Vault](https://github.com/DCFApixels/DragonECS-Vault)
# Обратная связь -Discord для дискуссий [https://discord.gg/kqmJjExuCf](https://discord.gg/kqmJjExuCf) ++ Discord (RU-EN) [https://discord.gg/kqmJjExuCf](https://discord.gg/kqmJjExuCf) ++ QQ (中文) [949562781](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=IbDcH43vhfArb30luGMP1TMXB3GCHzxm&authKey=s%2FJfqvv46PswFq68irnGhkLrMR6y9tf%2FUn2mogYizSOGiS%2BmB%2B8Ar9I%2Fnr%2Bs4oS%2B&noverify=0&group_code=949562781)


diff --git a/README.md b/README.md index ba8475c..b38d945 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Version License Discord +QQ

# DragonECS - C# Entity Component System Framework @@ -50,7 +51,9 @@ The framework can also be added to the project as source code. * [Dependency autoinjections](https://github.com/DCFApixels/DragonECS-AutoInjections) * [Classic C# multithreading](https://github.com/DCFApixels/DragonECS-ClassicThreads) * [Hybrid](https://github.com/DCFApixels/DragonECS-Hybrid) +* [One-Frame Components](https://gist.github.com/DCFApixels/46d512dbcf96c115b94c3af502461f60) * Graphs (Work in progress) # Feedback -Discord for discussions [https://discord.gg/kqmJjExuCf](https://discord.gg/kqmJjExuCf) ++ Discord (RU-EN) [https://discord.gg/kqmJjExuCf](https://discord.gg/kqmJjExuCf) ++ QQ (中文) [949562781](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=IbDcH43vhfArb30luGMP1TMXB3GCHzxm&authKey=s%2FJfqvv46PswFq68irnGhkLrMR6y9tf%2FUn2mogYizSOGiS%2BmB%2B8Ar9I%2Fnr%2Bs4oS%2B&noverify=0&group_code=949562781) diff --git a/package.json b/package.json index f0eb6a1..ef981d8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "displayName": "DragonECS", "description": "C# Entity Component System Framework", "unity": "2020.3", - "version": "0.8.23", + "version": "0.8.29", "repository": { "type": "git", "url": "https://github.com/DCFApixels/DragonECS.git"