An open-source, Java-based 2D game engine.
Full Changelog: https://github.com/fastjengine/FastJ/compare/1.7.0-SNAPSHOT-1...1.7.0-SNAPSHOT-2
SimpleManager
, SceneManager
, Behavior
, and Scene
drawableManager
and inputManager
public access -- use method access insteadunload
of scenesrunAfterRender
and runAfterUpdate
with runLater
in FastJEngine
Animation
to Anim
in a number of casesFull Changelog: https://github.com/fastjengine/FastJ/compare/1.6.0...1.7.0-SNAPSHOT-1
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 are now visible from the root directory of the FastJ project -- the examples
folder! Check them out.
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 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.
Full Changelog: https://github.com/fastjengine/FastJ/compare/1.5.1...1.6.0
2.0.0-alpha-3)
in #127ManagedList
-- 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 #161origin
, unit
, and directional vectors (and more) for Point/Pointf
in #155Point/Pointf.Origin
in commit a961b9
audio
example with proper resource loadinglogging
example with SLF4J contentmouse
example with new mouse event systemtest
loggingFull Changelog: https://github.com/fastjengine/FastJ/compare/1.6.0-SNAPSHOT-2...1.6.0-SNAPSHOT-3
Full Changelog: https://github.com/fastjengine/FastJ/compare/1.6.0-SNAPSHOT-1...1.6.0-SNAPSHOT-2
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.
2 new example programs have been added to FastJ: Simple Audio and Behaviors! Check them out below:
All of FastJ's issue templates have been replaced with GitHub's issue forms. Check them out here!
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
.
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.
LogicManager
initBehaviors
-- requests that the LogicManager
initialize its behaviorsupdateBehaviors
-- requests that the LogicManager
update its behaviorsprocessKeysDown
-- requests that the LogicManager
process keys pressed downBehaviorManager.destroyListenerList
for destroying the behaviors of any BehaviorHandler
's behavior listener listBehaviorHandler.destroyBehaviorListeners
for calling the BehaviorManager
's behavior destroying methodSupportedFileFormats
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 initializationLogicManager
did not initialize, update, or destroy behaviorsLogicManager
did not act on keys pressed downSimpleManager
and Scene
classes' reset
methodsAudioEventListener.AudioEventProcessor
switch statements which throws IllegalStateException
Gradient.java
and Point.java
Point.java
and MemoryAudioPlayer.java
update/init/renderCurrentScene
methods with safeUpdate/Init/Render
methods, respectivelyFastJ 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.
I'm proud to announce that the FastJ Discord server is now open -- join here!
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.
Polygon2D
objects (polygons) in FastJText2D
objects (text) in FastJModel2D
objects (models) in FastJModel2D
objects from/to files in FastJDisplay
's global rendering settingsGameObject
s with behaviors.Furthermore, the following examples have been removed:
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.
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.
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.
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.
Maths.java
Maths#lerp
for basic linear interpolation (by @YeffyCodeGit)Point.java
java.awt.Dimension
conversion/equality checkingmagnitude
methodssquare magnitude
, dot product
, cross product
, normalize
methodsangle
, signed angle
, and rotate
methodsPointf.java
magnitude
methodssquare magnitude
, dot product
, cross product
methodsnormalize
, angle
, signed angle
, and rotate
methodsDisplay.java
GraphicsEnvironment
-related static methods to DisplayUtil.java
FastJEngine.java
FastJEngine#runAfterUpdate(action)
method to run actions after the next completed LogicManager#update
.Executors
were not stopped upon exiting the engine, preventing applications from being able to close.Display.java
InputManager.java
Maths#FloatPrecision
) to 4 digitsGUIObject
to use UIElement
.enum
s to use PascalCase instead of CONSTANT_CASE.