esper

An ECS (Entity Component System) for Python

MIT License

Downloads
57.2K
Stars
545
Committers
16
esper - Starlet Latest Release

Published by benmoran56 5 months ago

Maintenance release

Changes

  • Fix unreadable esper.current_world property. (#100)
  • Minor typing configuration updates.
  • Remove outdated pyglet example. (Another one already exists).
esper - Palidor

Published by benmoran56 10 months ago

Maintenance release

Changes

  • Add esper.current_world property to easily check the current World context.
  • Made some minor docstring corrections, and added some programmer notes.
esper - Fenrir

Published by benmoran56 over 1 year ago

Changes

  • Removing all Components from an Entity will no longer automatically delete the Entity.
  • Typing fixes and additions.
  • Entity DB check and creation is done once when Entity is created, not when adding Components.
esper - Golem

Published by benmoran56 almost 2 years ago

Changes

  • Minor typing changes, and docstring improvement.
  • Equality comparison changes.
esper - ZoneSeek

Published by benmoran56 about 2 years ago

Changes

  • Fix incomplete docstrings for event functions.
  • Typing and docstring cleanups and rewording.
esper - Phantom

Published by benmoran56 over 2 years ago

Changes

  • Fix bug when adding a function as an event handler.
  • Add some event handler unit tests.
esper - Carbunki

Published by benmoran56 over 2 years ago

  • Add a simple event system, for registering and dispatching events.
  • Replace usage of the lru_cache module with internal cache.
  • To help with type checking, esper has been converted to a package.
esper - Shoat

Published by benmoran56 over 3 years ago

Maintenance release

Changes

  • Update documentation with notes about dataclass decorator usage.
  • Add Python 3.9 to Continuous Integration testing.
esper - Bismark

Published by benmoran56 over 3 years ago

Maintenance release

Changes

  • Add missing docstrings.
  • Add additional typing definitions.
esper - Maduin

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.

esper - Unicorn

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.

esper - Shiva

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.

esper - Sraphim

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.

esper - Ifrit

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.

esper - Siren

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.

esper - Stray

Published by benmoran56 over 8 years ago

A minor maintenance release. A new method: World.get_processor has been added.

esper - Kirin

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.

esper - Ramuh

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.

esper - Initial release

Published by benmoran56 almost 9 years ago

Package Rankings
Top 4.65% on Pypi.org
Badges
Extracted from project README
pypi rtd PyTest