Entitas  0.34.0
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
README.md
1 <p align="center">
2  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/Entitas-Header.png" alt="Entitas">
3 </p>
4 
5 ---
6 
7 <p align="center">
8  <a>If you love Entitas as much as we do<br />please support the development</a>
9 
10  <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BTMLSDQULZ852">
11  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/Donate-PayPal.gif" alt="Thank you!"></a>
12 </p>
13 
14 ---
15 
16 <p align="center">
17  <a href="https://gitter.im/sschmid/Entitas-CSharp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge">
18  <img src="https://img.shields.io/badge/chat-on%20gitter-brightgreen.svg" alt="Join the chat at https://gitter.im/sschmid/Entitas-CSharp"></a>
19 
20  <a href="https://twitter.com/intent/follow?original_referer=https%3A%2F%2Fgithub.com%2Fsschmid%2FEntitas-CSharp&screen_name=s_schmid&tw_p=followbutton">
21  <img src="https://img.shields.io/badge/twitter-follow%20%40s__schmid-blue.svg" alt="Twitter Follow Me"></a>
22 
23  <a href="https://twitter.com/intent/follow?original_referer=https%3A%2F%2Fgithub.com%2Fsschmid%2FEntitas-CSharp&screen_name=entitas_csharp&tw_p=followbutton">
24  <img src="https://img.shields.io/badge/twitter-follow%20%40entitas__csharp-blue.svg" alt="Twitter Follow Me"></a>
25 
26  <a href="https://travis-ci.org/sschmid/Entitas-CSharp">
27  <img src="https://travis-ci.org/sschmid/Entitas-CSharp.svg?branch=master" alt="Build Status"></a>
28 
29  <a href="https://github.com/sschmid/Entitas-CSharp/releases">
30  <img src="https://img.shields.io/github/release/sschmid/Entitas-CSharp.svg" alt="Latest release"></a>
31 </p>
32 
33 
34 Entitas - The Entity Component System Framework for C# and Unity
35 ================================================================
36 
37 Entitas is a super fast Entity Component System Framework (ECS) specifically made for C# and Unity. Internal caching and blazing fast component access makes it second to none. Several design decisions have been made to work optimal in a garbage collected environment and to go easy on the garbage collector. Entitas comes with an optional code generator which radically reduces the amount of code you have to write and [makes your code read like well written prose.][clean-coders]
38 
39 <p align="left">
40  <a href="https://dev.windows.com">
41  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/csharp.png" alt="CSharp" height="64"></a>
42  <a href="http://unity3d.com">
43  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/MadeForUnity.png" alt="Unity3d" height="64"></a>
44  <a href="http://unity3d.com/unite/archive/2015">
45  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/UniteEurope2015.png" alt="Unite Europe 2015" height="64"></a>
46  <a href="https://unite.unity.com/2016/europe">
47  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/UniteEurope2016.png" alt="Unite Europe 2016" height="64"></a>
48  <a href="https://www.wooga.com">
49  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/wooga-logo.png" alt="Wooga" height="64"></a>
50 </p>
51 
52 ---
53 
54 ### **[» Ask a question][ask-a-question]**
55 ### **[» Wiki, Overview, Roadmap and example projects][wiki]**
56 ### **[» Community: Games and Examples #madeWithEntitas][wiki-games-and-examples]**
57 
58 ---
59 
60 Videos
61 ======
62 
63 | Entity system architecture with Unity | ECS architecture with Unity by example |
64 |:-------------------------------------:|:--------------------------------------:|
65 | [![Unite Europe 2015][unite-europe-2015-video-thumbnail]][unite-europe-2015-video] | [![Unite Europe 2016][unite-europe-2016-video-thumbnail]][unite-europe-2016-video] |
66 | [» Open the slides on SlideShare: Unite Europe 2015](http://www.slideshare.net/sschmid/uniteeurope-2015) | [» Open the slides on SlideShare: Unite Europe 2016](http://www.slideshare.net/sschmid/uniteeurope-2016) |
67 
68 
69 First glimpse
70 =============
71 
72 The optional [code generator][wiki-code-generator] lets you write code that is super fast, safe and literally screams its intent.
73 
74 ```csharp
75 public static Entity CreateRedGem(this Pool pool, int x, int y) {
76  return pool.CreateEntity()
77  .IsGameBoardElement(true)
78  .IsMovable(true)
79  .AddPosition(x, y)
80  .AddResource(Res.redGem)
81  .IsInteractive(true);
82 }
83 ```
84 
85 ```csharp
86 var entities = pool.GetEntities(Matcher.AllOf(Matcher.Move, Matcher.Position));
87 foreach (var entity in entities) {
88  var move = entity.move;
89  var pos = entity.position;
90  entity.ReplacePosition(pos.x, pos.y + move.speed);
91 }
92 ```
93 
94 
95 Overview
96 ========
97 
98 Entitas is fast, light and gets rid of unnecessary complexity. There are less than a handful classes you have to know to rocket start your game or application:
99 
100 - Entity
101 - Pool
102 - Group
103 - Entity Collector
104 
105 [Read more...][wiki-overview]
106 
107 
108 Code Generator
109 ==============
110 
111 The Code Generator generates classes and methods for you, so you can focus on getting the job done. It radically reduces the amount of code you have to write and improves readability by a huge magnitude. It makes your code less error-prone while ensuring best performance. I strongly recommend using it!
112 
113 [Read more...][wiki-code-generator]
114 
115 
116 Unity integration
117 =================
118 
119 The optional Unity module integrates Entitas nicely into Unity and provides powerful editor extensions to inspect and debug pools, groups, entities, components and systems.
120 
121 [Read more...][wiki-unity-integration]
122 
123 <p align="center">
124  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/Entitas.Unity-MenuItems.png" alt="Entitas.Unity MenuItems">
125  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/Entitas.Unity.VisualDebugging-Entity.png" alt="Entitas.Unity.VisualDebugging Entity">
126  <img src="https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/Entitas.Unity.VisualDebugging-DebugSystems.png" alt="Entitas.Unity.VisualDebugging Systems">
127 </p>
128 
129 
130 Entitas deep dive
131 =================
132 
133 [Read the wiki][wiki] or checkout the awesome [example projects][wiki-example-projects] to see Entitas in action. These example projects illustrate how systems, groups, collectors and entities all play together seamlessly.
134 
135 
136 Download Entitas
137 ================
138 
139 Each release is published with zip files attached containing all source files you need.
140 
141 [**Entitas-CSharp.zip**][entitas-csharp-zip]
142 
143 [**Entitas-Unity.zip**][entitas-unity-zip]
144 
145 [Show releases][releases]
146 
147 
148 Contributing to Entitas
149 =======================
150 
151 The project is hosted on [GitHub][github-entitas] where you can [report issues][issues], fork the project and [submit pull requests][pulls].
152 
153 Entitas.sln contains all projects and tests in one solution. Run Scripts/build.sh to copy all required Entitas source files to all Unity projects.
154 
155 To run the tests, navigate to the project root folder and execute Scripts/runTests.sh.
156 
157 - Check the [issues][issues] to make sure nobody hasn't already requested it and/or contributed it
158 - Fork the project
159 - Checkout the latest develop
160 - Start a feature/yourFeatureOrBugfix branch based on the latest develop
161 - Make sure to add/update tests. This is important so nobody will break it in a future version. Please write tests first, followed by the implementation.
162 - Commit and push until you are happy with your contribution
163 - Create a [pull request][pulls]
164 
165 
166 Thanks to
167 =========
168 
169 Big shout out to [@mzaks][github-mzaks], [@cloudjubei][github-cloudjubei] and [@devboy][github-devboy] for endless hours of discussion and helping making Entitas awesome!
170 
171 
172 Maintainer(s)
173 =============
174 
175 - [@sschmid][github-sschmid] | [@s_schmid][twitter-sschmid] | [@entitas_csharp][twitter-entitas_csharp]
176 
177 
178 Different language?
179 ===================
180 
181 Entitas is available in
182 - [C#](https://github.com/sschmid/Entitas-CSharp)
183 - [Swift](https://github.com/mzaks/Entitas-Swift)
184 - [C++](https://github.com/JuDelCo/Entitas-Cpp)
185 - [Objective-C](https://github.com/wooga/entitas)
186 - [Java](https://github.com/Rubentxu/entitas-java)
187 - [Scala](https://github.com/darkoverlordofdata/entitas-scala)
188 - [Go](https://github.com/wooga/go-entitas)
189 - [F#](https://github.com/darkoverlordofdata/entitas-fsharp)
190 - [TypeScript](https://github.com/darkoverlordofdata/entitas-ts)
191 - [Kotlin](https://github.com/darkoverlordofdata/entitas-kotlin)
192 - [Haskell](https://github.com/mhaemmerle/entitas-haskell)
193 - [Erlang](https://github.com/mhaemmerle/entitas_erl)
194 - [Clojure](https://github.com/mhaemmerle/entitas-clj)
195 
196 
197 [clean-coders]: https://cleancoders.com "Clean Coders"
198 [entitas-csharp-zip]: https://github.com/sschmid/Entitas-CSharp/blob/master/bin/Entitas-CSharp.zip?raw=true "Download Entitas-CSharp.zip"
199 [entitas-unity-zip]: https://github.com/sschmid/Entitas-CSharp/blob/master/bin/Entitas-Unity.zip?raw=true "Download Entitas-Unity.zip"
200 
201 [wiki]: https://github.com/sschmid/Entitas-CSharp/wiki "Entitas Wiki"
202 [wiki-code-generator]: https://github.com/sschmid/Entitas-CSharp/wiki/Code-Generator "Wiki - Code Generator"
203 [wiki-overview]: https://github.com/sschmid/Entitas-CSharp/wiki/Overview "Wiki - Overview"
204 [wiki-unity-integration]: https://github.com/sschmid/Entitas-CSharp/wiki/Unity-integration "Wiki - Unity Integration"
205 [wiki-example-projects]: https://github.com/sschmid/Entitas-CSharp/wiki/Example-projects "Wiki - Example Projects"
206 [wiki-games-and-examples]: https://github.com/sschmid/Entitas-CSharp/wiki/Games-and-Examples "Wiki - Games and Examples #madeWithEntitas"
207 
208 [ask-a-question]: https://github.com/sschmid/Entitas-CSharp/issues/new "Ask a question"
209 
210 [unite-europe-2015-video-thumbnail]: https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/UniteEurope2015-Video.png "Video: Watch the Entitas Talk at Unite Europe 2015"
211 [unite-europe-2015-video]: https://www.youtube.com/watch?v=1wvMXur19M4 "Video: Watch the Entitas Talk at Unite Europe 2015"
212 [unite-europe-2016-video-thumbnail]: https://raw.githubusercontent.com/sschmid/Entitas-CSharp/master/Readme/Images/UniteEurope2016-Video.png "Video: Watch the Entitas Talk at Unite Europe 2016"
213 [unite-europe-2016-video]: https://www.youtube.com/watch?v=lNTaC-JWmdI "Video: Watch the Entitas Talk at Unite Europe 2016"
214 
215 [github-entitas]: https://github.com/sschmid/Entitas-CSharp "sschmid/Entitas-CSharp"
216 [releases]: https://github.com/sschmid/Entitas-CSharp/releases "Releases"
217 [issues]: https://github.com/sschmid/Entitas-CSharp/issues "Issues"
218 [pulls]: https://github.com/sschmid/Entitas-CSharp/pulls "Pull Requests"
219 
220 [twitter-sschmid]: https://twitter.com/s_schmid "s_schmid on Twitter"
221 [twitter-entitas_csharp]: https://twitter.com/entitas_csharp "entitas_csharp on Twitter"
222 
223 [github-sschmid]: https://github.com/sschmid "@sschmid"
224 [github-mzaks]: https://github.com/mzaks "@mzaks"
225 [github-cloudjubei]: https://github.com/cloudjubei "@cloudjubei"
226 [github-devboy]: https://github.com/devboy "@devboy"