FXGL

Java / JavaFX / Kotlin Game Library (Engine)

MIT License

Stars
4.4K

Bot releases are visible (Hide)

FXGL - 21.1 Latest Release

Published by AlmasB 7 months ago

Auto-generated changelog

docs

  • added a directory for 3rd party licenses commit
  • added README_RU.md commit

feat

  • added ResourceExtractor that extracts resource files from deployed jar to local FS commit
  • added software cursor, closes #1090 commit
  • the initial framework for PropertyMapView is implemented, closes #704 commit
  • added MazeGrid as a traversable grid commit
  • added Dungeon Generator, closes #1130 commit
  • completed implementation of QuestService, closes #848 commit
  • added EngineService onVarsInitialized() to notify services when game vars are ready to use commit
  • added EngineService onGameReset() to allow services to clean up and get ready for a new game commit
  • web api service can now use both Chrome and Firefox based on availability commit
  • Support 8 directions AStar pathfinding, closes #1213 commit
  • Add SerializableType to PropertyMap, closes #1250 commit
  • added WebAPI and RPC services commit
  • AsyncService for parallel EngineService processing commit
  • Support 8 directional Grids commit
  • added initial impl of tts service commit
  • added HttpClientService that allows sending http requests commit
  • added intial impl hand tracking service commit
  • added initial impl of speech recognition API commit
  • added a new module fxgl-intelligence commit
  • added support for loading source images from relative paths in .tmx, closes #1302 commit
  • SceneService now provides direct access to intro, loading, game, main menu, game menu scenes, closes #1315 commit
  • updated russian.lang commit

fix

  • emit particles at initial Entity zIndex instead of zIndex 0, closes #1318 commit
  • TriggerSequence Minigame check if trigger is between two lines, closes #796 commit
  • modifier keys shift, ctrl, alt are not released when a different key is released, related to #1313 commit
  • UI loaded from fxml file now correctly loads Image tags, closes #1343 commit

refactor

  • load fxgl-intelligence locally, keep consistent package structure commit
  • removed deprecated fireEvent() commit
  • replace bit flag with a boolean commit
  • encapsulate islang flag in Body commit
  • extracted reflection based function calling to be reusable commit
  • replace deprecated URL() call with URI.toURL() commit
  • clean up weld joint commit

test

  • added WaypointComponentTest commit

New Contributors

Full Changelog: https://github.com/AlmasB/FXGL/compare/21...21.1

FXGL - 21

Published by AlmasB 10 months ago

Auto-generated changelog

build

  • javafx 20 -> 21.0.1 commit
  • mvn compiler 3.8.0 -> 3.11.0' commit
  • jacoco 0.8.8 -> 0.8.11 commit
  • base Java 21, switch to 21+dev-SNAPSHOT commit
  • maven PMD 3.15.0 -> 3.20.0 commit

docs

  • updated to match JDK 21 baseline, simplify wording commit

feat

  • added a particle callback function that will be executed when the particle is removed commit
  • added asset loader loadCutscene shortcut commit
  • Dialogue Editor can now exit the dialogue from any node, related to #1322 commit
  • added a property view for String properties commit
  • DialogueGraph Function node now supports add sub mul div commit
  • added PropertyMap divide Double and Int commit
  • added PropertyMap multiply Double and Int commit
  • dialogue editor will now highlight the selected node view commit
  • dialogue editor now supports node duplication, shortcut CTRL+D, related to #1322 commit
  • dialogue nodes can now be copied commit
  • DialogueScene is no longer limited to showing 5 choices and uses a scroll bar when needed to show more choices, related to #1322 commit
  • added video cutscenes, closes #1120 commit
  • added loadVideo() to asset loader, related to #1120 #406 commit
  • MultiplayerService now provides ping (round-trip time) information for a given connection, closes #877 commit
  • added MovingAverageQueue commit
  • RechargeableComponents now maintain the value is not greater than max value relationship, added valuePercent, closes #833 commit
  • added choice dialog box API for List and Enum options commit
  • added convenience methods onBtn* for Primary and Secondary mouse buttons commit
  • added interpolateIntermediateImages() commit
  • new API for extracting Image from a channel given the frame index commit
  • added AnimatedImage which animates between corresponding pixels to produce a new image commit
  • basic hex support for Tiled .tmx, closes #702 commit
  • added Image.getPixel(x, y) API commit
  • javafx sliders are now replaced with FXGLSlider type commit

