/Awesome-Millie

Curated collection of useful links and resources for Game Programming Students

Creative Commons Zero v1.0 UniversalCC0-1.0

Awesome-Millie โœจ

Welcome to Awesome-Millie!

This is a curated collection of useful links and resources, gathered over the course of various projects I've assigned to my students. You'll find a wide range of topics covered here, from advanced C++ concepts, game engine development, to shader programming and mathematics for game development.

I hope this collection will be as helpful to others as it has been for my students. Whether you're learning, teaching, or just exploring new topics, feel free to dive in and find something useful.

Enjoy, and happy coding! ๐Ÿš€

Table of Contents

Advanced C++ Concepts

Templates ๐Ÿ“œ

  • CppReference on Templates โ€“ In-depth reference on templates, one of the most powerful features in C++.
    • Templates in C++ allow you to write generic functions and classes that can operate with any data type. They are particularly useful for creating reusable code components.
  • enable_if โ€“ Documentation on enable_if, used for SFINAE (Substitution Failure Is Not An Error).
    • SFINAE is a C++ feature used in template programming that allows the compiler to choose the correct function template overload by checking if a certain condition is true.
  • Type traits โ€“ A reference for type traits, essential tools in modern C++ template programming.
  • SFINAE โ€“ Detailed explanation of SFINAE in C++, used in advanced template programming.

Type Casting ๐Ÿ”

  • static_cast<> โ€“ Documentation on static_cast, used for explicit type conversions in C++.

Vectors and Containers ๐Ÿ“ฆ

Operator Overloading โž•

Pointers ๐Ÿ“Œ

  • Pointer tutorial โ€“ A visual guide to understanding pointers, an essential concept in C++ programming.

Object-Oriented Programming ๐Ÿ›๏ธ

  • Virtual Functions โ€“ Learn about virtual functions in C++ and how they are used for polymorphism.
    • Virtual functions allow you to override functions in derived classes and are a cornerstone of runtime polymorphism in C++.
  • Abstract Classes โ€“ Explanation of abstract classes, which cannot be instantiated and are meant to be used as base classes.
  • Rule of 3/5/0 โ€“ A guide to understanding constructors and destructors in C++.

Unit Testing ๐Ÿงช

Iterators ๐Ÿ–ฒ๏ธ

  • Iterator Library โ€“ Official documentation on iterators, which allow you to traverse containers in C++.

Game Engine Development

API Graphics Tutorials ๐Ÿ–ฅ๏ธ

  • Vulkan tutorial โ€“ A beginner-friendly guide to Vulkan, one of the most popular modern graphics APIs.
  • DX12 tutorial โ€“ Learn DirectX 12 through comprehensive tutorials.
  • DX11 tutorial โ€“ A set of tutorials for working with DirectX 11.
  • OpenGL tutorial โ€“ A structured guide to learning OpenGL for real-time rendering.
  • Alternative OpenGL tutorial โ€“ Another useful source to learn OpenGL from scratch.

Cross-API Resources ๐ŸŒ

Vulkan-Specific Resources ๐ŸŒ‹

DirectX-Specific Resources โŒ

OpenGL-Specific Resources ๐Ÿ”ญ


SFML Resources

SFML Basics ๐ŸŒฑ

Pre-written Code ๐Ÿ”ง

  • Rectangle Collisions โ€“ Learn about handling rectangle collisions in SFML, which can be useful for detecting mouse clicks on UI elements.

Forward Declarations โ–ถ๏ธ

  • Forward Declarations Explanation โ€“ A Stack Overflow post explaining what forward declarations are and why they are useful in C++.
  • CppReference on Forward Declarations โ€“ Official documentation for forward declarations in C++.
    • A forward declaration allows you to declare the existence of a class or function before you define it. This is useful in reducing compile-time dependencies in C++.

Graphics Programming

Unity Shader Development โœจ

Unreal Engine Shader Development โš™๏ธ

Shader Tools & Languages ๐Ÿงฐ


Maths

Visual Tools ๐Ÿ“

Useful Snippets ๐Ÿ”ง

  • Math Snippets โ€“ A collection of useful math snippets for programming, covering various topics from basic operations to more complex formulas.

Freya Holmรฉr's Visual Math ๐Ÿ“น

Gimbal Lock ๐Ÿ”’