Skip to content

Doctor-Foxling/Becketron

Repository files navigation

Becketron PRs Welcome

This is a game engine written mostly in C++ that currently supports OpenGL based 2D and 3D rendering, PhysX-SDK based physics system, GUI via ImGui library (docking), Entity Component System through the Entt library and other features that can be explored in the engine Documentation.

The Current most upto-date branch for the repository is '3D-Experiment' where the 3D rendering, PhysX implementation, Skyboxes, Texture selection and other minor features are implemented.

Current project solution is composed of three projects, Becketron (static library), which is the game engine iteself and contains the implementation for most of the modules (with the exception of GUI) that the engine is made of. The GUI setup (i.e., ImGui integration) is also done within the Becketron project. The implementation of the of GUI components (e.g., Scene Hierarchy Panel, Properties Panel, Viewport etc.) are implemented with the 'Tron' (Editor) Project.


The Sandbox project is a testing ground for the new features that are added to the Engine and isn't necessarily essentailly for using the engine as a game/simulation developer. Both, Sandbox and Tron Editor Project have access to assets (e.g., Textures, Skyboxes etc.) and GLSL shader files, specific to a given scene.

Building and Running

To run and test the enginge, the following steps can be taken:

  • Clone the repository: git clone --recursive https://github.com/Doctor-Foxling/Becketron
  • Check out the latest branch: git checkout 3DExperiment
  • Build the solution:Use the batch file, Win-GenProjects.bat, in the Scripts folder to build the solution
  • Open the solution in Visual Studio (or any other editor)
  • Set the startup project to Tron (If not set already)
  • Ready to start debugging

Future Work

  • Vulkan Graphics API
  • 3D Model loading via Assimp Library
  • In-built Asset Manager
  • Python/C# Scripting
  • Audio System
  • Multithreading
  • Scene Serealization
  • Better Memory management
  • ...and so much more

Dependencies

  • [DearImGui] for Graphical User Interface
  • [GLFW] for Windowing
  • [Glad] OpenGL loader
  • stb_image for image loading
  • glm used as Math Library
  • EnTT for Entity component system
  • spdlog for fast Logging
  • [yaml-cpp] for scene serialization

Contributing [GitHub contributors]

  • For contributing, fork this repository first.
  • Then make a feature branch in your fork and start adding stuff.
  • When you're ready with your feature, you can send a Pull Request(PR).
  • Then your code will be reviewed and if everything goes well, your commits will be mergerd!