Skip to content

fastjengine/FastJ

Repository files navigation

FastJ Logo

Build Status SonarCloud Code Coverage

Javadoc Maven Central jitpack.io Discord Server

What is FastJ?

FastJ is a free and open-source Java-based 2D game engine and framework. It aims to provide the best 2D game-making experience using Java (and the JVM languages).

Disclaimer

This project is still under heavy development. There is a very good chance bugs are still prevalent and untracked, as the engine is not fully covered by unit tests. Documentation is readily available, but may change over time. Feel free to help us out by contributing to the project!

Projected Feature List

Feature Description Support
2D Rendering Rendering of Shapes, Models, Text, Sprites, Lighting
Scene System Scene-based Rendering & Scene Switching
Scriptable Behaviors Control GameObject state
Desktop Support Full Compatibility on Windows, Linux, and macOS
Audio Engine Loading, Playing, and Controlling .wav, .ogg, .mp3 files
Image Support Image rendering, Spritesheet Creation
Animation Engine Interpolation, Sprite Animation, Tweening Framework
UI System Flexible UI System to replace Swing UI
Particle Engine Particle Emitters, Interaction with Game Elements
Physics Engine Custom 2D Physics Engine
Asset Manager Load, Unload, and Hot Reload Game Assets
FastJ Model Creator Create & Export 2D Models with an editor
FastJ Editor Make Games in FastJ with an editor
Web Support Run FastJ in Modern Web Browsers

✅ is complete and satisfactory.

✔ is implemented and usable, but is missing certain features.

⭕ is in progress.

❌ is not yet implemented.

Features with examples available have their prime example linked.

How do I Learn FastJ?

There are many ways to learn FastJ -- check them out below!

Template Projects

Use a template project! It's the fastest way to jump into using FastJ. You just need to pick a programming language from the ones below. We suggest Java, as it has the most tutorial content, but Kotlin and Groovy are fine options as well.

Tutorials

FastJ provides article tutorials on its website to accommodate as many types of developers as possible. From beginners to experts, the website tutorials are written to give enough information to satisfy anyone willing to learn!

Code Examples

Explore FastJ's code examples to see the different ways FastJ can be used, and all of its features. These come with in-example explanations and easy plug-and-playability to give you the best chance at understanding how FastJ works.

API Documentation

Check out FastJ's documentation to get a better understanding of the code FastJ provides to improve your game-making experience.

I'll add the dependency myself!

Well in that case...

Click here to expand the manual dependency instructions.

Dependency Management

This library can be found in the following places:

When adding the dependency, make sure to replace [latest version here] with the actual version (you'll find this in the jitpack.io or Maven Central link up above). The current latest version is 1.7.0-SNAPSHOT-2.

A few common dependencies are provided below:

  • Gradle Build Script
    • Groovy:
      repositories.mavenCentral()
      
      dependencies.implementation('io.github.lucasstarsz.fastj:fastj-library:1.7.0-SNAPSHOT-2')
    • Kotlin:
      repositories.maven {
          setUrl("https://jitpack.io")
      }
      
      dependencies.implementation("io.github.lucasstarsz.fastj:fastj-library:1.7.0-SNAPSHOT-2")
  • Maven POM
    <dependency>
      <groupId>io.github.lucasstarsz.fastj</groupId>
      <artifactId>fastj-library</artifactId>
      <version>1.7.0-SNAPSHOT-2</version>
    </dependency>

You'll also want to make sure you add a dependency for a logging framework from SLF4J, since FastJ uses it for all its logging purposes. Take your pick!

Community

FastJ's community of developers is growing day by day!

  • Join the FastJ Discord Server to join a growing community of game developers, artists, and more! We host Game Jams every few months, so keep an eye out 😄

Games Made with FastJ

Gameplay of Stack Attack by Lucas Z

Gameplay of Rhythm Game by Lucas Z

Want your FastJ game featured? Open an issue, or ask in our discord!

Contributing to FastJ

Plan on contributing to the repository? Awesome! We're glad to have you ❤️

Please be sure to read over the contribution guidelines so that you can get started.

License

This repository is Free and Open Source, licensed under the MIT License.

Dependencies

  • SLF4J for logging support.
  • [JOrbis] and [VorbisSPI] for .ogg support.
  • [MP3SPI] for .mp3 support.
  • [tritonus-share] for utility processing tools related to above audio libraries.