fix

  • MDIWindow controls now function correctly commit
  • viewport now correctly unbinds itself from an entity commit
  • blending operations now always produce valid pixel colors through limiting values to [0..1], closes #712 commit
  • adding a message handler while handling a message does not cause concurrency exceptions commit
  • added missing implementations in EmbeddedPaneWindow commit
  • a new copy of PropertyMap is returned from AssetLoader, closes #977 commit
  • layout of audio menu is now correctly aligned regardless of volume, closes #1152 commit

perf

  • use LinkedHashSet vs Array to store Updatable, this allows significantly faster deletion of numerous Updatable objects, such as animations commit

refactor

test

  • junit 5.9.2 -> 5.10.0 commit
  • restored RevoluteJointTest commit
  • added missing test property of type float in .tmx objects commit
  • added a test for loading a .tmx map with an error commit

New Contributors

Full Changelog: https://github.com/AlmasB/FXGL/compare/17.3...21

FXGL - 17.3

Published by AlmasB over 1 year ago

Auto-generated changelog

build

  • jfx 19.0.2.1 -> 20, kotlin 1.8 -> 1.8.10, attach 4.0.16 -> 4.0.17, jackson 2.14.1 -> 2.14.2 commit
  • JavaFX 19 -> 19.0.2.1 (#1223) commit
  • Kotlin 1.7.10 -> 1.8.0, Jackson 2.13.4 -> 2.14.1, Attach 4.0.15 -> 4.0.16 commit
  • jfx 19-ea+11 -> 19, jackson 2.13.3 -> 2.13.4 (#1207) commit
  • use java 19-ea for tests commit

docs

feat

  • completed basic isometric support for .tmx, closes #1151 commit
  • AnimationTexture can start from a given frame, part of #1244, co-author: @chengenzhao commit
  • Added Inventory::transferAllFrom(), getItemQuantity() returns 0 if no item, closes #1131 commit
  • added setDirectionVector3D, closes #924 commit
  • ViewComponent.getChild() allows retrieving a specific child that is directly cast to given type commit
  • added bindToLookAt3D() which makes a transform look at another transform commit
  • added PropertyMap::addAll(), updated forEach impl and doc, closes #1199 commit
  • audio object is now in public API, closes #1187 commit

fix

  • if title is empty, set to Untitled, closes #1225 (#1257) commit
  • 3D models in .obj format without normals are now loaded correctly, related to #1245 commit
  • PropertyMap remove() correctly removes internal listeners, closes #1229 commit
  • original asset objects are now cast during first load to avoid leaking originals where we shouldnt, #977 commit
  • updating rotationX and rotationY now correctly updates direction3D #924 commit

perf

  • optimise A* pathfinding performance commit

refactor

test

  • added matrix 3x3 test (#1258) commit
  • added missing Mat22 tests commit
  • added initial SweepTest commit
  • added initial DistanceTest commit
  • added initial DistanceProxyTest commit

Contributors

Full Changelog: https://github.com/AlmasB/FXGL/compare/17.2...17.3

FXGL - 17.2

Published by AlmasB about 2 years ago

Auto-generated changelog

build

  • kotlin 1.5.32 -> 1.6.0 commit

docs

  • Add Chinese README file (#1186) commit

feat

  • the languages menu now displays the name in the target language, related to #1170 and #1172 commit
  • NotificationService now also accepts Node icon, closes #1149 commit
  • added WaypointMoveComponent which moves the entity based on Point2D, related to #980 commit
  • Input UserAction now provides API for double key/button presses commit
  • trigger listener now supports direct onKey and onButton callbacks which are triggered before the generic onAction callbacks, closes #1070 commit
  • Viewport::bindToFit for entities is now restored, closes #1036 commit
  • FrameData now supports offsets, closes #1181 commit
  • allow access to viewport camera entity via public API, closes #1168 commit
  • added support for Tiled 1.9.0 class property, #1182 commit
  • RechargeableDoubleComponent also has the value in percentage format as a binding commit
  • added KeepInBoundsComponent, fixed KeepOnScreenComponent, closes #842 commit
  • translate animation builder will use current position if from is not set commit
  • added EventBus.removeAllEventHandlers, #1160 commit

fix

  • FPS camera now works even when mouse buttons are pressed, closes #1189 commit

refactor

  • removed redundant onClick() since kotlin now properly reads Consumer<>, closes #1188 commit
  • use joints array size to track joint count commit
FXGL - 17.1

Published by AlmasB over 2 years ago

Auto-generated changelog

build

  • javafx 17.0.0.1 -> 18 commit
  • gluon attach 4.0.9 -> 4.0.13 commit
  • junit jupiter 5.7.0 -> 5.8.2, junit platform 1.7.0 -> 1.8.2 commit
  • nexus staging 1.6.7 -> 1.6.8 commit

docs

  • clarified that angle is in radians commit

feat

  • added atDestinationProperty() to AStarMoveComponent, closes #945 commit
  • added QuestService.removeAllQuests() commit
  • added DSL API for world variable changes commit
  • startCutscene() now accepts an extra onFinished param, closes #1156 commit
  • added support for box2d prismatic joint commit
  • DialogService error dialogs will no longer show LOG button since these are for expected exceptions handled by dev, closes #1119 commit
  • added DSL support for loading common assets from URL, closes #971 commit
  • Tiled 1.4.2 support commit
  • .tmx level loader now supports polyline objects, closes #1133 commit
  • TransformComponent can bind its translate X Y Z to another TransformComponent commit

fix

  • removing a ChoiceNode option now correctly disconnects the attached edge, closes #1122 commit
  • setting NotificationService background and text color now correctly updates the view, closes #1143 commit

refactor

  • use Array to store Joints instead of manual linked list commit
  • refine Quest API commit

test

  • improved test coverage for Inventory commit
  • added basic world non-null assertion for broadphase commit
FXGL - 17

Published by AlmasB almost 3 years ago

Auto-generated changelog

build

  • kotlin 1.5.10 -> 1.5.32 commit
  • maven pmd plugin 3.13.0 -> 3.15.0 commit
  • base Java 17, switch to 17+dev-SNAPSHOT commit
  • javafx 16 -> 17.0.0.1, closes #1107 commit

docs

  • added commit message guidelines for changelog generation commit
  • clarified release process commit

feat

  • FXGL 17 intro commit
  • added transferFrom() to Inventory commit
  • new API to set time to animation directly and to build sequential animations commit
  • dialogue syntax check, show an error icon if there are incomplete paths, #651 commit
  • added showChoiceBox to DialogService, closes #1094 commit
  • added audioFileName support to nodes, #651 commit
  • bind debug camera to CTRL+8, to avoid issues with CTRL+C commit
  • added DialogueContext, #1116 commit
  • added bulk dialogue editor actions commit
  • undo (ctrl+z) is complete for main editor actions, #651 commit
  • added TimeComponent::copy, #1041 commit
  • Added draft skybox implementation commit
  • add Platform.EMBEDDED, #1079 commit
  • added public API to change render fill of FXGLPane, set default to White for consistency with native mode, #1085 commit
  • added randomColorHSB() commit
  • added embeddedShutdown() that allows restarting an FXGL instance without the need to exit JavaFX, added sample, #1075 commit

fix

  • fixed non-uniform frame distribution for AnimationTexture, closes #1067 commit
  • fixed a bug that causes audio service to not load properly on embedded devices commit
  • fixed a bug that would cause FS access via gluon attach on embedded devices commit

refactor

  • internal refactor Inventory commit
  • clean up MDIWindow, closes #815 commit
  • remove redundant code, active is always false at that point, closes #1024 commit

repo

  • ignore auto-generated changelog files commit
FXGL - 11.17

Published by AlmasB over 3 years ago

  • Added download file API to NetService
  • Rotation and scale in 3D now support origin points (pivot points)
  • Added a setting that allows music to be paused when the game is minimized, paused by default
  • Added Model3D sample showing how to load .obj models
  • Added JointSample and support for RevoluteJoints from box2d
  • Added fluent API to HearingSenseComponent, thanks to @jo372
  • Updated physics collision sample, thanks to @jo372
  • Ignore and warn during when adding a component during a component update, thanks to @lydianeU
  • Added PropertyMapChangeListener
  • Added replication support for PropertyMap
  • Camera in 3D has a new setting allowing the pitch (rotationX) to be clamped between -90 and 90 deg
  • Multiple superfluous modules merged into few

Bug fixes:

  • AutoRotationComponent smooth now shouldn't make sharp turns

Version bump:

  • jacoco 0.8.6 -> 0.8.7
  • kotlin 1.4.30 -> 1.5.10
FXGL - 11.16

Published by AlmasB over 3 years ago

  • Restored and refactored MultiplayerService
  • Added ReplicationEvent (javafx event that can be replicated on a remote machine)
  • FPS camera (camera3D.setFPSCamera(true))
  • Mouse sensitivity setting
  • Removed dependency on javafx.swing module, thanks to @FDelporte
  • Performance improvements in Tiled map loading, thanks to @adambocco
  • isExperimental3D -> 3D
  • isExperimentalNative -> isNative
  • Model3D can be loaded from an .obj
  • Model3D now has a copy()
  • Added Cuboid shape
  • EntityGroup::size(), thanks to @adambocco
  • Allow providing a custom default cursor for all scenes
  • Internal physics refactoring
  • Entity no longer throws an exception when adding a duplicate Component (warns instead), thanks to @Zhack47

Version bump:

  • JavaFX 15 -> 16
  • Compile target for Kotlin: 1.8 -> 11
FXGL - 11.15

Published by AlmasB over 3 years ago

  • Custom 3D shapes
  • Allow users to set render width/height when running in embedded mode
  • Game world is less aggressive and warns the user instead when an illegal operation is attempted
  • Added cutscene text format: cutscenes can have author names and images
  • Internal refactorings for physics code
  • Significant performance improvements for collision checks where both entities are at 0 rotation
  • Merged standalone modules
  • Logger prints full stack trace for caught exceptions
  • Draft API for downloading files
  • Screenshot key is now CTRL+8 to avoid issues with P
  • Bug fixes related to mouse UI coordinates
  • Tiled tile flipping support, thanks to @adambocco
  • Initial draft of SenseAI
  • Initial draft of fxgl editor
  • jackson 2.11.1 -> 2.12.1
FXGL - 11.14

Published by AlmasB over 3 years ago

  • Major internal refactoring of physics (both light and heavy-weight). Please check your physics related code behaves the same
  • Significantly improved physics performance of collision detection when at least one entity is at non-zero rotation
  • Added experimental embedded mode support, where FXGL can run inside a JavaFX application natively via a Node
  • AssetLoader can now load from any URL, thanks to @sormuras for discussions
  • Added loadJSON() to asset loader
  • Renamed master branch to release to clearly represent branch purpose
  • All of CI is now on GitHub Actions
  • Inventory feature improvements, thanks to @adambocco for PRs
  • Kotlin: 1.4.10 -> 1.4.30

Bug fixes:

  • Fixed a bug in event handling for Input. Now filters and handlers behave a similar way to JavaFX
  • Fixed a bug that would case loop runner to speed up after pause / delay / resume sequence
FXGL - 11.13

Published by AlmasB over 3 years ago

  • Introduction of experimental 3D concepts, such as transforms, camera and scene. FXGL now understands 3D for purposes of rendering and animating.
  • z is now used for the depth dimension. Use zIndex to change z-index of entities
  • Significantly simplified Menu API
  • Added AnimatedString
  • Added RandomAStartMoveComponent
  • Added multiple new samples
  • Added CODE_OF_CONDUCT
  • Allow providing a custom startup scene
  • Number of ticks can now be set to arbitrary (does not depend on display refresh rate)
  • Updated color scheme for .fxgl_button (FXGLButton)
  • Updated documentation of multiple modules, see #897

Bug fixes:

  • PropertyMap will now correctly notify when setting an object (same ref)
FXGL - 11.12

Published by AlmasB almost 4 years ago

  • Expose engine pause/resume and primary stage as public API
  • Fixed a bug that would crash dialogue editor with many graph nodes
  • Fixed a bug that crashed dialogue cutscene when a choice response was pressed before the text animation finished
  • Fixed a bug in dialogue editor related to saving / loading
  • New setting: disables auto-scale on resize. Useful for non-game applications
  • Support for assignment statements in dialogues (in FunctionNode)
  • Support for Tiled text objects
  • Support for high-refresh rate displays: please test
  • Support for audio on Android
  • Support for adding a custom buffer size for UDP packets
  • Improved profiling tools for FPS, CPU and RAM
  • Tentative controller support for windows64 and linux64: QA testing is welcome!
  • Internal code quality improvements
  • More unit tests
  • Faster CI builds due to removal of unnecessary actions
  • Partial CI migration to GitHub Actions
  • kotlin 1.3.41 -> 1.4.10
  • javafx 14 -> 15
  • jacoco 0.8.5 -> 0.8.6
  • junit 5.6 -> 5.7
  • attach 4.0.8 -> 4.0.9
  • Other minor improvements
FXGL - 11.11

Published by AlmasB about 4 years ago

This release brings mobile (via Gluon client-maven-plugin) and networking support.

  • TCP support is no longer in draft (feedback welcome)
  • Added draft UDP support
  • Restored FXGLTextFlow
  • AnimationBuilder now has rotate and scale origins, thanks to @AahzBrut
  • Fixed WobbleEffect, thanks to @AahzBrut
  • Various API improvements
  • More tests
  • attach 4.0.6 -> 4.0.8
  • javafx 13.0.2 -> 14
  • Improved peformance in IntroScene
  • Added lifecycle event handlers on mobile
  • Significant performance improvements to Images::merge and sub/superTexture
  • Fixed default logging format
  • Clean up CI scripts

FXGL dialogue editor:

  • can move multiple nodes with CTRL+click
  • latest builds available from builds-editor
FXGL - 11.10

Published by AlmasB about 4 years ago

Changelog:

  • Default intro scene updated
  • Draft of fxgl-net TCP
  • Significant improvement in animation performance
  • Anonymous components are now allowed, though still not recommended
  • Component injection can be disabled on a per component basis to improve runtime performance when creating many entities
  • fxgl-trade module is now part of FXGL API
  • Added "global" input object accessible via SceneService
  • More tests
  • Internal code cleanup and refactor
  • fxgl-samples cleanup
  • attach 4.0.2 -> 4.0.6
  • new dep: jackson databind
  • Dialogue editor: added branches / functions / conditions
  • Added a setting to disable all FS write operations
  • Localizations and fonts are now lazily loaded, improving fxgl startup time
  • Camera scene can be entered with CTRL+C in debug / developer modes

Bug fixes:

  • Fixed translation animation along a path, which now doesn't snap to 0,0
  • Fixed a bug where tmx with different tileset sizes would load incorrectly
  • Fixed a bug where viewport would not correctly follow entity if zoomed
  • Fixed a bug where mouse world coordinates would be incorrect when viewport is zoomed
  • Fixed a bug where viewport bounds would not honor zoom level
  • Fixed a bug where resized window would generate incorrect input coordinates

Contribution credits (thanks to):

  • @dykstrom
  • @AahzBrut
  • @CharlyZhu
FXGL - 11.9

Published by AlmasB over 4 years ago

Changelog:

  • Error reporter is no longer a native window. It now runs as an MDI window to improve cross-platform support
  • Animation now has an onCycleFinished() callback
  • Single unified AnimationBuilder for Entity and Node, available for all fxgl modules
  • .properties or any extension with same properties format can be loaded as a PropertyMap
  • Redesigned menu architecture: now there are only two menus: main and game, each controlled separately via settings.setMainMenuEnabled() and settings.setGameMenuEnabled().
  • Fixed a bug that incorrectly sorted the rendering order of subscene views
  • Fixed a bug that incorrectly resized scenes
  • More detailed OS info is logged to debug (thanks to @ross-holloway94)
  • New input trigger: sequence of keys
  • New components: AutoRotationComponent, StateComponent
  • New Entity and Animation builder convenience methods
  • Improved internal management of entity views, resulting in significantly improved use of CPU time (especially when there are many entities)
  • Simplified Save/Load API
  • Improvements to Shop API in the fxgl-trade module
  • Improvements to Entity API for kotlin users (thanks to @wakingrufus)

Mobile improvements:

  • no extra IO tasks during FXGL init (faster startup)
  • no runtime proxy functions (avoids mobile runtime crash)
  • .tmx is now correctly parsed
  • platform os is correctly detected
  • virtual joystick
FXGL - 11.8

Published by AlmasB over 4 years ago

  • Most FXGL.* calls are implemented as EngineService for further modular architecture
  • getGameState() is now a property map of the game world, accessible via FXGL.getWorldProperties()
  • Fonts are loaded lazily. Now getUIFactoryService().newText() has unmodifiable fonts
  • Faster window startup
  • New events DSL API
  • New Action API for entities. An Action is short-term behavior.
  • JavaFX Properties can now be animated using the Animation DSL API
  • WobbleEffect
  • JavaFX upgraded to 13.0.2
  • New function to calculate distance between bboxes of entities
  • Minor convenience updates to API

Fixes:

  • Fixed z-index sorting bug when z is updated at runtime
  • Fixed incorrect offset of the pause menu when window is resized
FXGL - 11.7

Published by AlmasB almost 5 years ago

Main focus of this release was on the fxgl-ai module. In particular, A* pathfinding and cell-based movements. Changelog:

  • Added fxgl-ai module
  • ProgressBar (fxgl-ui module) value not bindable was fixed (thanks @marvinbuff )
  • Particle effects can now scale with entities
  • Images.kt has new resize() function (thanks @CharlyZhu)
  • Cursor can now be set to invisible in the game scene
  • Added IntervalSwitchComponent (thanks @CharlyZhu)
  • Added TrailViewComponent
  • Added PropertyMapView (thanks @CharlyZhu)
  • FXGLMath random can now be initialized with a seed (settings.setRandomSeed())
  • Minor bug fixes and extra convenience methods to Java and Kotlin DSL
FXGL - 11.6

Published by AlmasB almost 5 years ago

  • Unified localization support for both in-game and engine data. Example usage:
getLocalizationService().addLanguageData(new Language("ENGLISH"), Map.of("some.key", "Hello World"));
// just String
String s = getLocalizationService().getLocalizedString("some.key");
// a bindable StringProperty
StringProperty s = getLocalizationService().localizedStringProperty("some.key");
  • Support for flipped tiles in .tmx files from Tiled map editor
  • Tiled maps with transparency are now correctly loaded
  • Added circuit breaker style mini game
  • Allow entities to call component methods directly using method name:
class SomeComponent extends Component {
    public void someMethod() { }
}
...
entity.addComponent(new SomeComponent());
entity.call("someMethod");
  • Added components: ActivatorComponent, FollowComponent, TextViewComponent, GenericBarViewComponent (thanks to @marvinbuff}
  • Added effect: SlowTimeEffect
  • Fixed a rare bug that would crash FXGL on startup
  • More tests
FXGL - 11.5

Published by AlmasB about 5 years ago

This release fixes a major bug in fullscreen mode. All developers using fullscreen in their games should upgrade to this version.

  • Fixed UI not scaling properly when going fullscreen
  • Fixed (via a workaround, thanks to @Madave94) uncapped frame rate on Linux
  • Larger code coverage for unit tests + added a system test
  • Internal code refactorings to reduce inter-class dependencies
  • Cleanup of legacy code and resources
  • Added static code analyser (thanks to @megaman248)
  • New fxgl-tools module with functional dialogue editor
FXGL - 11.4

Published by AlmasB about 5 years ago

This release completes a lot of the groundwork required to run FXGL 11 natively (desktop + mobile).

Changelog:

  • The engine core is fully functional on native Linux, Mac + iOS
  • File system access now works on iOS via "attach" storage 4.0.2
  • Most of fail-fast calls in AssetLoader are now fail-safe: dummy assets are returned if load fails and a warning message is recorded
  • Deprecated API has been removed
  • New setting to preserve resize ratio
  • Add build number, java and javafx runtime versions to FXGL version
  • Developer debug messages that can be used for temporary messages
  • Added OffscreenPauseComponent
  • Restored virtual controls
  • Menu UI bug is fixed wrt credits
  • ViewComponent API is redesigned to be more intuitive. Access to underlying view (JavaFX Node subclasses) should now be easier. Adding and removing views at runtime should also be easier.
  • Uses JavaFX 12.0.1
  • Travis CI now uses OpenJDK11 and 12
  • Uber jar now contains all (win, mac, linux) dependencies