Skip to content

Overview

Thanduriel edited this page Jan 18, 2021 · 11 revisions

AcaEngine notes

requirements

  • decent programming skills
    • preferably c++
  • some linear algebra knowledge
    • matrices, vectors
    • e.g. "Mathematik für Informatiker 2"
  • system with OpenGl 4.5 compatible GPU
    • >= Nvidia GTX 400
    • >= AMD Radeon HD 5000
    • >= Intel® Iris® Plus Graphics 540 < 1000
    • >= Intel® HD Graphics 500 < 1000
    • >= Intel® UHD Graphics 620 < 1000

dependencies

  • meshes obj with custom loader
  • textures ppm with custom loader
  • scene as json use library
  • glfw for window and input
  • glew for opengl extensions
  • glm for math
  • opengl lib
  • C++17 + (C++20 Concepts)
  • docker

topics

motivation / scope

0.5 weeks

  • Knowledge of the functional range and basic efficient implementation strategies
  • experience in modern c++ and software engineering
  • effective use of modern hardware (GPU,CPU)
  • basis for exotic or lean games
  • NOT a good basis if you just want to make games
    • will not cover all necessary components
    • many good and complete engines available (unity, unreal, ...)
  • overview of required components: rendering, physics, sound, assets, ...

hello world with OpenGL

2.5 weeks

lecture

  • project setup: CMake, git, C++ build tools
    • for windows(msvc), linux(docker, editor of choice)
  • linear algebra refresh
  • shader pipeline
  • OpenGL Shader (uniform, input layout)
  • Vertex/Index-Buffer
  • phong shading

input

1 week

lecture

  • logger usage
  • glfw input handling
  • usage json lib to load config
  • abstraction key to action
  • introduction HUD with label(font rendering)

task

  • add clickable Button class to change the color of the cube
    • mouseover, mouse down states
    • function per call back
  • load keybinding from config to pause rotation of the cube

gameloop / object management

4 weeks

lecture

  • gameloop
  • handling gamestates
  • entity component system
  • lifetime management
  • safe handles to entities (shared_ptr)

task

  • integrate Mesh into component
  • spawn/destroy multiple etities in scene

Physics

1 weeks

lecture

  • movement, rotation (quaternions), angular velocity
  • brute force collision detection (Axis aligned bounding box)

task

  • implement (angular) velocity, simple collision detection

shading

1 week

  • shadow (mapping)
  • water

scene management

2 week

  • octrees
    • implementation with insert/delete is given
    • use Functor to access member
  • raycasts
  • culling
  • accelerate collision detection

post processing ?

  • glowing
  • ambient occlusion

dynamic objects

outlook / possible custom tasks

  • normal maps
  • parallax mapping
  • shadow mapping
  • water
  • screen space reflections
  • ambient occlusion
  • deferred shading
  • NPC/AI/behavior trees
  • Path finding
  • raytracing
  • batching
  • release 📛
  • procedural content generation
  • Level of detail
  • preprocessing of assets
    • generation of convex hull, packing
  • fluid & gas simulation
    • ai support
  • volume particle system
    • lightning
  • volumetric clouds
  • solid body (breakable)
  • collision via convex hulls
    • detection
    • resolve (inertia tensor)

preparation

  • initial project with
    • libs as submodules
    • CMakeLists.txt
    • asset loaders
    • hello world window