001. Motivations & Learning Outcomes
002. How to Take this Course
003. Project Technologies & Libraries
004. Linux Dependencies
005. macOS Dependencies
006. A Small Note for Windows Programmers
007. Compilation
008. Header & Implementation Files
009. Linking
010. Makefile
011. Lua Version & Lua Header Files
012. Compiling & Testing All Dependencies
013. Configuring Visual Studio on Windows
014. Library Binaries
015. Game Loop
016. Game Class
017. Creating an SDL Window
018. Polling SDL Events
019. Rendering our SDL Window
020. Fullscreen Window
021. Fake Fullscreen vs. Real Fullscreen
022. Drawing an SDL Rectangle
023. Double-Buffered Renderer
024. Loading PNG Textures
025. Object Movement & Velocity Vectors
026. Capping the Game Framerate
027. SDL Delay
028. Delta Time
029. Uncapped Framerate
030. Logger Class
031. Logger Class Implementation
032. Popular Logging Libraries
033. Source Subfolders
034. Makefile Variables
035. Creating C++ Objects
036. Examples of C++ Object Creation
037. Organizing Game Objects
038. Object Inheritance Design
039. Component-Based Design
040. Entity-Component-System Design
041. ECS Folder Structure
042. System Component Signature
043. Working with C++ Templates
044. Component Type Template
045. Exercise System Functions
046. Adding & Removing Entities from Systems
047. Operator Overloading for Entities
048. Component Pool
049. The Pool Class
050. Implementing the Pool Class
051. Registry Systems & Entity Signatures
052. Entity Creation & Management
053. Function Templates to Manage Components
054. Adding Components
055. Function to Add Components
056. Function to Remove Components
057. Templates as Placeholders
058. Implementing System Functions
059. Creating our First Entity
060. Smart Pointers
061. Converting ECS Code to Smart Pointers
062. SDL Raw Pointers
063. Adding our First Components
064. Exercise Entity Class Managing Components
065. Entity Class Managing Components
066. A Warning About Cyclic Dependenciesb
067. Movement System
068. Movement System & Delta Time
069. Render System
070. Managing Game Assets
071. The Asset Store
072. Displaying Textures in our Render System
073. Exercise Displaying the Tilemap
074. Displaying the Tilemap
075. Rendering Order
076. Sorting Sprites by Z-Index
077. Animated Sprites
078. Animation System
079. Entity Collision Check
080. Implementing the Collision System
081. Exercise Render Collider Rectangle
082. Render Collider Rectangle
083. Killing Entities & Re-Using IDs
084. Implementing Entity Removal
085. Introduction to Event Systems
086. Event System Design Options
087. Starting to Code the Event System
088. Event Handlers
089. Emitting Events & Subscribing to Events
090. Exercise Key Pressed Event
091. Implementing the Key Pressed Event
092. Event System Design Patterns
093. Keyboard Control System
094. Camera Follow System
095. Sprites with Fixed Position
096. Camera Movement for Colliders
097. Projectile Emitter Component
098. Health Component
099. Projectile Duration
100. Exercise Shooting Projectiles
101. Shooting Projectiles
102. Tags & Groups
103. Optimizing Access of Tags & Groups
104. Implementing Tags & Groups
105. Projectiles Colliding with Player
106. Projectiles Colliding with Enemies
107. Error Checking and Validation
108. Data-Oriented Design
109. Avoiding Data Gaps
110. Packed Pool of Components
111. Coding Packed Pools of Data
112. Checking for Null Pool
113. Array of Structs vs. Struct of Arrays
114. Cache Profiling with Valgrind
115. Popular ECS Libraries
116. Adding Fonts to the Asset Store
117. Render Text System
118. Exercise Display Health Values
119. Rendering Health Values
120. Introduction to Dear ImGui
121. Dear ImGui Demo Window
122. Immediate-Mode GUI Paradigm
123. Render GUI System
124. Button to Spawn Enemies
125. Exercise Customizing New Enemy
126. Custom Enemy Values with ImGui
127. Killing Entities Outside Map Limits
128. Flipping Sprites on Collision
129. Exercise Keep Player Inside the Map
130. Keeping the Player Inside the Map
131. Culling Sprites Outside Camera View
132. Do Not Cull Fixed Sprites
133. Game Scripting
134. The Lua Scripting Language
135. Lua State
136. Reading Lua Tables
137. Lua Functions
138. Level Loader Class
139. Reading Assets from a Lua Table
140. Reading Entities from a Lua Table
141. Handling Multiple Objects in a Lua Level
142. Scripting Night-Day Tilemap
143. Scripting Entity Behavior with Lua
144. Script System
145. Lua Bindings
146. Binding Multiple Lua Functions
147. Loading Different Lua Levels
148. Division of C++ & Lua Code
149. Next Steps