Skip to content

RedSkittleFox/Game-Engine-Programming-Resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 

Repository files navigation

About This Document

This document should serve as a learning resource and a reference for aspiring game engine programmers. It's focus is game engine programming, not game programming. It's going to cover low level topics such as networking, renderers, entitiy systems and physics engines. The language of interest in this document is C++ thus expect most of the resources use it.

Usage

This document is not fit for people with basic programming knowledge. Please acquire high level programming language knowledge before using this as a reference. If you are interested in learning C++ please check out this document.

Contribution and suggestions

Please use issues and create branches to make suggestions and comments.

Table of Contents

Table of Contents

Memory Management

GPU Memory Management

D3D12 Memory Allocator - GPUOpen-LibrariesAndSDKs

Rendering

Rendering

Variance Shadow Maps - NVidia

Design Patterns for Low-Level Real-Time Rendering - CppCon 2017: Nicolas Guillemot

Rendering the World of Far Cry 4 - GDC 2015: Stephen McAuley

Sand Rendering in Journey - GDC 2013: John Edwards

The Rendering of Below - GDC 2017: Colin Weick

The Physics of Light and Rendering - QuakeCon 2013: John Carmack

Ray Tracing

Ray Tracing - Soft Shadows - Stack Overflow

Mesh Shaders

Turing - Mesh Shaders - SIGGRAPH 2018: Christoph Kubisch

Geometry Reinvented with Mesh Shading - SIGGRAPH 2019: NVIDIA

Advanced Mesh Shaders - DirectX Developer Day: Martin Fuller

Rendering APIs

OpenGL

OpenGL - OpenGL Programming Tutorial Series by Brian Will

D3D11

C++ 3D DirectX Programming - D3D11 Programming Tutorial Series by ChiliTomatoNoodle

D3D12

Mesh Shaders - DirectX-Specs

DirectX Raytracing - DirectX-Specs

DirectX-Specs

DirectX 12 - D3D12 Programming Tutorial Series by Microsoft

Optimisations

Performance Guide - GPUOpen

The benefits of buffr packing - ARM Developer

Geometry Caching Optimizations in Halo 5: Guardians - GDC 2017: Zabir Hoque and Ben Laidlaw

Visible Surface Algorithms - UC Davis Academics

Rendering the World of Far Cry 4 - GDC 2015: Stephen McAuley

Temporal Reprojection Anti-Aliasing in INSIDE - GDC 2016: Lasse Jon Fuglsang Pedersen

Foliage

Between Tech and Art: The Vegetation of Horizon Zero Dawn - GDC 2018: Gilbert Sanders

Compressed Textures

DirectX's Compressed Textures Resources

DXT is NOT ENOUGH! Advanced texture compression for games - GDC 2012: Colt McAnlis

Adaptive Virtual Texture Rendering in Far Cry 4 - GDC 2015: Ka Chen

Virtual Textures (aka Megatextures) - GDC 2008: Sean Barrett

Occulusion Culling

Frustrum Calculation and Culling, Hopefully Demystified - David Lively

Frustrum Culling tutorial - Rastertek

How Occlusion Culling Works - thebennybox

Precomputed Lighting

Radiositiy - Hugo Elias

Graphics Tech: Precomputed Lighting - Jonathan Blow

Lightmap Parameterization - Ignacio Castano

Hemicube Rendering and Integration - Ignacio Castano

Mesh Parameterization - full-day course given at SIGGRAPH Asia 2007

D-Charts: Quasi-Developable Mesh Segmentation - Dan Julius, Vladislav Kraevoy, Alla Sheffer

Vector Texture Maps on the GPU - Nicolas Ray, Thibaut Neiger, Bruno Levy, Xavier Cavin

Lightmap - Wikipedia

Packing Lightmaps - blackspawn

Physics

Collision Detection

Physics for Game Programmers; Continous Collision - GDC 2013: Erin Catto

Convx Polygon Collisions - javidx9

