ImagineEngine Versions Save

A project to create a blazingly fast Swift game engine that is a joy to use 🚀

0.10.0

6 years ago

This version migrates Imagine Engine to Swift 4.1. To use the engine with Swift 4.0, please keep using version 0.9.0 until you are ready to migrate to Swift 4.1.

New APIs

  • Sprite sheet slicing enables you to use only a select part of a sprite sheet for an animation.
  • You can now set the background color of a Block.

Bug fixes

  • Fixed a BAD_ACCESS crash bug when using Xcode 9.3/Swift 4.1.

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS)

0.9.0

6 years ago

New APIs

  • You can now construct an animation with JPG textures (by passing textureFormat: .jpg).
  • You can now set the horizontal alignment mode on a Label using horizontalAlignment.
  • Label now supports plugins.
  • Label can now support multiple lines of text (by @Alex88WH).
  • Label can now be rotated (by @jussi80).
  • Label can now be scaled (by @Loyolny).
  • You can now observe clicks on a Label using events.clicked.
  • You can now observe clicks on a Camera using events.clicked.
  • Block now has a convenience initializer for a single texture (Block(size:texture:)).
  • You can now observe when a Scene was resized using events.resized.
  • You can now check whether an actor is in contact with a given actor or block (by @pablocarmu).

Bugfixes

  • Fixed a bug that could cause incorrect collision detection when an actor was significantly moved (by @mattiashagstrand).
  • Fixed a bug that would cause blocks to render incorrectly on macOS (by @mattiashagstrand).

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS)

0.8.0

6 years ago

New APIs

  • You can now set an errorMode on a TextureManager, to have either a log message or an assert being thrown in case a texture is missing in your game. Thanks to @vijaytholpadi for implementing this!
  • Actor's can now have shadows.
  • Camera now has a resized event. Thanks to @Warren-Lamb for implementing this!

Bugfixes

  • Multiline sprite sheets now work correctly on macOS. Thanks for the fix @mattiashagstrand!
  • @mattiashagstrand fixed a bug that could cause actors to collide with themselves.
  • @mattiashagstrand fixed a bug that could sometimes cause an extra collision event when an actor was removed while the collision was being handled.

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS)

0.7.0

6 years ago

Removed APIs

  • You can no longer observe collisions between an actor and any other actor or any block. Instead, either observe collisions with a specific actor, or with an actor/block that is a member of a given group.

New APIs

  • Multiple objects can now be added to a scene directly using scene.add(a, b, c) (thanks @NSMyself!)
  • Custom events can now have a subject without being tied to a specific one.
  • You can now specify a repeat mode when repeating a closure on a Timeline.
  • You can now observe whenever a camera was moved (thanks @kkapitan!)
  • You can now observe when an actor was added or removed from a scene.

Improvements

  • Collision detection is now lazily enabled, meaning that you don't take any performance hit when using actors that don't have any collision observations.
  • Timeline is now a lot faster, especially when using many actions at the same time.

Bug fixes

  • Repeated metric actions (such as fade or rotation) now behave correctly when using a delta (thanks @mattiashagstrand!)

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS)

0.6.0

6 years ago

New APIs

  • Animation and Actor can now be initialized with the name of a single texture to render.
  • You can now set a scene-wide name prefix for textures.
  • An action can now be easily repeated by calling repeat(action) on an ActionPerformer.
  • All plugins of a given type can now be retrieved from an object using plugins(ofType:) (thanks @TadeasKriz!)
  • All plugins of a given type can now be removed from an object using removeAllPlugins(ofType:).
  • Actor now has a enteredScene event (thanks @Warren-Lamb!)
  • An object can now be passed to timeline and action closures, and it will be weakly referenced and passed into the closure when triggered.

Improvements

  • When a Scene is reset, its plugins are now deactivated then reactivated again.
  • A scene now always has a black initial background on all platforms (thanks @z0s!)
  • An actor's rect is now adapted according to its scale.
  • An actor's scale is now taken into account when evaluating scene constraints (thanks @Juanpe!)

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS)

0.5.0

6 years ago

New APIs

  • You can now use JPG images for textures, both for blocks & actors (by @dymv).
  • Scene now has a safeAreaInsets property and a safeAreaInsetsChanged event you can observe to handle the safe area insets on iPhone X.

Improvements

  • Plugin reuse based on type is now optional, and when adding a plugin to either a scene, camera or actor you now get the plugin that is currently active back as a return value.

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS)

0.4.0

6 years ago

Improvements

  • Imagine Engine now supports tvOS!
  • An actor's scale now affects its collisions (unless a custom hitBoxSize is set), by @aranasaurus.
  • A GameViewController's view is now the same instance as its game's view on all platforms.
  • Texture scale fallbacks are now remembered, leading to fewer disk operations, by @dymv.

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS)

0.3.0

6 years ago

Bug fixes

  • When observing a scene's clicked event, the correct point is now passed to that event on both iOS + macOS, and the camera position is being taken into account.
  • A race condition that could prevent a chained action from being started was fixed.
  • When cancelling a chained action sequence, the entire sequence is now cancelled, instead of just the last action.

Improvements

  • Lower scaled textures will now automatically be loaded in case a perfect match for the screen's scale can't be found (implemented by @dymv).
  • When observing an actor's moved event, both the old and new position are now passed into the closure as a tuple.

New APIs

  • You can now use sprite sheets for both blocks and actor animations.
  • Camera now has a rect property, similar to Actor and Block.
  • You can now constrain a camera to its scene by setting the isConstrainedToScene property to true.

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS - Debug)

0.2.0

6 years ago

Bug fixes

  • An actor's rect is no longer derived from its layer's frame, which could cause inconsistencies in some situations.

Improvements

  • Imagine Engine now supports macOS! Thanks a lot to @insidegui!

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS - Debug)

0.1.1

6 years ago

Bug fixes

  • When using the neverOverlapBlockInGroup constraint on an actor, the actor will now be moved to the closest edge when overlapping, instead of being incorrectly snapped to the wrong edge.

Improvements

  • An actor will now directly be resized according to its first animation frame when added to a scene or when an animation is assigned.

New APIs

  • You can now initialize an Animation instance with an array of images.

View build details and download artifacts on buddybuild: ImagineEngine (iOS, ImagineEngine-iOS - Debug)