An ECS (Entity Component System) for Python
MIT License
Maintenance release
esper.current_world
property. (#100)Published by benmoran56 10 months ago
Maintenance release
esper.current_world
property to easily check the current World context.Published by benmoran56 over 1 year ago
Published by benmoran56 almost 2 years ago
Published by benmoran56 about 2 years ago
Published by benmoran56 over 2 years ago
Published by benmoran56 over 2 years ago
Published by benmoran56 over 3 years ago
Maintenance release
Published by benmoran56 over 3 years ago
Maintenance release
Published by benmoran56 almost 5 years ago
This release brings two new convenience methods: World.has_components
and World.try_components
. These function identically to their singular versions, but allow querying for an arbitrary number of Components. In addition, many type names were privatized to prevent namespace pollution when you import esper.
Published by benmoran56 over 5 years ago
This release contains a few small but important improvements. Calls to super() are no longer necessary in your Processor subclasses, which should eliminate a fair amount of boilerplate. The README has also been updated with more usage examples - all methods should now have at least one example. And finally, wheels are now uploaded to PyPi. This should help with packaging systems that only support wheels. Addresses issue #38.
Published by benmoran56 about 6 years ago
Finally, version 1.0! I'm pretty happy with the library, and want to give thanks to everyone who has contributed. Also, thanks to all the users who have given feedback.
Esper is now using simple lru_caching internally by default.
The cache is currently flushed when adding or deleting Entities or Components from the
World, but Component queries are much faster generally. This will likely be improved in a
Future version. In addition to caching, Esper now supports passing kwargs to Processors.
Continuous Integration testing is now being done for all currently supported Python versions, including 3.7.
Published by benmoran56 about 7 years ago
Esper is now a single file! Just take esper.py, and drop it right into your project folder. No need to clutter your project with additional folders that weren't really necessary.
Published by benmoran56 over 7 years ago
This release contains a new timer that can be enabled to profile Processor execution time. Simply pass the "timed=True" parameter to the World on instantiation, and a new World.process_times dictionary will be available. This contains the total execution time of each Processor in milliseconds, and can be logged, printed, or displayed on screen as is useful. It's useful to see a quick profile of which processors are using the most cpu time, without fully profiling your game. This release also contains some consolidations and cleanups for the benchmarks.
Published by benmoran56 about 8 years ago
In this new point release, Entities are now lazily deleted by default. You can now delete entities even while iterating over components in your processors, without raising "dict size changed during iteration" errors, and avoiding the need to manually track and delete "dead" entities after iteration.
Published by benmoran56 over 8 years ago
A minor maintenance release. A new method: World.get_processor has been added.
Published by benmoran56 over 8 years ago
There is a new method: World.components_for_entity() which may be useful in some limited situations. There is also other minor documentation changes and cleanups.
Published by benmoran56 over 8 years ago
There is a new method: World.has_component() in this release, as well as some minor refactoring a bug fix. The new method returns a boolean (True/False), and is a simple convenience for certain types of systems. In addition, test coverage is better and now covers esper.CachedWorld.
Published by benmoran56 almost 9 years ago