GithubHelp home page GithubHelp logo

almasb / fxgl Goto Github PK

View Code? Open in Web Editor NEW
4.1K 103.0 532.0 86.57 MB

Java / JavaFX / Kotlin Game Library (Engine)

Home Page: http://almasb.github.io/FXGL/

License: MIT License

Java 49.31% CSS 1.25% Kotlin 49.11% JavaScript 0.17% C++ 0.08% kvlang 0.01% HTML 0.08%
game-development game-engine javafx gamedev kotlin java framework game 2d-game-engine 2d-framework

fxgl's Introduction

promo

Languages

  English

  简体中文

  Русский

About

JavaFX Game Development Framework

Maven Central Build Status codecov sponsor JFXCentral

Why FXGL?

  • No installation or setup is required
  • "Out of the box": Java 8-21, Win/Mac/Linux/Android 8+/iOS 11.0+/Web
  • Simple and clean API, higher level than other engines
  • Superset of JavaFX: no need to learn new UI API
  • Real-world game development techniques: Entity-Component, interpolated animations, particles, and many more
  • Games are easily packaged into a single executable .jar, or native images

Good for:

  • Any 2D game (side-scroller / platformer / arcade / RPG)
  • Any business application with complex UI controls / animations
  • Experimental 3D
  • Hobby / academic / commercial projects
  • Teaching / learning / improving game development skills
  • Fast prototyping of app ideas

Minimal Example

public class BasicGameApp extends GameApplication {

    @Override
    protected void initSettings(GameSettings settings) {
        settings.setWidth(800);
        settings.setHeight(600);
        settings.setTitle("Basic Game App");
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Getting Started

For a quick dive into code, see standalone basic examples.

Otherwise, see:

Maven

  • Maven template project if you use Java and/or Kotlin
<dependency>
    <groupId>com.github.almasb</groupId>
    <artifactId>fxgl</artifactId>
    <version>21.1</version>
</dependency>

Gradle

  • Gradle template project if you use Java and/or Kotlin

Please refer to the template if there are any errors.

repositories {
    jcenter()
}

dependencies {
    compile 'com.github.almasb:fxgl:21.1'
}

Modularity

If you wish to develop a modular application, here's a complete example of your module-info.java:

open module app.name {
    requires com.almasb.fxgl.all;
}

Uber jar

Download the latest uber jar from Releases

Community

  • University of Brighton, UK
  • University of Nottingham, UK
  • Georgia Institute of Technology, USA
  • kidOYO, USA
  • Walton High School, USA
  • Conant High School, USA
  • Zealand Institute of Business and Technology, Denmark
  • Federal Institute of Education, Science and Technology of Rio Grande do Sul, Brazil
  • FHNW School of Engineering / Computer Science, Switzerland
  • Johann-Andreas-Schmeller-Gymnasium Nabburg, Germany

If your institution wants to use or is using FXGL, add a note via GitHub Discussions to be added to the list.

Community tutorials:

Community projects (identified using fxgl topic):

If you'd like your project featured here, just add a note via GitHub Discussions.

Development Team

A description of roles is given in the Contribution Guide.

Maintainers (Collaborators):

Coordinators:

Testers:

Contribution & Support

If you want to build FXGL from the source code or want to contribute, please see the Contribution Guide (including non-code). FXGL is fully modular, so new contributors do not need to understand the entire codebase, only the module to which the contribution is made. Contributions will be reviewed in accordance with the Code of Conduct.

You can support the FXGL development or show interest by simply starring the repo or becoming a sponsor.

Sponsors

Users:

  • @Marsl10
  • @SergeMerzliakov
  • @mbains
  • @sabit86
  • @hendrikebbers
  • @ImperaEtConquer
  • @thejeed
  • @chikega

Companies:

  • @karakun

Contact

fxgl's People

Contributors

aahzbrut avatar adambocco avatar alexmoore04 avatar almasb avatar beckfw avatar byronfiler avatar charlyzhu avatar chengenzhao avatar coldwarrl avatar deathphoenix22 avatar dykstrom avatar gitter-badger avatar harvalove avatar jo372 avatar jwill18 avatar keziah480 avatar lewis-allen avatar marvinbuff avatar nullrawr avatar sergemerzliakov avatar simonverhoeven avatar sormuras avatar stefanbanu avatar surajs02 avatar thedovah avatar tieskedh avatar vasilisandritsoudis avatar wolches avatar zachariamesbah avatar zacharydsturtz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fxgl's Issues

API Refinement

This is an on-going goal. At some point prior to version 0.5, the code will need to go through peer review, so that after 0.5 the API is more consistent across versions

Port to Android/iOS

Main thing that's stopping the port is really Java 8 API, so when core is ready just need to switch back to 7. Lambda syntax is fine, gradle retrofits it during build

Tailor JBox2D for tighter integration

e.g. to avoid unnecessary casts to PhysicsEntity, more natural interface between Vec2 and Point2D, remove packages/classes which are of no benefit to FXGL, i.e. not used in game dev

Music Volume Control

The "com/almasb/fxgl/asset/Music" class lacks a portion of the MediaPlayer's functionality. Volume control is one of them.

Persistent Data

JavaFX objects are not Serializable, so need a way of allowing clients to capture state of the game / entities into a file easily. This should be approached from the "game save" perspective.

GameApplication to return unmodifiable GameSettings

This will waive the need for delegating each getter from GameApplication to GameSettings. The read-only version must include all get* but no set*. However, we still need to give clients GameSettings which can be modified from within initSettings

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.