Codex

Game Development Resources


Project maintained by Julien Delezenne

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.

๐Ÿ“– References

๐Ÿ’ฌ Glossary

โ„น๏ธ Terminology

๐Ÿฐ History

A retrospective on the different versions of DirectX.

โ˜ข๏ธDirectX

A review of the different implementations of SIMD.

๐Ÿ”ขSIMD

๐Ÿ’ป Hardware

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

๐Ÿ–ฅ Software

System

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.

๐Ÿ“š Stack

C++

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.

๐Ÿ‘‘C++ Best Practices

C#

Fundamental information on C# and best practices.

๐ŸŒ€C#

๐Ÿ‘‘C# Best Practices

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

๐Ÿงฑ Build

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

Windows

Introduction to COM. Useful when working with COM libraries such as DirectX and WinRT.

COM

Core

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

๐Ÿงฎ Mathematics

The principles of trigonometry that are necessary for graphics programming.

๐Ÿ“Trigonometry

๐ŸŒ„ Graphics

Introduction to the Graphics Pipeline and the different stages.

๐ŸญGraphics Pipeline

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

๐ŸŽฎ Game Runtime

An overview of the recommended project configurations for a game engine.

๐Ÿ› Project Configuration

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

๐ŸŽจ Game Editor

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

๐ŸŽ“ Tutorials

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

Unreal Engine 4

Set up of the Engine from GitHub.

Set up

Overview of the Unreal Engine 4: terminology, build system, code generation.

Overview

Architecture of the Unreal Engine 4: source code, object system, containers, macros.

Architecture

Review of some systems: Memory, LLM, Console and CVars.

Systems

Review of different ways to perform multithreaded work: Async Tasks, Runnable, Tasks Pool.

Multithreading

Review of different ways to load assets on demand and asynchronously at runtime.

Assets Streaming

Usage of delegates and lambas.

Delegates and Lambas