Orbital a java 2D game engine

Overview

Orbital

Orbital is a under-development 2D game engine.

Installation

Orbital is avaliable on Jitpack. See below for the installation:

Gradle

allprojects {
	repositories {
		maven { url 'https://jitpack.io' }
	}
}

dependencies {
    implementation 'uk.co.electronstudio.jaylib:jaylib:4.0.+'
    implementation 'uk.co.electronstudio.jaylib:jaylib-natives-windows-x86_64:4.0.+'
    implementation 'uk.co.electronstudio.jaylib:jaylib-natives-macosx-x86_64:4.0.+'
    implementation 'uk.co.electronstudio.jaylib:jaylib-natives-linux-x86_64:4.0.+'
    implementation 'com.github.OrbitalEngine:Orbital:v.0.1'
}

Maven

<repositories>
	<repository>
		   <id>jitpack.ioid>
		   <url>https://jitpack.iourl>
	repository>
repositories>


<dependency>
    <groupId>com.github.OrbitalEnginegroupId>
    <artifactId>OrbitalartifactId>
    <version>v.0.1version>
dependency>

Contributing

Orbital is in its very early stages currently, and all contributions are more than welcome! However, before creating a pull request, first consider opening an issue on the matter, so that the rest of the community can discuss it.

Community

You can find us on Discord at https://discord.gg/khDKxYX9RM

Comments
  • [FEATURE] Move `.getRaylibColor()` function to `RaylibUtil` class

    [FEATURE] Move `.getRaylibColor()` function to `RaylibUtil` class

    Is your feature request related to a problem? Please describe. Currently, the .getRaylibColor() function is on the Color object itself, instead of in the RaylibUtil class, which is meant for converting between Raylib and Orbital classes.

    Describe the solution you'd like Move the .getRaylibColor() function to the appropriate class, and update all uses of it.

    enhancement good first issue hacktoberfest 
    opened by YeffyCodeGit 5
  • Fix failing unit test

    Fix failing unit test

    The following test was failing: https://github.com/OrbitalEngine/Orbital/blob/eb25bda2dfa3d1cb7bcb3a4f9c15471b125ba701/src/test/java/dev/yeff/orbital/tests/ecs/GameObjectTests.java#L61

    I noticed the testCreateGameObject_withShape_usingBuilder() test failed because in the RenderShapeComponent class the type of color is an Optional. So, when the assert checked if the Color.RED was there, it didn't find it. To fix it, the Color.RED is transformed in an Optional.

    opened by 1anakin20 1
  • [FEATURE] Color constructor with floats should have range 0 to 1

    [FEATURE] Color constructor with floats should have range 0 to 1

    Is your feature request related to a problem? Please describe. Usually when floats are used to represent colors, the color value ranges from 0 to 1, not 0 to 255.

    Describe the solution you'd like The color constructor which takes floats should assume the floats range from 0 to 1. To convert from these floats to the 0 to 255 byte values, simply multiply the float components by 255.9999 and then cast.

    opened by nt314p 1
  • Test sprite loading

    Test sprite loading

    In the unit tests for the component system, the test which tests building a game object with a sprite fails is ignored because of a JVM crash.

    Unit test: https://github.com/OrbitalEngine/Orbital/blob/master/src/test/java/dev/yeff/orbital/tests/ecs/GameObjectTests.java#L108

    bug help wanted hacktoberfest 
    opened by YeffyCodeGit 1
  • Add documentation

    Add documentation

    For any game engine, having sufficient documentation is a must, so that users can use the engine with ease. Currently, none of the engine is documented, so we should probably...uh...fix that.

    opened by YeffyCodeGit 1
  • [FEATURE] Spotless integration

    [FEATURE] Spotless integration

    Is your feature request related to a problem? Please describe. Keeping formatting consistent and clean looking code is difficult to keep consistently throughout the codebase.

    Describe the solution you'd like Integrate the Spotless tool into the project with Gradle.

    Describe alternatives you've considered N/A

    opened by YeffyCodeGit 0
  • Make resource manager get resources from project resources dir

    Make resource manager get resources from project resources dir

    Currently, the full path of the resource needs to be passed to the resource manager to load it. The resource manager should automatically create paths from the resource directory of the project.

    opened by YeffyCodeGit 0
  • Implement GameObject class to let user simplify game code

    Implement GameObject class to let user simplify game code

    At the moment, Orbital has a lot of features, but no way to divide logic up. The introduction of a GameObject class would help in this. For now, it should have the following features:

    • [x] Let user create custom GO's
    • [x] Write logic for the objects using components
    • [x] Let game objects be created, add and remove components and dispose game objects
    opened by YeffyCodeGit 0
  • Sound system

    Sound system

    Raylib makes it very easy to deal with sound, and since sound is a very important part of games, this should be implemented soon.

    Features of a sound system:

    • [x] Loading sound files and disposing them
    • [x] Playing and pausing sound
    • [x] Controlling sound volume
    • [x] Play audio in a loop
    opened by YeffyCodeGit 0
  • Add unit tests

    Add unit tests

    Currently, literally, the entire library is untested, and that is a problem. TDD till death. I would rather die than write unit tests, but TDD till death.

    opened by YeffyCodeGit 0
  • [FEATURE] Implement Google Code Format in Spotless

    [FEATURE] Implement Google Code Format in Spotless

    Is your feature request related to a problem? Please describe. Even though we have the Spotless code formatter implemented, we still aren't actually using a code format throughout the project.

    Describe the solution you'd like Use the Google Java Format in Spotless and set it up properly.

    Describe alternatives you've considered After looking through the Google Java Format, I like it, but if anyone thinks there are any other formats that suit better to the style of this project, feel free to discuss in this issue!

    good first issue help wanted hacktoberfest 
    opened by YeffyCodeGit 1
  • Remove user dependency on Jaylib

    Remove user dependency on Jaylib

    Currently, to work with Orbital properly, you need to add the Jaylib dependencies separately and use Jaylib specific classes. This can be solved by implementing wrapper classes around all Jaylib classes, so the need for the users to add Jaylib is eliminated.

    bug help wanted question hacktoberfest 
    opened by YeffyCodeGit 2
