Skip to content

johron/glare

Repository files navigation

Glare icon

  • A modular, cross-platform 3D game engine built in Kotlin using LWJGL and OpenGL

TODO

  • 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

Dependencies and frameworks used

Additional Setup

  • Generate Constants
./gradlew generateConstants

Building

  • Generates glare-editor and glare-engine
./gradlew build

Example Usage

  • 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)
    }
}

License

Licensed under the MIT License; please see the license file for terms.

About

Modular cross-platform game engine built in Kotlin using LWJGL and OpenGL

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published