A work-in-progress game engine in OpenGL.
For a fun gallery of screenshots showing the engine's progress over the years, check out this album.
The engine itself it located under Dogwood/Engine. This project builds static libraries that are included in the Editor and Game projects.
The engine includes a work-in-progress physics engine, adapted from Game Physics Engine Development by Ian Millington. Currently there is support for sphere colliders and box colliders (and collision detection is implemented for sphere-sphere, sphere-box, and box-box collisions). Collision resolution is currently super buggy, but sort of works in very limited situations. See Dogwood/Engine/Include/Physics.
Scenes are represented as XML files. Here's an example scene.
The engine currently supports OBJ models only.
To create a compatible model in Blender, select exactly these export options:
- Apply Modifiers
- Include Normals
- Include UVs
- Triangulate Faces
- Objects as OBJ Objects
To get UVs for the object, open the Object Data section in the right side menu, and add a new UV Map to the UV Maps section.
To get smooth shading, select "Smooth" before export.
The editor is located under Dogwood/Editor. The editor allows you to load a scene file and manipulate it. The editor currently supports GameObject creation, deletion, renaming, and reparenting. It also allows you to edit the transform (position/rotation/scale) of each GameObject.
A sample game is located under Dogwood/Game. Currently it's just a simple scene with some primitive shapes.
For a super rough feature roadmap, TODO list, bug list, and collection of general thoughts/learnings about the project, see TODO.txt