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
- 3D Math
- Design Patterns
I share my experiences as a Game Engine Developer on Quora. Don't miss my answers: @haroldserrano
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.
- 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
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
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:
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.
- 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
- 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
- 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
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
- 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
- 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