Releases(v1.5.4)
  • v1.5.4(Aug 28, 2022)

    What's Changed

    • make colors a class and refactor by @YeffyCodeGit in https://github.com/OrbitalEngine/Orbital/pull/16
    • add color gradients
    • fix bugs and refactor

    Full Changelog: https://github.com/OrbitalEngine/Orbital/compare/v1.4.3...v1.5.4

    Install

    Gradle:

    allprojects {
        repositories {
            maven { url 'https://jitpack.io' }
            maven {  url "https://dl.cloudsmith.io/public/electron-studio/jaylib/maven/" }
        }
    }
    
    dependencies {
        implementation 'uk.co.electronstudio.jaylib:jaylib:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-windows-x86_64:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-macosx-x86_64:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-linux-x86_64:4.0.+'
        implementation 'com.github.OrbitalEngine:Orbital:1.5.4'
    }
    

    Maven:

    <repositories>
            <repository>
                <id>electron-studio-jaylib</id>
                <url>https://dl.cloudsmith.io/public/electron-studio/jaylib/maven/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
    
                     <repository>
    		    <id>jitpack.io</id>
    		    <url>https://jitpack.io</url>
    		</repository>
    </repositories>
    
    <dependencies>
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-windows-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-macosx-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-linux-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
         <dependency>
    	    <groupId>com.github.OrbitalEngine</groupId>
    	    <artifactId>Orbital</artifactId>
    	    <version>1.5.4</version>
    	</dependency>
    </dependencies>
    
    Source code(tar.gz)
    Source code(zip)
    Orbital.jar(43.87 KB)
  • v1.4.3(Jun 21, 2022)

    Changelog

    • Added collision components and collision checking
    • Added functions to get and set system clipboard contents
    • Update documentation on a few things

    Full Changelog: https://github.com/OrbitalEngine/Orbital/compare/v1.3.3...v1.4.3

    Install

    Gradle:

    allprojects {
        repositories {
            maven { url 'https://jitpack.io' }
            maven {  url "https://dl.cloudsmith.io/public/electron-studio/jaylib/maven/" }
        }
    }
    
    dependencies {
        implementation 'uk.co.electronstudio.jaylib:jaylib:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-windows-x86_64:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-macosx-x86_64:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-linux-x86_64:4.0.+'
        implementation 'com.github.OrbitalEngine:Orbital:1.4.3'
    }
    

    Maven:

    <repositories>
            <repository>
                <id>electron-studio-jaylib</id>
                <url>https://dl.cloudsmith.io/public/electron-studio/jaylib/maven/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
    
                     <repository>
    		    <id>jitpack.io</id>
    		    <url>https://jitpack.io</url>
    		</repository>
    </repositories>
    
    <dependencies>
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-windows-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-macosx-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-linux-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
         <dependency>
    	    <groupId>com.github.OrbitalEngine</groupId>
    	    <artifactId>Orbital</artifactId>
    	    <version>1.4.3</version>
    	</dependency>
    </dependencies>
    
    Source code(tar.gz)
    Source code(zip)
    Orbital.jar(41.76 KB)
  • v1.3.3(Apr 15, 2022)

    Changelog

    • Component pattern
    • Builder for GameObjects
    • Components to control rendering and position
    • Ability to create custom components

    Full Changelog: https://github.com/OrbitalEngine/Orbital/compare/v0.2.2...v1.3.3

    Install

    Gradle:

    allprojects {
        repositories {
            maven { url 'https://jitpack.io' }
            maven {  url "https://dl.cloudsmith.io/public/electron-studio/jaylib/maven/" }
        }
    }
    
    dependencies {
        implementation 'uk.co.electronstudio.jaylib:jaylib:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-windows-x86_64:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-macosx-x86_64:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-linux-x86_64:4.0.+'
        implementation 'com.github.OrbitalEngine:Orbital:1.3.3'
    }
    

    Maven:

    <repositories>
            <repository>
                <id>electron-studio-jaylib</id>
                <url>https://dl.cloudsmith.io/public/electron-studio/jaylib/maven/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
    
                     <repository>
    		    <id>jitpack.io</id>
    		    <url>https://jitpack.io</url>
    		</repository>
        </repositories>
    
    <dependencies>
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-windows-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-macosx-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-linux-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
         <dependency>
    	    <groupId>com.github.OrbitalEngine</groupId>
    	    <artifactId>Orbital</artifactId>
    	    <version>1.3.3</version>
    	</dependency>
        </dependencies>
    
    Source code(tar.gz)
    Source code(zip)
    Orbital.jar(37.17 KB)
  • v0.2.2(Apr 2, 2022)

    Changelog

    • Text rendering
    • Load fonts and use them to render text
    • Play small audio clips and large music files
    • Add math functions
    • Add unit tests for math
    • Make resource manager use project resource directory

    Full Changelog: https://github.com/OrbitalEngine/Orbital/compare/v.0.1...v0.2.2

    Install

    Gradle:

    allprojects {
        repositories {
            maven { url 'https://jitpack.io' }
            maven {  url "https://dl.cloudsmith.io/public/electron-studio/jaylib/maven/" }
        }
    }
    
    dependencies {
        implementation 'uk.co.electronstudio.jaylib:jaylib:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-windows-x86_64:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-macosx-x86_64:4.0.+'
        implementation 'uk.co.electronstudio.jaylib:jaylib-natives-linux-x86_64:4.0.+'
        implementation 'com.github.OrbitalEngine:Orbital:0.2.2'
    }
    

    Maven:

        <repositories>
            <repository>
                <id>electron-studio-jaylib</id>
                <url>https://dl.cloudsmith.io/public/electron-studio/jaylib/maven/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
    
                     <repository>
    		    <id>jitpack.io</id>
    		    <url>https://jitpack.io</url>
    		</repository>
        </repositories>
    
    <dependencies>
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-windows-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-macosx-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
    
            <dependency>
                <groupId>uk.co.electronstudio.jaylib</groupId>
                <artifactId>jaylib-natives-linux-x86_64</artifactId>
                <version>3.7.0</version>
            </dependency>
    
         <dependency>
    	    <groupId>com.github.OrbitalEngine</groupId>
    	    <artifactId>Orbital</artifactId>
    	    <version>0.2.2</version>
    	</dependency>
        </dependencies>
    Source code(tar.gz)
    Source code(zip)
    Orbital.jar(4.34 MB)
  • v.0.1(Mar 17, 2022)

    This release marks the first usable version of Orbital. At the current state, the engine supports the following features:

    • Shape renderer
    • Texture renderer
    • Input system
    • Colors
    • Scene system

    Installing

    Gradle:

    allprojects {
    	repositories {
    		maven { url 'https://jitpack.io' }
    	}
    }
    
    implementation 'com.github.OrbitalEngine:Orbital:v.0.1'
    

    Maven:

    <repositories>
    	<repository>
    		   <id>jitpack.io</id>
    		   <url>https://jitpack.io</url>
    	</repository>
    </repositories>
    
    <dependency>
    	    <groupId>com.github.OrbitalEngine</groupId>
    	    <artifactId>Orbital</artifactId>
    	    <version>v.0.1</version>
    </dependency>
    
    Source code(tar.gz)
    Source code(zip)
    Orbital.jar(14.53 KB)
