Skip to content

Latest commit

 

History

176 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Work in progress!

The game is currently in the early, early development stages, though a comprehensive implementation plan is complete. The engine is mostly functional with a comprehensive test suite, application stack, and a GUI using Dear imGUI. I plan to add a developer tooling suite as well as hot-reload and an asset manager in the near-future.

*The development of the project moving forward will primarily be in a separate private repo to protect my art assets and game features, later I will clean this repo to be exclusively the Engine.

My primary goal for this project is to develop my skills with C++, to follow stringent design strategies focused on performance and optimization, and to better understand rendering and graphics, as well as to try and make my own game for release further down the road.

I have made thorough use of my essentially feature-complete ECS system during testing and development and it currently utilizes a sparse/dense entity system with direct entity index references of all component parts by the systems. The systems also perform rapid look ups of valid entities in dense maps through a combination of careful selection of the "most-likely" smallest component pool, and via a component bitset signature held in the variable m_entityMask in each system file.

Updates currently run on both frame and client tick speeds, accommodating varied requirements of the systems, but I will be adding further tick cadences to the Scheduler class in order to update high-performance cost systems such as unit AI later in development. Parallelization is functional in one system right now, MovementTicks, but mostly just so I understood what was required of my systems to ensure easy refactoring for multi-threading later in many more systems.

The game directory includes a functioning ship "baking" system that turns a (potentially very) large set of ship parts into a single vector of part structs. This will allow for gameplay operations such as directed damage via ray-casts and pseudo-realistic combat simulation. I am considering alternative data structures for this but it will be done in later optimization passes if needed.

If you are interested in any further details or potentially would like to contribute to this hobby project via recommendations for code improvements or features, I would love to hear from anyone that stumbles across it! My email address is on my profile.

A small portion of the debugger output from the 90%+ coverage Catch2 test suite of the Engine directory.

image

A beautiful square firing more squares, paused. The "ship" is actually many "parts" that fill the same space as the "array of weapons" that sit slightly inside of the edge of the "ship". All of these components are fully physics-enabled, have collision detection, damage payloads, etc. where applicable. The ship itself also has over-arching statistics like mass baked in and the "thrusters" use a force-based directional propulsion system. (Poorly displayed with the existing graphical fidelity.)

image

About

A custom game engine written in C++ and OpenGL (GLFW, glad), and a game built using it. This is partially a learning project focused on C++ best practices, efficient cache usage, RAII, and maximally decoupled dependencies. The engine will also include a custom logging system and a test suite written with Catch2.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages