๐ŸŽฎ JVM game engine based on Swing/JavaFX.




CI status
Travis CI Build Status
AppVeyor Build status
CircleCI CircleCI
CodeShip CodeShip

Awesome Kotlin Badge ktlint

An easy, light, native game engine running on JVM.

  • Why easy?
    A flappy bird game uses just 56 lines of Java code only.
    Written in Kotlin, also work on Java, JRuby, Groovy, Scala and other JVM languages.

  • Why light?
    The release build jar is about 1.6mb (with a 1mb Kotlin runtime) only.

  • Why native?
    This engine is completely platform-independent: no JNI linkage, no native methods.

View Document to learn how to use Frice Engine.




repositories { jcenter() }
dependencies { compile 'org.frice:engine:1.8.5' }

Alternatively, you can follow the instruction from JitPack.
Alternatively, you can download a jar from the release page.


This engine is based on Java's built-in GUI framework, both Swing and JavaFX. "Platform" here refers to Swing/JavaFX.

Platform dependent

These features are differently implemented in Swing/JavaFX.
Since this project is still in progress, the unsupported features will soon be available.

Feature Swing JavaFX
Life cycle โˆš โˆš
Dialogs โˆš โˆš
Cursor overriding โˆš โˆš
Screenshot โˆš โˆš
Buttons โˆš โˆš
Full screen โˆš โˆš
Always on top โˆš โˆš
Text font/size โˆš โˆš
Multi-instances โˆš ร—
Resizability โˆš โˆš
Key listener โˆš โˆš
Text measuring โˆš โˆš

Platform independent

  • Animations (moving, scaling, rotating, accelerating, chasing, approaching, etc.)
  • Audio playing (*.wav, *.mp3) by JavaSound/JavaFX Media
  • Clock system, timers
  • Delayed event manager
  • Automatic garbage collection (optional, objects far from the screen will be removed)
  • Resource manager (caching IO)
  • File/Image/Color/URL utils
  • Game objects
  • Frame animations
  • Key-value database
  • Particle effects
  • Attaching game objects
  • Collision detection with collision box


See DSL for FriceEngine


Feel free to open issue for feature request, bug reports, etc.
This is generally a personal project, so please do give your genuine suggestions.

This project is using Issue-Driven-Development.
Issues are well organized and used to managed tasks.


See FriceDemo
And see TouhouDemo