Owner
null
A simple puzzle game made with Unity to practice the game engine

A simple puzzle game made with Unity to practice the game engine.

Eyüb Salih Özdemir 1 Mar 30, 2022
A Java Game Engine created in Java with LWJGL!

?? Suffler Engine Suffler Game Engine is an engine created in java using OpenGL to Graphics. Currently being developed at Eclipse, and Visual Studio C

Suffler Engine 2 Jul 23, 2022
Java / JavaFX / Kotlin Game Library (Engine)

About JavaFX Game Development Framework Why FXGL? No installation or setup required "Out of the box": Java 8-15, Win/Mac/Linux/Android 8+/iOS 11.0+/We

Almas Baimagambetov 3k Jan 2, 2023
A Java Swing based game engine

faypixelengine A Java Swing based game engine What is it? A Java game engine that uses swing and can be used to develop interactive games. The idea fo

null 9 Aug 26, 2022
LITIENGINE is a free and open source Java 2D Game Engine

LITIENGINE is a free and open source Java 2D Game Engine. It provides a comprehensive Java library and a dedicated map editor to create tile-based 2D games.

Gurkenlabs 572 Jan 7, 2023
BattleShip-Game - This repository contains the code of the BattleShip (Bataille Navale) game programmed in Java.

Bataille Navale Auteur : SABIL Mohamed Amine Comment générer la documentation ? Placez vous dans le sous-dossier src : pour générer la documentation d

