OrangeZest

OrangeZest is a lightweight layer on top of the excellent Gosu game library.

I absolutely love Gosu because it provides the perfect level of abstraction for you to approach a game's architecture however you like. This is the architecture that I've enjoyed using for the last three games I've created for the Gosu Game Jam, and I've finally decided to break it out into a separate gem to make it more reusable.

OrangeZest encourages using OOP rather than ECS, although it's lightweight and unopinionated enough that you might be able to implement ECS on top of it. (The words "component" and "entity" in OrangeZest do not refer to the ECS concepts - they just happen to fit OrangeZest's concepts too!)

OrangeZest provides:

  • Components, objects which can be instantiated into the game world to provide behaviour
  • Entities, a subclass of components which has a position and animation
  • Groups, to bundle together related components into one
  • A very simple animation system
  • Simple mathematical primitives (points and boxes)

Installation

This gem is available on RubyGems as orange_zest. Add it to your Gemfile as gem 'orange_zest', or install it globally with gem install orange_zest.

Getting Started

See the examples directory for some sample scripts which use OrangeZest.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/AaronC81/orange_zest. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the OrangeZest project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.