Difference between revisions of "Intermediate C++ Game Programming Series"

From Chilipedia
Jump to: navigation, search
(List of Tutorials)
(List of Tutorials)
 
(15 intermediate revisions by the same user not shown)
Line 116: Line 116:
 
|- 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 14}}
 
| 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 ints and floats and bools 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.