FastJ Versions Save

An open-source, Java-based 2D game engine.

1.7.0-SNAPSHOT-2

1 year ago

1.7.0-SNAPSHOT-1

1 year ago

Most Notable Changes

  • updated minimum Java version to 18
  • New camera and scene examples
  • Reduced verbosity of using SimpleManager, SceneManager, Behavior, and Scene
  • deprecated drawableManager and inputManager public access -- use method access instead
  • fixed tons of concurrency issues
  • fixed bug forcing users to destroy game objects/ui in unload of scenes
  • separated game loop into highly customizable system
  • added unified events system
    • migrated input system to new events system
    • migrated sprite animation system to new events system
  • replaced runAfterRender and runAfterUpdate with runLater in FastJEngine
  • minor improvements to sprite animation system
    • shortened Animation to Anim in a number of cases
  • added games made using FastJ
  • added lots of missing documentation

Engine Developer Changes

  • combined GitHub Actions scripts into one yml file
  • bumped spotless to version 6.9.0
  • bumped gradle version to 7.5.1
  • bumped slf4j version to 2.0.0-alpha7
  • updated source code contribution guidelines
    • modified spotless configuration
See More

What's Changed

Full Changelog: https://github.com/fastjengine/FastJ/compare/1.6.0...1.7.0-SNAPSHOT-1

1.6.0

2 years ago

FastJ 1.6.0 - Pivot Point to Success

The beginnings of ideas for the next iteration of FastJ, 1.6.0! With almost 270 commits since 1.5.1, FastJ has been able to grow substantially! Thanks to all of our contributors this time around! ❤️

Examples have Moved!

Examples are now visible from the root directory of the FastJ project -- the examples folder! Check them out.

Plans for the Future

Based on the direction I'm seeing the engine's current code architecture (or lack thereof) head, it's time we hunker down and completely redesign FastJ. As a result of this and lack of time, unfortunately not much effort can be put into 1.6.0's release and information surrounding it.

We're planning to rebuild FastJ from the ground up.

We would love your help in bringing FastJ into a much more cohesive state of being. Join the discord server and help us decide the architecture and features to be brought with us into the next version of FastJ. We're doing this right now (as of February 17, 2022). Bring your experience, your opinions, your ideas for the future.

Thank you for your time.

What's Changed

New Contributors

Full Changelog: https://github.com/fastjengine/FastJ/compare/1.5.1...1.6.0

1.6.0-SNAPSHOT-3

2 years ago

Most Notable Changes

  • SLF4J integration (currently 2.0.0-alpha-3) in #127
  • Fixed dozens of concurrency "random crashes and errors" in #161
  • Added ManagedList -- a type of List with convenient managed list actions via a ScheduledExecutorService to start and stop important list actions at a moment's notice in #161
  • Added custom mouse events to match keyboard events in #161
  • Added origin, unit, and directional vectors (and more) for Point/Pointf in #155
  • Deprecated Point/Pointf.Origin in commit a961b9
  • updated audio example with proper resource loading
  • updated logging example with SLF4J content
  • updated mouse example with new mouse event system
  • added substantial logging to the engine
  • more unit tests!

Engine Developer Changes

  • Added Spotless integration for import order (and hopefully more things later)
  • Added trace-level logging and date/time recording to test logging
See More

What's Changed

Full Changelog: https://github.com/fastjengine/FastJ/compare/1.6.0-SNAPSHOT-2...1.6.0-SNAPSHOT-3

1.6.0-SNAPSHOT-2

2 years ago

