Skip to content
Jeff Campbell edited this page Feb 27, 2022 · 5 revisions

I'm getting an error that the dotnet file does not exist or that instances of MSBuild could be detected!

  • First, ensure you have the .Net Core 3.1 runtime and SDK installed and try again.
  • If this does not resolve your issue, try executing the terminal command below to ensure the dotnet executable can be found in your path.

ln -s /usr/local/share/dotnet/dotnet /usr/local/bin

I've never used an ECS framework before; does that mean everything needs to be implemented in ECS?

No, certainly not. An ECS is intended to help decompose a simulation into components representing data, entities representing objects, and systems representing mechanical logic. There are often time specific services or systems which don't fit well into this guise directly, such as web API, dedicated AI patterns like GOAP, or a save system. In those cases, oftentimes these are injected or assigned to dedicated systems which call into them. In this way, your ECS implementation can for example, make calls to an analytics service or system that is external to your ECS.

How does EntitasRedux compare to Unity's ECS framework?

EntitasRedux and Unity's ECS framework have two different, but not conflicting aims.

  • Unity's ECS framework is aimed at implementing a new high-performance ECS framework using all new tooling and native feature support that can easily work across multi-threads. With this paradigm, Unity has made some initial progress in implementing this new ECS framework, but oftentimes offers very little support for many native features and provides little guidance; it's all still in an experimental state and finding help in forums and across the web often yields in out-of-date information.
  • EntitasRedux is an ECS implemented within the existing MonoBehaviour world and so while offering an objectively better design pattern and performance than using MonoBehaviour-based components, it exists in a paradigm where knowledge is easily transferred from one to the other. It is also built upon a solid foundation with 400+ unit tests and a large knowledgebase from the Entitas community to be able to ask questions of.

In the end, EntitasRedux is a solid framework that can enable you to make games now and doesn't require you to upend your existing Unity knowledge or limit the features you can use in favor of an experimental, work-in-progress framework. It's also still possible to take advantage of newer Unity DOTS features like Jobs and Burst from EntitasRedux in the same way you could from a MonoBehaviour.

How does EntitasRedux compare to the original Entitas framework?

EntitasRedux is a fork of the original Entitas Framework that aims to be a completely open-source framework with more frequent updates, bug fixes, and a more modern code style while upholding the ease of use, robustness, and high expectations set by the original. The code generation library Genesis that powers EntitasRedux is also open source and can be used for purposes outside of EntitasRedux. While over time the two frameworks may differ more and more, we share the same discord and the same knowledgebase/community.

How can I port my game from Entitas to EntitasRedux? What are common types of changes I should look out for?

  • All code is now contained in AssemblyDefinitions rather than assemblies. In many cases similar assemblies were merged together. As a result of this, namespaces are different from what they were previously.
  • Many members, including components on an entity, are in UpperCamelCase rather than lowerCamelCase.
  • IExecuteSystems were refactored into IFixedUpdateSystem, IUpdateSystem, and ILateUpdateSystem systems to account for the three Unity update intervals.
  • IComponentListener has been refactored to IComponentAddedListener when the [Event] attribute is used on a component and code generated.