Skip to content

Releases: friflo/Friflo.Json.Fliox

engine-v3.0.0-preview.4

21 Jul 22:08
Compare
Choose a tag to compare
  • Added runtime assertions to ensure an entity tree (parent / child relations) never contains cycles. So the tree is always a DAG.
    An operation e.g. AddChild() which would create a cycle within a tree will throw an exception like:
    System.InvalidOperationException : operation would cause a cycle: 3 -> 2 -> 1 -> 3
    
  • Improved performance of Entity.AddChild(), Entity.RemoveChild() & Entity.InsertChild() by 30%

engine-v3.0.0-preview.3

20 Jul 07:27
Compare
Choose a tag to compare
  • Reduced number of properties displayed for an Entity in the debugger.
    Moved properties: Archetype, Parent & Scripts to Entity.Info

  • Improved performance and memory allocations to build a scene tree.
    Each parent in a tree has a TreeNode component.
    reduced sizeof(TreeNode) component from 16 to 8 bytes.

    Before: Each TreeNode has an individual int[] array storing child ids.
    Now: child ids are stored in a ~ dozen id pool array buffers. Independent from the number of parent or child entities.
    If these array buffers grown large enough over time no heap allocations will happen if adding or removing child entities.

engine-v3.0.0-preview.2

20 Jul 07:43
Compare
Choose a tag to compare

First release with all features described in Wiki Page - Examples ~ Component-Types.

New features:

  • Entity Relationships
  • Relations
  • Search

The API is regarding these new feature is likely to remain stable.

engine-v2.1.0

19 Jun 12:49
Compare
Choose a tag to compare

Added support for generic component and tags types.
See Issue #53. E.g.

public struct GenericComponent<T> : IComponent {
    public T Value;
}

engine-v2.0.0

10 Jun 08:10
Compare
Choose a tag to compare

New Features

  • Introduced Systems, System Groups with command buffers and performance monitoring.
    Details at README - Systems
  • Added support for Native AOT.
    Details at Wiki ⋅ General - Native AOT.
  • Enabled sharing a single QueryFilter instance by multiple queries.
    Changing a query filter - e.g. adding more constrains - directly changes the result set of all queries using the queryFilter.
    var query = store.Query<....>(queryFilter);
  • Added CommandBuffer.Synced intended to record entity changes in parallel query jobs.

Performance

  • Improved bulk creation of entities by 3x - 4x with Archetype.CreateEntities(int count).
    See performance comparison at ECS Benchamrks.
  • Reduced memory footprint of an entity from 48 bytes to 16 bytes.
    See column Allocated in ECS Benchamrks.
  • Decreased initial component type registration from 80 ms to 23 ms (Mac Mini M2).
    Note: Component type registration runs only once per process on the first ECS API call.

Fixes

  • Fixed issue related to JSON serialization. See #45
    Before: Component types with unsupported field types caused an exception.
    Fix: These unsupported field types are now ignored by JSON serializer.
  • Parallel queries: fixed entities - of type ChunkEntities - used as last parameter in a ArchetypeQuery.ForEach(). See #50
    query.ForEach((..., entities) => { ... });
    Before: entities returned always the same set of entities.
    Fix: entities now returns the entities assigned to a thread.
  • Adding a Signal handler to an entity already having a Signal handler replaced the existing one. See #46

Project

  • Simplify project structure for Friflo.Engine.ECS.
    Reduced number of files / folders in Engine folder from 21 to 7.
  • Moved documentation and examples from README.md to GitHub ⋅ Wiki pages.

engine-v2.0.0-preview.9

09 Jun 09:37
Compare
Choose a tag to compare

Add support for Native AOT.
See Wiki · Examples ~ General

engine-v2.0.0-preview.4

31 May 07:48
Compare
Choose a tag to compare

Fixed - adding multiple signal handlers to an entity.
See: #46

v1.0.2

13 May 08:04
Compare
Choose a tag to compare

Fix/Changed behavior:
Unsupported fields/properties in custom classes, structs and interfaces are now ignored by mapper/serialization.

Issue: Generic structs in components is not supported

Before an exception was thrown:

System.InvalidOperationException : invalid standard type. was: Tests.ECS.GenericStruct`1[System.Int32]

E.g.

class MyClass {
    public GenericStruct<int> genericStruct;
}

struct GenericStruct<T> { public T value; }

Commit: Mapper - Ignore unsupported fields/properties in custom classes, structs and interfaces.

v1.0.1

10 May 09:46
Compare
Choose a tag to compare

Added traget framework net8.0 to all projects

Each nuget package now contains an additional folder lib/net8.0 containing a dll for this framework

Update dependencies

  • WebRTC

    • SIPSorcery 6.2.4
  • Database providers

    • Microsoft.Azure.Cosmos 3.39.1
    • MySqlConnector 2.3.7
    • Npgsql 8.0.3 - fixes vulnerability: GHSA-x9vc-6hfv-hg8c
    • SQLitePCLRaw.core 2.1.8
      tested all providers with Json.Tests/test-all-async.bat & Json.Tests/test-all-sync.bat
  • Tests:

    • Bogus 35.5.1
    • FluentAssertions 6.12.0
    • Microsoft.NET.Test.Sdk 17.9.0

v1.0.0

08 May 07:33
Compare
Choose a tag to compare
  • Hub: Support setting FlioxClient EntitySet<,> fields in Unity IL2CPP
    commit: Mapper - Support CreateFieldSetterIL() for Unity IL2CPP
  • Support JSON serilization of classes extending generic types.
    commit: Fliox - Mapper: add ClassMapper support for classes extending generic types
    Example class
class MyClass : GenericBase<int> {
    public string: value;
}