Mirror of Svelto.ECS because we're a fan of it
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
GitHub 2197fcce2e UPM package version 3.0.0 4 years ago
.github Update FUNDING.yml 5 years ago
Components UPM package version 3.0.0 4 years ago
DataStructures UPM package version 3.0.0 4 years ago
Debugger UPM package version 3.0.0 4 years ago
Dispatcher UPM package version 3.0.0 4 years ago
ECSResources UPM package version 3.0.0 4 years ago
Extensions UPM package version 3.0.0 4 years ago
Filters UPM package version 3.0.0 4 years ago
Hybrid UPM package version 3.0.0 4 years ago
Serialization UPM package version 3.0.0 4 years ago
Streams UPM package version 3.0.0 4 years ago
.gitignore bump upm version 5 years ago
.gitmodules remove svelto.common from UPM 5 years ago
AllowMultipleAttribute.cs UPM experiment 5 years ago
AllowMultipleAttribute.cs.meta UPM package version 2.9.9 5 years ago
CheckEntityUtilities.cs UPM package version 3.0.0 4 years ago
CheckEntityUtilities.cs.meta UPM package version 2.9.9 5 years ago
ComponentBuilder.CheckFields.cs UPM package version 3.0.0 4 years ago
ComponentBuilder.CheckFields.cs.meta UPM package version 3.0.0 4 years ago
ComponentBuilder.cs UPM package version 3.0.0 4 years ago
ComponentBuilder.cs.meta UPM package version 3.0.0 4 years ago
Components.meta UPM package version 3.0.0 4 years ago
DBC.cs UPM package version 3.0.0 4 years ago
DBC.cs.meta UPM package version 2.9.9 5 years ago
DataStructures.meta UPM package version 2.9.9 5 years ago
Debugger.meta UPM package version 3.0.0 4 years ago
Dispatcher.meta UPM package version 2.9.9 5 years ago
DynamicEntityDescriptor.cs UPM package version 3.0.0 4 years ago
DynamicEntityDescriptor.cs.meta UPM package version 2.9.9 5 years ago
ECSException.cs UPM package version 3.0.0 4 years ago
ECSException.cs.meta UPM package version 2.9.9 5 years ago
ECSResources.meta UPM package version 2.9.9 5 years ago
EGID.cs UPM package version 3.0.0 4 years ago
EGID.cs.meta UPM package version 2.9.9 5 years ago
EGIDMapper.cs UPM package version 3.0.0 4 years ago
EGIDMapper.cs.meta UPM package version 2.9.9 5 years ago
EnginesRoot.DoubleBufferedEntitiesToAdd.cs UPM package version 3.0.0 4 years ago
EnginesRoot.DoubleBufferedEntitiesToAdd.cs.meta UPM package version 3.0.0 4 years ago
EnginesRoot.Engines.cs UPM package version 3.0.0 4 years ago
EnginesRoot.Engines.cs.meta UPM package version 2.9.9 5 years ago
EnginesRoot.Entities.cs UPM package version 3.0.0 4 years ago
EnginesRoot.Entities.cs.meta UPM package version 2.9.9 5 years ago
EnginesRoot.GenericEntityFactory.cs UPM package version 3.0.0 4 years ago
EnginesRoot.GenericEntityFactory.cs.meta UPM package version 2.9.9 5 years ago
EnginesRoot.GenericEntityFunctions.cs UPM package version 3.0.0 4 years ago
EnginesRoot.GenericEntityFunctions.cs.meta UPM package version 2.9.9 5 years ago
EnginesRoot.Submission.cs UPM package version 3.0.0 4 years ago
EnginesRoot.Submission.cs.meta UPM package version 2.9.9 5 years ago
EntitiesDB.FindGroups.cs UPM package version 3.0.0 4 years ago
EntitiesDB.FindGroups.cs.meta UPM package version 3.0.0 4 years ago
EntitiesDB.cs UPM package version 3.0.0 4 years ago
EntitiesDB.cs.meta UPM package version 2.9.9 5 years ago
EntityCollection.cs UPM package version 3.0.0 4 years ago
EntityCollection.cs.meta UPM package version 2.9.9 5 years ago
EntityComponentInitializer.cs UPM package version 3.0.0 4 years ago
EntityComponentInitializer.cs.meta UPM package version 3.0.0 4 years ago
EntityDescriptorTemplate.cs UPM package version 3.0.0 4 years ago
EntityDescriptorTemplate.cs.meta UPM package version 2.9.9 5 years ago
EntityFactory.cs UPM package version 3.0.0 4 years ago
EntityFactory.cs.meta UPM package version 2.9.9 5 years ago
EntityGroupNotFoundException.cs UPM package version 3.0.0 4 years ago
EntityGroupNotFoundException.cs.meta UPM package version 2.9.9 5 years ago
EntityInfoView.cs UPM package version 3.0.0 4 years ago
EntityInfoView.cs.meta UPM package version 2.9.9 5 years ago
EntityNotFoundException.cs UPM package version 3.0.0 4 years ago
EntityNotFoundException.cs.meta UPM package version 2.9.9 5 years ago
EntitySubmissionScheduler.cs UPM package version 3.0.0 4 years ago
EntitySubmissionScheduler.cs.meta UPM package version 2.9.9 5 years ago
EntitySubmitOperation.cs UPM package version 3.0.0 4 years ago
EntitySubmitOperation.cs.meta UPM package version 2.9.9 5 years ago
EntityViewUtility.cs UPM package version 3.0.0 4 years ago
EntityViewUtility.cs.meta UPM package version 2.9.9 5 years ago
ExclusiveGroup.cs UPM package version 3.0.0 4 years ago
ExclusiveGroup.cs.meta UPM package version 2.9.9 5 years ago
ExclusiveGroupStruct.cs UPM package version 3.0.0 4 years ago
ExclusiveGroupStruct.cs.meta UPM package version 3.0.0 4 years ago
ExtendibleEntityDescriptor.cs UPM package version 3.0.0 4 years ago
ExtendibleEntityDescriptor.cs.meta UPM package version 2.9.9 5 years ago
Extensions.meta UPM package version 2.9.9 5 years ago
Filters.meta UPM package version 3.0.0 4 years ago
GenericEntityDescriptor.cs UPM package version 3.0.0 4 years ago
GenericEntityDescriptor.cs.meta UPM package version 2.9.9 5 years ago
GlobalTypeID.cs UPM package version 3.0.0 4 years ago
GlobalTypeID.cs.meta UPM package version 3.0.0 4 years ago
GroupCompound.cs UPM package version 3.0.0 4 years ago
GroupCompound.cs.meta UPM package version 3.0.0 4 years ago
Hybrid.meta UPM package version 2.9.9 5 years ago
IComponentBuilder.cs UPM package version 3.0.0 4 years ago
IComponentBuilder.cs.meta UPM package version 3.0.0 4 years ago
IDisposingEngine.cs UPM package version 3.0.0 4 years ago
IDisposingEngine.cs.meta UPM package version 3.0.0 4 years ago
IEngine.cs UPM package version 3.0.0 4 years ago
IEngine.cs.meta UPM package version 2.9.9 5 years ago
IEntityComponent.cs UPM package version 3.0.0 4 years ago
IEntityComponent.cs.meta UPM package version 3.0.0 4 years ago
IEntityDescriptorHolder.cs UPM experiment 5 years ago
IEntityDescriptorHolder.cs.meta UPM package version 2.9.9 5 years ago
IEntityFactory.cs UPM package version 3.0.0 4 years ago
IEntityFactory.cs.meta UPM package version 2.9.9 5 years ago
IEntityFunctions.cs UPM package version 3.0.0 4 years ago
IEntityFunctions.cs.meta UPM package version 2.9.9 5 years ago
IQueryingEntitiesEngine.cs UPM package version 3.0.0 4 years ago
IQueryingEntitiesEngine.cs.meta UPM package version 2.9.9 5 years ago
LICENSE UPM package version 2.9.8 5 years ago
LICENSE.meta UPM package version 2.9.9 5 years ago
NamedExclusiveGroup.cs UPM package version 3.0.0 4 years ago
NamedExclusiveGroup.cs.meta UPM package version 3.0.0 4 years ago
QueryGroups.cs UPM package version 3.0.0 4 years ago
QueryGroups.cs.meta UPM package version 3.0.0 4 years ago
README.md UPM package version 3.0.0 4 years ago
README.md.meta UPM package version 2.9.9 5 years ago
Serialization.meta UPM package version 2.9.9 5 years ago
SetEGIDWithoutBoxing.cs UPM package version 3.0.0 4 years ago
SetEGIDWithoutBoxing.cs.meta UPM package version 3.0.0 4 years ago
SimpleEntitiesSubmissionScheduler.cs UPM package version 3.0.0 4 years ago
SimpleEntitiesSubmissionScheduler.cs.meta UPM package version 3.0.0 4 years ago
SortedEnginesGroup.cs UPM package version 3.0.0 4 years ago
SortedEnginesGroup.cs.meta UPM package version 3.0.0 4 years ago
Streams.meta UPM package version 3.0.0 4 years ago
Svelto.ECS.asmdef UPM package version 3.0.0 4 years ago
Svelto.ECS.asmdef.meta UPM package version 2.9.9 5 years ago
Svelto.ECS.csproj UPM package version 3.0.0 4 years ago
Svelto.ECS.csproj.meta UPM package version 2.9.9 5 years ago
TypeSafeDictionaryFactory.cs UPM package version 3.0.0 4 years ago
TypeSafeDictionaryFactory.cs.meta UPM package version 3.0.0 4 years ago
UnsortedEnginesGroup.cs UPM package version 3.0.0 4 years ago
UnsortedEnginesGroup.cs.meta UPM package version 3.0.0 4 years ago
WaitForSubmissionEnumerator.cs UPM package version 3.0.0 4 years ago
WaitForSubmissionEnumerator.cs.meta UPM package version 2.9.9 5 years ago
package.json UPM package version 3.0.0 4 years ago
package.json.meta UPM package version 2.9.9 5 years ago