GJK Algorithm Explanation & Implementation - Winterdev

Handmade Hero Day 050 - Basic Minkowski-based Collision Detection - Molly Rocket

Physics Engines

The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever? - Reducible

Physics for Game Programmers: Understanding Constraints - GDC 2014: Erin Catto

Valve's Physics for Game Programmers - GDC 2014: Sergiy Migdalskiy

A/B Testing for Game Design Iteration: A Bayesian Approach - GDC 2014: Steven Collins

Intro to Game Physics - DigiPen Game Engine Architecture Club

Supercharged! Vehicle Physics in Skylanders - GDC 2016: Jan Erik Steel & Patrick Donnelly

Designing with Physics: Bend the Physics Engine to Your Will - GDC 2015: Bennett Foddy

3D Physics Engine Tutorial - thebennybox

Destructible Environments in Control: Lessons in Procedural Destruction - GDC 2020: Johannes Richter

Cloth Self Collision with Predictive Contacts - GDC 2018: Chris Lewin

Game Logic

AI

Nuts and Bolts: Modular AI From the Ground Up - GDC 2016: Kevin Dill, Christopher Dragert & Troy Humphreys

Bringing Hell to Life: AI and Full Body Animation in DOOM - GDC 2017: Jake Campbell

Modular, Reusable Social Behavior In Video Game AI - GDC 2014: Michael Mateas & Bill Ferguson

Creating Complex AI Behavior in Stellaris Through Data-Driven Design - GDC 2017: Mehranz Amanat Bari

ECS

A Simple Entity Component System (ECS) [C++] - Austin Morlan

Implementation of a multithreaded compile-time ECS in C++14 - Vittorio Romeo

Game Content

Resource Management

Pak files - Virtual file system - Simon Coenen

Maps

Valve's BSP Map Format - VDC

Half-space (geometry) - Wikipedia

Computational Geometry - Phylip Kindermann

Concurrency

Multithreading

Using Synchronization - MSDN

SIMD

SIMD and Vectorization: Parallelism in C++(multitasking on single core) - Bisqwit

C++ SSE Optimization - ChiliTomatoNoodle

Procedural Generation

Practical Procedural Generation for Everyone - GDC 2017: Kate Compton

Math for Game Programmers: Mixing Geodetic, Hand-crafted and Procedural Geometry - GDC 2015: Graham Rhodes

Skeletal Animations

IK Rig: Procedural Pose Animation - GDC 2016: Alexander Bereznyak

Skeletal Animation - From Theory and Math to Code - FloatyMonkey

FABRIK (Inverse kinematics) - EgoMoose

Freeform Animation Rigging: Evolving the Animation Pipeline - GDC 2020: Dave Hunt

Bringing Hell to Life: AI and Full Body Animation in DOOM - GDC 2017: Jake Campbell

Networking

I Shot You First: Networking the Gameplay of Halo: Reach - GDC 2011: David Aldridge

Networking for Physics Programmers by Glenn Fiedler - GDC 2015: Glenn Fiedler

Mathematics

The Blaze High Performance Math Library - Klaus Iglberger

Math for Game Programmers: Understanding Homogeneous Coordinates - GDC 2015: Squirrel Eiserloh

Math for Game Programmers: Mixing Geodetic, Hand-crafted and Procedural Geometry - GDC 2015: Graham Rhodes

Audio

An Interactive Sound Dystopia: Real-Time Audio Processing in NieR:Automata - GDC 2018: Shuji Kohata

Performance Based Sound Design - GDC 2017: Matt Piersall

Next-Gen Audio in Killer Instinct - GDC 2014: Mick Gordon & Jean-Edouard Miclot

Debugging and Developer Tools

Printing Call Stack - Stack Overflow

Introspections - TeamHypersomnia

Frostbite: Implementing a Scripting Solution for Your Editor - GDC 2015: Matthew Doell

About

Collection of resources about game engine programming and computer 3D graphics.

Topics

Resources

Stars

Watchers

Forks