- [#225] fix wrong insertion order of render layers
- remove
ParticleEffectLoader
since it now comes with libgdx
- fix various bugs
- rename
SharedAssetManager
intoAsset
- [#224] introduce
@AssetSource
annotation
- simplify screens by making generic arguments optional
- expose screen shake value
- add option to define custom game context
- add camera zoom tweening
- add additional constructors to
AnimationSpritesheet
- fix random animation offset
- improve animation rendering and add offset option
- add fps and particle count metrics
- [#189] remove attached particle effects while their owner is not updateable
This version removes ArrayList
from the GameWorld
contract to boost performance and replaced it with the libgdx version of Array
.
- introduce
Array
as return type to retrieve game objects - [#17] when reaching over 50 game objects, a new
QuadTree
algorithm is used to temporarily disable not visible game objects. This should boost performance significantly. - [#80] introduce debug UI. Enable it by setting a
LabelStyle
onBrainGdxDebug
as well as usingsetDebug
onGameContext
- add the option to delete game objects by id to prevent race conditions
- add rotational offset to
SpriteRenderer
- make animations more flexible by allowing to set a default animation
- add size option to various animation and sprite renderers
- add option to clear inputs
- fix
PointLight2DTween
- override physics body in case it is inactive to keep syncing with the game object
- make physics faster by adding a scale
- add
lighting.offset.x
andlighting.offset.y
option for Tiled - add
Body
to game object attributes when physics are attached - add
T getAttribute(Class<T> key)
toGameObject
- add option to set a custom render order comparator through
setRenderOrderComparator()
- more improvements to
NavigationMenu
implementation
- vastly improve
NavigationMenu
implementation to support colour fading and animations
- [#212] introduce new
setZoom
method to calculate camera zoom automatically - fixed an issue regarding screen transitions
- always set collisions to
false
when not defined within Tiled - [#210] do not expose internal vector on
getPosition()
- fix
NullPointerException
in tiledmap context - fix screen transition overlay positioning
- minor API improvements around font baking
- fixed a positioning issue when centering rectangular box2d objects
- [#130] introduce box2d support for tiled
- fix
ScreenTransitions
color issue
- [#207] introduce enteronly property for event router
- fixed
NullPointerException
onGameObject::getOrSetAttribute
- [#174] allow 3D sound creation through Tiled
- lighting and sounds are now automatically created through tiled via properties
- [#183] improve lighting manager API
- [#203] make loading of tiled map more consistent
- [#204] return already loaded context when trying to load again
- [#205] add support for registering updateables to the game context
- [#206] inject map properties directly as attributes
Fix rotations for physics bodies.
Fixed a small issue which caused physics to get positioned wrongly.
Disclaimer! this version introduces major API refactoring and will produce compilation errors before migration!
This update changes the entire architecture of this framework by separating reponsibilities into submodules:
- braingdx-core the core dependency now contains only generic core logic and boilerplate
- braingdx-2d the 2D dependency provides features such as 2D lighting and 2D physics support as well as tiledmap support
Later on, a new braingdx-3d module will be added which provides a different kind of feature set such as Blender support.
- [#95] added pause game functionality
- [#144] replace
TiledMapAPI
withTiledMapContext
- [#186] drastically improved performance on mobile devices
- [#193] added color manipulation utility
- [#194] added point light tween
- [#202] infer MapType from TiledMap orientation property
- [#103] resolved an issue where global behaviours could not be loaded globally within a loop
- [#197] drastically reduce memory footprint
- [#199] fixing camera position setting
- [#98] only remove relevant objects from the world when disposing the tiled manager
- remove
Iterable
interface fromGameWorld
- add new
Group
utility - [#96] introduce game object groups accessible via
GameWorld
- reduce memory footprint by only calling
GameObject.toString()
when debug level is active
Further improvements on memory heap footprint:
- remove
BigDecimalVector2
- add
DoubleVector2
- replace
BigDecimal
withdouble
for camera tracking and camera alignment
- only create animation states dynamically whenever they are required
- only compute tmx layer indices whenever they are required
- only create
AStarPathFinder
when it is actually used to reduce memory footprint - significantly reduce memory footprint of
TiledMapManager
by dynamically creating cell states at runtime - implement
toString()
method ofCombinedRenderPipe
- add new
particleMultiplier
toGraphicsSettings
in order to dynamically control the amount of all particles
- add additional constructor to
StringRandomizer
in order to provide a fixed seed
This version introduces string manipulation with additional tween engine support:
- [#196] implement
StringRandomizer
- implement
StringRandomizerTween
- add new
getObjects
method toGameWorld
- deleted
GameInputAdaptr
- useGestureListener
via libgdx instead - implemented additional input variations for
Navigateable
- [#190] fix a crash due to box2dlights ray handler not being disposed
- [#187] do not create frame buffers when no shaders are being used
- removed
RenderPipeline.getPipe
method - added
RenderPipeline.addEffects
method - added
RenderPipe.hasEffects
method
- [#185] added new
setDistanceStoppingThreshold
method toGameCamera
which allows defining a threshold to avoid flickering - added a new overloaded
setAmbientLight
method toLightingManager
which allows fading the ambient light
- added sound styles to
NavigationMenu
- fixed an issue where behaviours would not get removed on attached particle effects which are not continuous.
- [#184] implement concept of vertical and horizontal camera speed
The physics update - this update introduces a brand newPhysicsManager
which Box2D integration out-of-the-box. Additionally,
this update fixes some older bugs as well, such as particle emission issues.
- [#70] integrate Box2D support via
PhysicsManager
accessible viaGameContext
- [#131] fix
IllegalStateException
when window size is scaled down to 0 - [#152] extend
RenderPipeline
API by new methods - [#153] fix an issue where particle effects where emitted twice
- [#182] fix collision bug within
SimpleWorldBounds
- improve API around
NavigationMenu
- [#178] add
shake()
method toGameCamera
to shake the screen - [#179] implement
NavigationMenu
class, including controller and keyboard handlers - [#180] add controller support to
InputManager
- cleaning up
ActorTween
API
- [#175] remove
MovementController
API - [#176] improve deferred loading and unloading of behaviors and game objects
- [#177] introduce new
Updateable
interface which can be applied onBehavior
andInputProcessor
implementations
- add
setAlpha
toAnimationDrawable
- add offset to
AnimationRenderer
- add new utility class
GameObjectUtils
spawnEffect
now returns anParticleEffect
object respectively
- fix a bug within
ColouredRenderLayer
so it resizes correctly
- [#172] fix
NullPointerException
inGameEventRouter
- removed
internalId
andpreviousId
fromGameObject
- [#168] introduce scaling by
GameObject
origin - changed method signatures of
GameObject
getters and added additional getters AnimationRenderer
now usesSprite
to renderTextureRegion
frames
- fix rendering of animations on negative scaling
- [#46] rewrote the entire animation API. It is now much more straight forward to define animations within braingdx
- [#161] add
GameObject.removeAttribute
method. Additionally,setAttribute(key, null)
will remove the attribute entirely now.
- [#159] origin of
Zoomer
now applies correctly independent of render scale
- [#158] simplify shader manager API
ColorTransition
now properly applies custom colors- [#135] implement
GameInputAdapter
- [#155] introduced
Settings
andGraphicsSettings
- [#156] created
GameInputAdapter
for better input handling - [#157] added
ShaderManager
- add
GameCameraTween
- [#132] fix
NumberFormatException
inVectorGameCamera
- [#153] do not reset the particle emitter before
start()
- [#107] introduce TiledMap animations
- [#151]
GameObject
scaling does now affect animation rendering
- [#150] changing world bounds should now reset camera stickiness
This release brings major improvements to the GameCamera
logic and API within braingdx.
- [#102] fixing stickiness of
GameCamera
- [#129] setting game camera attributes works now without a target attached
- [#145] improve
GameCamera
API with additional methods to retrieve dimensions and position - [#146] introduced GWT math
- [#147] introduced
BigDecimalVector2
math component
Other fixes
- improve precision of
GameCamera
object tracking
- [#140] fix issue where tiled collisions were overriden and removed by other game objects
- [#141] improve collision API for tiled maps. Introduce
isExclusiveCollision
andisInclusiveCollision
methods toTiledMapAPI
This release fixes collision removal for tiled maps.
- [#136] fix issue where moving game objects leave collisions behind
- add new method to
GameObject::getOrSetAttribute
which retrieves or sets an attribute, depending on its existence
This release fixes various issues around tiled map support within braingdx.
- [#133] Introduce
TiledMapAPI.setEventFactory(GameEventFactory)
- [#135] Game objects with a collision now have an indexed initial position
- fixed a bug where sticky events would be accidentally deleted
- added a
GameEventRouter
class which publishes game events when game objects collide with event objects
- [#134] extend TiledCollisionResolver
- [#127] fix initial project setup
- [#118] replace listeners with TiledMap events
- do not log an error message when no event listeners are defined for a published event
- introduce box2dlights 1.5-SNAPSHOT
- [#124] introduce new deployment flow
- [#123] introduce Maven Central only-dependencies
- [#113] implement advanced collision detection for larger object
- [#120] add fingerprints to collisions
- [#121] include object collisions for path finding
- add method to
AudioManager
to directly attach sounds to game objects
- [#119] hide invisible tiledmap layers
- [#116] set object color correctly on animations
- [#117] add support to TMX to disable collisions for game objects
- [#114] integrate path finder
- [#115] improved particle management
- fix a bug where
onEnterCell
had been called before collisions were updated
- Introduce SpriteSheet scaling
- Fix audio issues
- [#112] 2D audio support: rewritten AudioManager for better audio handling. Also supporting 2D sound.
- fix class cast exception for collisions
- [#110] bugfix: TiledMap collisions become sticky on non-collision game objects
- [#80] Introduce collision debug mode for tiled maps
- [#105] bugfix: NumberFormatException when resizing window
- [#109] LightingManager: clear all lights
- [#101] Make camera optionally sticky to world bounds
This version introduces new features such as better event handling and general bug fixes.
- [#12] implemented
ParallaxMap
- [#39] upgraded
ParticleManager
codebase - [#90] use 'Fonts' to load ttf fonts instead of BitmapFont
- [#91] introduced BitmapFontBaker 🍞
- [#94] it is now possible to append or prepend additional render pipes
- [#97] implemented Simple Event System
- reset music position on play
- global behaviors can now be used to compare two objects on update
- BehaviorManager: map behaviors via game object id to prevent race conditions
- introduced DEBUG logging for GameWorld
- rewrote the ID system - now a UUID is being used
- GameObject: added internal id which does not change, even after re-obtaining from the pool
- GameObject: added previous id from a previous pooling iteration
- GameCamera: add 'focus(GameObject)' method
- bugfix: remove objects which are outside of the world, even if they are inactive
- do not set center on sprite rotation
- added rotation to SpriteRenderer
- added rotation attribute to game objects
- add 'scale' method to game objects
- introduced lazy behavior creation/deletion
- added partial support for viewports
- introduced lazy object creation for game worlds
Added offset attribute to AnimationRenderer
class.
This version improves braingdx and comes with the following highlights:
- [#84] introduced new UI stage which works on the world render level
- [#83] game objects can now be retrieved via their respective ID
- [#76] added various shader tweens
- [#79] added a new assetloader which uses reflection to load assets
- [#81] introduce mutator pattern for game object initialisation
- render pipeline
- lighting pipeline
- basic behaviors