Why FlixelGDX?
Modern game-engine ergonomics, the welcoming Flixel API, and the performance budget of a feather. Perfect for first-time game devs, game jams, classrooms, and serious indie projects alike.
Beginner friendly, expert powerful
Familiar Flixel-shaped states, sprites, groups, tweens and timers, plus the full power of libGDX when you need it. No magic, no walls.
Featherweight & fast
Designed to bring the features of modern game engines to low-end hardware. A FlixelGDX game runs happily inside a 16 MB JVM heap.
Built on libGDX
Cross-platform windowing, OpenGL, input and audio under the hood — but with the friendly Flixel API on top.
Multiplatform
Ship to LWJGL3 desktop and to the browser via TeaVM. Mobile (Android & iOS) backends are on the way.
Batteries included
Tweens, timers, animations, bitmap text, audio helpers, saves, input actions, powerful debugging tools and more — all out of the box just for you.
Java 17 + Gradle
Modern Java, records, switches, lambdas. A clean Gradle multi-module split that grows with your project.
Debug-friendly
In-game watches, a logger that captures file + line, and an optional ImGui-powered overlay so you can see what your game is doing.
Drop-in with Maven Central and JitPack
Clean, compatible integration with Maven Central and JitPack. Pick a version or tag and you're done.
100% free and open source
The best part of all, FlixelGDX is completely free for you to use in any project, personal or commercial. Contributions are always welcome!
Reads like Flixel. Runs like libGDX.
The static Flixel facade exposes every system you need — states, sprites, input, audio, signals and timers — with an API that feels like home if you have ever used HaxeFlixel.
- States & substates that stack like scenes.
- Sprite groups with batched update & draw.
- Tweens, timers, and a debug overlay out of the box.
- Input action sets for keyboard, mouse & controllers.
// Switch states.
Flixel.switchState(new MyGameState());
// Play a sound.
Flixel.sound.play("explosion.mp3");
// Check if a key is pressed.
if (Flixel.keys.justPressed(FlixelKeys.SPACE)) {
player.jump();
}
