The goal of the wiki is to cover a wide range of topics related to game development.
When building a game engine from scratch, there are several valid approaches and there is no perfect way of doing things.
For a given topic, multiple strategies will be covered with their advantages and pitfalls.
The advantage of building a wiki instead of a blog is that the information can be better organized, and improved over time.
A retrospective on the different versions of DirectX.
โข๏ธDirectX
A review of the different implementations of SIMD.
๐ขSIMD
An overview of the architecture of a computer system and its fundamental components.
๐ปComputer
A review of the CPUโs cache memory, and best practices.
๐ Cache Memory
To debug programs compiled for an Intel x86 architecture, some fundamental knowledge of the processor and its instructions is necessary.
โ๏ธIntel x86
Every programming language provides fundamental data types.
๐ขNumeric Types
๐Endianness
The code translation process that includes the compilation and linking of source code to a binary executable.
๐คCode Translation
The storage of a programโs executable on different plaforms.
โถ๏ธExecutable
A program uses a portion of heap memory known as the stack.
C++ does not support Bit Flags as a fundamental type. There are different methods to implement this functionality.
๐ฉBit Flags
There are different methods to handle errors in C++.
โ ๏ธError Handling
C++ and best practices.
Fundamental information on C# and best practices.
๐C#
Information on the internals of .NET.
๐พ.NET Internals
A review of best practices that are mostly platform-independent.
๐Best Practices
An overview of multithreading and platform-dependent functionalities.
๐Multithreading
A review of build systems and build tools.
๐จBuild Systems
CMake is one of the most popular open-source cross-platform build toolset, and it can be used for game development with a minimal set up.
๐จCMake
Introduction to COM. Useful when working with COM libraries such as DirectX and WinRT.
A review of SIMD on different platforms, and best practices on their usage.
๐ขSIMD
A review if the different kind of memory, and the best practices for writing efficient programs.
๐Memory
A review of different allocation strategies and their use in a game engine.
โAllocators
An overview of the fundamental container types and their usage.
๐ฆCollections
Different strategies to implement a reflection system in C++.
๐Reflection
Different strategies to serialize and deserialize data in C++.
๐พSerialization
The principles of trigonometry that are necessary for graphics programming.
๐Trigonometry
Introduction to the Graphics Pipeline and the different stages.
Introduction to a Material System.
๐Material System
Gamma correction and linear workspace.
๐Gamma
Overview on texture techniques.
๐ผTexture
Introduction to Shader programming.
๐กShader
Overview on Lighting models.
๐กLighting
An overview of the recommended project configurations for a game engine.
Strategies to provide a platform abstraction for the low-level functionality of the engine.
๐ปCross-Platform
Overview of platform-independant and platform-spefic features for the low-level functionality of the engine.
๐ฅPlatforms
Review of platform-dependent Timing functionalities.
โฐTime
Best practices on implementing loading and saving in a game engine.
๐Storage
Review of Object Models for games.
๐Object Model
A review of popular version control systems, and how they can be integrated into a game pipeline.
๐ทVersion Control
An overview of an asset pipeline for games.
๐ผAssets
An introduction to WebGL.
๐WebGL
An introduction to programming for macOS.
๐macOS
An introduction to Metal for macOS and iOS.
๐ฉMetal
Overview and tutorials on the Windows platforms and the APIs that are required in a game engine.
๐ฅWindows
Tutorials on HLSL.
โจHLSL
Set up of the Engine from GitHub.
Overview of the Unreal Engine 4: terminology, build system, code generation.
Architecture of the Unreal Engine 4: source code, object system, containers, macros.
Review of some systems: Memory, LLM, Console and CVars.
Review of different ways to perform multithreaded work: Async Tasks, Runnable, Tasks Pool.
Review of different ways to load assets on demand and asynchronously at runtime.
Usage of delegates and lambas.