Skip to content

levente-varga/Tower

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Screenshot

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

Roadmap of the project

  • 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.

Releases

No releases published

Packages

No packages published