Skip to content

CyroPCJr/OmegaEngine

Repository files navigation

Omega Engine

License

Table of Contents

  1. About
  2. How to use
  3. Features
  4. External Libraries
  5. License
  6. Acknowledgments

About

Omega engine is a Custom Game Engine developed using C++17 and DirectX 11.

The purpose to build this project to understand better how engines works under the hood to develop games.


How to use it

Prerequisite:

Visual Studio 2019

How to use:

Creating new windows c ++ project, adding the library as reference Omega.h and using the Omega Property sheet.

Example:

#include <OmegaEngine/Inc/Omega.h>

To use Dear ImGui API calls, it is necessary to include the header in .cpp files:

Example:

#include <ImGui\Inc\imgui.h>

Features

Artificial intelligence

  • Implemented Agents, AIWorld and Entities, with that AIWorld can manage Agents along the world.
  • Implemented Finite-State-Machine supporting Agents that can switching states behaviours along the AIWorld.
  • Implmented pathfinding algorithms such as Breadth-first search, Depth-first search, Dijkstra and A-star allow for Agents moving along the graph.
  • Implemented Steering behaviors module so that can help agents to move more natural and smoothly. Support behavios such as:
    • Alignment Group
    • Cohesion Group
    • Separation Group
    • Evade
    • Flee
    • Arrive
    • Seek
    • Wandering
    • Avoidance Obstacle
    • Hide

Core

  • Implemented windows initialzaion using Win32 API.
  • Implemented Memory management:
    • Block Allocator: Store and release a certain chunk of memory of objects avoiding memory fragmentation.
    • Typed Allocator: Custom Class types that can used whitin block allocator.
    • Handle: Handle Pool that manages accessibility and checks the validation of Handles.
  • Implemented Meta System witch is usefull to retrieve objects information in run time: Including support : ARRAY, POINTER, CLASS, FIELD

Graphics

  • Animation:
    • Implemented support to save and load animation keyframe using Assimp API once is extract model.
    • Implemented play animation once the file is loaded.
    • Implemented support to draw Skeletal using SimpleDraw with Debug UI (Dear ImGui).
    • Implemented Camera witch allow to move around and oriented into the world view.
    • Material: Support Textures, Colors,LightTypes, Material and Sampler.
  • Mesh:
    • Implemented MeshBuilder withc allowed to rendere differents shapres such as: Cube,Plane, Sphere, Quads and Cylinder.
    • Implemented VertexTypes to cache information from MeshBuilder.
    • Implemented SimpleDraw using for visual debuging.
  • Renderer:
    • Implemented TexturesManager to load, assign and render the textures using Direct3D as render pipeline.
    • Implemente SpriteRendererManager support to draw fonts and load 2D textures with position and scale.

Math

  • Linear Algebra: Vector2, Vector3, Vector4, Matrix3, Matrix4, Quaternion and Perlin Noise.
  • Geometry: AABB, OBB, Ray, Sphere, Circle, Line Segment, Rectangle and Plane.
  • Implemented EngineMath as helper class to support all functionality such geometry intersections and helper function for linear algebra.

Physics

  • Implmented Physics World to manage all physics particles and constraints in the scene.
  • Implemented Particles system using Verlet integration.
  • Constratints can be applied either fixed or spring constraints.

External Libraries


License


Acknowledgments

  • Peter Chan

About

A Custom C++ Game Engine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published