Advertisement

Modern game engine written in C

Started by June 02, 2019 06:15 PM
9 comments, last by deitty 5 years, 3 months ago

Hello! For almost two years I'm working on new game engine written fully in C (C99 to be precise). My goal was to write an engine with as much less dependecies as I could so it can be easily built and ready to use. Also it does not require you to build it separately - just add two files to your project. Now I think its the time to show it to everyone - it has no fancy name - it called just Dmitry's Engine - https://github.com/mrDIMAS/DmitrysEngine

It has following features (shameless copy-paste from github page)

  • Single compilation unit - no need to build as separate library: just add de_main.h and de_main.c to your project.
  • C99 with full compatibility with C++.
  • FBX support - both ASCII and binary
  • Scene graph with these nodes:
    • Base (pivot)
    • Mesh
    • Light
    • Camera
    • Particle system
  • Automatic assets (resources) management
    • Textures
    • Models
    • Sound buffers
  • Modern rendering techniques, renderer based on OpenGL 3.3 Core.
    • Deferred shading
    • Normal mapping
    • Skeletal animation
    • Instancing
    • Particle systems (very simple for now)
  • Sound
    • 2D + 3D
    • WAV format support
    • Streaming for large sounds
  • TTF fonts support (compound characters support is not implemented yet)
  • Advanced GUI (inspired by WPF) with declarative UI creation using designated initializers with these widgets:
    • Window
    • Text box
    • Text block
    • Border
    • Button
    • Scroll bar
    • Scroll viewer
    • Scroll content presenter
    • Canvas
    • Grid
    • Slide selector
    • Image
    • Check box
  • Path finding (classic A* algorithm)
  • TGA image loading
  • Ray casting
  • Position-based physics
  • Built-in save/load functionality via object visitor - state of engine can be saved/loaded just in a single call.
  • Documentation - almost every function of the engine has description in Doxygen format.
  • Extremely fast compilation, thus very low iteration times - feature can be tested very fast.
  • Easy to hack and modify

Currently the engine lacking tutorials and standalone examples, but there is a relatively big example - the game (https://github.com/mrDIMAS/Shooter) I'm writing using the engine - it can be used as good source of code examples.

 

sounds great. looking forward to use it in my ne game

 

Advertisement

Nice to see someone that dosen't just glued some thrid-party libs together and called that an engine

5 hours ago, Shaarigan said:

Nice to see someone that dosen't just glued some thrid-party libs together and called that an engine

I'm mining silicon right now. Man are you gonna be impressed!

🙂🙂🙂🙂🙂<←The tone posse, ready for action.

Nice work!

Wow, that's impressive.

For FBX support, are you using the Autodesk FBX SDK?

Advertisement
On 6/26/2019 at 8:07 AM, Endemoniada said:

For FBX support, are you using the Autodesk FBX SDK?

No, I have custom loader. Engine have only one dependency - miniz_tinfl - to decompress fbx arrays, everything else written from scratch.

Also here is small report of what was added/improved/fixed.

  • Added spot and omnidirectional shadows
  • Added frustum culling
  • Improved font rendering
  • Fixed bugs in serialization of scene nodes
  • Fixed mistakes/inconsistencies in docs
  • Const-correctness was improved
  • Fixed sound loading bug
  • Improved resources management

Development goes relatively slow because I have fulltime job :)

Another small report of what was made since last post:

  • Added play-once sounds with auto-lifetime
  • Added stack panel to GUI
  • Fixed various bugs with renderer
  • Improved sound API
  • Added GJK-EPA collision solver - probably the most important feature for physics - it allows to solve collisions between any convex shapes (sphere, capsule, triangle, cone, cylinder, point cloud, etc.). But engine still lacks support of these shapes from the API side - this is work-in-progress and should be done soon.
  • Bug fixes.

You sir, are completely insane ! lmao

I mean writting in C is so unneccessarily hard already (as the C++ overhead is pretty small), and making so many features this really is a weird fetish; but have fun :P

As someone who also writes an engine I can feel so much pain only from the grind of making the GUI widgets.

Swore I'd only do it again if it's absolutely neccessary (which it kinda was in my case)

 

This topic is closed to new replies.

Advertisement