Skip to content

Latest commit

 

History

History
700 lines (522 loc) · 48.1 KB

CHANGELOG.md

File metadata and controls

700 lines (522 loc) · 48.1 KB

Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

Breaking Changes

Added

Changed

  • Excalibur user documentation has now moved to excaliburjs.com/docs
  • Excalibur will now prompt for user input before starting the game to be inline with the new webaudio requirments from chrome/mobile browsers (#1031)

Deprecated

Fixed

  • Fixed issue where pointer events do not work in mobile (#1044)
  • Fixed issue where iOS was not loading by including the right polyfills (#1043)
  • Fixed issue where sprites do not work in Firefox (#980)
  • Fixed issue where collision pairs could sometimes be incorrect (#975)
  • Fixed box collision velocity resolution so that objects resting on a surface do not accumulate velocity (#986)

0.18.0 - 2018-08-04

Breaking Changes

  • Sound.setVolume() replaced with Sound.volume
  • Sound.setLoop() replaced with Sound.loop

Added

  • Add Scene.isActorInDrawTree method to determine if an actor is in the scene's draw tree.

Fixed

  • Fixed missing exitviewport/enterviewport events on Actors.on/once/off signatures (#978)
  • Fix issue where Actors would not be properly added to a scene if they were removed from that scene during the same frame (#979)

0.17.0 - 2018-06-04

Breaking Changes

  • Property scope Pointer.actorsUnderPointer changed to private;
  • Sprite.sx replaced with Sprite.x
  • Sprite.sy replaced with Sprite.y
  • Sprite.swidth replaced with Sprite.width
  • Sprite.sheight replaced with Sprite.height

Added

  • Allow timers to limit repeats to a finite number of times (#957)
  • Convenience method on Scene to determine whether it is the current scene. Scene.isCurrentScene() (#982)
  • New PointerEvent.stopPropagation() method added. Works the same way as (https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation) (#912)
  • New Actor.getAncestors() method, which retreives full array of current Actor ancestors
  • Static Actor.defaults prop, which implements IActorDefaults.
  • Native sound events now exposed
    • volumechange - on playing sound volume change;
    • pause - on playback pause;
    • stop - on playback stop;
    • emptied - on data cleanup(f.e. when setting new data);
    • resume - on playback resume;
    • playbackstart - on playback start;
    • playbackend - on playback end;
  • Added Sound.instances getter, which returns active tracks. Playing or paused;
  • Added Sound.getTrackId(track: [[AudioInstance]]) method. Which returns id of track provided, if it is in list of active tracks.

Changed

  • Refactored Easing functions to be reversable (#944)
  • Now at creation every Actor.anchor prop is set to default Actor.defaults.anchor.
  • Scene.remove(Actor) now starts the Actor.Kill event cycle.(#981)

Deprecated

  • CapturePointer.update() method now doesn't propagate event to actor, just verifies pointer events for actor.
  • Added Sound.volume & Sound.loop properties as a replacement for Sound.setVolume() and Sound.setLoop(). The methods setVolume and setLoop have been marked obsolete.

Fixed

  • Added missing variable assignments to TileMapImpl constructor (#957)
  • Correct setting audio volume level from value to setValueAtTime to comply with deprecation warning in Chrome 59 (#953)
  • Force HiDPI scaling to always be at least 1 to prevent visual artifacts in some browsers
  • Recalculate physics geometry when width/height change on Actor (#948)
  • Fix camera move chaining (#944)
  • Fix pickSet(allowDuplicates: true) now returns the proper length array with correct elements (#977)
  • Index export order to prevent almond.js from creation of corrupted modules loading order.
  • Sound.pause() now saves correct timings.
  • Fix ex.Vector.isValid edgecase at Infinity (#1006)

0.16.0 - 2018-03-31

Added

  • New typesafe and override safe event lifecycle overriding, all onEventName handlers will no longer be dangerous to override (#582)
    • New lifecycle event onPreKill and onPostKill
  • SpriteSheets can now produce animations from bespoke sprite coordinates SpriteSheet.getAnimationByCoords(engine, coords[], speed) (#918)
  • Added drag and drop support for Actors (#134)
    • New Event enter
    • New Event leave
    • New Event pointerenter
    • New Event pointerleave
    • New Event pointerdragstart
    • New Event pointerdragend
    • New Event pointerdragmove
    • New Event pointerdragenter
    • New Event pointerdragleave
    • New Class PointerDragEvent which extends PointerEvent
    • New Class GlobalCoordinates that contains Vectors for the world, the page, and the screen.
    • Added property ICapturePointerConfig.captureDragEvents which controls whether to emit drag events to the actor
    • Added property PointerEvent.pointer which equals the original pointer object

Deprecated

  • Sprite.sx, Sprite.sy, Sprite.swidth, Sprite.sheight has be deprecated in favor of Sprite.x, Sprite.y, Sprite.width, Sprite.height (#918)

Fixed

  • Added missing lifecycle event handlers on Actors, Triggers, Scenes, Engine, and Camera (#582)
  • Tile Maps now correctly render negative x-axis coordinates (#904)
  • Offscreen culling in HiDPI mode (#949)
    • Correct bounds check to check drawWidth/drawHeight for HiDPI
    • suppressHiDPIScaling now also suppresses pixel ratio based scaling
  • Extract and separate Sprite width/height from drawWidth/drawHeight to prevent context corruption (#951)

0.15.0 - 2018-02-16

Breaking Changes

  • LockedCamera replaced with BaseCamera.strategy.lockToActor
  • SideCamera replaced with BaseCamera.strategy.lockToActorAxis
  • Body.wasTouching replaced with event type CollisionEnd

Added

  • Option bag constructors have been added for commonly-used classes (see Constructors.md) (#410)

0.14.0 - 2017-12-02

Breaking Changes

  • Triggers now have a new option bag constructor using the ITriggerOptions interface. (#863).
  • update event replaced with postupdate event
  • CollisionEvent replaced by PreCollisionEvent
  • getDrawWidth() and getDrawHeight() replaced with the getters drawWidth and drawHeight
  • PointerEvent.x and PointerEvent.y replaced with PointerEvent.pos

Added

  • Automatic HiDPI screen detection and scaling in excalibur internals to correct blurry bitmap rendering on HiDPI screens. This feature can optionally be suppressed with IEngineOptions.suppressHiDPIScaling.
  • Added new line utility Line.normal() and Line.distanceToPoint (#703)
  • Added new PolygonArea utility PolygonArea.getClosestFace(point) (#703)
  • Triggers now fire an EnterTriggerEvent when an actor enters the trigger, and an ExitTriggerEvent when an actor exits the trigger. (#863)
  • Actors have a new events CollisionStart which when 2 actors first start colliding and CollisionEnd when 2 actors are no longer colliding. (#863)
  • New camera strategies implementation for following targets in a scene. Allows for custom strategies to be implemented on top of some prebuilt
    • LockCameraToActorStrategy which behaves like LockedCamera and can be switched on with Camera.strategy.lockToActor(actor).
    • LockCameraToActorAxisStrategy which behaves like SideCamera and can be switched on with Camera.strategy.lockToActorAxis(actor, ex.Axis.X)
    • ElasticToActorStrategy which is a new strategy that elastically moves the camera to an actor and can be switched on with Camera.strategy.elasticToActor(actor, cameraElasticity, cameraFriction)
    • CircleAroundActorStrategy which is a new strategy that will follow an actor when a certain radius from the camera focus and can be switched on with Camera.strategy.circleAroundActor(actor)

Changed

  • Trigger have been rebuilt to provide a better experience. The trigger action only fires when an actor enters the designated area instead of every frame of collision. (#863)
  • Triggers can now draw like other Actors, but are still not visible by default (#863)

Deprecated

  • Body.wasTouching has been deprecated in favor of a new event type CollisionEnd (#863)
  • SideCamera and LockedCamera are deprecated in favor of camera strategies

Fixed

  • Fixed odd jumping behavior when polygons collided with the end of an edge (#703)

0.13.0 - 2017-10-07

Breaking Changes

  • Scene.children replaced with Scene.actors

Added

  • Convenience getters implemented halfDrawWidth, halfDrawHeight, halfCanvasWidth, halfCanvasHeight, canvasWidth, and canvasHeight.
  • New pause/unpause feature for timers to help with more robust pausing (#885)
  • New event listening feature to listen to events only .once(...) then unsubscribe automatically (#745)
  • New collision event postcollision to indicate if collision resolution occured (#880)

Deprecated

  • PointerEvent.x and PointerEvent.y, in favor of PointerEvent.pos (#612)
  • CollisionEvent has been deprecated in favor of the more clear PreCollisionEvent (#880)
  • getDrawWidth() and getDrawHeight() have been marked obsolete and changed into the getters drawWidth and drawHeight respectively in order to progressively make getters/setters consistent (#861)

Fixed

  • Fixed same instance of color potentially being shared, and thus mutated, between instance actors (#840)
  • Fixed bug where active and passive type collisions would resolve when they shouldn't when in rigid body mode (#880)

0.12.0 2017-08-12

Breaking Changes

  • CollisionType.Elastic has been removed
  • Promises.wrap has been replaced with Promise.resolve

Added

  • Added new hsl and hex format options in Color.toString(format) using rgb as the default to maintain backwards compatibility (#852)

Changed

  • Animation.loop property now to set to true by default (#583)
  • Added backgroundColor to engine options as part of Engine constructor (#846)

Deprecated

  • ex.Scene.children is now ex.Scene.actors (#796)

0.11.0 2017-06-10

Breaking Changes

  • Renamed Utils.removeItemToArray() to Utils.removeItemFromArray() (#798)

Added

  • Added optional volume argument to Sound.play(volume?: number), which will play the Audio file at anywhere from mute (volume is 0.0) to full volume (volume is 1.0). (#801)
  • Added another DisplayMode option: DisplayMode.Position. When this is selected as the displayMode type, the user must specify a new position option (#781)
  • Added a static method distance to the Vector class (#517)
  • Added WheelEvent event type for the wheel browser event, Excalibur now supports scroll wheel (#808)

Changed

  • Camera zoom over time now returns a promise that resolves on completion (#800)
  • Edge builds have more descriptive versions now containing build number and Git commit hash (e.g. 0.10.0-alpha.105#commit) (#777)

Fixed

  • Fixed camera zoom over time, before it did not work at all (#800)
  • Fixed semi-colon key not being detected on Firefox and Opera. (#789)

0.10.0 2017-04-07

Breaking Changes

  • Rename Engine.width and Engine.height to be Engine.canvasWidth and Engine.canvasHeight (#591)
  • Rename Engine.getWidth and Engine.getHeight to be Engine.getDrawWidth and Engine.getDrawHeight (#591)
  • Changed GameEvent to be a generic type for TypeScript, allowing strongly typing the target property. (#724)
  • Removed Body.useEdgeCollision() parameter center (#724)

Added

  • Added Engine.isPaused to retrieve the running status of Engine (#750)
  • Added Engine.getWorldBounds to provide a quick way to get the top left corner and bottom right corner of the screen (#729)
  • Added predraw and postdraw events to Engine class. These events happen when prior to and after a draw (#744)
  • Added Perlin noise generation helper ex.PerlinGenerator for 1d, 2d, and 3d noise, along with drawing utilities (#491)
  • Added font styles support for normal, italic, and oblique in addition to bold text support (#563)

Changed

  • Update project to use TypeScript 2.2.2 (#762)
  • Changed Util.extend to include Object.assign functionality (#763)

Fixed

  • Update the order of the affine transformations to fix bug when scaling and rotating Actors (#770)

0.9.0 2017-02-09

Added

  • Added preupdate, postupdate, predraw, postdraw events to TileMap
  • Added ex.Random with seed support via Mersenne Twister algorithm (#538)
  • Added extended feature detection and reporting to ex.Detector (#707)
    • ex.Detector.getBrowserFeatures() to retrieve the support matrix of the current browser
    • ex.Detector.logBrowserFeatures() to log the support matrix to the console (runs at startup when in Debug mode)
  • Added @obsolete decorator to help give greater visibility to deprecated methods (#684)
  • Added better support for module loaders and TypeScript importing. See Installation docs for more info. (#606)
  • Added new Excalibur example project templates (#706, #733):
  • Added Pointer.lastPagePos, Pointer.lastScreenPos and Pointer.lastWorldPos that store the last pointer move coordinates (#509)

Changed

  • Changed Util.clamp to use math libraries (#536)
  • Upgraded to TypeScript 2.1.4 (#726)

Fixed

  • Fixed Scene/Actor activation and initialization order, actors were not being initialized before scene activation causing bugs (#661)
  • Fixed bug with Excalibur where it would not load if a loader was provided without any resources (#565)
  • Fixed bug where an Actor/UIActor/TileMap added during a Timer callback would not initialize before running draw loop. (#584)
  • Fixed bug where on slower systems a Sprite may not be drawn on the first draw frame (#748)

0.8.0 2016-12-04

Added

  • ex.Vector.magnitude alias that calls ex.Vector.distance() to get magnitude of Vector (#663)
  • Added new ex.Line utilities (#662):
    • ex.Line.slope for the raw slope (m) value
    • ex.Line.intercept for the Y intercept (b) value
    • ex.Line.findPoint(x?, y?) to find a point given an X or a Y value
    • ex.Line.hasPoint(x, y, threshold) to determine if given point lies on the line
  • Added Vector.One and Vector.Half constants (#649)
  • Added Vector.isValid to check for null, undefined, Infinity, or NaN vectors method as part of (#665)
  • Added ex.Promise.resolve and ex.Promise.reject static methods (#501)
  • PhantomJS based testing infrastructure to accurately test browser features such as image diffs on canvas drawing (#521)
  • Added some basic debug stat collection to Excalibur (#97):
    • Added ex.Engine.stats to hold frame statistic information
    • Added ex.Engine.debug to hold debug flags and current frame stats
    • Added preframe and postframe events to Engine as hooks
    • Added ex.Physics statistics to the Excalibur statistics collection
  • Added new fast body collision detection to Excalibur to prevent fast moving objects from tunneling through other objects (#665)
    • Added DynamicTree raycast to query the scene for bounds that intersect a ray
    • Added fast BoundingBox raycast test

Changed

  • Internal physics names refactored to be more readable and to use names more in line with game engine terminology (explicit broadphase and narrowphase called out)

Deprecated

  • ex.Promise.wrap (#501)

Fixed

  • Fix Actor.oldPos and Actor.oldVel values on update (#666)
  • Fix Label.getTextWidth returns incorrect result (#679)
  • Fix semi-transparent PNGs appear garbled (#687)
  • Fix incorrect code coverage metrics, previously our test process was reporting higher than actual code coverage (#521)
  • Fix Actor.getBounds() and Actor.getRelativeBounds() to return accurate bounding boxes based on the scale and rotation of actors. (#692)

0.7.1 - 2016-10-03

Breaking Changes

  • Refactored and modified Sound API (#644)
    • Sound.setData now returns a Promise which differs from previous API
    • Removed internal FallbackAudio and Sound classes and replaced with single Sound class
    • Added AudioTagInstance and WebAudioInstance internal classes

Added

  • ex.Promise.join(Promise[]) support (in addition to ...promises support) (#642)
  • Moved build artifacts to separate excalibur-dist repository (#648)
  • ex.Events namespace and typed event handler .on(...) overloads for default events on core excalibur objects (#639)
  • Engine.timescale property (default: 1.0) to add time-scaling to the engine for time-based movements (#543)
  • Two new parameters to ex.Util.DrawUtil.line that accept a line thickness and end-cap style (#658)

Fixed

  • Actor.actions.fade properly supporting fading between 0 and 1 and vice versa (#640)
  • Fix issues with audio offset tracking and muting while game is invisible (#644)
  • Actor.getHeight() and Actor.getWidth() now take into account parent scaling (#645)
  • Actor.debugDraw now works properly for child actors (#505, #645)
  • Sprite culling was double scaling calculations (#646)
  • Fix negative zoom sprite culling (#539)
  • Fix Actor updates happening more than once per frame, causing multiple pointer events to trigger (#643)
  • Fix Actor.on('pointerup') capturePointer events opt-in on event handler. The opt-in was triggering correctly for handlers on 'pointerdown' and 'pointermove', but not 'pointerup'.

0.7.0 - 2016-08-29

Breaking Changes

  • Code marked 'Obsolete' has been removed (#625, #603)
    • Actor
      • addEventListener
      • getWorldX, getWorldY
      • clearActions, easeTo, moveTo, moveBy, rotateTo, rotateBy, scaleTo, scaleBy, blink, fade, delay, die, callMethod, asPromise, repeat, repeatForever, follow, meet
    • Class
      • addEventListener, removeEventListener
    • Engine
      • parameterized constructor
      • addChild, removeChild
    • UpdateEvent removed
  • Scene.addChild and Scene.removeChild are now protected
  • Removed ex.Template and ex.Binding (#627)

Added

  • New physics system, physical properties for Actors (#557, #472)
  • Read The Docs support for documentation (#558)
  • Continuous integration builds unstable packages and publishes them (#567)
  • Sound and Texture resources can now process data (#574)
  • Actors now throw an event when they are killed (#585)
  • "Tap to Play" button for iOS to fulfill platform audio requirements (#262)
  • Generic lerp/easing functions (#320)
  • Whitespace checking for conditional statements (#634)
  • Initial support for Yeoman generator (#578)

Changed

  • Upgraded Jasmine testing framework to version 2.4 (#126)
  • Updated TypeScript to 1.8 (#596)
  • Improved contributing document (#560)
  • Improved local and global coordinate tracking for Actors (#60)
  • Updated loader image to match new logo and theme (#615)
  • Ignored additional files for Bower publishing (#614)

Fixed

  • Actions on the action context threw an error (#564)
  • Actor getLeft(), getTop(), getBottom() and getRight() did not respect anchors (#568)
  • Actor.actions.rotateTo and rotateBy were missing RotationType (#575)
  • Actors didn't behave correctly when killed and re-added to game (#586)
  • Default fontFamily for Label didn't work with custom FontSize or FontUnit (#471)
  • Fixed issues with testing sandbox (#609)
  • Issue with camera lerp (#555)
  • Issue setting initial opacity on Actors (#511)
  • Children were not being updated by their parent Actors (#616)
  • Center-anchored Actors were not drawn at the correct canvas coordinates when scaled (#618)

0.6.0 - 2016-01-19

Added

  • GamePads now have a connection event (#473)
  • Unit circle drawing for debug mode (#467)
  • Engine now fails gracefully in unsupported browsers (#386)
  • Global fatal error catching (#381)
  • MockEngine for testing (#360)
  • Code coverage reports via Coveralls (#169)
  • SpriteFonts now support different target colors (#148)
  • Cameras now have position, velocity, and acceleration properties (#490)

Changed

  • Actor.addChild() changed to Actor.add() (#519)
  • Actor.removeChild() changed to Actor.remove() (#519)
  • Documentation is only deployed on changes to the master git branch (#483)
  • A warning message is now displayed if no supported audio format is provided for a browser (#476)
  • Updated TSLint directory scanning (#442, #443, #447)
  • Deprecated older methods (#399)
  • Changed API for Key events (#502)

Fixed

  • Actors now properly collide with TileMaps (#541)
  • Gamepad detection is fixed (#460, #518)
  • Actor scale now correctly occurs after translation (#514)
  • Actors now respect the visible property of their children (#513)
  • Fixed centered sprite drawing on Actors (#507)
  • Animation freezeframe is now properly set to last Animation frame by default (#506)
  • It is no longer possible to add the same Actor to a scene multiple times (#504)
  • Text alignment on SpriteFonts with Labels is fixed (#484)
  • Engine pointer events properly fire when a camera is zoomed (#480)
  • Fixed a small bug in rotateTo (#469)
  • Setting Label colors now works (#468)
  • Labels now respect set font (#372)
  • UIActor now respects visibility (#368)
  • Solid color Actors now respect opacity (#364)
  • TileMap culling uses proper width and height values (#293)
  • Font API changed while fixing font size issue

0.5.1 - 2015-06-26

Added

  • Actors can now recursively check the containment of their children (#453)
  • RotateTo and RotateBy now support ShortestPath, LongestPath, Clockwise, and Counterclockwise rotation (#461)

Fixed

  • Actor.contains() did not work for child actors (#147)
  • Unexpected placement occasionally occurred for Actors with certain collision types (#319)
  • Velocity wasn’t updating properly when fixed and active Actors collided (#454)
  • Actors removed with actor.kill() were not being removed from the draw tree (#458)
  • RotateTo and RotateBy weren’t using the shortest angle by default (#282)
  • Sprite width and height didn’t take scaling into account (#437)
  • Fixed error message when calling Actor.setDrawing() on a non-existent key (#456)

0.5.0 - 2015-06-03

Added

  • resource cache busting (#280)
  • HTML5 Gamepad API support (#15)
  • Browserify support (#312)
  • ‘blur’ and ‘visible’ events to detect when the browser window a game is in has focus (#385)
  • Z-index support for Actors, allowing for specific ordered drawing (#356)
  • unlocked drawing for UI elements (#354)
  • Promise.join() to return a new promise when promises passed to it have been resolved (#341, #340)
  • ability to skip a frame in an animation (#313)
  • You can now remove effects from IDrawable objects (#303)
  • generic Resource type to allow for XHR loading (#297)
  • gray Color constants (#209)

Changed

  • Renamed engine.addChild() to engine.add() (#288)
  • Renamed setSpriteTransformationPoint() to setAnchor() (#269)
  • Renamed TopCamera to LockedCamera (#184)
  • Renamed Actor.pipeline to Actor.traits (#351)
  • Actor anchoring now uses center origin by default (#299)
  • Actor updates (movement, collision, etc.) now use a pipeline (#330)
  • Organized classes, files, and project structure (#182, #347)
  • Improvements to collision detection (#345, #332)
  • Loop optimizations for performance improvements (#296)
  • Updated to TypeScript 1.4 (#393)
  • Improved pointer event handling so touch and mouse events can be captured together (#334)
  • Improved Point and Vector methods and rotation (#323, #302)
  • Color is now treated as a vector to allow for changes (#298)
  • Cleaned up event type consistency (#273)
  • There is now a default instance of a Camera (#270)
  • TSLint now used to enforce code quality

Fixed

  • A Sprite’s dimensions weren’t validated against the size of its texture (#318)
  • Improved sprite drawing performance issues (#316)
  • Actors were sometimes throwing duplicate collision events (#284)
  • Actors were not setting their initial opacity correctly (#307)
  • Particle emitters couldn’t emit less than 60 particles per second (#301)
  • Fixed issue with TileMap collisions (#286)
  • Animations with duplicate frames weren’t being created correctly (#283)
  • Separated drawing and collision logic for CollisionMaps (now TileMap) (#285)
  • Errors in promises were being swallowed if no error callback was supplied (#337)
  • A null promise was being returned if no loader was given to Engine.start() (#335)
  • Changed default collisionType to ‘PreventCollision’ (#324)
  • Color didn’t handle alpha = 0 correctly (#257)
  • Blink action usage was confusing (#279)
  • Couldn’t use the width and height properties of a Texture after it loaded (#355)
  • Using on(‘pointerdown’) would not automatically enable pointer capturing (#398)
  • Unsubscribing from an event sometimes removed other event handlers (#366)
  • Actor.setCenterDrawing() was hard-coded to true (#375)
  • Console was undefined in IE9. (#378)
  • Pointers were not handling mobile Safari touch events (#382)
  • Fixed debug mode drawing (#274)
  • Flipping a sprite didn’t factor in scaling (#401)
  • Sound continued to play when the game was paused (#383)
  • UIActor.kill() didn’t remove the actor (#373)
  • Passing an empty array to ex.Promise.join resulted in unresolved promises (#365)
  • MouseUp / TouchEnd events weren’t capture correctly if outside of canvas (#374)
  • Clearing actions from an empty action queue caused problems (#409)
  • Scene.onActivate() was being called before Scene.onInitialize() (#418)
  • New z-indexing wasn’t cleaning up after itself (#433)
  • Fixed issue with world / screen coordinates in UIActors (#371)
  • Fade action didn’t work for text (#261)
  • Fade action didn’t work for plain-color actors (#256)
  • Collision events weren’t being published for both collision participants (#254)
  • The loading bar was misrepresenting the time taken to decode audio files (#106)
  • actor.getCenter() wasn’t returning the correct value (#438)
  • Cameras were on the engine instead of the scene, resulting in scene transition problems (#277)
  • Actors with sprites larger than the actor would disappear prematurely from the screen (#287)
  • Derived classes can now use offscreen culling (#294)
  • Fixed issue with TileMap culling (#444)

0.2.2 - 2014-04-15

Fixed

  • Removed extra declarations file from package that was causing visual studio build problems

0.2.0 - 2014-04-09

Added

  • Visual Studio 2013 template support (#139)
  • Collision Map for building large static collidable levels (#33)
  • Redundant fallback sound sources for cross browser support (#125)
  • Particle Emitter implementation (#52)
  • Trigger implementation (#91)
  • Timer implementation (#76)
  • Camera Effects: zoom, shake (#55)
  • Polygon IDrawable (#93)
  • Alias 'on' and 'off' for 'addEventListener' and 'removeEventListener' (#229)
  • Optimized draw so only on screen elements are drawn (#239)
  • Support Scale in the x and y directions for actors (#118)
  • Added notion of collision grouping (#100)
  • New Events like 'enterviewport', 'exitviewport', and 'initialize' (#215, #224)
  • Textures allow direct pixel manipulation (#155)
  • Static Logger improvements with '.debug()', '.info()', '.warn()' and '.error()' (#81)
  • Added callMethod() action to actor (#244)
  • Added fade() action to actor (#104)
  • Added follow() and meet() action to actor (#77)

Changed

  • 'engine.goToScene()' replaces push and pop (#168)
  • More intuitive starting workflow (#149)
  • Collisions are now more concrete on actors with CollisionType (#241)
  • Namespace all types with 'ex' to prevent Excalibur from polluting the global (#87)
  • Refactor SceneNode to Scene (#135)
  • Refactor keys (#115)
  • Build system with Grunt (#92)

Fixed

  • Collision event was firing after other actor has been killed (#228)
  • Additional actor was killed when actor.kill() is called (#226)
  • Fixed loading bar (#195)
  • ex.Color.Yellow constant was wrong (#122)
  • removeEventListener did not exist off of engine (#175)
  • Excalibur promises should not swallow exceptions in promise callbacks (#176)
  • Actor.extend did not work on actor subclasses (#103)

0.1.1 - 2013-12-19

Changed

  • Refactored Keys to be less confusing (#115)
  • Refactored ActorEvent to be less confusing (#113)

Fixed

  • 'update' event on the Engine now fires correctly (#105)
  • Actor.extend works on subclasses now (#103)

0.1.0 - 2013-12-11

Added

  • Actor based paradigm for managing game objects
  • Built-in scripting for actors, allowing objects to move, rotate, blink, scale, and repeat actions
  • Entity-entity collision detection
  • Event support to react to events happening in the game
  • Camera abstraction to easily think about the view port
  • Multiple display modes including fixed size, full screen, and dynamic container
  • Scene stack support to create multiple game levels
  • Sprite sheet and animation support
  • Simple sound library for game audio, supporting the Web Audio API and the HTML Audio API
  • Promise implementation for managing asynchronous behavior
  • Resource loading with optional custom progress bars