Skip to content

SypherEngine/SypherEngine

Repository files navigation

A Simple and Lightweight Java Game Engine

GitHub issues GitHub stars GitHub license Discord

SypherEngine is a simple game engine, made using pure Java, designed to be lightweight, fast and easy to use.

Disclaimer

SypherEngine is currently in an alpha stage and is subject to many changes. While it does have basic features, there are many bugs still untracked and the documentation is currently a work in progress... If you wish to help, all help is appreciated!

⛓️ Helpful links ⛓️

🔨 Features 🔨

  • Rendering Framework
  • Basic Event/Input Handling
  • Entity Component System
  • Scenes and Scene Switching
  • Audio Engine
  • Sprite rendering and Animations
  • Logging
  • 2D Camera

💻 Getting SypherEngine 💻

To use SypherEngine, please do make sure that you have the following requirements installed on your device.

  • Java >= 17
  • Maven (Only required for building the project from scratch)

If you do, then include the engine into your project as follows

Gradle

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



	dependencies {
	        implementation 'com.github.SypherEngine:SypherEngine:Tag'
	}

Maven

<repositories>
	<repository>	
		<id>jitpack.io</id>
		<url>https://jitpack.io</url>
	</repository>
</repositories>

<!--In <dependencies>-->
<dependency>
  	<groupId>com.github.SypherEngine</groupId>
  	<artifactId>SypherEngine</artifactId>
  	<version>Tag</version>
</dependency>

The Tag is just the release tag.

From Source

After downloading the source, build the engine, using mvn clean package.

Add it to your project classpath to start developing!

👋 SypherEngine HelloWorld 👋

Here's a small program to get started with SypherEngine...

public class Main extends GameManager {

  //These can be left blank for this simple hello world program
  @Override
  public void init(SypherEngine engine){}
  
  @Override
  public void update(float deltaTime){}

  @Override
  public void render(Renderer renderer){}
  
  @Override
  public void dispose(){}

  public static void main(String[] args){
    SypherEngine.init(new Main(), "Hello, World!"); // Creating a window titled "Hello, World!"
    SypherEngine.run();
  }
}

📇 License and Code of Conduct 📇

This project follows the MIT license, refer LICENSE This project also follows the Contributor Covenant Code of Conduct

🤝 Contributing 🤝

From the smallest change to a bug fix or feature implementation, Contributions are extremely welcome! Refer the Contributing Guidelines for more info, and thank you for your help!

🫂 Support 🫂

This project is still new to the Open Source Community and we hope to make a good difference! If you like this project, consider giving it a star 🌟 to show your support. It helps a ton :)