https://github.com/martonban/bagengine
[POC] A 2D Game Engine in Java and OpenGL
https://github.com/martonban/bagengine
game-engine glfw glsl graphics imgui java joml lwjgl openal opengl
Last synced: about 1 year ago
JSON representation
[POC] A 2D Game Engine in Java and OpenGL
- Host: GitHub
- URL: https://github.com/martonban/bagengine
- Owner: martonban
- Created: 2023-04-02T15:31:09.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-02-16T13:44:57.000Z (about 1 year ago)
- Last Synced: 2025-02-16T14:47:23.930Z (about 1 year ago)
- Topics: game-engine, glfw, glsl, graphics, imgui, java, joml, lwjgl, openal, opengl
- Language: Java
- Homepage:
- Size: 12.8 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Bag Engine
👷🏻♂️ Warning: This project is not yet production-ready. The source code contains many bugs, due the fact this is just a POC.
Bag Engine is a 2D game engine built with Java and OpenGL, utilizing industry-standard libraries such as ImGui, Box2D, and GSON. While the engine is not yet production-ready, you can check the milestones section for a better understanding of its current state.
# Documentation
If you want to understand Bag Engine better please visit the [documentation](https://martonban.notion.site/Bag-Engine-Docs-18a2493db6ef803ca04cc6ab0cf9193d).
# Libraries/Technologies:
- Maven: Build System
- LWJGL: For window handling, graphics and math libraries.
- Box2D: For Physics
- GSON: For serialization/deserialization
- ImGUI: For UI elements
# Functionalities:
## Editor and Runtime
Bag Engine includes an integrated editor that allows users to create and modify their own levels, with a built-in serializer handling the saving process. By pressing the 'Play' button, users can launch a debug mode, which effectively serves as the engine's runtime.

## ECS System
The engine features a classic Entity-Component-System (ECS) architecture. This allows each scene to contain multiple game objects, each composed of various components. These components define and modify the behavior of their respective game objects.

## Physics System
The engine includes a physics system powered by the Box2D library. This enables the creation of dynamic game objects that move based on real-world physics simulations.

## Docking
With the help of the industry-recognized and widely used ImGui library, I am able to provide a highly dynamic user interface. As a result, all GUI elements are fully customizable and can be tailored to the user's specific needs.

## Asset Browser
The engine features an Asset Browser, which allows users to browse through tiles, prefabs, and audio files.