README.md

Svelto Entity Component System 3.0

=====================================

Real ECS framework for c#. Enables to write encapsulated, decoupled, maintainable, highly efficient, data oriented, cache friendly, code without pain. Although the framework is platform agnostic (compatible with c# 7 and .net standard 2.0), it comes with several Unity extensions.

Why using Svelto.ECS with Unity?

_Svelto.ECS wasn't born just from the needs of a large team, but also as result of years of reasoning behind software engineering applied to game development(*). Svelto.ECS hasn't been written just to develop faster code, it has been designed to help develop better code. Performance gain is just one of the benefits in using Svelto.ECS, as ECS in general is a great way to write cache-friendly code. Svelto.ECS has been developed with the idea of ECS being a paradigm and not just a pattern, letting the user shifting completely away from Object Oriented Programming with consequent improvements of the code design and code maintainability. Svelto.ECS is the result of years of iteration of the ECS paradigm applied to real game development with the intent to be as fool proof as possible.

How to clone the repository:

The folders Svelto.ECS, Svelto.Tasks and Svelto.Common, where present, are submodules pointing to the relative repositories. If you find them empty, you need to update them through the submodule command. Check some instructions here: https://github.com/sebas77/Svelto.ECS.Vanilla.Example/wiki

Svelto is now distributed as Unity Package too openupm

