- A modular, cross-platform 3D game engine built in Kotlin using LWJGL and OpenGL
- Add dependencies to components, so that they can only exist or maybe be run/started with it's requirements
- Undersøk om det er mulig å importere andre jar filer (sikkert mulig), og så har glare-engine egen jar og så ha glare-editor i sin egen som da bruker engine som bibliotek og ikke ha glare-engine inne i glare-editor jar, for å gjøre det bedre?
- Fix coloring of textures
- Make all components constructable without arguments
- Ability to add custom IRenderers to Renderer
- Prefabricated textures, models, shaders, etc
- Java 22
- LWJGL 3.3.3
- OpenGL 4.6
- JOML 1.10.8
- Obj 0.4.0
- ImGui Java 1.86.11
- Generate Constants
./gradlew generateConstants- Generates
glare-editorandglare-engine
./gradlew build
- Example is probably already outdated.
fun main() {
val config = EngineConfig(
title = "Glare GE",
windowWidth = 1280,
windowHeight = 720,
maximized = false,
vSync = false,
fov = 70.0f,
)
Engine(config, TestGame())
}
class TestGame : IScript {
lateinit var engine: Engine
override fun init(root: Node) {
engine= root.engine
val camera = Node.builder {
name = "Freecam"
transform = Transform(Vector3d(0.0, 5.0, 5.0), Euler(0.0, 0.0, -90.0))
parent = root
components = mutableListOf(
CameraComponent(),
ScriptsComponent(mutableListOf(FreecamScript())),
)
}
engine.setCamera(camera)
Node.builder {
name = "Node"
transform = Transform(0.0, 0.0, -5.0)
parent = root
components = mutableListOf(
MeshComponent("/model/cube.obj"),
TextureComponent("texture/map.png"),
MaterialComponent(),
ShaderComponent.Builder()
.vertex("/shader/mesh.vert")
.fragment("/shader/mesh.frag")
.build()
)
}
}
override fun update(delta: Double) {
val node = engine.root.getFirstChild("Node")
node!!.transform.rotation.addYaw(100.0 * delta)
}
}Licensed under the MIT License; please see the license file for terms.