Skip to content

Erick9Thor/AltarBoy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Altar Boy

Altar Boy is a custom built C++ Game Engine done for the Videogame Development Master at UPC School.

engine screnshot

Developers 💻

How to use 🔧

Using a scene

To start seeing a model you can drop any file from Game/Assets/Models into the screen. Alternatively you can load a scene going to File -> Load -> Scene and choosing the .scene file you want to use.

load menu

Navigation

Scene navigation controls resemble the ones from unity:

  • Move the camera as fps game using right click + W, A, S, D
  • Orbit the model using Alt + mouse motion
  • Pres F to focus on model

Game Objects & Components

The engine is based arround hierarchies of game objects that have a set of components asociated to them. All game objects will have at least a transform.

You can edit the game objects distribution via the scene hierarchy by dragging them or using the contextual menu that pops up with right click. You can also select objects by clicking them on the scene (As long as they have a mesh).

scene hierarchy

To tweak components or create them you can select the desired game object and go to the inspector, Each compoentn has its own set of options.

inspector

Alternatively you can modify the transform using the guizmo, to change its current mode use the buttons at top left of the scene or the W, E, R keys.

guimzo

Features

Based on the second assignment requirements

  • Unity like camera controls
  • Previous menus (Altar Boy + UPC-Engine) and new ones for the new features
  • Engine loads with survival shooter scene
  • Scene serialization (loading & saving)
  • Quadtree frustum culling
  • Editable scene with guizmos
  • Editable materials that support diffuse and specular maps
  • PBR Phong shader with support for a directional light and multiple point & spot lights
  • Unity like play stop pause controls, scene returns to its original state on stop

Extra features

  • Raycast selection
  • Stencil of the selected object
  • Scene configuration
    • Ambient light
    • Toggleable skybox & background color
    • Toggleable Debug Draw & gui information
      • Transform & Camera debug information
      • Quadtree debug draw
      • Bounding boxes drawing
      • Light components debug draw (Needs to be tunned)
  • Configurable Components
    • Lights parameters
    • Materials properties
    • Camera configuration
      • Any camera can be set as culling camera
  • Timers window

stencil scene configuration timers

Built with 🛠️

  • OpenGL - A cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics.
  • SDL - Simple DirectMedia Layer to interact with hardware via OpenGL.
  • DevIL - A programmer's library to develop applications with very powerful image loading capabilities.
  • Assimp - portable Open-Source library to import various well-known 3D model formats in a uniform manner.
  • ImGui - A bloat-free graphical user interface library for C++.
  • MathGeoLib - A library for linear algebra and geometry manipulation for computer graphics.
  • PhysicsFS - A portable, flexible file i/o abstraction.
  • ImGuizmo - Colletion of useful ImGui widgets.
  • ImGuiFileDialog - File selection dialog built in ImGui.
  • RapidJSON - A fast JSON parser/generator for C++.
  • Optik Profiler - A super-lightweight C++ profiler for Games.

License 📄

This project is under the MIT License LICENSE.