Versatile Java game engine with pluggable backends (this was used in Rogue, I think)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gamecore/README.md

88 lines
2.6 KiB

10 years ago
GameCore, a 2D java game engine
===============================
10 years ago
Versatile Java game engine with pluggable backends
10 years ago
10 years ago
This engine aims to be platform and backend independent, clean and simple.
It's a bootstrap for 2D java games.
*(You could probably do 3D in it as well, with the LWJGL backend and LWJGL functions. But it'd be ugly.)*
DEPENDENCIES
------------
If you intend to **build it from source**, you will need those Eclipse projects in your workspace:
- [MightyPork/mightyutils](https://github.com/MightyPork/mightyutils) - Game utils
BACKENDS
--------
Backends provide implementation to some abstract GameCore modules:
- [MightyPork/gamecore-lwjgl](https://github.com/MightyPork/gamecore-lwjgl) - LWJGL backend for GameCore
How to use it
=============
TODO: Better docs and demo
Basically, all you have to do is make an instance of `App`, with a backend of choice (only LWJGL now).
10 years ago
Easy customization with Init Tasks
----------------------------------
10 years ago
10 years ago
You then add some `InitTask`-s to the `App`, maybe some plugins, and `start()` it.
10 years ago
This can be done in the constructor, or somewhere else, that doesn't really matter.
10 years ago
All of the game configuration is done using the init tasks. There is a bunch of init tasks already added, each task has a name and a list of tasks it depends upon. It also has a priority, which affects order (but dependencies must already be loaded).
10 years ago
10 years ago
You can add task to setup working directory, to define config file locations and contents, to set up window size, to load resources and so on.
10 years ago
10 years ago
Driven by Events
----------------
10 years ago
Once init tasks are initialized, the next phase comes. The `MainLoop` will be executed, providing delta timing to the whole game.
10 years ago
This is done via an `EventBus`, the core of the whole engine. Everything is done using Events. Well, almost.
10 years ago
10 years ago
Stuff done with events:
10 years ago
10 years ago
- Delta timing
- Shutdown
- Resource loading
- User input
- Layout change notification
- Anything else you add
10 years ago
The GUI
-------
10 years ago
The `MainLoop` renders something called "main renderable", or UI. What you put there is really up to you, but typically it's a `SreenRegistry` with some `Screen`s in it.
10 years ago
The UI receives timing events, user input events etc, and can react to them.
10 years ago
There is a little **library of UI layouts and components** that can be used, or you may make your own with no big hassle.
10 years ago
Make use of MightyUtils!
------------------------
There is a HUGE amount of cool utils in the MightyUtils library. One of them is even the EventBus itself.
10 years ago
There is a cool **math library** with **dynamic constraints**, the base of the GUI system.
There is even a custom serialization system called **ION**.
10 years ago
**Check it out!**