https://github.com/levente-varga/tower
A game engine in C++
https://github.com/levente-varga/tower
cpp directx-11 game-engine
Last synced: over 1 year ago
JSON representation
A game engine in C++
- Host: GitHub
- URL: https://github.com/levente-varga/tower
- Owner: levente-varga
- Created: 2023-10-26T21:44:42.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-05T21:13:33.000Z (over 1 year ago)
- Last Synced: 2025-03-05T22:26:05.399Z (over 1 year ago)
- Topics: cpp, directx-11, game-engine
- Language: C++
- Homepage:
- Size: 230 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Tower
#### Written in C++ and HLSL using Visual Studio
A game engine in development, powered by DirectX11.
Fully implemented in C++ and HLSL, features proper exception handling.

## Description
This is half a hobby project and half a university assignment. The ultimate goal is to implement an engine that could serve as the foundation of a simple video game.
In its current state, the engine is capable of rendering multiple cubes that randomly move around the scene using 3D transformations. Although keyboard and mouse input is also being captured, it is not used yet.
Error handling is crucial during development and testing, so a solution is implemented in the engine that upon encountering a graphics-related exception, displays an informative error message queried from the DirectX API.
## Roadmap

- __First window__ - Display an empty window using the DirectX API.
- __Mouse and keyboard input__ - Maintain the full state of the keyboard and mouse keys.
- __Exception handling__ - Whenever the applications encounters an exception related to DirectX, a popup should be shown containing the description of the issue queried from the DirectX API.
- __Draw the first triangle__ - Draw a triangle to the window using shaders.
- __Transformations__ - Using matrices, move, rotate and scale the rendered meshed.
- __More efficient rendering__ - Reuse buffers if possible between frames.
- __Texturing__ - Set different colors for different faces of meshes. Could be extended to support actual textures being loaded from file.
- __Materials__ - Use a system for setting basic material properties for objects, such as shininess and color.
- __Directional and point lights__ - Shade the objects based on light coming from points (lamp) and set directions (sun), but without casting shadows.
- __Game objects__ - Every object in the game should derive from the same super class.
- __Camera system__ - The camera should be a game object with unique properties (transform, zoom, aspect ratio etc.). Support multiple cameras.
- __More primitive objects__ - Support a variety of built-in primitive objects like plane, cube and sphere. Would be useful for showcasing the capabilities of the engine.