"Essential! This course is essential to anyone who wants to become a game programmer in the future. The instructor explains everything in a perfect didactic manner, line by line what he is doing and why."
"Best course! Well structured and easy to understand course. I learn so much about game development. The course motivated me to go further and implement a Flappy Bird clone :D. Thanks Gustavo and go on."
"Pikuma and it's mastermind Gustavo are a huge treasure chest of shining gems! I was never happy with a course and a lecturer as this time. Great stuff."
"Amazing course! A fantastic experience! Great C++ features reviewed and well explained. A great explanation of the ECS pattern with an implementation that is complete and simple enough to be well understood by newcomers. I became a great fan of Gustavo and his great way of explaining CS concepts. Thank you!"
"This course was fantastic! It has definitely helped me to grow my c++ chops and get a better understanding of the general principles of game engine design. The quality of the content is superior to many college level programming courses that I have taken. I will most likely come back and take the rigidbody physics course and possibly even the 3d rendering course."
Having never used C/C++ and only having some background in Python and Java, this course was a great starting point for expanding my coding knowledge. Growing up with multiple gaming influences, I've always had an interest in creating gaming environments—a passion I never really had the chance to pursue until the last few years. Knowing that much of the gaming industry is rooted in C++, I did some research and found introductory courses and learning resources online. That's when I stumbled across Pikuma's courses.
Since I was completely new to the language, I decided that following along with a structured lecture series would be the best approach. I created an account, completed the free tutorial, and was sold shortly after. Over the next four weeks, I started each day with an hour or two of lectures, slowly building my understanding of the core concepts required to create common engine elements.
There were a couple of times when I had simple typos in my syntax and couldn't figure out what had gone wrong. Even though the course was published several years ago, Gustavo was still actively monitoring the discussion boards and responded to my post within 24 hours, helping me recognize a simple capitalization error.
The course was fun, well-paced, and easy to follow. The updated source code provided at different intervals was also helpful when pausing the video didn't give me the full view of certain sections that I needed to troubleshoot.
I highly recommend the course to anyone looking to learn foundational concepts of engine development using modern C++17, along with integrating libraries like Lua, Sol, and SDL.
After taking this course, I wish I could attend an in-person university course taught by Gustavo, but I'll happily settle for taking another Pikuma course instead!"
"A great course! A course that teaches you how to program in C++, as well as simple ECS, and even gives you pointers in how to improve the code. I highly recommend it."
"A Very Good Course for Beginners to Start with. Overall, i think the course is great for people that know some c++ but are completely new to game engine. This course help me a lot with many basic game engine concepts."
"Good pace, learnt tons! Overall, aside from opinions on optimisations, architecture decisions and the like, the course has been wonderful to solidify and learn important game dev concepts. The only thing that I'd say can be improved is that, often times, Gustavo is a bit redundant in his explanations. When I was short on time, I found it cumbersome to follow him while we go over the same thing or state what's on the screen twice or thrice. That's my experience at my desired pace and my available time, of course. Other than that, I think Gustavo is a brilliant professor and I can proudly recommend him 100%."
"Great course!! Gustavo Pezzi's game engine course is fantastic! It's well-structured and super informative, perfect for diving into game development. Gustavo explains everything clearly, and the hands-on project was really engaging. Definitely 5 stars!"
Overall a positive learning experience. I was already familiar with the ECS architecture from watching Comp 4300 on youtube, so it was good to use this architecture again while learning new libraries like SDL and especially Dear imGUI and sol.
Some areas I feel could be improved : The audio quality is really bad, with annoying crackling sounds, but I managed to learn to ignore them. (A bit disappointing though given the price of the course.) While Professor Gustavo did highlight it himself several times, some of the coding decisions were not the most efficient choices. It was a bit odd that we refactored the component pools data structure in the middle of the course, which seemed like poor planning, but was also beneficial to get some 'real world' experience of having to make a significant code change on a project midway. I am also still unclear on what the alternative is to using C++ templates, since it was mentioned that some game studios ban them because they are inefficient, but we used them a significant amount in this course.
Now for the highlights : Great teacher that you can tell has a passion for the topic, which always makes learning fun! There's also an awesome community of students, it was nice to see the discussions in the lecture sidebars, with past students and even the professor remaining active to answer questions, despite this being one of the older courses. The online platform itself is very nice, it's easy to catch up where you left off and see your progress.
The quality of the content is impressive; I haven't seen any other online course that teaches you how to connect so many different technologies to build a little game engine, but the true test will be if I can manage to do the bonus map tool in C++ and SDL. :)
"I wish this person can teach me everything my entire life! Perfect teacher, if teachers around the world were half as good the world problems would be solved."
"Great course! Wonderful course, goes over a lot of essential things in C++ but doesn't go too deep to make it its primary goal which is to create a game engine and introduce some of the major aspects of this area. If you read this and think about starting the course I immensely recommend, and have a small tip to give you for once you start - for every lecture you watch read the posts of other students at the end, they will help you both fix errors you might be having and sometimes even help you understand better some things that were shown in the lecture but you didn't quite fully understand yet(I know it happened to me a few times xD)."
"Awesome Course! Loved the course, looking forward to a real usable 3D Game Engine course with all the stuff needed to make a shipping game, like an Editor, Build System for different platforms, etc. Overall, awesome course. Thanks!"
"Awesome course! Most of all I liked ECS Design & Implementation, Event System and Lua Scripting sections. Moreover, I appreciated how detailed the guide was on setting up the libraries. Because it's always pain to setup a C++ project. In general, the course is well structured and gives a fairly solid representation of a structure of a typical game engine. Absolutely worth the time and money."
"Game Engine Primer! Great course for anyone wanting to get started with game engine creation. Also invaluable insight for those merely using an existing engine to understand what is happening, under the hood."
"Great course! Gustavo addresses various topics in a very efficient way, explaining in detail and gradually increasing the complexity, allowing students to follow along. With each class, we have something new and we look forward to seeing the next one. I will certainly purchase the other courses, thank you very much Gustavo."
"Excelent content! I'm profesional game dev with more then 5 years of experience (mainly in Unity) and programmer with more then 10 years of experience (games, mobile native, backed dev etc), and I've found this course very well made, executed and informative. Most of my time I have been using higher level languages such as C#, Java or Swift and this is very good C++ refresher too! I was able to learn a new ideas and I have a really good idea what to do next. From my side - money worth spent! Thank you Gustavo :)"
"A great course for building a game engine from scratch! Gustavo clearly cares about 2 things: solving problems with code, teaching how to do that. He goes into the nitty gritty of how an Entity Component System game engine works, line by line. You'll learn a lot! And what stones he leaves unturned he makes clear, as to what the course does and does not provide; the rest is for you to build! A fully working 2D game from scratch in C++ along with learning and using a scripting language to top it all off. An excellent course for anyone looking to learn game development, regardless of any language you end up using, because the knowledge gained here will be used throughout the rest of your journey!"
"Everything perfect!!! Exactly what I expected. I love how it is a gentle introduction to game engines, explaining everything in detail so that students can understand each piece before continuing to the rest of the topics. I have taken several YouTube tutorials on SDL and C++, but everyone just writes code. This course explain the meaning behind things, which I believe is a wonderful thing to learn!!!"
"Fantastic! Pikuma courses are of the best quality and this one is no exception. I thoroughly enjoyed putting together a game engine and learning tons of new concepts in the process. Can't wait to work my way through more of the existing courses, and am eager to see what new courses are released in the future 😺."
"Great instructor, great content! 11/10. You rarely see an instructor that is so down-to-earth, friendly, and humble. The content is great as it teaches you two fundamental things at the same time: 1) how a game engine works; and 2) how to use said game engine to build your actual game. There is a bit of a learning curve with understanding ECS and data-oriented-design, however if you apply yourself and do the exercises carefully - you start to unpack it little by little. Thank you, Gustavo, for this excellent course."
"Lovely Course! One of the only programming courses I have ever finished! Professor Gustavo Pezzi has crafted a course that covers the fundamental concepts of 2D Game Engines while leaving plenty of room for the student to dig deeper and learn more on their own. This means the pace of the course is always moving forward, but still provides enough depth to make sure that nothing is just a black box that won't be explained. I loved this course and am excited for more Pikuma in the future :)"
The 2D Game Engine course with C++ and Lua at Pikuma.com has been a fantastic journey into the world of game development! The course laid out a clear and structured pathway to understanding the separation of the game engine from game data, a concept that is fundamental for any aspiring game developer.
Gustavo is a brilliant teacher, and his style of explaining every line of code was incredibly effective. It made the learning process (of coding in C++, SDL and Lua a 2D game engine) both engaging and comprehensive, enabling a true understanding of the 'why' and 'how' things work when it comes to 2D game engine development.
Gustavo's emphasis on the fundamentals, coupled with his practical approach, reminds us that there's always room to grow and that the journey of improvement is continuous. I strongly recommend this course to novices and experienced developers alike! The course is cleverly presented to make the complex world of game development accessible to everyone."
"Excellent course the basics of engine programming! If you want to become an engine programmer this is a good course to start with. You will learn all the basics of game engine programming or at least have a good refresh on fundamentals. You won't learn to write super efficient C++ code but this is not the goal of this course. And more than all Gustavo is an excellent teacher who masters his subject."
"The best resource in the web! In my life i have seen so many tutorials on how to create your own engine, but none a so densely packed with information and approaches this one."
"Must take for those who take programming seriously. Phenomenal course! I've been eyeing this course for a while and decided to take the plunge when Unity fiasco started. I have learned so much that I'm creating my own game engine using Monogame and C#. I look forward to taking more classes with Pikuma!"
"Game engine from first principles! Like other Pikuma courses, this course is half high-level explanations and half code sessions. I pay most attention to the high-level concepts and then watch the coding sessions at higher speed to get the general idea. I then go and implement the concepts myself. This approach was a little frustrating early on, because there are a lot of complicated language features involved with the ECS implementation. This is just the nature of ECS engines. I made a few choices that slightly deviated from what the instructor was doing and ran into trouble. I had to refer to outside sources for help, but eventually got things to work and learned a lot in the process. My frustration was not because of the course, it was because I was doing things my own way--deviating from the course. The engine I built is not professional, but it feels like more than a toy as well. Most importantly, when I look at other game engines I have a much better idea what they are doing under the hood."
"Well designed course! Fantastic Instructor! I am excited about this course and increasing my knowledge of architecture, patterns and using libraries such as GLM and LUA!"
"Such a Great Course! I didn't really grow up learning about computers, but I started by computer science degree a few years ago and became really interested in how things worked. This course has given me insight not just into how game engines are made, but how projects in general are done. It's such a good course if you like learning how thing work behind the scenes."
"Great Teacher Very Big Topic. I feel he really taught me the basics of engine development here. I think he stretched my skill set working at the command line despite my rudementry c++ skills (I have plenty of C# and javascript skill and VBScript but the development cycle is the weakness) and he got me going with C++. Consider it a place to get started. Making a really solid game engine takes a little more architecture experience but I feel I could implement maintenance and debugging on an engine at this point."
"Superb course! Thank you so much for creating this :) Since I love understanding things under the hood, such courses are indeed what I look forward to. Even C++ is new for me and I am learning a lot by this course."
"Great course for learning ECS for the first time. University-course level quality. Concepts are introduced incrementally and are expanded upon in a way that demonstrates the purpose and reasoning of the code design clearly."
"Well, I have reached the end of the course and I must say - it was brilliant and exactly what I was looking for. The course is great if you want to understand the fundamentals of how a game a engine is put together. It goes through all of the fundamentals Graphics API, Input, Game Loop, Delta Time, ECS, Event System, and Scripting. At the end I feel as if I have attended a university course. You can tell Gustavo has a passion for teaching (and is a professional lecturer). I approached it consistently by trying to do a few hours day, and really looked forward to and enjoyed my study time. I am now looking forward to using what I have learnt to understand the topics more deeply. Thanks Gustavo!"
"I really enjoyed the course. It has a good level of detail to understand the building blocks of a game engine. I had very much fun writing the code of the engine and especially the exercieses. Always getting my code up and running was not always straight forward, but I think that this helps learning. Integrating the scripting languange was an eye opener, since I did not do such a thing before. This opens many interesting possibilities. Thank you very much."
"Fantastic Introduction and Primer! Working my way through the course now, and I'm enjoying every bit of it (except for the clunkiness of C++ environment setup and prep which is never fun lol). His method of teaching and how he thoroughly explains everything as you go along is critical and something that a lot of courses lack. You build things from the ground up and improve on them as you go along while learning the important and necessary principles and components of game development that you will carry with you as you move forward with your game development journey in the future."
"The Introduction I have been desperately searching for!I just needed a simple foundation to help wrap my head around the basic architecture of a game engine. There's just nothing else out there: with many sources I've come across either focusing solely on creating a renderer or using some existing game framework. I feel like I finally have my start. Thank You Gustavo."
"Another great course from Gustavo, thoroughly enjoyed! First time really using C++ in any depth and though some of the modern feature syntax is a bit rough, everything is explained in detail and all fits together nicely."
Overall an amazing course. I highly recommend it. I like to code and debug along and this course was great.
- Environment set-up: So many courses or textbooks have hurdles around getting the environment set up properly, or decades-old dependencies not being available anymore. Gustavo does a great job there and over the whole course I don't think I was blocked more than 30 minutes. This might not sound like a big deal, but so often you sink a few hours into a course only to discover half-way through that you have to spend days trying to fix arcane issues with no documentation. None of that nonsense here.
- C++ content: Gustavo is an experienced C++ programmer and it shows. In this course you'll learn about templates, unique pointers, some classic C++ syntax (like avoiding for loops), and function callbacks. The syntax gets ugly, but Gustavo always makes it easy. In terms of prior experience, before this course I had followed Bjarne Stroustrup's Programming Principles book, and before that I have been programming in Python professionally for a few years. I think this course goes a bit fast if you're still learning the basic C++ syntax, but for me it worked great as a "first big project". It was especially helpful for all the industry wisdom Gustavo imparts throughout the course.
- Lua content: Mixing a scripting language with a compiled language is something I knew nothing about before this. Betweem C++, Lua, and the imgui library, I feel like I didn't just learn game design, but a lot of very useful skills for making simple applications in C++. In terms of prior experience, coming from Python Lua felt very familiar.
- ECS and game design patterns: I think because of C++'s syntax quirks, some of the ECS design gets hidden behind difficult to read boilerplate code. That being said, Gustavo does a great job of focusing your attention on the big picture and what really matters. I don't know of another course that teaches the concept so well. To be honest, by the end of the course I felt comfortable enough with C++ and the code base to watch the videos on higher speed.
- Instructor: Gustavo is likable and his personality shines through the whole course. He loves to teach and he empathizes with the students' issues a lot. Often I would think "oh that looks difficult" only for Gustavo to say that just a few seconds later and to focus precisely on the difficult part."
"Nice introduction to video game dev! This a great course that teaches game development from scratch. It helps to understand the inner of the game engine.
So this is a course for you if you want any of the following: - You want to understand how works the game engines. - You want to learn how to develop video games and have curiosity about how they are done in low-level detail. - You want to practice C++ focusing on game dev and/or graphics.
This might not be a course for you if: - You only want to create video games and get the stuff done without worrying about low-level details. - You already have lots of experience in C++ and videogame development."
I recommend this course to anyone looking to start learning about game development in C++, and the details behind a simple 2D game engine, also the integration of all the different libraries necessary to give a real functionality to your game engine and final game.
I have learnt more with this course about game engines, game programming, modern C++ programming, scripting integration, some design patterns related to game development, than any other course out there. The most important thing is that you find it all in one place, no need to be jumping from book to book or from one website to the other gathering information. You have it all in this course.
More importantly, Gustavo is a great teacher, and his explanations are very clear. 100% recommended!"
"Fantastic course! Incredible lectures packed with amazing nits and bits about game development and high-performance software development. Can't wait for the next one :) Would easily recommend this to anyone that is passionate about Computer Science and "how things work". Thanks, Gustavo!"
"Well understandable introduction to game engine programing. This course was very understandbale, even with all the C++ shenanigans and all lead to a good starting point for further personal development. So I definitely recommend this course for all C++ users!"
"Im actually surprised how good this course is not only for learning game engine programming fundamentals but also c++ programming concepts. Sensational work!"
"Okay as first introduction to game engines. I like that Gustavo keeps things simple to teach the fundamentals of how game engines are architected. It explains in depth hims code and the course is very well structured. I recommend it if you want a gentle introduction.
However, I want to give a small improvement feedback. I think that a lot of effort is being made on teaching c++. The course would be more interesting reducing the number of videos explaining the c++ lenguage. Learning c++ is a big topic and try to fit teaching c++ is a waste of resources that could be spend into more game engine related topics like creating an editor. It would be better if people only take this course knowing at least the very basics of c++. Also the way c++ is used in this course should not be taken as an example. The use of shared pointers are totally unnecesary, they seem to be there only to teach people about their existence (again a c++ topic). There are too many memory allocations and copies being performed. I would agree the main point of the course is not performance. And I like the course is in c++ because it is what game engines at the core use. But if we don't need performance, why would we use c++ in the first place?
Improvement points:
- The type of components that exist is are known so we can save allocations using a plain array.When we run the game the engine already know all the types of components that exists. This only changes during development. We could use a simple enum to keep track of this and resize the array at compile time. This way you don't need to allocate which is expensive.
- The number of types of systems are known as well. This only changes in code during development so not need of vector usage here.
- Reduce the use of shared pointers. Most of the time we only need to modify an object in the registry. We can return a reference to the underlying object to change it.
- The Pool class is just a wrapper to a vector we could just typedef vector.
- The maximum number of components is known, in this case 32. We can use an array of 32 lenght on the stack for each pool.
- We can replace the Pool class for a more advance data structure like a free list to manage adding entities.
"A really great course with a fantastic teacher! This is the best online course I have ever attended. I have learned a lot and enjoied programming with Gustavo. I have already started the Game Physics Engine Programming course and after that I will also take the 3D Computer Graphic Programming course. Really good stuff!"
"If you were following @jonathan_blow or @cmuratori but you feel that the way they teach is not your thing, consider checking a @pikuma course called 'Creating a 2D Game Engine' where you'll learn about ECS, C++ DOD and many other things from a person that is good at teaching. The course is paid but you have nothing to loose, there is a free sample where you can check if the content of the course, the tools, the analogies and even the voice of the teacher match the way you learn. I'm enjoying the lectures a lot. I learned from books about Data Oriented Design, I made open source contributions in C, I even published a game on steam, but this lectures help me to put everything together and to upgrade my knowledge."
"Great course! I have been having a great time with this course! The concepts are well explained and the functions from other libraries are explained enought that I can explain it to sdomeone else."
"Fantastic course! Great teaching methods and content. Lessons are clear and the course is very well structured. A great introduction to game engine programming and ECS architecture."
"I'm a senior software engineer on business side, and I'm interested in game development and game engine in spare time. Gustavo presents this course clearly and interesting. I like ECS, Lua and ImGUI parts. I used Lua, but this course presented it easier to integrate into engine. Also I heard the other two technologies, but I understand these parts easier."
"Good But very long... The coarse was amazing with its videos and everything but it got long a bit boring after a way. Still amazing and I learned a lot. Best coarse I've every done 10/10. Maybe try shortening the videos more next time."
"Great course! Having most familiarity with C, and very little of C++, this was a good insight into how game engines work, how to program for contiguous memory access, and how Lua can be used to add game flexibility to a larger 'non programmer' audience. I didn't completely understand all the C++ STL concepts in detail, but I was able to grasp most of it and I will run through this course again to develop a deeper understanding."
The instructor moves at a good pace, explains everything in clear detail, and builds each piece upon the previous one not leaving anything out or doing any magic handwaving.
I am a C# programmer, and did a brief intro course on C++ before and this course was great to help me get more used to C++ syntax and idioms. I want to learn the Godot or Unity engine for 2d games and hope the instructor makes a course on one of these pre-made engines one day.
"Worth every penny!Gustavo was very informative at every step of the way and now that the course is over I feel pretty confident I can build on this project further to really create something unique with what I've learned."
There's a little 2d game, I don't remember the name of it exactly, but there is a character dropping things from the top of the screen and your little character has to run along the ground and catch what's being dropped in a little bucket. This is what I feel this course is like, so much knowledge is dropped throughout the course it's quite incredible. And the excitement watching things fall into place piece by piece as we go along is oddly a more thrilling feeling than any AAA game can give me.
Excellent stuff Gustavo, thanks so much! Valeu amigo :)"
"Learn a million things while building a small 2D Game Engine.
I don't think there's any other resource that guides you step by step into building a Game Engine. Gustavo does a fantastic job teaching many concepts and technologies while guiding you through going from zero to a small configurable engine. His teaching style is dynamic, and while he doesn't go too in-depth into any particular topic, he'll give you hints to discover more. The limit will be your curiosity.
I encourage you to give this course a try. It is a small investment compared to the vast knowledge you'll get, even if you are not planning on building your engine.
Some highlights: - ECS implementation! - Modern C++ concepts. - Lua integration for scripting."
It's impressive just how much information there is in this course while staying relatively short and approachable. Gustavo goes over everything always maintaining a delicate balance of giving enough detail while avoiding overloading the student. Critically, he also drinks the superior hot infusion ;)
"Finally! I've always wanted to make games, but figuring out where and how to start has been so intimidating. There is a ton of mediocre content online about gamedev and most of it focuses only on the very basics. Gustavo's content is empowering.
It's a nice mix of understanding the different moving parts that go into building a game and also the problems we try and solve in development. The course is a skillfully mixes coding, theory, design, and figuring out problems. It's rewarding. You take a step back after each lesson and see how what you learned made a real difference toward what you're building, you begin to see more of the big picture.
After finishing this course I can honestly say that it's given me the confidence I've needed to start seriously building the project I had only been dreaming about making. I cannot recommend this course enough."
"Great course for learning basics of game engine from scratch. Of all the books, courses and tutorials I have encountered, this is by far the best for learning how it all fits together into a small working game engine. This course takes you from the very first step, compiling "hello world", all the way to a working game engine with resource management, event system and scripting. After this course, I now feel inspired and ready to go ahead and learn more about engine design and making some fun games along the way. pros: cross platform (especially the focus on linux), minimal dependencies, working code all the way, teaching some modern c++. cons: liberal use of "auto" makes code a bit hard to read/understand when learning many new concepts."
"This course emphasizes the 'why'! It's refreshing to have an instructor run a program with errors so they can explain what the errors are and how to solve them. I really appreciate this a lot."
"Amazing content and teaching style. The instructor has deep expertise in the subject matter and organizes course materials in a very approachable way. Exercises are well designed to complement learning."
"It really amazes me how complete the course is. This course is amazing because Gustavo does not leave anything and anyone behind.
I already had knowledge of C++ when I enrolled in this course and I initially thought to skip over all the lectures which dealt with topics that I already was familiar with. Let me tell you that I'm glad I didn't skip anything. All the lectures are incredibly well laid out and you might still learn something even on already known topics. This course taught me how a game loop works which before was just pure black magic to me. I couldn't understand how you could serialize a process of updating and displaying things when by a gamer perspective everything seems to be happening at the same time.
I also enjoyed to learn the core mechanics of the SDL2 library and last but not least to learn about the ECS system which prior this course I didn't even know it existed.
I can say that I'm leaving with a better knowledge on the subject and that I have enriched my experience bag with useful information that will become handy in the future."
"Great course! I've really enjoyed it. It helped me understand how a game engine can be architectured, even though i don't plan on using modern C++ features on my projects. I just wish it went more in depth into alternatives for ECS, it seems great for a complex and generic game engine, but seems a bit overkill for small games, which is what i plan on making. Besides that, i do not regret the time i spent taking this course, and will likely try other courses from Pikuma later on!"
"Gustavo brings an Awesome course, made by heart and with an open mind, I cant recommend this course enough!
It is awesome from the beginning, you will learn key concepts that will keep in your brain how to think and design an game engine. If you want to learn c++ and how to endure in this amazing world of patterns: just get this course, there isnt any course better than this in my humble opinion."
I have very little experience with C++ and the attention and level of detail that I during this course is hard to describe. If there were more teachers like Gustavo then there would be fewer javascript developers in the world."
"Just do it. Amazing course, I've read a lot of books about make c++ engines using libraries to try to start learning, but this course makes everything simpler for your journey, i would recommend do this course and the continue your studies."
I bought it with the aim of building a DialogueBoxSystem, a la Final Fantasy. While that particular Component/System combo was never created, the course provided enough examples that building one from scratch won't be a problem. Another bonus? This course upgraded my game coding skillset from the 90s-era "No framework for you, tiny Shareware dev" to the modern ECS style. I'm definitely a happy customer."
Clear & Concise. I absolutely loved this course and I only wish there was a part two for refactoring and perhaps showing how to build a game GUI with state transitions. I know the course has some older versions of Lua and Sol but overall I used all new SDL2 components and have the game running on Windows & Mac (M1).
If you want to understand C++ ECS Systems with component templates then this is the course for you!"
"One of the most invaluable courses for new people interested into game programming!
Gustavo Pezzi is one of the best online teachers I've come across. He explains some of the most important concepts when getting deeper into programming and his teaching style really made things I struggled with on my own (Components/Systems/Adding Lua) a complete breeze.
I have all of Gustavo's courses and I've enjoyed every single one of them and have always came out a better programmer because of them. If you are new you will eventually come to an obsession about design patterns and components and it can really throw you for a loop. Something about having something all sync together nicely is very rewarding. He explains a great ECS design and provides reason why he went the route he did. Components, Systems, Animations, Data Oriented Design, and even gives you the keys to learning how to incorporate Lua. He also drops in a little bit of Dear ImGui a popular GUI library used a lot of the time for debugging (you see it everywhere).
Complaint: I'd love to see an efficient scene/state machine, quad trees, and some pathfinding, but it's impossible to dock any points based on all the content stuffed in this course. My really only complaint, and it's a petty one, is I wish there were even more exercises to really challenge the concepts learned in the chapters. This is something anyone can do themselves, but it's nice having someone as great and experienced as Gustavo providing the challenge so you could be sure to stay on topic and perhaps not adventure to far off of the point. With that said he does challenge you to create a map editor at the very end. I personally rather read Tiled Editor maps exported to the Lua format. Thanks Gustavo! Looking forwards to any future courses, I'll be first in line. ;)"
"Nice Intro to 2D Game Engine. I really enjoy the pace and how the instructor explains everything but I have some gripes with the architecture of the engine and how object oriented it is. I get that C++ is part of the industry culture and most studios use OOP but in this course in particular I feel as though the instructor falls to OOP through rote mechanisms and doesn't really give a sense of why OOP helps or why some of the structures need to be so fleshed out before it sees any use. The development feels as if it is prioritizing the fleshing out of pre-known structures first and does not seem to be informed by immediate needs and for a lot of the times I'm relying on faith that these structures will make sense later. Another point I would like to bring up is the use of modern C++ "features" such as templates and generics in a course that claims to be data oriented. I love that the course has a section on data oriented design and speaks about memory and encourages the learner to think about how things are laid out in memory but at the same time, the use of templates and smart pointers - while it helps the programmer sometimes, they also betray memory contiguous-ness and introduces pointer redirection and overhead - all hidden from novice programmer. And lastly, the use of so many libraries in a course that claims to be "from scratch". I get that these libraries help and don't really affect the game-play much v/s a hand-rolled one, but the course is hardly from scratch anymore so why make that claim. I know I pointed out a lot of my frustrations with the course but now that that has been said, I am thoroughly enjoying the course and am learning a lot despite my frustrations. I am following along in C and not using any libraries - mostly using the course as a guide rather than a complete follow along and I am learning a lot and I am glad that this course exists."
"The best teacher I ever had and the best courses I have ever seen!
I took many video tutorials and read many teaching books for the last 20 years, but I have never had a teacher as good as Gustavo! His teaching style and tutorials are so interesting, fun and easy to follow that I watch them in the evening instead of Netflix or a movie.
I wish I had teacher like that 20 years ago when I first tried to learn programming but gave up because books and tutorials were too boring and not easy to follow. Also in the end they left you with knowledge that is not really useful or enough to do anything that is close to the finished product. Another great thing with Gustavo is that in the end you really make something. Almost a whole game.
I never wanted to learn databases, I find them too boring, but if Gustavo makes database course I will learn them too! He is that great of a teacher! Even database course would be fun and interesting."
"I’ve completed about 15% of the course and so far it has been fantastic.
The teacher provides great, in-depth explanations each step of the way. Highly recommended if you want to know how a basic 2D game engine is built in C++ and SDL."
"This is one of the most thorough and best courses I've ever done on game development, and I've done quite a few. The information is easily digestible and useful. The structure of both the course and engine are beautifully organized. There are also plenty of opportunities to implement what you're learning through exercises. This is a must-have course for anyone looking to build their own 2D game engine. I can't recommend it enough."
"I've been looking for a long time for a course like this, where things are explained step by step, without magic tricks or black boxes. I really appreciated how this course provides a detailed birds-eye view of the fundamental aspects of a small but functional game engine. Being a gamedev and an engineer, I like to build things from the ground up, and understand what I am doing in the process. This course gives you the basic building blocks upon which you can create and expand, strong in the knowledge of what is the right approach to pursue."
"This is an brilliant course. Teaching great, methodical and easy to follow. Content great, well organised and covers the subject areas well. Pacing of the course was really good, always moving forward but not too fast. Instructor was easy to understand and responsive to questions and issues. If you are interested in this course, even just a little, I would definitely recommend you enrol. My experience with this course has been so good that I will definitely be going on to the other courses available on this website. 5 stars, easily earned."
"Once you learn C++ Basics this course is what you should take. It will make your learning journey in C++ OOP great course for 2D gamedev. I'm using windows and had no trouble following the course."
"I recently finished Gustavo's Assembly language course for the 6502 CPU, and I was impressed with the content and how easy it was to build a full Atari game. This course is equally impressive and easy to understand, and I came into it with a small amount of C++ experience. I am still early in the course, but I am so excited and happy with this course that I want everyone to know Gustavo is an outstanding teacher! The skills he has taught me will serve me well as I pursue a software engineering career this year in Silicon Valley. Thank you so much Gustavo, for being the best teacher I have encountered for computer programming. I shall not forget where I started and how much you have helped me :-)"
"This Course Great "C++ 2D Game Engine Development" was a great course. For many years, I wanted to create a game from scratch without using any popular game engines. I was curious about how a lot of games worked under the hood. His teaching style and pace were very good. Also, the exercises helped very much to reenforce the learning. I am so happy that I now know the fundamentals of creating a game engine. This felt like I have been well educated on the fundamentals of the subject matter. I am so glad that I took this course."
"This was a wonderful course and provided great insight of how to start a game engine. There is still plenty to do and to continue my education of game engine programming, I will take what I learned from this course and try to build an editor from some the the concepts. I recommend this course to anyone that is interested in game engines and c++ as a wonderful introduction. Thank you Gustavo, I look forward to taking some more of your courses in the future."
"The Best Course I've Ever Taken! Thank you Gustavo Pezzi! While learning game programming, I also gained deep insight into C++ and Game Development. I am very much excited to see more from Gustavo!"
This was one of the best online courses I've done in a *long* time.
The progression of topics is extremely smooth and well-thought-out. The depth that each topic covered is just right so as not to overwhelm you, but also not leave you in confusion as to what exactly you are doing. You finish the course with a sense of skill, empowerment, and inspiration, rather than feeling like you only have the know-how to implement *exactly* what was covered in this course and no more. It's the mark of truly good educational materials.
I already had a fair amount of coding experience in languages such as C#, Python, and Lua, but almost zero experience with C++. This course was perfectly pitched to my level of experience. It didn't try to go through extremely tedious explanations of basic programming concepts, but rather it respected my time and existing knowledge and gave me the information I needed to understand what we were doing in C++. There were also plenty of times where fundamental C++ concepts were repeated so as to really drill them in for people inexperienced with C++, and I really appreciated that.
Another thing I loved was that the instructor is writing all the code alongside you from scratch. Every file starts out blank and is filled character by character, line by line, as you build up the code. Sometimes intentional directions are taken that have to be back-tracked and changed or fixed, but it's not because of incompetence or bad planning in the course, but rather to give you a further understanding of *why* you are doing something, not just blindly following along with what's being typed. And to top it off, all the code is being written in a visually bare-bones text editor (vim), which means that the focus is on the *code*, not a fancy IDE and all its bells and whistles being a distraction. This is more important than it sounds. (This doesn't mean *you* have to use vim, of course, but having the code written this way by the instructor is very powerful for keeping the focus on the code you are writing.) Only a couple times toward the very end of the course is there code for a lesson already written, but by that point it's appreciated and it's actually a respect of your time.
Lastly, the number of powerful concepts packed into this course is just gold. I mean it. It's astonishing that this one course delivers all that in a streamlined, easy-to-understand, easy-to-follow set of steps. You could easily have an entire course on just using SDL, or just how the Entity-Component-System architecture works, or how to embed Lua into your C++ program. On top of that, it would have been so easy for this course to be just a messy jumble of those concepts all crammed in together, with no real separation of ideas. Instead, this is laid out in such a way that each topic is approached smoothly and in a way where you feel like you have a solid grasp of it before moving on to the next topic. I am an educator myself and have written my own coding courses for all ages and experience levels. I recognize the monumental amount of work that has gone into making this course what it is.
Trust me, you don't want to pass this one over. It is well worth the money.
Thank you very much for creating this course! My head is bursting with ideas for so many new projects directly as a result of what I got out of this course."
"Excellent introduction. It gives a basic but useful idea of how to start and how are the basic cogs inside a game engine. You can grasp the introductory concepts and start building from there into more complex topics afterwards."
"A really good introductory guide to SDL! Before this course I had only seen some guides around the web about the SDL library, I can confirm that this course provides a broader view of the approach to use to develop a well-made 2D game, and above all, Gustavo is really good at making you immerse yourself in the logic of game engines and make you understand the mechanism behind a clear and clean programming. After this course I feel perfectly capable of developing a 2D game that I had been thinking of doing for a while!"
"Very informative! As someone who dabbles in programming, I found it very easy to follow. Gustavo presents the material in a friendly and thoughtful way, and explains concepts such as creating an Entity-Component System and integrating with Lua in accessible terms. I would highly recommend this course to anyone who wishes to gain the experience and confidence needed to write their own simple 2D engine. Thank you for making this, five stars!"