Articles
Developing a game engine has taught me more than I ever imagined. Now, I want to share what I know with you. Enjoy.
In this page you can find the following topics:
- Game Engine Development
- Metal Projects (new Apple Graphics Language)
- OpenGL ES 2.0
- OpenGL ES 2.0 Projects
- C++
- 3D Math
- Design Patterns
I share tips on game engine development on my Youtube Channel and live stream the development of the game engine on my Twitch Channel. Join me and learn.
Game Engine Articles
These articles offer an overview on how to develop a Game Engine. I strongly recommend you to read How does game engine work? An Overview. It provides an overview at a high level on how a game engine works.
Beginner Level
- How does a Game Engine work? An Overview
- How does a Rendering Engine work? An Overview
- How does a Physics Engine work? An Overview
- How to develop a Digital Asset Importer in Blender 3D
- Design Patterns in Game Engine Development
- Tips on developing a Math Engine
- Tips on developing a Collision Detection System
- A brief explanation of Game Engine math
- How do you load data into a game engine
- How 3D animations work in a game engine? An Overview
- The purpose of a scenegraph in a game engine
- How does the Game Engine Loop make a game possible?
- How do video game characters move?
Non-Technical Articles on Game Engine Development
- Should you develop a game or a game engine?
- On this Mac, I developed a Game Engine
- When is it a good idea to build your own game engine?
- Is it hard to develop a game engine?
- 4 things to be aware of before developing a game engine
- Best books on Game Engine Development
- What are some good books on Computer Graphics?
- How many books does it take to develop a game engine?
- Which language should I use to develop a game engine?
- Game character modeling for game engine developers
- Do you have to be a great programmer to develop a game engine?
- Break things, learn and repeat
- Why is a non-gamer developing a game engine?
- The unexpected thing I had to learn
- The mistake I made as a Game Engine Developer
- How long does it take to develop a game engine?
- What tools do I need to develop a game engine?
- Books I used to develop a game engine
- The Art of Game Engine Development
- Languages to learn to develop a game engine
- How to become a game engine developer?
Metal Projects
Metal is the new graphics library from Apple. I have decided to become an expert on this API. Here are my new articles and projects using Metal:
Beginner Level
OpenGL Articles
If you are planning to use OpenGL in your game engine, then you may want to understand how the OpenGL API works. I recommend to read these articles.
Beginner Level
- What is OpenGL
- Understanding OpenGL Objects
- Visualizing OpenGL Objects
- Loading data into OpenGL
- OpenGL Rendering Pipeline
- Starting the Rendering Process in OpenGL
- Rendering efficiently with OpenGL
- Vertex Attribute Purpose
- Brief talk about OpenGL Textures
- What is a Vertex Shader
- What is a Fragment Shader
Intermediate Level
- What are binding points in OpenGL
- What are Vertex Array Binding points
- Compiling, Attaching and Linking Shaders
- How does the Vertex Shader receives data
- How to pass data from shader to shader
- what is the purpose of a Vertex Attribute in OpenGL
- What is Clipping in OpenGL
- What are Tessellation Shaders
- What are Geometry Shaders
OpenGL Projects
Beginner Level
- Rendering a character using OpenGL ES in iOS
- Applying texture to a character using OpenGL ES in iOS
- How to use OpenGL ES Shaders
- How to rotate a character using OpenGL ES in iOS
- How to apply lighting to a character using OpenGL ES in iOS
- How to apply a Skybox (Cube Map) using OpenGL ES in iOS
- How to add a Normal Map using OpenGL ES in iOS
- How to Render Text using OpenGL ES
C++ Articles
To develop a Game Engine, you can use any language you want. I use C++. It is fast and powerful. If you are planning to develop your engine using C++, I recommend you to read these articles.
C++ Basic Knowledge
C++ Tips
Beginner Level
- How to use virtual destructors
- How to use namespaces
- Always initialize C++ Objects
- Use const whenever possible
- Never call a virtual function during destrucion
- Have assignment operators return a reference to *this
- Be sure to copy all of an object's data members and its base class parts
- Avoid using exceptions in destructors
- Use objects to manage resources
- Know when to use delete and when to use delete[]
- Store newed objects in smart pointers in standalone statements
- Make interfaces easy to use correctly and hard to use incorrectly
- Prefer pass-by-reference-to-const to pass-by-value
- Don't return a reference when you must return an object
- Delay construction of objects until they are needed
- References are Aliases, not Pointers
Intermediate Level
- How to remove vector elements in a loop?
- Prefer pre-increment to post-increment
- Declaring variables with "auto" in C++
- How to use Lambda functions in C++
- A cooler way to do For-loops in C++
- Traversing containers the smart way in C++
- How to use Forward Declaration in C++
- The three types of containers in C++
- Types of encapsulation in Object-Oriented Programming