Most Notable Changes

  • added logging system, added engine config, moved example programs in #127
  • revamp display system, added dialog system in #124
  • (#138) fixed issue with Sprite2D not constructing properly in #140
  • more unit tests!
See More

What's Changed

Full Changelog: https://github.com/fastjengine/FastJ/compare/1.6.0-SNAPSHOT-1...1.6.0-SNAPSHOT-2

1.6.0-SNAPSHOT-1

2 years ago

1.5.1

2 years ago

FastJ 1.5.1 - Audio from Java URLs and More!

FastJ 1.5.1 has been released, with 80 new commits since FastJ 1.5.0. This version of FastJ contains bug fixes, new features, new examples, and more! Read on to find out what's new.

New Example Programs

2 new example programs have been added to FastJ: Simple Audio and Behaviors! Check them out below:

Replace Issue Templates with Issue Forms

All of FastJ's issue templates have been replaced with GitHub's issue forms. Check them out here!

Audio from Java URLs

Loading/Playing Audio with FastJ can now be done using java.net.URL, enabling easy use of sound files contained in a jarfile through the ClassLoader.

Added Missing Keyboard Improvements Section to 1.5.0

It seems that I forgot to cover the improvements made to FastJ's keyboard system in the 1.5.0 release. Sorry! Go check it out to see what's up.

General Changelog

Additions

  • Added explicit methods to manage behaviors/keys pressed in LogicManager
  • initBehaviors -- requests that the LogicManager initialize its behaviors
  • updateBehaviors -- requests that the LogicManager update its behaviors
  • processKeysDown -- requests that the LogicManager process keys pressed down
  • BehaviorManager.destroyListenerList for destroying the behaviors of any BehaviorHandler's behavior listener list
  • BehaviorHandler.destroyBehaviorListeners for calling the BehaviorManager's behavior destroying method

Breaking Changes

  • (by @Sammie156, PR #72) Renamed SupportedFileFormats to SupportedModelFormats
  • SceneManager no longer handles input at the update() stage. All input dealt with in SceneManager will be called before render()
  • SceneManager behavior initialization now occurs after background adjustments and scene initialization

Bug Fixes

  • (#96) Fixed issue where LogicManager did not initialize, update, or destroy behaviors
  • Fixed issue where LogicManager did not act on keys pressed down
  • (#99) Added behavior destroy calls to both SimpleManager and Scene classes' reset methods

Other Changes

  • (by @SaadRehmanCS, PR #71) include default case in AudioEventListener.AudioEventProcessor switch statements which throws IllegalStateException
  • (by @Sammie156, PR #80) removed unnecessary casts in Gradient.java and Point.java
  • (by @Sammie156, PR #84) removed more unnecessary casts in Point.java and MemoryAudioPlayer.java
  • (internal) Replaced update/init/renderCurrentScene methods with safeUpdate/Init/Render methods, respectively
  • (internal) Reorganize unit tests to match main package structure
  • (internal) Added unit tests to cover loading/playing audio with URLs
  • (internal) Added unit tests to cover unloading multiple audio files at once

1.5.0

2 years ago

🎉 FastJ 1.5.0 Release 🎉

FastJ 1.5.0 is finally here! With over 300 commits from 7 contributors, the FastJ game engine has grown in maturity and gained new skills.
This version of FastJ includes a revamped Drawable system with gradients and outlines support for polygons, more logic manager options, better keyboard input support, the addition of an audio engine, and much much more! Read on to find out what's new.

Discord Server

I'm proud to announce that the FastJ Discord server is now open -- join here!

New Example Programs

With the popularity and feature list of FastJ growing, 13 new example programs have been added! They cover a range of topics like getting started, engine configuration, keyboard and mouse inpuut, text, polygons, models, scenes, and more.

Examples Source Code

Furthermore, the following examples have been removed:

  • "Hello World!" has been removed, in favor of "Hello, FastJ!"

Code Improvements

The full list of new things in FastJ is so long, I couldn't possibly put it all here! Instead, I'll link you to the full post on the FastJ website.

1.5.0-SNAPSHOT-2

2 years ago

1.4.0

3 years ago

This isn't a very glamorous update, but it is an essential one. FastJ has been equipped with several useful mathematical methods in order to ease the amount of work that programmers would need to do to create simple games.

...In other words, FastJ's pretty tough to use without these 😅

That being said, these updates constitute a satisfactory base that can be further built upon.

Other News

Sonarcloud Code Coverage

You may have noticed a shiny new badge on the README! FastJ now makes use of Sonarcloud for code coverage, code smells, and other various helpful code analyses.

Code Style Consistency

I had some extra time while working on this game engine, so I meticulously worked to improve the documentation style and code style. With this update, the code for the library is (hopefully) much more consistent and readable.

New Additions

Maths.java

  • Added Maths#lerp for basic linear interpolation (by @YeffyCodeGit)

Point.java

  • Added java.awt.Dimension conversion/equality checking
  • Added integer/float magnitude methods
  • Added square magnitude, dot product, cross product, normalize methods
  • Added static/object-based, integer/floating-point angle, signed angle, and rotate methods

Pointf.java

  • Added magnitude methods
  • Added square magnitude, dot product, cross product methods
  • Added static/object-based normalize, angle, signed angle, and rotate methods

Display.java

  • Moved all GraphicsEnvironment-related static methods to DisplayUtil.java

FastJEngine.java

  • Added FastJEngine#runAfterUpdate(action) method to run actions after the next completed LogicManager#update.

Bug Fixes

  • Fixed issue where some Executors were not stopped upon exiting the engine, preventing applications from being able to close.

Internal Changes

Display.java

  • Broke fullscreen methods into reusable chunks for better readability/use

InputManager.java

  • Replaced use of specific methods for input (keyboard, mouse) events with general methods and mappings of specific actions.
    • See details in #14
  • Lowered floating-point accuracy requirement (Maths#FloatPrecision) to 4 digits

Breaking Changes

  • Changed all methods using UI elements referring to GUIObject to use UIElement.
  • Changed all enums to use PascalCase instead of CONSTANT_CASE.

Other

  • Removed public modifiers on unit tests/unit test classes
  • Added a second (WIP) example program -- a simple bullet hell game