Mohamed Amine SABIL 1 Jan 4, 2022
Snake-Game - A simple snake game written in java.

What's this? A simple snake game written in java. How to play Download the latest release. Ensure that a compatible java runtime is installed (optimal

Patrick260 4 Oct 31, 2022
Othello PvP (2-Player) Game Application created in Java using Swing and AWT, for playing the Othello game

Othello PvP (2-Player) Game Application created in Java using Swing and AWT, for playing the Othello game, a simple game that played on an 8 by 8 checkered board with 64 double-sided black and white discs. The game is easy to learn, but it takes time to master and develop winning strategies.

Soumyadeep Pal 1 Feb 28, 2022
The game is a 2D side scrolling system, where a player moves left, right, vertically or diagonally to traverse the game.

The game is a 2D side scrolling system, where a player moves left, right, vertically or diagonally to traverse the game.

Ravi Mandal 7 Sep 11, 2022
A basic representation of the 0-player game, "Game-of-Life", a simple example of basic cellular automata

Game-Of-Life-Basic A basic representation of the 0-player game, "Game-of-Life", a simple example of basic cellular automata. A cellular automaton is a

Nikhil Narayanan 5 Oct 27, 2022
A 2d Java physics engine, native java port of the C++ physics engines Box2D and LiquidFun

jbox2d Please see the project's BountySource page to vote on issues that matter to you. Commenting/voting on issues helps me prioritize the small amou

jbox2d 1k Dec 27, 2022
Golden Axe (1989) game implemented in java using only standard libraries (Java 2D, Swing, AWT & Java Sound API)

Golden Axe (1989) game implemented in java using only standard libraries (Java 2D, Swing, AWT & Java Sound API), so no external libraries required. Video: https://youtu.be/uevIVLNhQqs

Leo 101 Jul 21, 2022
It is a simple java terminal game. I built it in order to practice my code skills that I obtained while I was learning Java.

Java-terminal-game It is a simple java terminal game. I built it in order to practice my code skills that I obtained while I was learning Java. The ga

Baistan Tashkulov 0 Jan 20, 2022
A modern engine for modded Minecraft.

Flywheel A modern engine for modded Minecraft. About The goal of this project is to provide tools for mod developers so they no longer have to worry a

null 136 Dec 30, 2022
Minecraft mod running on the TTCp engine to load modules written in JS at runtime - with runtime deobfuscation!

PolyFire ClickGUI opens with NUMROW_0 How to use: Run -jsmodules to initialize Navigate to your .minecraft folder Go to config/pf/modules/ Copy Exampl

Daniel H. 8 Nov 18, 2022
Blaze4D - Minecraft but with Vulkan using the Rosella engine.

Information Blaze4D is a Fabric mod that changes Minecraft's rendering engine to use the Vulkan Graphics Library, it is currently in Early Development

Kiln Graphics 257 Dec 30, 2022
HackLights - Simple framebuffer based lighting engine for libGDX

HackLights Simple framebuffer based lighting engine for libGDX. Example See: Sample Code Sample Light Images: Installation Open or create gradle.prope

Ali Asif Khan 13 Dec 5, 2022
Desktop/Android/HTML5/iOS Java game development framework

Cross-platform Game Development Framework libGDX is a cross-platform Java game development framework based on OpenGL (ES) that works on Windows, Linux

libgdx 20.9k Jan 1, 2023
A complete 3D game development suite written purely in Java.

jMonkeyEngine jMonkeyEngine is a 3-D game engine for adventurous Java developers. It’s open-source, cross-platform, and cutting-edge. 3.2.4 is the lat

jMonkeyEngine 3.3k Dec 31, 2022