GameComposer is a game authoring tool and also a game runtime environment targeting at desktop and mobile devices.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs/images
examples
gamecomposer
gameengine-androidrenderer
gameengine-apt
gameengine-bytecoderrenderer
gameengine-cordovarenderer
gameengine-dragomerenderer
gameengine-editor
gameengine-fxrenderer
gameengine-gwtrenderer
gameengine-jbox2d
gameengine-lua
gameengine-teavmcommon
gameengine-teavmrenderer
gameengine-tools
gameengine-wasmrenderer
gameengine
.gitignore
.travis.yml
README.md
pom.xml

README.md

GameComposer

GameComposer is a game authoring tool and also a game runtime environment targeting at desktop and mobile devices.

Started as a JavaFX implementation some years ago, it now supports desktop and mobile devices, with support for modern technologies such as HTML5, WebGL, Apache Cordova/Crosswalk and Electron.

Its core is based on Domain-driven Design and a hexagonal architecture. The main game simulation logic stayed the same for years, but replacing presentation logic and adapting it to new technologies is a lot easier compared to traditional layered applications.

To see it in action please visit this page

Current travis-ci build status: Build Status Gitter

GameEngine-Editor

This is the shiny new Web-enabled editor for the GameEngine. It is based on HTML5, Polymer/Webcomponents, Electron and TeaVM.

Webeditor in Action

Edit Dukes Adventure Example Game

Webeditor editing an Event Sheet

Webeditor editing a LUA script

The Electron Releases are available for download at the GitHub Releases section.

Webeditor in Electron

Example Games

TeaVM Renderer:

Bouncing block

Camera with Clock

Gravity and Mouse

Duke on the Platform

Position test

Rotating actor

Networking

Arcade Racer

GWT Renderer:

Bouncing block

Camera with Clock

Gravity and Mouse

Duke on the Platform

Position test

Rotating actor

Arcade Racer

Dragome Renderer:

Bouncing block

Camera with Clock

Gravity and Mouse

Duke on the Platform

Position test

Rotating actor

Arcade Racer

GameEngine

GameEngine is the cross-platform game engine.

Core concepts and components of the game engine are:

Concept / component Description
Game A Game is the top level container. Each Game is split into several GameScenes.
GameScene A Scene is like a level of a game. A Scene has a collection of GameObjects, Assets and Events.
GameSystem A GameSystem defines a subsystem of the game engine. There are GameSystems for physics, sounds and other stuff
GameView A GameView is the presentation of a GameScene to some kind of consumer. This can be a screen renderer or even a remote consumer.
GameObject A GameObject is a template for visible objects. The behavior of a GameObject is defined by GameComponentTemplates
BehaviorTemplate A BehaviorTemplate defines some kind of behavior, e.g. if it is static, a sprite or driven by physics.
GameObjectInstance A GameObjectInstance is an instance of a GameObject. It inherits the defined BehaviorTemplates by copying them into a Behavior
Behavior A Behavior is the behavior status for a BehaviorTemplate and a GameObjectInstance.
Event An Event can be triggered by a consumer by sending it via the GameView to the engine. An Event can also be triggered or consumed by a GameComponent or GameSystem.
EventSheet An EventSheet is the rule engine. Each rule has a condition and some actions.
GameLoop The GameLoop drives the engine by calling the GameSystems, rendering the GameView and dispatching events.
GameProcess A GameProcess is something that takes multiple GameLoop cycles to complete, for instance playing background music or playing an animation.

GameEngine-Networking

Networking support is implemented as a RemoteGameView. Local events are sent between game instances to sync the distributed game models.

Networking is implemented in a very early beta state only by the TeaVM Renderer. Events are sent to a Firebase instance, which then syncs the events back to other browsers bound to the same Firebase instance. Take a look at the Networking example to see it in action. In this case, Firebase acts as a non-authorative game server. The game models and simulation is still run in the local browser. Only the game state is synchronized using events.

GameEngine-TeaVMRenderer (preferred)

This is the game presentation logic using the TeaVM Java-to-JavaScript Transpiler Framework. It will render the game view using pixi.js, which uses WebGL or the HTML5 Canvas API as a fallback. Sound is done using howler.js

GameEngine-WebAssemblyRenderer (experimental)

This is a first implementation of a WebAssembly based GameRenderer. Under the hood it uses the TeaVM WebAssembly compile target.

Please note that this is experimental stage!

Example games(probably not working):

Gravity and Mouse

Duke on the Platform

GameEngine-CordovaRenderer (experimental)

This is basically the TeaVMRenderer packaged as a Cordova Application backed by Crosswalk(Chromium).

A game running in Android Emulator

GameEngine-FXRenderer (outdated)

This is the game presentation logic by implementing a GameView using JavaFX 2. This also includes a Soundsystem implementation based on Java Sound API.

GameEngine-AndroidRenderer (outdated)

This is the game presentation logic using the Android Java SDK. This also includes a SoundSystem implementation for Android devices. We use an Android SurfaceView for rendering. Future versions will include OpenGL ES support.

GameEngine-GWTRenderer (outdated)

This is the game presentation logic using GWT and HTML5(JavaScript) by implementing a GameView. This also includes a SoundSystem implementation based on HTML5 Media API. Currently the HTML5 renderer tries to use WebGL. If WebGL is not available, it will fallback to the HTML5 Canvas API.

GameEngine-DragomeRenderer (experimental)

This is the game presentation logic using the Dragome Java-to-JavaScript Transpiler Framework. It will render the game view using the HTML5 Canvas API.

GameComposer (outdated)

GameComposer is the authoring tool, the IDE. It is a JavaFX2 application. Using this tool, games can be designed and tested. Finally, they can be exported to a target runtime, e.g. HTML5.

JavaFX IDE