Giter Site home page Giter Site logo

kredegc / mahakam Goto Github PK

View Code? Open in Web Editor NEW
1.0 0.0 0.0 724.27 MB

A game engine built in C++ with OpenGL

License: MIT License

C 5.10% C++ 85.04% GLSL 7.30% Batchfile 0.04% Lua 1.90% Shell 0.06% ShaderLab 0.56%
cpp gamedev gameengine glsl imgui opengl steam-audio game-engine

mahakam's Introduction

Mahakam

Mahakam

Windows supported Linux supported MacOS not supported Android not supported IOS not supported

A somewhat functional game engine with suppport for rendering and sound (currently). More functionality will be added as I find the will to work on it. Physics will be handled by Bullet3 once integrated fully.

License Issues Build

Usage

Mahakam can be used by itself, simply by building and linking to it. An editor application also exists, called Erebor, which includes a level-editor and asset manager among other game-making tools. The best way to understand and use the engine is to build and run it, and then change around stuff to see how it affects the state. Applications created with the engine can also be run in headless mode, using the --headless flag.

Erebor

Running the editor can be done via Visual Studio or Visual Studio Code, via their respective debuggers. It can also be run using various files within the Erebor directory, namely: EreborDebug, EreborOptimized and EreborRelease. There are both bash and batch files for Linux and Windows.

Building

Refer to the BUILDING.md file.

Media

Editor 1 Editor 2

Libraries and technologies

  • Uses OpenGL for rendering. No other rendering APIs are supported currently, but may in the future.
  • Bullet Physics SDK for physics and collision detection.
  • EnTT as entity-component-system.
  • glad for interfacing with OpenGL.
  • GLFW for window creation and management.
  • OpenGL Mathematics for fast SIMD vector math.
  • glslang for shader compilation.
  • json for parsing JSON in tinygltf.
  • KTL for various allocators and containers.
  • Dear ImGui for GUI interaction and rendering.
  • ImGuizmo for editor interaction and rendering.
  • magic_enum for enum introspection.
  • miniaudio for audio playback.
  • spdlog for easy and fast logging.
  • spirv-cross for shader transpiling and reflection.
  • stb_image for loading various image files.
  • Steam Audio for audio spatialization.
  • Rapid YAML for serializaing and deserializing various YAML files.
  • tinygltf for model and animation loading.

Mahakam uses the Steam® Audio SDK. Steam® is a trademark or registered trademark of Valve Corporation in the United States of America and elsewhere.

Steam® Audio, Copyright 2017 - 2022, Valve Corp. All rights reserved.

mahakam's People

Contributors

kredegc avatar

Stargazers

 avatar

mahakam's Issues

Replace assimp with TinyglTF

  • Support for static mesh importing
  • Support for rudimentary skeleton importing
  • Support for animations
  • Make SkinnedMesh into a ref-counted object
  • Remove SetSkin() from SkinComponent
  • Add support for interleaved data
  • Add support for sparse data buffers

Navigation system

Probably using nodes, but could possibly use nav meshes instead.
Would have to tie into the collision system, in order to generate the edges

Hierarchy

  • RelationshipComponent with parent/child relations
  • Relationships affect transforms

Window registry

Add a WindowRegistry class inside the engine which, just like ComponentRegistry, is only available when MH_RUNTIME isn't defined

Each window will then have their own OnImGuiRender functions and ways of being instantiated etc.

Add material properties

  • Add shader specific properties, which can be changed in the inspector
  • Show properties in inspector an entity with a MeshComponent is selected

Implement physics

  • Implement bullet library and link to it
  • Implement ECS components for colliders and rigidbodies

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.