Releases: ecsact-dev/ecsact_sdk
0.9.0
NEW dependency ecsact_si_wasmer
ecsact_si_wasmer
is a replacement for the previous ecsact_si_wasm
. The wasm headers now live in the ecsact_runtime
repository.
ecsact_rt_entt 0.3.7 -> 0.3.19
0.3.19
Bug Fixes
- added a few missing exports to recipe - (2871200)
- added missing ecsact_stream to recipe export - (820418c)
- entity created event first - (6132dcf)
- the event created event was happening after init,update, and remove component events. The correct order is supposed to be create, init, update, remove and then destroy
- nullptr hard set on actions - (0763495)
- capability safeties - (a25ad82)
- fauly logic on index of get components - (5b751ce)
- stream toggle codegen misses - (46e7c76)
- bad codegen with multiple stream_toggle systems - (2fb568d)
Features
- implement new hash registry method - (80e6349)
- implement new clone registry method - (9162169)
- tracy - (fbd85f2)
- Allow readonly of stream components even when toggled - (cb60b50)
- toggle stream + new indexed fields api - (1d79758)
ecsact_rt_reference 0.1.1 -> 0.2.0
0.2.0
Features
- implement new async session api - (19e3c71)
- also added a blank core reference for future use
- new async stream api - (5ca90a5)
ecsact_codegen 0.4.1 -> 0.4.4
Bug Fixes
- properly forward writef args - (761c150)
ecsact_parse 0.5.1 -> 0.5.5
Features
- stream toggle keyword - (4dd05d4)
ecsact_runtime 0.6.7 -> 0.8.2
Features
- wasm system implementation headers - (6791ff1)
- add async session event callback to c++ wrapper - (6a0b119)
- async session api - (6582788)
- Remove request id from ecsact_async_stream - (22010eb)
- std::format for ecsact IDs - (0b9d377)
- registry hash method - (6e7f0f9)
- new clone registry core function - (732177c)
- remove use of variadic arguments in api due to wasm limitation - (b034c85)
- API for streaming components - (bf7b0d9)
- allow export load at runtime - (e811be1)
- reserve error async codes for custom implementations - (83c5955)
Bug Fixes
- added missing session IDs to async C++ wrapper fns - (847ef2f)
- use correct macro in async header - (dbce850)
- add missing 'async to FOR_EACH_ECSACT_API_FN macro - (5df4132)
ecsact_interpret 0.6.4 -> 0.6.7
Features
ecsact_lang_cpp 0.4.6 -> 0.4.11
Features
- use new field index api - (96d7be9)
- new stream toggle api C++ wrapper - (fcc466c)
- Allow explicit file name outputs vs just the extension - (c51fc49)
ecsact_cli 0.3.16 -> 0.3.26
Features
- new codegen flag for printing output paths - (c327d24)
- support new ecsact si modules - (dd68309)
- Add tracy option for profiling on recipes - (5554887)
- compiling each c/c++ file individually for msvc - (f789048)
- add error reporting when reading a file fails - (ce7836b)
Bug Fixes
- --stdout works as intended again - (bdf39e1)
- --stdout was being ignored and was writing files instead after the multi file update
- Typo on bool check for Tracy - (1d10cf9)
- relative recipe paths correctly resolved - (87474a3)
- add create file error handling - (1a6c689)
- additionally added windows long path workaround
- 3way merge fix and merge recipe tests - (ce4e4f6)
ecsact_lsp_server 0.2.1 -> 0.2.3
ecsact_lang_json 0.1.5 -> 0.1.7
ecsact_lang_csharp 0.1.5 -> 0.1.7
0.8.0
This update is mainly maintenance required for getting our Unreal integration up and running. We had a codegen API breaking change specifically for the unreal codgen plugin that's currently in development.
ecsact_rt_entt 0.3.5 -> 0.3.7
0.3.7
Miscellaneous Chores
0.3.6
Bug Fixes
Miscellaneous Chores
ecsact_rt_reference 0.1.1
NEW REPO
- our 'reference' recipe bundles are now available in the SDK
ecsact_codegen 0.3.1 -> 0.4.1
0.4.1
Bug Fixes
Miscellaneous Chores
- (version) 0.4.1 - (1dc5373)
0.4.0
Features
Miscellaneous Chores
-
(deps) update dependency ecsact_runtime to v0.6.7 (#50) - (4178d6e)
-
(version) 0.4.0 - (714b6fe)
-
update readme logo - (cae9c5d)
ecsact_lang_cpp 0.4.5 -> 0.4.6
0.4.6
Miscellaneous Chores
-
(deps) update dependency ecsact_cli to v0.3.15 (#212) - (7d900a5)
-
(deps) update dependency ecsact_cli to v0.3.14 (#211) - (c04234c)
-
(deps) update dependency rules_ecsact to v0.5.5 (#209) - (1733a5f)
-
(version) 0.4.6 - (3fd8070)
ecsact_cli 0.3.15 -> 0.3.16
0.3.16
Features
- support new codegen api for multi output (#120) - (f14dff8)
* when new codegen api is detected it is used and allows multiple output
files and custom file paths for code generated files
- this is needed due to unreal not liking output paths with
.
characters
Miscellaneous Chores
- (version) 0.3.16 - (7153ec5)
ecsact_lang_json 0.1.4 -> 0.1.5
0.1.5
Miscellaneous Chores
-
(deps) update dependency ecsact_cli to v0.3.15 (#130) - (62ddbce)
-
(deps) update dependency ecsact_cli to v0.3.14 (#129) - (4e2d231)
-
(version) 0.1.5 - (d58a637)
ecsact_lang_csharp 0.1.4 -> 0.1.5
0.1.5
Miscellaneous Chores
0.7.2
ecsact_rt_entt 0.3.4 -> 0.3.5
0.3.5
Bug Fixes
- remove duplicate recipe source files - (6307675)
Miscellaneous Chores
-
(deps) update dependency ecsact_cli to v0.3.14 - (6056028)
-
(version) 0.3.5 - (7a957ec)
-
update readme logo - (1625505)
ecsact_cli 0.3.14 -> 0.3.15
0.3.15
Features
- report bad extractions as an error - (d319ae2)
* use absolute paths for vs extract batch
- in unreal the temp directory passed to the CLI on windows uses '/'
which caused the batch file to not be found
Miscellaneous Chores
- (version) 0.3.15 - (ce7953a)
0.7.1
0.7.0
Ecsact SDK 0.7.0 Release
The New Stuff
0.7.0 is our biggest release yet. We've been hard at work improving the Ecsact language as well as improving tooling and performance.
Parameters
The Ecsact language added a new core concept - Parameters. All statements now can accept parameters. You'll see them mentioned in the features below.
statement Name(param_name: param_value)
More in-depth documentation to come
Parallel Systems
It's been long documented that Ecsact systms were meant to be ran in parallel. The Ecsact RT EnTT implementation has now implemented parallel systems #127 and systems will execute in parallel by default if they can.
A new API was introduced to control this feature. You can now mark a system to explicitly not run in parallel with ECSACT_PAR_EXEC_DENY
. See more options in ecsact/common.h. Of course you can also set this option in the Ecsact language.
system MySystem(parallel: deny) { /* ... */ }
- ecsact-dev/ecsact_rt_entt#127
- ecsact-dev/ecsact_rt_entt#124
- ecsact-dev/ecsact_runtime#249
- ecsact-dev/ecsact_interpret#227
Reactive Systems
Added the notify
keyword to specify conditions for a system to execute. These can be individually configured for every component in the system. The options currently available are:
oninit
,onupdate
, andonremove
onchange
when the component is updated and one or more of its internal values has been changed
system NotifySystemA {
readwrite ComponentA;
readonly ComponentB;
notify {
// System will execute when ComponentA is added to qualifying entity
oninit ComponentA;
// System will execute if ComponentB is removed from qualifying entity
onremove ComponentB;
}
}
system NotifySystemB {
readwrite ComponentA;
readonly ComponentB;
// Alternatively, you can do a notify without a body and it will apply to all components in the system
notify oninit;
}
More in-depth documentation to come
Lazy Systems
Having all qualifying entities for a system running on the same tick can be expensive. Now you can limit the amount of entities that get iterated in a system per tick by making it lazy
.
Lazy systems are sorted so accurate determinism is still at play, this is especially important for multiplayer games.
There is a new dynamic function to mark a system as lazy ecsact_set_system_lazy_iteration_rate
and an accompanying meta function to read if a system is lazy ecsact_meta_get_lazy_iteration_rate
, but the way you most likely will be using lazy
systems is via parameter in the Ecsact language.
system MyLazySystem(lazy: 25) { /* ... */ }
More in-depth documentation to come.
Ecsact CLI Build System
We've completely deprecated ecsact_rtb
and now instead have an ecsact build
command. There is a "recipe" system which allows you to pick and choose what runtime implementation you want. There's only one (Ecsact RT EnTT) right now, but it opens the gate for you to write your own and for more implementations to come.
ecsact build
also improves some quality of life things compared to ecsact_rtb
such as coloured output and reporting C++ build errors more nicely.
More in-depth documentation to come
- ecsact-dev/ecsact_rt_entt#100
- ecsact-dev/ecsact_rt_entt#105
- ecsact-dev/ecsact_cli#104
- ecsact-dev/ecsact_cli#102
- ecsact-dev/ecsact_cli#98
- ecsact-dev/ecsact_cli#84
- ecsact-dev/ecsact_cli#90
- ecsact-dev/ecsact_cli#91
- ecsact-dev/ecsact_cli#85
- ecsact-dev/ecsact_cli#71
- ecsact-dev/ecsact_cli#51
- ecsact-dev/ecsact_cli#76
- ecsact-dev/ecsact_cli#74
- ecsact-dev/ecsact_cli#72
Codegen Error Reporting
Ecsact Codegen plugins now can report errors and other information while generating code. This is a breaking change since the ecsact_codegen_plugin
now utilises a 3rd parameter. All official plugins have been updated in this release.
New Assoc API
The old association API has been completely re-done and we've introduced a new concept called "indxed fields". This feature isn't fully ready for prime time, but you can checkout the changes we've made here:
- ecsact-dev/ecsact_runtime#255
- ecsact-dev/ecsact_runtime#247
- ecsact-dev/ecsact_runtime#246
- ecsact-dev/ecsact_runtime#244
- ecsact-dev/ecsact_runtime#243
- ecsact-dev/ecsact_parse#153
- ecsact-dev/ecsact_interpret#224
- ecsact-dev/ecsact_lang_cpp#196
- ecsact-dev/ecsact_lang_cpp#194
- ecsact-dev/ecsact_lang_cpp#204
Bazel Support
We've added more bazel support to include building an Ecsact runtime directly via the ecsact
CLI. We use bazel a lot so expect more imrpovements to rules_ecsact
.
- ecsact-dev/rules_ecsact#56
- ecsact-dev/rules_ecsact#54
- ecsact-dev/rules_ecsact#53
- ecsact-dev/rules_ecsact#45
- ecsact-dev/rules_ecsact#43
Misc. Small Improvements
- ecsact-dev/ecsact_runtime#245
- ecsact-dev/ecsact_runtime#238
- ecsact-dev/ecsact_runtime#234
- ecsact-dev/ecsact_runtime#206
- ecsact-dev/ecsact_runtime#231
Internal Improvements
Ecsact codegen plugin for optimization #56
Metaprogramming compile times were taking longer and longer the bigger .ecsact files got. This is a refactor to use codegen instead.
System providers #126
It was getting more and more difficult to add features to systems. This is a refactor to add providers
to systems, allowing the separation of new features like lazy systems
while being more readable.
Bug Fixes
- Fixed generate add events not calling, parent trivial systems children systems not running ecsact-dev/ecsact_rt_entt#136
- Dynamic view gets used instead of accessing registry ecsact-dev/ecsact_rt_entt#123
- Proper internal comparer ecsact-dev/ecsact_rt_entt#121
- Generates missing internal sorting ecsact-dev/ecsact_rt_entt#115
- Update events were happening too often ecsact-dev/ecsact_rt_entt#119
- Generated entity having invalid callback ecsact-dev/ecsact_rt_entt#113
- Entity created callback called too often ecsact-dev/ecsact_rt_entt#111
- Check for created entity callback being nullptr ecsact-dev/ecsact_rt_entt#97
- (meta) c++ wrapper bad container access #252
- (meta) c++ wrapper using wrong assoc cap count #251
Other
- Association is currently disabled on Ecsact RT EnTT. It's a work-in-progress as we've overhauled the assocation api completely. For now, it will return an error when you try to use it. ecsact-dev/ecsact_rt_entt#139
- Ecsact CLI benchmark is temporarily disabled
- Ecsact SI Wasm recipe is not shipped with this release. To build with wasm you must utilise the recipe found at https://github.com/ecsact-dev/ecsact_si_wasm. This will be fixed next release.
0.6.2
Full Changelog: 0.6.1...0.6.2
0.6.1
0.6.0
What's Changed
- ecsact_rt_entt preformance improvements ecsact-dev/ecsact_rt_entt#46 (more to come)
- fixed compile time error when adding tag components with ecsact_rt_entt ecsact-dev/ecsact_rt_entt#62
- Some C++ wrappers now accept C functions as parameters to workaround some difficult linker setups ecsact-dev/ecsact_runtime#171
- new experimental parameter to mark parallel systems manually. Undocumented for now.
0.5.0
What's Changed
Features
- (cli) benchmark subcommand (#254) - (6ce97e3) - Ezekiel Warren
- added --version flag to CLI (#249) - (6353b04) - Ezekiel Warren
- updated examples to reflect latest syntax changes (#248) - Ezekiel Warren
Miscellaneous Chores
- now utilising semantic release utilitiy cocogitto for more accurate release notes between repositories. Next release will contain more information from other repositories.
- (deps) update ecsact repositories to use tagged releases (#260) - (1b55f93) - Ezekiel Warren
- use bzlmod (#261) - (ae977fc) - Ezekiel Warren
0.4.7
- FIX: Fixed an issue where a remove event would be sent even when the component add happened in the same execution tick ecsact-dev/ecsact_rt_entt#41
- FIX: Fixed issues with
entity_created_callback
not occurring and remove component data dying ecsact-dev/ecsact_runtime#148 - FIX(multi package): Ecsact parser now parses fully qualified component and transient names ecsact-dev/ecsact_parse#83
- FIX(multi package): Ecsact interpreter now interprets fully qualified component and transient names and package import statements ecsact-dev/ecsact_interpret#159
- FIX(multi package): C++ meta code generator now includes imported package headers which fixes a C++ compile error ecsact-dev/ecsact_lang_cpp#124