read this article for more information:http://www.sebaslab.com/distributing-svelto-through-openupm/

Official Examples

* Mini Examples: https://github.com/sebas77/Svelto.MiniExamples (including articles)

Official Discord Server (join to get help from me for free!)

Official Articles

Framework articles:

Theory related articles (in order of publishing date):

Practical articles

Note: I included the IoC articles just to show how I shifted over the years from using an IoC container to use an ECS framework and the rationale behind its adoption.

The perfect companion for Svelto.ECS is Svelto.Tasks to run the logic of the Systems even on other threads!

Users Generated Content (I removed all the outdated articles, so this is a call for new ones!)

In case of bugs

Best option is to fork and clone https://github.com/sebas77/Svelto.ECS.Tests, add new tests to reproduce the problem and request a pull. I will then fix the issue. Also feel free to contact me on Discord.

The Github wiki page

Completely outdated and could even mislead. Feel free to update it if you have a good understanding of Svelto! I decided I won't update it anymore as it's better for me to focus on other parts of Svelto development. If you need any help, you will need to join the aforementioned discord server.

I like the project, how can I help?

Hey thanks a lot for considering this. You can help in several ways. The simplest is to talk about Svelto.ECS and spread the word, more we are, better it is for the community. Then you can help with the documentation, updating the wiki or writing your own articles. Svelto.ECS has all the features needed to make a game with the ECS pattern, but some areas are lacking: A visual debugger and more unit tests are needed. Other platforms other than Unity could get some love too: Stride Game, Godot, monogame, FNA or whatever supports c#. Porting to other languages, expecially c++, would be awesome but probably pointless. Please check the lane dedicated to the community tasks list here: https://github.com/sebas77/Svelto.ECS/projects/1 and let me know if you want to take something on!

Svelto Framework is used to develop the following products(*):

Gamecraft Robocraft Infinity Cardlife

*if you want your products made with Svelto here, just send me an email or whatever, I'll be super happy to add them.

Note: Dear Svelto Users : Although I am committed to help you and write articles as much as I can, I will never be able to keep all the documentation up to date. If you are a happy svelto user and you want to contribute, please feel free to update the github wiki! 🙏👊