Asteroids built on a handmade engine for learning.
Go to file
Doyle Thai 17dc6cc6fc Fix degenerate tris showing up in certain configs
Occasionally with the right orientation, degenerate triangles will appear as
they are no longer zero-area triangles which OGL can cull during rendering. The
issue comes from having to manually ensure each primitive in the rendering
pipeline sent to the render groups were correctly marked with degenerate
vertexes.

Instead, we can now just pass the vertex points straight through, using
a begin() and end() structure which will append the start and ending degenerate
vertexes for us.
2016-11-17 21:03:55 +11:00
data Add arbitrary asteroid polygon rendering 2016-11-17 00:50:49 +11:00
extern Basic audio with stb_vorbis decoding and openal 2016-07-25 22:10:50 +10:00
src Fix degenerate tris showing up in certain configs 2016-11-17 21:03:55 +11:00
.gitattributes Initialise repo 2016-06-03 15:07:40 +10:00
.gitignore Basic audio with stb_vorbis decoding and openal 2016-07-25 22:10:50 +10:00
Dengine.sln Initialise repo 2016-06-03 15:07:40 +10:00
Dengine.vcxproj Simplify shaders, enable coloring of primitives 2016-11-12 01:17:30 +11:00
Dengine.vcxproj.filters Simplify shaders, enable coloring of primitives 2016-11-12 01:17:30 +11:00
README.md Update readme to include features of engine 2016-09-24 15:11:34 +10:00

Dengine

Dengine is a 2d game engine developed with OpenGL and low-level libraries in C. The main goal of Dengine is to facilitate learning from many aspects of Computer Science. Alongside Dengine a game is being built which guides the development of features for the game. Dengine is inspired by Handmade Hero, with a focus on developing as many features with minimal libraries, such that it is not too time-consuming and counter-productive to do so.

Milestones

Milestones/features/capabilities that have been added to the engine.

"Handmade" API

  • Custom Standard Library: (improved as is required) (e.g. strlen, atoi, itoa)
  • Custom Math Library: (improved as is required)
  • Custom String Library
  • Custom Memory Allocator: alloc memory from preallocated blocks
  • Custom XML Parser: for reading game data config

Rendering

  • Animation playback: from spritesheets
  • Batched rendering: minimise draw calls grouped on texture & color modulation
  • Generate on runtime bitmap font sheet from font file
  • Rendering sprites: through GLEW and GLFW to OpenGL programmable pipeline
  • Rendering rects and text

Other

  • Audio API: through OpenAL and STB Vorbis for audio functionality
  • Audio streaming
  • Asset loading system using hashtables
  • Collision using AABB
  • Debug services/display
  • Input parsing, delayed, raw read
  • IMGUI style GUI: Buttons, textfields, scroll bars
  • Moveable windows
  • Primitive entity system
  • Primitive battle system

Building

Dengine is currently being developed using Visual Studio 2015. You can build the project by executing the (preferred) build.bat in the src folder, or simply opening the project in Visual Studio and compiling.

Additionally, an OpenAL-Soft DLL is required which can be downloaded from the Window pre-built binaries of OpenAL here.

NOTE: Assets are not included in the repository.

Dependencies

  • GLEW: Cross platform OpenGL wrapper.
  • GLFW: Cross platform OpenGL Application creation.
  • STB: Single file utility libraries by Sean Barrett.
  • OpenAL-Soft: Software implementation of the OpenAL 3D audio API.