Just in time for making your new year's resolution of creating amazing games with LITIENGINE, we proudly present our latest update, packed with 250 commits over the last ten months!
Let's talk about the elephant in the room: LITIENGINE is now fully running on Java 17! In the future, we plan to keep the library updated to the latest stable jdk versions for you to utilize all the juicy new features Java has to offer.
To make building ingame UI more pleasant, the Slider
, TextFieldComponent
, and SpeechBubble
components have seen massive updates.
Bugfixes and UX improvements for utiLITI will ensure a more smooth experience when handling the editor.
Apart from that, a lot has changed in our build and deployment pipeline and the repository is now utilizing GitHub actions instead of Travis CI. This goes along with a completely revised directory structure and proper separation of submodules. The way we bundle native libraries has been adapted and the dependency on steamworks4j has been removed. Please also take note of our changed contribution guidelines: it is now required to comply with the Java code style conventions we provide in the repository (see CONTRIBUTING.md).
Finally, a huge THANK YOU is in order: To all our new code contributors, to the community involved in discussing issues, to everyone providing help in our forum and on Discord, and lastly: Thank you to our new Sponsors RajBet, Trust My Paper, CasinoHex Canada, and ej-technologies (in chronological order of sponsorships)!
What are you waiting for? Start the new year the right way: making games with LITIENGINE.
#373 Fixed ArrayIndexOutOfBoundsException
(contributed by @Gamebuster19901)
#378 Fixed deadlock in StatusBar
(contributed by @Gamebuster19901)
#394 Fixed endless recursion for ResourcesContainer::getAsync(String)
(contributed by @EagleoutIce)
847c523, 5fffe4f Prevented two NullPointerExceptions
in SoundSources
87085d7 Crucially improved robustness and usability of slider GuiComponents
1f27427 Removed final
modifiers from serializable Tmx properties in Triggers
01da7e0 Ensured animation caching
7beda04 Fixed Polygon particle rounding errors.
#441 Fixed wrong type of EntityController being removed with clearControllers()
(contributed by @Gamebuster19901)
#376, #377, #381, #382, #383, #385, #386, #388, #389, #390, #396, #397, #398, #403 Vastly improved test coverage (contributed by @DanielH4, @nwessman, @jluech, @ddreimane, @niels89)
c42dc23 Added gamepad mapping for DualShock4 controller
8469c67 Guess type of connected gamepads from the most probable variants.
d6449ee, 0cac85a Add TweenType OPACITY and implement opacity Tweening on GuiComponents.
d930a8b Added EntityNavigator overload for using an uninitialized PathFinder.
7047c83 Disable collision just before firing death events.
f4fa77b Added support for setting int and double array fields via ReflectionUtilities
5e126bf, 5227848, 350c137, 4a24304 TextFieldComponent
improvements:
1bcdf2a Excluded entities that cannot collide with a Trigger from activating it
bfc8d2f Added events for GuiComponent rendering
09bccf3 Made VAlign xml names consistent with enum names
b3c47f9 Ensured that event registrations are passed through to the current gamepad
2e055a2 Set default color for particles on initialization
64ea5c8 Reimplemented SpeechBubble
as a GuiComponent for more configurabiLITI
default
due to JUnit 5 migrationGridRenderer
memory usageJProfiler
.)This release brings tons of bugfixes and quality-of-life improvements. Feature-wise, the highlight of this version is the addition of a Tweening framework that lets you interpolate values over time, e.g. to let your GuiComponents
bounce or your Entities
wiggle.
As the engine's networking code had been an unmaintained, untested, and even unsafe mess, we have decided to remove the networking package entirely.
Our Discord server has seen some upgrades and we gladly welcome our first community moderator, Conifer! In order to give back some of your love, we have introduced some special roles for our forum and the Discord server:
We try to assign these roles to the best of our knowledge, but if we forgot you - please don't hesitate to complain. 🙂
Apart from that, we've updated the sponsoring tiers in the LITIENGINE Open Collective, allowing you to support our work financially and with full transparency. We have also started a spreadshirt shop where you can buy all kinds of LITIENGINE related swag and promote the cause (feel free to suggest additional motives)!
As always, huge thanks to all contributors and fans! This is an exciting journey for us and we are grateful to share it with you.
CreatureAnimationControllers
URLAdapter
initialization in XmlUtilities
ImageLayer
rendering for unbound mapsCollisionEntities
GuiComponents
with text outlinesGuiComponent
text with outlinesCombatEntityListeners
would not fire hit and death eventsAnimation
frame being skippedAnimation
in an AnimationController
is used as defaultPhysicsEngine
is cleared when the game world is clearedSoundSource
entities. Added individual falloff ranges for SFXPlaybacks
SFXPlaybacks
Tiles
GuiComponents
ImageComponentList
externallyIEntityControllers
to the Game loop when adding / removing.MapObject
unmarshalling behaviourAttribute
valuesAnimation
keyframesGuiComponents
ImageComponents
Material
support for setting values via reflectionAnimationController
instance on Entities
CombatEntities
TextParticles
GameMetrics
java version outputVolumeControl
publicInputLoop
into the GameLoop
. The SoundEngine
will now also be updated by the GameLoop
.MovementController
velocity and angle available publiclyAbility
impact areaAnimations
from AnimationControllers
available as a static methodGuiComponent
text anti aliasing out of the Appearance
removeChangedListener
to removeListener
RenderType
for all Particle
instances.Effect
target evaluations protectedAbility
effects available publiclyCreatures
to be fired implicitlyGridRenderer
more robust when no camera is set.EntityList
would be focusedGridRenderer
performanceThis release marks the beginning of a new era for the LITIENGINE. We consider most of the API to be stable and we pretty much settled on the current API design. With the release of our new Website, the documentation and other information about the engine are easier to use and everything can be found in one place.
It's been a long journey but, finally, we're leaving the Alpha status and are looking forward to even more fruitful experiences with the LITIENGINE in the future. A big thank you to all members of this community. Without your feedback and contributions we wouldn't be here today. You're awesome!
PositionLockCamera
EntityEmitters
to update their position correctly once the corresponding entity moves.GeometricUtilities
Game.random()
API with support for choosing a random stringEnvironment
with the possibility to retrieve entities by a specified Predicate
SoundEffect
with the possibility to provide sounds by nameEntityNavigator
TextRenderer
with several new method overloadsTilesetEntry
with support for collision infoMobileEntity
Environments
)MapArea
With this version, we've introduced theming support for the utiLITI editor with the DarkLaf library. The theme can be switch at runtime
Dark Theme utiLITI
Light Theme utiLITI
With this version, we revamped the Emitter
UI in the utiLITI editor such that changes to the emitter are instantly applied. The different parameters have been categorized and the overall usability has been drastically improved.
In addition, we've also added the possibility to configure particle rotation for even more vivid visual effects.
See the related implementations on GitHub: #346 #298 #345