Bläddra i källkod

review: README

Michele Caini 7 år sedan
förälder
incheckning
0b7206a92d
2 ändrade filer med 50 tillägg och 57 borttagningar
  1. 48 57
      README.md
  2. 2 0
      TODO

+ 48 - 57
README.md

@@ -1,4 +1,4 @@
-# EnTT Framework
+# EnTT
 
 [![Build Status](https://travis-ci.org/skypjack/entt.svg?branch=master)](https://travis-ci.org/skypjack/entt)
 [![Build status](https://ci.appveyor.com/api/projects/status/rvhaabjmghg715ck?svg=true)](https://ci.appveyor.com/project/skypjack/entt)
@@ -65,10 +65,10 @@
 
 # Introduction
 
-`EnTT` is a header-only, tiny and easy to use framework written in modern
-C++.<br/>
-It was originally designed entirely around an architectural pattern called _ECS_
-that is used mostly in game development. For further details:
+`EnTT` is a header-only, tiny and easy to use entity-component system (and much
+more) written in modern C++.<br/>
+The entity-component-system (also known as _ECS_) is an architectural pattern
+used mostly in game development. For further details:
 
 * [Entity Systems Wiki](http://entity-systems.wikidot.com/)
 * [Evolve Your Hierarchy](http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/)
@@ -77,35 +77,12 @@ that is used mostly in game development. For further details:
 A long time ago, the sole entity-component system was part of the project. After
 a while the codebase has grown and more and more classes have become part of the
 repository.<br/>
-That's why today it's called _the EnTT Framework_.
-
-Currently, `EnTT` is tested on Linux, Microsoft Windows and OS X. It has proven
-to work also on both Android and iOS.<br/>
-Most likely it will not be problematic on other systems as well, but has not
-been sufficiently tested so far.
-
-## The framework
-
-`EnTT` was written initially as a faster alternative to other well known and
-open source entity-component systems. Nowadays the `EnTT` framework is moving
-its first steps. Much more will come in the future and hopefully I'm going to
-work on it for a long time.<br/>
-Requests for feature, PR, suggestions ad feedback are highly appreciated.
-
-If you find you can help me and want to contribute to the `EnTT` framework with
-your experience or you do want to get part of the project for some other
-reasons, feel free to contact me directly (you can find the mail in the
-[profile](https://github.com/skypjack)).<br/>
-I can't promise that each and every contribution will be accepted, but I can
-assure that I'll do my best to take them all seriously.
-
-### State of the art
-
-Here is a brief list of what it offers today:
+Here is a brief, yet incomplete list of what it offers today:
 
 * Statically generated integer identifiers for types (assigned either at
   compile-time or at runtime).
 * A constexpr utility for human readable resource identifiers.
+* A minimal configuration system built on top of the monostate pattern.
 * An incredibly fast entity-component system based on sparse sets, with its own
   views and a _pay for what you use_ policy to adjust performance and memory
   usage according to users' requirements.
@@ -123,9 +100,12 @@ Here is a brief list of what it offers today:
 Consider it a work in progress. For more details and an updated list, please
 refer to the [online documentation](https://skypjack.github.io/entt/). It
 probably contains much more. Moreover, the whole API is fully documented in-code
-for those who are brave enough to read it.<br/>
-Continue reading to know how the different parts of the project work or follow
-the link above to take a look at the API reference.
+for those who are brave enough to read it.
+
+Currently, `EnTT` is tested on Linux, Microsoft Windows and OS X. It has proven
+to work also on both Android and iOS.<br/>
+Most likely it will not be problematic on other systems as well, but has not
+been sufficiently tested so far.
 
 ## Code Example
 
@@ -197,7 +177,7 @@ satisfying at all. The fastest and nothing more, fairly little indeed. When I
 realized it, I tried hard to keep intact the great performance of `EnTT` and to
 add all the features I wanted to see in *my own library* at the same time.
 
-Today `EnTT` is finally what I was looking for: still faster than its
+Nowadays, `EnTT` is finally what I was looking for: still faster than its
 _competitors_, lower memory usage in the average case, a really good API and an
 amazing set of features. And even more, of course.
 
@@ -265,8 +245,8 @@ documentation:
 
 ## Library
 
-`EnTT` is a header-only library. This means that including the `entt.hpp`
-header is enough to include the whole framework and use it. For those who are
+`EnTT` is a header-only library. This means that including the `entt.hpp` header
+is enough to include the library as a whole and use it. For those who are
 interested only in the entity-component system, consider to include the sole
 `entity/registry.hpp` header instead.<br/>
 It's a matter of adding the following line to the top of a file:
@@ -380,8 +360,8 @@ them the way they prefer. No need to register systems or their types neither
 with the registry nor with the entity-component system at all.
 
 The following sections will explain in short how to use the entity-component
-system, the core part of the whole framework.<br/>
-In fact, the framework is composed of many other classes in addition to those
+system, the core part of the whole library.<br/>
+In fact, the project is composed of many other classes in addition to those
 describe below. For more details, please refer to the inline documentation.
 
 ## The Registry, the Entity and the Component
@@ -1138,7 +1118,7 @@ entt::dependency<AType, AnotherType>(entt::break_t{}, registry.construction<MyTy
 
 In `EnTT`, there exists a sort of _null entity_ made available to users that is
 accessible via the `entt::null` variable.<br/>
-The framework guarantees that the following expression always returns false:
+The library guarantees that the following expression always returns false:
 
 ```cpp
 registry.valid(entt::null);
@@ -1658,11 +1638,10 @@ expedients.
 
 # Crash Course: core functionalities
 
-The `EnTT` framework comes with a bunch of core functionalities mostly used by
-the other parts of the library itself.<br/>
-Hardly users of the framework will include these features in their code, but
-it's worth describing what `EnTT` offers so as not to reinvent the wheel in case
-of need.
+`EnTT` comes with a bunch of core functionalities mostly used by the other parts
+of the library itself.<br/>
+Hardly users will include these features in their code, but it's worth
+describing what `EnTT` offers so as not to reinvent the wheel in case of need.
 
 ## Compile-time identifiers
 
@@ -1721,7 +1700,7 @@ Sometimes it's useful to be able to give unique identifiers to types at
 runtime.<br/>
 There are plenty of different solutions out there and I could have used one of
 them. In fact, I adapted the most common one to my requirements and used it
-extensively within the entire framework.
+extensively within the entire library.
 
 It's the `Family` class. Here is an example of use directly from the
 entity-component system:
@@ -1868,8 +1847,8 @@ Sometimes processes are a useful tool to work around the strict definition of a
 system and introduce logic in a different way, usually without resorting to the
 introduction of other components.
 
-The `EnTT` framework offers a minimal support to this paradigm by introducing a
-few classes that users can use to define and execute cooperative processes.
+`EnTT` offers a minimal support to this paradigm by introducing a few classes
+that users can use to define and execute cooperative processes.
 
 ## The process
 
@@ -2068,9 +2047,9 @@ requirements of the piece of software in which they are used.<br/>
 Examples are loading everything on start, loading on request, predictive
 loading, and so on.
 
-The `EnTT` framework doesn't pretend to offer a _one-fits-all_ solution for the
-different cases. Instead, it offers a minimal and perhaps trivial cache that can
-be useful most of the time during prototyping and sometimes even in a production
+`EnTT` doesn't pretend to offer a _one-fits-all_ solution for the different
+cases. Instead, it offers a minimal and perhaps trivial cache that can be useful
+most of the time during prototyping and sometimes even in a production
 environment.<br/>
 For those interested in the subject, the plan is to improve it considerably over
 time in terms of performance, memory usage and functionalities. Hoping to make
@@ -2302,8 +2281,8 @@ it solves a problem but may not adapt well to other requirements that may arise
 from time to time.
 
 In case that the flexibility and potential of an `std::function` are not
-required or where you are looking for something different, the `EnTT` framework
-offers a full set of classes to solve completely different problems.
+required or where you are looking for something different, `EnTT` offers a full
+set of classes to solve completely different problems.
 
 ## Signals
 
@@ -2472,7 +2451,7 @@ auto ret = delegate(42);
 
 Probably too much small and pretty poor of functionalities, but the delegate
 class can help in a lot of cases and it has shown that it is worth keeping it
-within the framework.
+within the library.
 
 ## Event dispatcher
 
@@ -2709,8 +2688,7 @@ projects based on EnTT and did not hold back when it came to documenting them.
 
 Below an incomplete list of projects and articles:
 
-* [EnttPong](https://github.com/reworks/EnttPong): example game for `EnTT`
-  framework.
+* [EnttPong](https://github.com/reworks/EnttPong): example game with `EnTT`.
 * [Space Battle: Huge edition](http://victor.madtriangles.com/code%20experiment/2018/06/11/post-ecs-battle-huge.html):
   huge space battle built entirely from scratch.
 * [Space Battle](https://github.com/vblanco20-1/ECS_SpaceBattle): huge space
@@ -2730,7 +2708,20 @@ open an issue or a PR and I'll be glad to add them to the list.
 
 # Contributors
 
-If you want to participate, please see the guidelines for
+`EnTT` was written initially as a faster alternative to other well known and
+open source entity-component systems. Nowadays this library is moving its first
+steps. Much more will come in the future and hopefully I'm going to work on it
+for a long time.<br/>
+Requests for features, PR, suggestions ad feedback are highly appreciated.
+
+If you find you can help me and want to contribute to the project with your
+experience or you do want to get part of the project for some other reasons,
+feel free to contact me directly (you can find the mail in the
+[profile](https://github.com/skypjack)).<br/>
+I can't promise that each and every contribution will be accepted, but I can
+assure that I'll do my best to take them all seriously.
+
+If you decide to participate, please see the guidelines for
 [contributing](https://github.com/skypjack/entt/blob/master/CONTRIBUTING)
 before to create issues or pull requests.<br/>
 Take also a look at the
@@ -2751,7 +2742,7 @@ Docs released under
 
 Developing and maintaining `EnTT` takes some time and lots of coffee. I'd like
 to add more and more functionalities in future and turn it in a full-featured
-framework.<br/>
+solution.<br/>
 If you want to support this project, you can offer me an espresso. I'm from
 Italy, we're used to turning the best coffee ever in code. If you find that
 it's not enough, feel free to support me the way you prefer.<br/>

+ 2 - 0
TODO

@@ -4,8 +4,10 @@
 * debugging tools (#60): the issue online already contains interesting tips on this, look at it
 * define basic reactive systems (track entities to which component is attached, track entities from which component is removed, and so on)
 * define systems as composable mixins (initializazion, reactive, update, whatever) with flexible auto-detected arguments (registry, views, etc)
+* add to the prototype the possibility to submit components during creation to use to initialize the ones created by the prototype itself
 * create dedicated flat map based on types implementation (sort of "type map") for types to use within the registry and so on...
 * ease the assignment of tags as string (type-less assign member function + user defined literal for hashed strings)
+* move signals within sparse set and attacchee if possible, it would be less error-prone
 * family -> std::uint32_t (or some other fixed and known size type)
 * work stealing job system (see #100)
 * C++17. That's all.