From 74716125314bc8ee1af480c46a621916e1c45cf3 Mon Sep 17 00:00:00 2001 From: Zakarum Date: Thu, 3 Feb 2022 13:11:47 +0300 Subject: [PATCH 1/3] Adds paragraph about Edict --- content/news/030/index.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/content/news/030/index.md b/content/news/030/index.md index 4f4e07c8f..77ebc76c7 100644 --- a/content/news/030/index.md +++ b/content/news/030/index.md @@ -206,6 +206,41 @@ for expressively abstracting over user input. Supports local multiplayer, enables input rebinding, integrates with `bevy_ui`, and handles chords! +### [Edict] + +New archetypes based ECS implementation by [@zakarumych](https://github.com/zakarumych). + +The novel feature of [Edict] is entity ownership implemented via reference counting.\ +This optional feature allows creating owned kind of `Entity` "reference", +that ensures entity is alive and despawns it on drop.\ +Storing owning `Entity` in the component of another entity +creates ownership relation between those entities.\ +Even though `Entity` is an owning reference, +components of the entity are can be queried from `World` as usual.\ +Shared ownership is also available. + +Optimized for both high density `World`s with thousands of entities +and also for `World`s with lower number of entities spread among many archetypes.\ +[Edict] is aimed for wide range of game genres and use cases outside of games. + +Built-in change detection with epochs allows systems to query for components +that were updated since last run of that query, +or since any other epoch as defined by `Tracks` argument.\ +This opens possibility to have multiple POV on changes even in single system.\ +For example server-side netcode can track changes individually for each client and query for changes since last ACK.\ +[Edict] optimizes iteration significantly when entities with modified components are queried. + +Although ECS abbreviation implies, [Edict] does not come with predefined `System` trait and systems scheduler.\ +We can call it ECQ (Entity-Component-Query) as an alternative to ECS. + +[Edict] is added to [ecs_bench_suite](https://github.com/rust-gamedev/ecs_bench_suite) +so anyone can compare performance in some trivial examples with other ECS. + +Development focus for February is making more public API, including unsafe parts, +to allow writing custom queries, implement schedulers with parallel execution etc. + +[Edict]: https://github.com/zakarumych/edict + ## Popular Workgroup Issues in Github From 124f50151c89f2b588505862b164d2393b8f4300 Mon Sep 17 00:00:00 2001 From: Zakarum Date: Thu, 3 Feb 2022 20:56:06 +0300 Subject: [PATCH 2/3] Remove excessive formatting --- content/news/030/index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/content/news/030/index.md b/content/news/030/index.md index 77ebc76c7..2c0c9a7ad 100644 --- a/content/news/030/index.md +++ b/content/news/030/index.md @@ -210,27 +210,27 @@ and handles chords! New archetypes based ECS implementation by [@zakarumych](https://github.com/zakarumych). -The novel feature of [Edict] is entity ownership implemented via reference counting.\ +The novel feature of [Edict] is entity ownership implemented via reference counting. This optional feature allows creating owned kind of `Entity` "reference", -that ensures entity is alive and despawns it on drop.\ +that ensures entity is alive and despawns it on drop. Storing owning `Entity` in the component of another entity -creates ownership relation between those entities.\ +creates ownership relation between those entities. Even though `Entity` is an owning reference, -components of the entity are can be queried from `World` as usual.\ +components of the entity are can be queried from `World` as usual. Shared ownership is also available. Optimized for both high density `World`s with thousands of entities -and also for `World`s with lower number of entities spread among many archetypes.\ +and also for `World`s with lower number of entities spread among many archetypes. [Edict] is aimed for wide range of game genres and use cases outside of games. Built-in change detection with epochs allows systems to query for components that were updated since last run of that query, -or since any other epoch as defined by `Tracks` argument.\ -This opens possibility to have multiple POV on changes even in single system.\ -For example server-side netcode can track changes individually for each client and query for changes since last ACK.\ +or since any other epoch as defined by `Tracks` argument. +This opens possibility to have multiple POV on changes even in single system. +For example server-side netcode can track changes individually for each client and query for changes since last ACK. [Edict] optimizes iteration significantly when entities with modified components are queried. -Although ECS abbreviation implies, [Edict] does not come with predefined `System` trait and systems scheduler.\ +Although ECS abbreviation implies, [Edict] does not come with predefined `System` trait and systems scheduler. We can call it ECQ (Entity-Component-Query) as an alternative to ECS. [Edict] is added to [ecs_bench_suite](https://github.com/rust-gamedev/ecs_bench_suite) From 96ac738f67874413c647e0886874734f192f3e63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9y=20Lesnik=C3=B3v?= Date: Sat, 5 Feb 2022 18:54:56 +0300 Subject: [PATCH 3/3] N30: Edict: Fmt fix --- content/news/030/index.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/content/news/030/index.md b/content/news/030/index.md index 2c0c9a7ad..052087308 100644 --- a/content/news/030/index.md +++ b/content/news/030/index.md @@ -227,10 +227,13 @@ Built-in change detection with epochs allows systems to query for components that were updated since last run of that query, or since any other epoch as defined by `Tracks` argument. This opens possibility to have multiple POV on changes even in single system. -For example server-side netcode can track changes individually for each client and query for changes since last ACK. -[Edict] optimizes iteration significantly when entities with modified components are queried. +For example server-side netcode can track changes individually +for each client and query for changes since last ACK. +[Edict] optimizes iteration significantly when entities +with modified components are queried. -Although ECS abbreviation implies, [Edict] does not come with predefined `System` trait and systems scheduler. +Although ECS abbreviation implies, [Edict] does not come +with predefined `System` trait and systems scheduler. We can call it ECQ (Entity-Component-Query) as an alternative to ECS. [Edict] is added to [ecs_bench_suite](https://github.com/rust-gamedev/ecs_bench_suite)