All Projects → mrDIMAS → Dmitrysengine

mrDIMAS / Dmitrysengine

Licence: mit
[abandoned] C99 cross-platform 3D game engine with absolute minimum of external dependencies

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Dmitrysengine

Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (+72.27%)
Mutual labels:  game-development, game-engine, engine, 3d-game-engine
Etengine
Realtime 3D Game-Engine with a focus on space sim. Written in C++ 14
Stars: ✭ 408 (+242.86%)
Mutual labels:  game-development, game-engine, 3d-game-engine
Evennia
Python MUD/MUX/MUSH/MU* development system
Stars: ✭ 1,309 (+1000%)
Mutual labels:  game-development, game-engine, engine
Xray 16
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. Join OpenXRay! ;)
Stars: ✭ 1,806 (+1417.65%)
Mutual labels:  game-engine, engine, 3d-game-engine
Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (+133.61%)
Mutual labels:  game-development, game-engine, 3d-game-engine
Obengine
2D Game Engine with Lua Scripting made on top of SFML !
Stars: ✭ 335 (+181.51%)
Mutual labels:  game-development, game-engine, engine
Roygbiv
A 3D engine for the Web
Stars: ✭ 499 (+319.33%)
Mutual labels:  game-development, game-engine, 3d-game-engine
Sucle
Common Lisp Voxel Game Engine
Stars: ✭ 239 (+100.84%)
Mutual labels:  game-development, game-engine, engine
Ursina
A game engine powered by python and panda3d.
Stars: ✭ 730 (+513.45%)
Mutual labels:  game-development, game-engine, 3d-game-engine
Coffee
An opinionated 2D game engine for Rust
Stars: ✭ 771 (+547.9%)
Mutual labels:  game-development, game-engine, engine
Yage
Simple game engine, written in C++
Stars: ✭ 7 (-94.12%)
Mutual labels:  game-development, game-engine, engine
Ggez
Rust library to create a Good Game Easily
Stars: ✭ 3,120 (+2521.85%)
Mutual labels:  game-development, game-engine, engine
3D-Engine-OpenGL-4
3D Graphics Engine For Games | C++ OpenGL 4.1
Stars: ✭ 19 (-84.03%)
Mutual labels:  game-engine, engine, 3d-game-engine
Rtm
Realtime Math
Stars: ✭ 373 (+213.45%)
Mutual labels:  game-development, game-engine, math
Octopuskit
2D ECS game engine in 100% Swift + SwiftUI for iOS, macOS, tvOS
Stars: ✭ 246 (+106.72%)
Mutual labels:  game-development, game-engine, engine
Kengine
Entity-Component-System (ECS) with a focus on ease-of-use, runtime extensibility and compile-time type safety and clarity.
Stars: ✭ 417 (+250.42%)
Mutual labels:  game-development, game-engine, engine
Soloud
Free, easy, portable audio engine for games
Stars: ✭ 1,048 (+780.67%)
Mutual labels:  game-development, engine, sound
Lumixengine
3D C++ Game Engine - yet another open source game engine
Stars: ✭ 2,604 (+2088.24%)
Mutual labels:  game-development, game-engine, 3d-game-engine
Awesome Haxe Gamedev
Resources for game development on haxe
Stars: ✭ 213 (+78.99%)
Mutual labels:  game-development, game-engine, engine
Handmade Math
A simple math library for games and computer graphics. Compatible with both C and C++.
Stars: ✭ 517 (+334.45%)
Mutual labels:  game-development, game-engine, math

Dmitry's Engine

Experimental C99 cross-platform single-compilation-unit (SCU) 3D game engine with absolute minimum of external dependencies.

Please note, that this engine is at early development stage and some features maybe very brittle.

Projects on this engine

  • Shooter - 3d shooter game that I writing using this engine.

Tutorials

  • Can be found in tutorials folder. Why there is only few tutorials? Because API of engine is not stabilized yet.

Features

  • 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
    • Shadows
    • Instancing
    • Frustum culling
    • 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
    • Stack panel
    • Slide selector
    • Image
    • Check box
  • Path finding (classic A* algorithm)
  • TGA image loading
  • Ray casting
  • Position-based physics (GJK-EPA based)
  • 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

Screenshots

Why

Why

Why

Why

Planned features

  • Renderer improvements
    • Materials (probably PBR)
    • Performance optimizations
    • Levels of details (LODs)
    • Instancing optimizations (batching, etc.)
  • GUI improvements
    • Styles
    • More widgets
  • Async resource loading
  • Stability
  • Support more 3D formats (obj, 3ds, etc)
  • Compound character support in fonts.
  • Terrain
  • Editor

Dependencies

  • miniz_tinfl - to decompress FBX compressed data.

Code statistics

  • ~22500 significant lines of code
  • Pure C99

Supported compilers

Compiling as C

If compiling as C, you will need C99-compatible compiler:

  • Windows: Visual Studio 2013 or higher, mingw 4.8.1 or higher
  • Linux: GCC 4.5 or higher

If you using lower version of Visual Studio, then you should compile engine as C++, because lower versions supports only C89.

Compiling as C++

If compling as C++, you will need C++98 or higher compiler.

How to build?

Windows

Required packages: None.

Options for linker: opengl32.lib; dsound.lib; gdi32.lib; dxguid.lib; winmm.lib

Linux

Required packages: libx11-dev, mesa-common-dev, libgl1-mesa-dev, libxrandr-dev.

Options for linker: -lGL -lpthread -lasound -lX11 -lXrandr

Why C?

  • Very fast compilation compared to C++
  • Very simple - what you have is just plain memory and procedures that operates on it.
  • Strict ABI
  • Small but enough number of features - nothing distracts you from your actual goal.
  • Why not one of those other fancy languages? Let Benjamin Franklin says for me: "He who sacrifices freedom for security deserves neither."

And of course:

Why

Why engine called in that way?

At very beginning engine was called Dark Engine, but then I found that there is already one engine with that name (Thief game series using it). Then I started to looking at some fancy adjectives that could fit into de prefix that I was already using for my functions, and I haven't found anything suitable. And then I said - "fuck it, let it be like Dmitry's Engine, I'm too tired of fancy names".

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].