An open source 2D Java game library





BuildEngine makes programming in Java a lot easier by providing all sorts of utilities and a robust understandable structure. This way you can focus on programming your game, and BuildEngine takes care of the boring stuff. Some features include:

The Stage is yours

Build like a theatre play, naming conventions are intuative. Easely add your own components.


Rendering made easy so you don't have to worry about rotation calculations or your graphics card.


With a simple way to test for and resolve collisions using the SAT method.


Math, Asset loading, animations, sounds, file I/O, inputcapturing, debug and timed events.

Class Architecture

BuildEngine uses an implementation increasingly popular ECS system. However, because BuildEngine is written in java, and some optimization features of ECS don’t apply to java, the engine functions a bit differently from normal ECS systems. You can think of BuildEngine’s naming convention as if the player were attending a theater show. In this theater show, there is a Stage. The theater show (the game) is being presented on this stage, divided into scenes. Each scene has actors who play in the scene, and directors directing the scene; telling the actors what to do. So if you ever get confused by a name in BuildEngine, think back to this example. Now, layed out here is a diagram of the engine’s core structure.


A Build Engine Project

A multiplayer experience of Chess. This project uses BuildEngine's architecture, rendering, asset utility's, sound and collission system.


To get strated, add your preffered build to a new java project in your favorite IDE. See the IDE documentation on how to add a library. Bellow is a quick example of a simple scene to get you started.


  1. Download your prefered version of BuildEngine.
  2. Unpack the Zip file.
  3. Create a new empty Java project in you IDE of choice.
  4. Add the BuildEngine.jar file to your project dependencies, or as a library.
  5. Try writing the code bellow.
  6. Run your program. You should now have a moving character.


If no auto-completion shows up, you probably have not added the BuildEngine jar correctly. Try again by following a tutorial for your IDE. Also make sure you are running the latest Java SDK, otherwise some features may not work as intended.

BuildEngine JAVA

The most stable build. It uses Java's awt rendering pipeline, and has all the basic features and utilities listed above.

BuildEngine GL

The experimental OpenGL branch of BuildEngine. Feel free to experiment, but not all features are suported.

package net.randegast.ticion;

import buildengine.BuildEngine;
import buildengine.engine.Debug;
import buildengine.engine.Display;
import buildengine.engine.stage.director.BasicCharacterController;
import buildengine.engine.stage.scene.Scene;
import buildengine.math.Transform;
import buildengine.utils.AssetManager;

public class Example {

    public static void main(String[] args) {
        // Print a message checking if BuildEngine is working correctly.

        // Create the engine window.
        BuildEngine.create("Example Window", Display.RESOLUTION_720p, false, true);
        // Enable debug mode, showing the FPS and Scene
        Debug.enable(Debug.FPS_AND_STAGE, true, true);

        // Load a custom scene into the current stage.
        BuildEngine.getEngine().getStage().loadScene(new SampleScene());

    // Your custom scene. Scenes are collections of Actors, the objects in your game.
    public static class SampleScene extends Scene {

        // Overwrite constructor to add our own stuff and settings to this scene.
        public SampleScene() {
            // Give your scene a name
            super("Sample Scene");

            // Create an Actor (object) called "Player", give it a Transform (this is its position, and size), and give
            // it a Sprite object. This contains the drawing information. In this case we are adding a single image
            // to the actor. But we can give more parameters to add multiple, or import an Animation object.
            Actor player = new Actor("Sample Player", new Transform(0, 0, 1, 1),
                    new Sprite(AssetManager.getImage("path/to/player/image.png")));

            // Actually add the Player Actor to the scene.
            // Add the BasicCharacterController director. Directors are responsible for functionality in the scene.
            // This is a pre-made director that comes with BuildEngine, and gives the user the ability to move an
            // Actor around the scene.
            addDirector(new BasicCharacterController(player, BasicCharacterController.Mode.WASD));