Difference between revisions of "Intermediate C++ Game Programming Series"
From Chilipedia
(→List of Tutorials) |
(→List of Tutorials) |
||
(27 intermediate revisions by the same user not shown) | |||
Line 53: | Line 53: | ||
|- style="background-color:#333;color:#c1c1c1;" | |- style="background-color:#333;color:#c1c1c1;" | ||
| style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 5}} | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 5}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|6 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 6|Intermediate C++ Game Programming [Destructors + SUPER IMPORTANT SHIT]]] | ||
+ | | style="border:1px solid grey;"|July 15, 2017 | ||
+ | | style="border:1px solid grey;"|49:50 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 6}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|7 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 7|Intermediate C++ Game Programming [Streams/std::string]]] | ||
+ | | style="border:1px solid grey;"|July 28, 2017 | ||
+ | | style="border:1px solid grey;"|42:39 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 7}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|8 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 8|Intermediate C++ Game Programming [std::vector<>]]] | ||
+ | | style="border:1px solid grey;"|August 6, 2017 | ||
+ | | style="border:1px solid grey;"|29:20 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 8}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|9 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 9|Intermediate C++ Game Programming [Werd Game]]] | ||
+ | | style="border:1px solid grey;"|August 17, 2017 | ||
+ | | style="border:1px solid grey;"|25:26 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 9}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|10 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 10|Intermediate C++ Game Programming [Sprite Drawing / Bitmap Loading]]] | ||
+ | | style="border:1px solid grey;"|August 19, 2017 | ||
+ | | style="border:1px solid grey;"|28:49 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 10}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|11 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 11|Intermediate C++ Game Programming [Sprite Clipping / Transparency / Subregions]]] | ||
+ | | style="border:1px solid grey;"|August 26, 2017 | ||
+ | | style="border:1px solid grey;"|19:48 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 11}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|12 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 12|Intermediate C++ Game Programming [Animated Sprite Character]]] | ||
+ | | style="border:1px solid grey;"|September 8, 2017 | ||
+ | | style="border:1px solid grey;"|25:40 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 12}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|13 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 13|Intermediate C++ Game Programming [Text Drawing]]] | ||
+ | | style="border:1px solid grey;"|September 16, 2017 | ||
+ | | style="border:1px solid grey;"|15:35 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 13}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|14 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 14|Intermediate C++ Game Programming [Template / Functor / Typedef]]] | ||
+ | | style="border:1px solid grey;"|September 24, 2017 | ||
+ | | style="border:1px solid grey;"|29:31 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 14}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|15 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 15|Intermediate C++ Game Programming [Iterators]]] | ||
+ | | style="border:1px solid grey;"|October 14, 2017 | ||
+ | | style="border:1px solid grey;"|25:58 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 15}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|16 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 16|Intermediate C++ Game Programming [algorithm / lambda functions]]] | ||
+ | | style="border:1px solid grey;"|October 26, 2017 | ||
+ | | style="border:1px solid grey;"|20:55 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 16}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|17 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 17|Intermediate C++ Game Programming [Inheritance/protected]]] | ||
+ | | style="border:1px solid grey;"|November 18, 2017 | ||
+ | | style="border:1px solid grey;"|26:33+ | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 17}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|18 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 18|Intermediate C++ Game Programming [Virtual Funcs./Polymorphism]]] | ||
+ | | style="border:1px solid grey;"|December 3, 2017 | ||
+ | | style="border:1px solid grey;"|24:20+ | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 18}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|19 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 19|Intermediate C++ Game Programming [dynamic_cast / RTTI typeid]]] | ||
+ | | style="border:1px solid grey;"|December 16, 2017 | ||
+ | | style="border:1px solid grey;"|19:05 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 19}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|20 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 20|Intermediate C++ Game Programming [rvalue reference / move semantics]]] | ||
+ | | style="border:1px solid grey;"|December 28, 2017 | ||
+ | | style="border:1px solid grey;"|25:05 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 20}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|21 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 21|Intermediate C++ Game Programming [Smart Pointers (unique_ptr)]]] | ||
+ | | style="border:1px solid grey;"|January 13, 2018 | ||
+ | | style="border:1px solid grey;"|26:25 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 21}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|22 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 22|Intermediate C++ Game Programming [Exceptions]]] | ||
+ | | style="border:1px solid grey;"|January 27, 2018 | ||
+ | | style="border:1px solid grey;"|26:17+ | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 22}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|23 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 23|Intermediate C++ Game Programming [Bitwise Operations]]] | ||
+ | | style="border:1px solid grey;"|February 11, 2018 | ||
+ | | style="border:1px solid grey;"|25:27 | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 23}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|24 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 24|Intermediate C++ Game Programming [Associative Containers]]] | ||
+ | | style="border:1px solid grey;"|February 23, 2018 | ||
+ | | style="border:1px solid grey;"|28:14+ | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 24}} | ||
+ | |- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;" | ||
+ | | style="border:1px solid grey;"|25 | ||
+ | | style="border:1px solid grey;text-align:left;"|[[Intermediate C++ Game Programming Tutorial 25|Intermediate C++ Game Programming [Function Pointers]]] | ||
+ | | style="border:1px solid grey;"|April 6, 2018 | ||
+ | | style="border:1px solid grey;"|28:00+ | ||
+ | |- style="background-color:#333;color:#c1c1c1;" | ||
+ | | style="border:1px solid grey;padding:8px;" colspan="4" | {{#lsth:Intermediate C++ Game Programming Tutorial 25}} | ||
|} | |} |
Latest revision as of 21:42, 23 November 2018
The intermediate series picks up where the Beginner C++ Game Programming Series left off. If you understand the main concepts of procedural programming and the basics of OOP, you can probably skip that series and start here. In this series, we start by covering some low-level topics like pointers, c-strings, basic I/O, and memory management. Then we ascend to a higher plane of existence, and explore the modern C++ way of handling these problems, learning about standard containers, streams, and algorithms. We will also be covering some more advanced OOP concepts like inheritance and polymorphism. Games will be made.
Topics Covered
Coming soon!
List of Tutorials
Tutorial Number | Title | Release Date | Runtime |
0 | Intermediate C++ Game Programming [Introduction] | April 29, 2017 | 8:25 |
This video talks about the course syllabus for the Intermediate C++ tutorial series (the shit we gonna learn) and the prerequisites for following this series (what you need to know, and what you need to have). Use it to get an idea of what this series is about, and whether you have what it takes to follow along. If you don't know this shit, check out the links below for my Beginner C++ series. Check out the list of topics learned in Beginner for more details on what you need to know to follow Intermediate. | |||
1 | Intermediate C++ Game Programming [Memory/Binary/Variables] | May 5, 2017 | 43:35 |
We've been using int s and float s and bool s this whole time, but have you ever wondered about a day in the life of a variable? In this video, we find that shit out, and so much more. We also learn about the cousins of int and float , adding to our arsenal of basic data types we can use in our programs. What's the endgame you ask? This stuff is gonna help us understand pointers and strings, and it's just interesting shit.
| |||
2 | Intermediate C++ Game Programming [Pointers] | May 13, 2017 | 29:56+ |
In this two-part tutorial we learn all about pointers and pointer-related bullshits. Part one focuses on the basics--the most common pointer operations and the basic underlying mechanisms. In part two, we take a look at some less commonly-used but still important pointer operations (pointer arithmetic), as well as some other concepts related to pointers. This tutorial introduces a lot of new concepts and features, but is light on practical examples. In the following tutorials we will get more hands-on practice with pointers, but also make sure to experiment with them on your own after finishing Tutorial 2. | |||
3 | Intermediate C++ Game Programming [C-strings] | May 27, 2017 | 39:54 |
In this tutorial we start from the barest bone starting point. Using only two simple functions: _putch() to output a character onto the console and _getch() to read a key from the keyboard, we build up a concept and theory of string storage, basic text input and output, and parsing operations. It might seem like reinventing the wheel, but you know what they say. The squeaky wheel gets() the cheese. Seriously though, this shit is gonna give us a solid foundation of low-level understanding on which we can later build up a fortress of high-level C++ awesomeness.
| |||
4 | Intermediate C++ Game Programming [File IO] | June 6, 2017 | 32:41 |
In this tutorial we tackle the topic of file IO using basic input output functions. We also learn about the basic concept of a stream, learn the difference between binary mode and text mode, and Chili even sneaks in a dank Cypress Hill reference. | |||
5 | Intermediate C++ Game Programming [Dynamic (Heap) new delete] | June 24, 2017 | 30:31 |
In this video we learn about dynamic memory allocation / heap allocation / free store allocation / whatever the fuck you wanna call it. What is this shit you ask? Watch the goddamn video! I gotta pack. | |||
6 | Intermediate C++ Game Programming [Destructors + SUPER IMPORTANT SHIT] | July 15, 2017 | 49:50 |
This tutorial is epoch-making; DO NOT SKIP IT. The ostensive main topic for this video is destructors, but that is not where its soul lies. After learning about dtors, we are ready to discuss a matter that is at the heart of C++: RAII. This will form the bridge between low-level memory management, and high level smart objects. We also discuss the important concept of deep copying and the Rule of 3, and related to this, we review the 4 original special member functions. AND there are discussion of a bunch of other random bullshit, like converting construction for example. It's a big video is what I'm tryin' to say here. | |||
7 | Intermediate C++ Game Programming [Streams/std::string] | July 28, 2017 | 42:39 |
We finally ditch our janky makeshift chili:: routines and use some real shit here. Standard streams (std::cin / std::cout / std::fstream ) are covered, and then we talk about string manipulation with std::string . We'll also cover some other less well-known dank C++ code memes, so check it out. Note that this video is more of an overview / whirlwind tour; it introduces various techniques and gives examples, but don't expect a detailed or exhaustive treatment here.
| |||
8 | Intermediate C++ Game Programming [std::vector<>] | August 6, 2017 | 29:20 |
std::vector<> : the sexiest of the standard containers. What does it have to do with mathematical vectors? Nothing at all. So why didn't they just name it std::dynamic_array<> ? Good question, good question. Next question. Seriously though, std::vector<> is the shit and we are going to be using it all the GD time from now on. Get hype.
| |||
9 | Intermediate C++ Game Programming [Werd Game] | August 17, 2017 | 25:26 |
We create an addictive little console game that will test both your vocabulary and your deductive powers while we flex our newfound std::muscles. | |||
10 | Intermediate C++ Game Programming [Sprite Drawing / Bitmap Loading] | August 19, 2017 | 28:49 |
The promised day has come. We're finally going to be loading images from bitmap files into memory and drawing them as sprites on the screen. This is where all that stuff we've been learning--data types, pointers, memory management, file access, etc.--is going to pay off bigtime. Also, get fukt massive PutPixel sprite functions; die in a garbage fire. | |||
11 | Intermediate C++ Game Programming [Sprite Clipping / Transparency / Subregions] | August 26, 2017 | 19:48 |
In this tutorial we learn how to draw parts (subregions) of images, we learn how to clip our shit so that it don't go off the screen (or off of any arbitrary rectangle we define in fact), and we learn to draw sprites with transparent pixels. | |||
12 | Intermediate C++ Game Programming [Animated Sprite Character] | September 8, 2017 | 25:40 |
In this tutorial Chili shows us an example of how to create a class for an animated sprite, and how to use a collection of these animated sprites to create a walking character class. | |||
13 | Intermediate C++ Game Programming [Text Drawing] | September 16, 2017 | 15:35 |
In this tutorial we learn how to draw text to the screen. Now we can make anime sex games. | |||
14 | Intermediate C++ Game Programming [Template / Functor / Typedef] | September 24, 2017 | 29:31 |
In this tutorial we learn how to make our own goddamn templates. So much power. Drunk with it we are. We also learn about the concept of a "functor" (dumb name, clever idea), which is pretty sweet and an integral part of the standard library. | |||
15 | Intermediate C++ Game Programming [Iterators] | October 14, 2017 | 25:58 |
Iterators are just fancy pointers for containers. In this video we learn how to use iterators, what they're good for, and why we go through all this goddamn trouble in the first place (answer: because they make my dick hard). | |||
16 | Intermediate C++ Game Programming [algorithm / lambda functions] | October 26, 2017 | 20:55 |
In the video we take a look at a couple of bangers from <algorithm> , and we learn what lambda functions are and how to use them.
| |||
17 | Intermediate C++ Game Programming [Inheritance/protected] | November 18, 2017 | 26:33+ |
This two-part lesson teaches the basics of inheritance, how it works and what motivates its use, with ample concrete coding examples. Also taught here is the keyword mutable , for some reason.
| |||
18 | Intermediate C++ Game Programming [Virtual Funcs./Polymorphism] | December 3, 2017 | 24:20+ |
Another two-parter here, and we got the real stuff now. Virtual functions allow you to unlock the true potential of inheritance in C++. You need to know this shit. | |||
19 | Intermediate C++ Game Programming [dynamic_cast / RTTI typeid] | December 16, 2017 | 19:05 |
In this video Chili teaches us how to figure out what our polymorphic pointers are actually pointing to (aka "type discovery"). Just note that although we can do this, it is generally a weaksauce way to go about things. Virtual functions are 1000% more hype than type discovery bullshit. Oh yeah, we also finally see all the C++ style casts united. | |||
20 | Intermediate C++ Game Programming [rvalue reference / move semantics] | December 28, 2017 | 25:05 |
In this video we learn about r-value reference and move semantics, which is perhaps the most important feature that was added in the C++11 update. This is going to allow us to manage and transfer our resources in a precise and efficient manner. It is sexy as fuck and I love it. | |||
21 | Intermediate C++ Game Programming [Smart Pointers (unique_ptr)] | January 13, 2018 | 26:25 |
Smart pointers. I know pointers, I have the smartest pointers. In this video we learn about std::unique_ptr<> , which is by far the most frequently-used and important smart pointer. std::shared_ptr<> can go suck on an egg.
| |||
22 | Intermediate C++ Game Programming [Exceptions] | January 27, 2018 | 26:17+ |
In this video we learn how to use C++ exceptions to take our error handling to the next level. There is a lot of fear and ignorance surrounding exceptions among "C++ Programmers", and Chili's goal here is to elevate you guys above the shit-tier level to coders who can actually use this feature to its full extent. The second part of this tutorial will give concrete, practical examples of using exceptions in an actual game scenario. | |||
23 | Intermediate C++ Game Programming [Bitwise Operations] | February 11, 2018 | 25:27 |
Bit twiddling is a lot of bullshit that is usually avoided when possible because it leads to ass code. Still, it is necessary in various situations, so you gotta learn this shit, and now is as good a time as any I guess. | |||
24 | Intermediate C++ Game Programming [Associative Containers] | February 23, 2018 | 28:14+ |
Associative containers are super useful, both as a convenient fast way to create dictionary or mapping for real-world problems like managing game resources, and as a data structure to help solve more abstract algorithmic computer science problems. And hash tables are fast as balls. | |||
25 | Intermediate C++ Game Programming [Function Pointers] | April 6, 2018 | 28:00+ |
Function pointers allow you to store and change what function is to be called dynamically at runtime. Combine that with containers to have collections of actions/behaviors that can be selected from, and then jam in the power std::function to allow you to wrap up pretty much any kind of callable thing and bring them together in one container. Groovy.
|