Hi everyone, I’ve recently joined the ECS team for Product Strategy coverage and wanted to help provide an update here together with @joepl!
We recently updated our roadmap and shared it at Unite in Barcelona at the end of November. In this roadmap presentation we were excited to share more details about faster, incremental architecture updates and what we intend for that to look like over the next year leading up to the next LTS in Unity 6.7. The section focused on Entities can be seen at the 26:37 timestamp of the presentation on YouTube, embedded below this paragraph. Our team is creating this post on Unity Discussions to unpack this information for questions, discussion, and feedback.
ECS as Core Packages
The Entities, Collections, Mathematics, and Entities Graphics packages are coming to Unity 6.4 as Core Packages. This means that they will ship with the Editor and allow us to more quickly make changes to integrate ECS into the engine. This will help us to do the work of supporting GameObjects with Entities in the future, as we work towards implementing the ECS for All initiative. It will also mean that we can ship the features to users faster and more incrementally.
InstanceID/EntityId changes in the Engine
Starting in Unity 6.4, we’re making some fundamental changes in the spirit of having ‘ECS for All’ in the Engine. Specifically, transforming the InstanceID int into a new EntityId type. EntityId will represent both GameObjects and Entities; and allow us to treat GameObjects as Entities in future Unity 6.X releases. Every GameObject will have the ability to have ECS component data attached to it and users can optimize performance-critical parts of their game with ECS systems.
This change does involve structural changes to our API that we are rolling out in the next couple series of releases. In 6.4 EntityId will become the preferred type for identifying objects in Unity and InstanceID methods will be marked as deprecated. In future releases InstanceID will be entirely removed as we turn EntityId into a type with the same internal 64-bit structure as the current ECS Entity type and allocate them with the same allocator.
Important:
Because EntityId can no longer be represented by a single int, there are assumptions developers should avoid. Notably the following are no longer guaranteed to work:
- Casting EntityId to and from an int. EntityId will not be represented internally by a 32bit int in the future.
- Relying on positive vs negative for checking if EntityId represents an asset-loaded object.
- Using Object.GetHashCode to get an EntityId.
- Using .ToString to serialize into a string; and using int.Parse by itself to get it back into the same type.
- Sorting by EntityId to sort by creation order.
- Storing state in the first bit of the EntityId (in InstanceID, this bit was unused).
FAQ:
Q: I’m still not completely sure how to think about ECS, where can I find an overview?
A: This webpage provides a great overview on ECS for Unity.
Q: What does this mean for getting new versions of ECS packages?
A: New versions of ECS packages will ship alongside versions of the Editor. Expect bug fixes in patch releases and more major features/changes to arrive in Unity point releases.
Q: I thought ECS For All required a new major version of Unity. Is that no longer true?
A: We’ve changed our plans with the intent to deliver as much as we can incrementally through major Unity 6 versions.
Q: What about Physics and Netcode?
A: Physics and Netcode are planned to join the current set of Core Packages in a future Unity release in 2026.
Q: Can I still change the package source?
A: Yes. You can still have embedded packages with local source changes in your project.
Q: Will the packages evolve with breaking changes during the Unity Editor life cycle?
A: Yes. The version of ECS packages will track the Editor version (6.4 in the next version). We will incrementally be rolling out changes with a staged approach of deprecating anything we are planning on removing first.
Q: What about using ECS packages with previous versions of the Editor?.
A: We will continue to support and fix bugs in the 1.x versions of ECS packages. These versions will work with the specified minimum Unity versions of those packages.