<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.planetchili.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thomas</id>
		<title>Chilipedia - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.planetchili.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thomas"/>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php/Special:Contributions/Thomas"/>
		<updated>2026-04-21T17:10:47Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_11&amp;diff=1406</id>
		<title>Beginner C++ Game Programming Tutorial 11</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_11&amp;diff=1406"/>
				<updated>2018-06-05T23:04:48Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: /* Const Correctness */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;References are sweet because they let us control our shit from far away. Remember the days when we had to actually get up to change the channel on the TV? Remember TV? Fuck that shit! Also, const correctness is for big dick gangstas that don't give any fucks.&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* References&lt;br /&gt;
* Passing by reference&lt;br /&gt;
* &amp;lt;code&amp;gt;[[const]]&amp;lt;/code&amp;gt; correctness (redux)&lt;br /&gt;
&lt;br /&gt;
== Const Correctness ==&lt;br /&gt;
The use of &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; as a means of communication by code and as method to prevent you and other people from shooting you (your code / themselves) in the dick is something that Chili finds cromulent. For some info on how &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; makes your code less shitty, check [https://isocpp.org/wiki/faq/const-correctness#const-and-type-safety this]. If you're still not sold (I happen to like being a human dumpster fire, thank you very much Chili), here is a video showing how using &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; can make your code a fuck of a lot faster: [https://www.youtube.com/watch?v=zBkNBP00wJE&amp;amp;feature=youtu.be&amp;amp;t=1455 cool beans].&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
Coming soon!&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
# Move the drawing code for &amp;lt;code&amp;gt;Dude&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;Game&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;Dude&amp;lt;/code&amp;gt; class.&lt;br /&gt;
# Make a second &amp;lt;code&amp;gt;DrawRect&amp;lt;/code&amp;gt; function that takes a single point (top left corner) and the dimensions as parameters.&lt;br /&gt;
&lt;br /&gt;
The solution is given in [https://youtu.be/MOhF8Z2jW0k this] video.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.planetchili.net/downloads/T11-Poo.zip Poo Code]&lt;br /&gt;
* [http://www.planetchili.net/downloads/T11-Rect.zip Rect Code]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 12|Next in series (Tutorial 12)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Series&amp;diff=1210</id>
		<title>Beginner C++ Game Programming Series</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Series&amp;diff=1210"/>
				<updated>2017-10-14T11:22:15Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The beginner series is meant to teach fundamental C++ programming concepts. It also covers some basic graphics programming theory. Also: making shitty little games. It is suitable even for those with zero programming experience. If this ain't your first rodeo, you can use this page to jump through the lessons, skipping any B.S. you already know.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
=== C++ Language - Procedural Basics ===&lt;br /&gt;
*Basic [[variable|variables]] (&amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;[[const]]&amp;lt;/code&amp;gt; specifier, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;&lt;br /&gt;
*Type casting (c-style (type) cast)&lt;br /&gt;
*Basic arithmetic operations (&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt;, precedence &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;, assignment &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt; etc.,&amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt; )&lt;br /&gt;
*Conditionals (&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;...&amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt;...&amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Boolean logic operations (&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Comparisons (&amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Loops (&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;...&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, range-based for)&lt;br /&gt;
*Writing functions / function parameters / return values / overloading functions&lt;br /&gt;
*References &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; / pass by reference-vs-pass by value&lt;br /&gt;
*Arrays &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; (and its difference from &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;)&lt;br /&gt;
*&amp;lt;code&amp;gt;enum class&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;using&amp;lt;/code&amp;gt;&lt;br /&gt;
*Forward declaration of classes to break circular &amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt; cycles&lt;br /&gt;
*Uniform initialization of classes / structs with &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ Language - Object Oriented Basics ===&lt;br /&gt;
*Creating objects, calling member functions&lt;br /&gt;
*Creating &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;es, data members, and member functions&lt;br /&gt;
*&amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; member access / encapsulation and data hiding&lt;br /&gt;
*&amp;lt;code&amp;gt;[[const]]&amp;lt;/code&amp;gt;/non-mutating member functions&lt;br /&gt;
*Writing constructors / initializing embedded objects&lt;br /&gt;
*Default (automatic) constructor / &amp;lt;code&amp;gt;= default&amp;lt;/code&amp;gt;;&lt;br /&gt;
*Delegating constructors&lt;br /&gt;
*&amp;lt;code&amp;gt;static&amp;lt;/code&amp;gt; member variables / &amp;lt;code&amp;gt;static constexpr&amp;lt;/code&amp;gt; member variables&lt;br /&gt;
*Nested classes&lt;br /&gt;
*Forward declaration to break circular dependencies&lt;br /&gt;
*Implementing operators for classes&lt;br /&gt;
&lt;br /&gt;
=== C++ Language - Standard Library ===&lt;br /&gt;
*Rng &amp;lt;random&amp;gt; &amp;lt;code&amp;gt;std::mt19973&amp;lt;/code&amp;gt; / uniform_distributions&lt;br /&gt;
*Utility functions &amp;lt;code&amp;gt;std::min&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;std::max&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;std::swap&amp;lt;/code&amp;gt;&lt;br /&gt;
*Math functions &amp;lt;code&amp;gt;std::abs&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;std::sqrt&amp;lt;/code&amp;gt;&lt;br /&gt;
*Measuring time &amp;lt;code&amp;gt;&amp;lt;chrono&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;std::chrono::steady_clock&amp;lt;/code&amp;gt; / duration&lt;br /&gt;
*Assertions &amp;lt;code&amp;gt;&amp;lt;assert.h&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Chili Framework ===&lt;br /&gt;
*Gfx: putpixel/screenwidth/height&lt;br /&gt;
*Color: getting/setting RGB color components&lt;br /&gt;
*Mouse/kbd: input (polled and event-driven)&lt;br /&gt;
*Sound: loading and playing sounds&lt;br /&gt;
=== Game Programming Concepts ===&lt;br /&gt;
*Game loop / frame based animation&lt;br /&gt;
*Grid coordinate systems and mappings&lt;br /&gt;
*Variable (measured) time step and fixed time step&lt;br /&gt;
*Basic rectangle collision detection and handling&lt;br /&gt;
=== General Programming Techniques ===&lt;br /&gt;
*Recursion&lt;br /&gt;
*Managing a partially-filled array&lt;br /&gt;
*Mapping a 2D array onto a 1D array&lt;br /&gt;
=== Graphics Concepts ===&lt;br /&gt;
*Compiled sprite&lt;br /&gt;
*Drawing filled rectangles and filled circles&lt;br /&gt;
*Drawing beveled graphics&lt;br /&gt;
*Pulsating color animation effect&lt;br /&gt;
=== Math / Physics Concepts ===&lt;br /&gt;
*Position / velocity / acceleration&lt;br /&gt;
*Rebounding off of a vertical/horizontal surface&lt;br /&gt;
*Basic vector math (vector add/sub/scale/length/normalize)&lt;br /&gt;
=== Other Skills ===&lt;br /&gt;
*Basic visual studio IDE usage &amp;amp; navigation&lt;br /&gt;
*Visual studio debugger&lt;br /&gt;
*Git + MSVC&lt;br /&gt;
*Basic understanding of compiler, linker, .h/.cpp files, .lib/.obj files&lt;br /&gt;
*Using regex find/replace in visual studio&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
This series is a reboot of Chili's [http://forum.planetchili.net/viewtopic.php?f=3&amp;amp;t=1792 original beginner series] launched back in 2012 (ah, the good old days). The way that Direct3D applications are built and the tools used have changed over the last 5 or so years, and the reboot updates the tutorials to reflect those changes. It also corrects some mistakes that were made, and is reworked to shorten the journey to hardware 3D graphics programming and to introduce object-oriented programming at an earlier stage.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 0|Beginner C++ Game Programming [Intro/Setup]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 30, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 1|Beginner C++ Game Programming [Function Calls/Syntax]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 1, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:35&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 2|Beginner C++ Game Programming [Variables/Operators]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 5, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 3|Beginner C++ Game Programming [if Statement/bool]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 9, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:11&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 4|Beginner C++ Game Programming [Animation/Member Variables]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 14, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16:13&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 5|Beginner C++ Game Programming [Comparison/Logical Operators]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 20, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 6|Beginner C++ Game Programming [Creating Functions]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 7|Beginner C++ Game Programming [Debugging]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 2, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:59&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 8|Beginner C++ Game Programming [Poo Game/RNG]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 10, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 9|Beginner C++ Game Programming [Creating Classes/static constexpr]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 17, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20:11&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 10|Beginner C++ Game Programming [Loops]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 4, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20:55&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 11|Beginner C++ Game Programming [References/const Correctness]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 20, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 12|Beginner C++ Game Programming [Constructors/Encapsulation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 29, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:55&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 13|Beginner C++ Game Programming [Arrays]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 11, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:41&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 14|Beginner C++ Game Programming [Snake Game]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 26, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:22+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 15|Beginner C++ Game Programming [Git in Visual Studio]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 11, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:25&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 16|Beginner C++ Game Programming [float/type casting]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 17|Beginner C++ Game Programming [chrono timestep/using namespace]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 25, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:11&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 18|Beginner C++ Game Programming [Compiler Confessions]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 8, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:35&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 19|Beginner C++ Game Programming [2D Vectors]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 14, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:09&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 20|Beginner C++ Game Programming [Fart-Annoyed]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 28, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:18+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 21|Beginner C++ Game Programming [2D Arrays/Circular Dependency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 11, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:22&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 22|Beginner C++ Game Programming [enum/switch/case]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 19, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 23|Beginner C++ Game Programming [Memesweeper]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 26, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 24|Beginner C++ Game Programming [Recursion]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 11, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:54&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 24}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Series ==&lt;br /&gt;
*[[Intermediate C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Series&amp;diff=1209</id>
		<title>Beginner C++ Game Programming Series</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Series&amp;diff=1209"/>
				<updated>2017-10-14T11:21:42Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The beginner series is meant to teach fundamental C++ programming concepts. It also covers some basic graphics programming theory. Also: making shitty little games. It is suitable even for those with zero programming experience. If this ain't your first rodeo, you can use this wiki to jump through the lessons, skipping any B.S. you already know.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
=== C++ Language - Procedural Basics ===&lt;br /&gt;
*Basic [[variable|variables]] (&amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;[[const]]&amp;lt;/code&amp;gt; specifier, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;&lt;br /&gt;
*Type casting (c-style (type) cast)&lt;br /&gt;
*Basic arithmetic operations (&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt;, precedence &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;, assignment &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt; etc.,&amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt; )&lt;br /&gt;
*Conditionals (&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;...&amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt;...&amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Boolean logic operations (&amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;&amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Comparisons (&amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;)&lt;br /&gt;
*Loops (&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;...&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, range-based for)&lt;br /&gt;
*Writing functions / function parameters / return values / overloading functions&lt;br /&gt;
*References &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; / pass by reference-vs-pass by value&lt;br /&gt;
*Arrays &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; (and its difference from &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;)&lt;br /&gt;
*&amp;lt;code&amp;gt;enum class&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;using&amp;lt;/code&amp;gt;&lt;br /&gt;
*Forward declaration of classes to break circular &amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt; cycles&lt;br /&gt;
*Uniform initialization of classes / structs with &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ Language - Object Oriented Basics ===&lt;br /&gt;
*Creating objects, calling member functions&lt;br /&gt;
*Creating &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;es, data members, and member functions&lt;br /&gt;
*&amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; member access / encapsulation and data hiding&lt;br /&gt;
*&amp;lt;code&amp;gt;[[const]]&amp;lt;/code&amp;gt;/non-mutating member functions&lt;br /&gt;
*Writing constructors / initializing embedded objects&lt;br /&gt;
*Default (automatic) constructor / &amp;lt;code&amp;gt;= default&amp;lt;/code&amp;gt;;&lt;br /&gt;
*Delegating constructors&lt;br /&gt;
*&amp;lt;code&amp;gt;static&amp;lt;/code&amp;gt; member variables / &amp;lt;code&amp;gt;static constexpr&amp;lt;/code&amp;gt; member variables&lt;br /&gt;
*Nested classes&lt;br /&gt;
*Forward declaration to break circular dependencies&lt;br /&gt;
*Implementing operators for classes&lt;br /&gt;
&lt;br /&gt;
=== C++ Language - Standard Library ===&lt;br /&gt;
*Rng &amp;lt;random&amp;gt; &amp;lt;code&amp;gt;std::mt19973&amp;lt;/code&amp;gt; / uniform_distributions&lt;br /&gt;
*Utility functions &amp;lt;code&amp;gt;std::min&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;std::max&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;std::swap&amp;lt;/code&amp;gt;&lt;br /&gt;
*Math functions &amp;lt;code&amp;gt;std::abs&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;std::sqrt&amp;lt;/code&amp;gt;&lt;br /&gt;
*Measuring time &amp;lt;code&amp;gt;&amp;lt;chrono&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;std::chrono::steady_clock&amp;lt;/code&amp;gt; / duration&lt;br /&gt;
*Assertions &amp;lt;code&amp;gt;&amp;lt;assert.h&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
=== Chili Framework ===&lt;br /&gt;
*Gfx: putpixel/screenwidth/height&lt;br /&gt;
*Color: getting/setting RGB color components&lt;br /&gt;
*Mouse/kbd: input (polled and event-driven)&lt;br /&gt;
*Sound: loading and playing sounds&lt;br /&gt;
=== Game Programming Concepts ===&lt;br /&gt;
*Game loop / frame based animation&lt;br /&gt;
*Grid coordinate systems and mappings&lt;br /&gt;
*Variable (measured) time step and fixed time step&lt;br /&gt;
*Basic rectangle collision detection and handling&lt;br /&gt;
=== General Programming Techniques ===&lt;br /&gt;
*Recursion&lt;br /&gt;
*Managing a partially-filled array&lt;br /&gt;
*Mapping a 2D array onto a 1D array&lt;br /&gt;
=== Graphics Concepts ===&lt;br /&gt;
*Compiled sprite&lt;br /&gt;
*Drawing filled rectangles and filled circles&lt;br /&gt;
*Drawing beveled graphics&lt;br /&gt;
*Pulsating color animation effect&lt;br /&gt;
=== Math / Physics Concepts ===&lt;br /&gt;
*Position / velocity / acceleration&lt;br /&gt;
*Rebounding off of a vertical/horizontal surface&lt;br /&gt;
*Basic vector math (vector add/sub/scale/length/normalize)&lt;br /&gt;
=== Other Skills ===&lt;br /&gt;
*Basic visual studio IDE usage &amp;amp; navigation&lt;br /&gt;
*Visual studio debugger&lt;br /&gt;
*Git + MSVC&lt;br /&gt;
*Basic understanding of compiler, linker, .h/.cpp files, .lib/.obj files&lt;br /&gt;
*Using regex find/replace in visual studio&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
This series is a reboot of Chili's [http://forum.planetchili.net/viewtopic.php?f=3&amp;amp;t=1792 original beginner series] launched back in 2012 (ah, the good old days). The way that Direct3D applications are built and the tools used have changed over the last 5 or so years, and the reboot updates the tutorials to reflect those changes. It also corrects some mistakes that were made, and is reworked to shorten the journey to hardware 3D graphics programming and to introduce object-oriented programming at an earlier stage.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 0|Beginner C++ Game Programming [Intro/Setup]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 30, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 1|Beginner C++ Game Programming [Function Calls/Syntax]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 1, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:35&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 2|Beginner C++ Game Programming [Variables/Operators]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 5, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 3|Beginner C++ Game Programming [if Statement/bool]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 9, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:11&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 4|Beginner C++ Game Programming [Animation/Member Variables]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 14, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16:13&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 5|Beginner C++ Game Programming [Comparison/Logical Operators]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 20, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 6|Beginner C++ Game Programming [Creating Functions]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 7|Beginner C++ Game Programming [Debugging]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 2, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:59&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 8|Beginner C++ Game Programming [Poo Game/RNG]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 10, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 9|Beginner C++ Game Programming [Creating Classes/static constexpr]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 17, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20:11&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 10|Beginner C++ Game Programming [Loops]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 4, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20:55&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 11|Beginner C++ Game Programming [References/const Correctness]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 20, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 12|Beginner C++ Game Programming [Constructors/Encapsulation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 29, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:55&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 13|Beginner C++ Game Programming [Arrays]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 11, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:41&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 14|Beginner C++ Game Programming [Snake Game]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 26, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:22+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 15|Beginner C++ Game Programming [Git in Visual Studio]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 11, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:25&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 16|Beginner C++ Game Programming [float/type casting]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 17|Beginner C++ Game Programming [chrono timestep/using namespace]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 25, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:11&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 18|Beginner C++ Game Programming [Compiler Confessions]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 8, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:35&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 19|Beginner C++ Game Programming [2D Vectors]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 14, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:09&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 20|Beginner C++ Game Programming [Fart-Annoyed]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 28, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:18+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 21|Beginner C++ Game Programming [2D Arrays/Circular Dependency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 11, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:22&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 22|Beginner C++ Game Programming [enum/switch/case]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 19, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 23|Beginner C++ Game Programming [Memesweeper]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 26, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Beginner C++ Game Programming Tutorial 24|Beginner C++ Game Programming [Recursion]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 11, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:54&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Beginner C++ Game Programming Tutorial 24}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Series ==&lt;br /&gt;
*[[Intermediate C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Variable&amp;diff=1183</id>
		<title>Variable</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Variable&amp;diff=1183"/>
				<updated>2017-10-11T01:49:49Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Variables are like little boxes to store data in and read data from, typically numbers. What's in the box?!&lt;br /&gt;
&lt;br /&gt;
== How to Declare a Variable ==&lt;br /&gt;
You declare/create a variable by stating its type and then stating its name: &amp;lt;code&amp;gt;int myVar;&amp;lt;/code&amp;gt;. You can also give an initial value for the variable during creation using the assignment operator: &amp;lt;code&amp;gt;int myVar = 69;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Variable Names ==&lt;br /&gt;
Variables names (the same as any other type of user-defined symbol) can contain any number, letter, and the underscore character. &lt;br /&gt;
&lt;br /&gt;
-They cannot start with a number. &lt;br /&gt;
&lt;br /&gt;
-Case matters (&amp;lt;code&amp;gt;DirtayBoi69&amp;lt;/code&amp;gt; is not the same symbol as &amp;lt;code&amp;gt;dirtayboi69&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
-It is recommended to not use underscore for the name prefix because some of them are reserved &amp;lt;code&amp;gt;_DirtayBoi69&amp;lt;/code&amp;gt;. But you can use them as you will in the middle &amp;lt;code&amp;gt;Dirtay_Boi_69&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Variable Types =&lt;br /&gt;
&lt;br /&gt;
== Variable Size ==&lt;br /&gt;
&lt;br /&gt;
Everytime you use a variable, it has to be stored in memory. And the size depends of the type you are using.&lt;br /&gt;
&lt;br /&gt;
Variables size can be found by using the sizeof function. &lt;br /&gt;
&lt;br /&gt;
The size of most types are not fixed and may depend of the architecture (32 or 64 bits) but every type is guaranteed to have a minimum size to store the desired value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot; &amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; sizeof(int);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
As an example, a variable of type int will occupy 4 bytes of memory, but not always as said before.&lt;br /&gt;
So the console will usually output 4 for this code. &lt;br /&gt;
In the next paragraphs we are talking about the average size and those numbers are valid for most computers. But don't assume they will always be the same.&lt;br /&gt;
&lt;br /&gt;
=== Integral types ===&lt;br /&gt;
Integral types are variables that store integers.  There are signed and unsigned versions of each integral type and the built-in or simple types are char, short, int/long, and long long/uint64_t.  Generally, for the signed versions, you do not have to specify signed, but for unsigned versions; unsigned char, unsigned short, unsigned int, unsigned long long, you do have to specify.  Unsigned integrals are integers that don't have negative numbers, they go from 0 to double + 1 their signed counterparts in the positive direction.&lt;br /&gt;
&lt;br /&gt;
As an example, signed char goes from -128 to 127 whereas unsigned char goes from 0 to 255.&lt;br /&gt;
=== char ===&lt;br /&gt;
&amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; variables store an integer ranging from -128 to 127.  They occupy 1 byte of memory and are most commonly used for narrow text/string manipulation.  &lt;br /&gt;
=== short===&lt;br /&gt;
&amp;lt;code&amp;gt;short&amp;lt;/code&amp;gt; variables store an integer ranging from -32768 to 32767.  They usually occupy 2 bytes of memory.  An alias for short is wchar_t and is used for wide character text and strings used to extend support for languages with more characters than the char range can handle.&lt;br /&gt;
=== long long ===&lt;br /&gt;
&amp;lt;code&amp;gt;long long&amp;lt;/code&amp;gt; variables store an integer ranging from –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.  They usually  occupy 8 bytes in memory.  The type long long can also be referred to as int64_t because it is 64 bits long.&lt;br /&gt;
=== int ===&lt;br /&gt;
&amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; variables store an integer (non-fractional number) ranging from -2147483648 to 2147483647. They usually occupy 4 bytes of memory.&lt;br /&gt;
=== bool ===&lt;br /&gt;
&amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; variables store a Boolean logic value (true or false). They usually occupy 1 bytes of memory. The &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; type is used to control the operation of flow control statements, such as the &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; statement.&lt;br /&gt;
&lt;br /&gt;
== The const Specifier ==&lt;br /&gt;
Main article: [[const]]&lt;br /&gt;
&lt;br /&gt;
You can specify that a variable's value cannot be changed by declaring it like this: &amp;lt;code&amp;gt;const int blazeItFgt = 420;&amp;lt;/code&amp;gt;. Doing so can protect your code from unintentional bugs and is generally considered a fucking good practice called 'const correctness'. Note that when you declare a variable as &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt;, you need to initialize it during creation because you cannot assign to it afterwards.&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Variable&amp;diff=1182</id>
		<title>Variable</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Variable&amp;diff=1182"/>
				<updated>2017-10-11T01:49:14Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Variables are like little boxes to store data in and read data from, typically numbers. What's in the box?!&lt;br /&gt;
&lt;br /&gt;
== How to Declare a Variable ==&lt;br /&gt;
You declare/create a variable by stating its type and then stating its name: &amp;lt;code&amp;gt;int myVar;&amp;lt;/code&amp;gt;. You can also give an initial value for the variable during creation using the assignment operator: &amp;lt;code&amp;gt;int myVar = 69;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Variable Names ==&lt;br /&gt;
Variables names (the same as any other type of user-defined symbol) can contain any number, letter, and the underscore character. &lt;br /&gt;
&lt;br /&gt;
-They cannot start with a number. &lt;br /&gt;
&lt;br /&gt;
-Case matters (&amp;lt;code&amp;gt;DirtayBoi69&amp;lt;/code&amp;gt; is not the same symbol as &amp;lt;code&amp;gt;dirtayboi69&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
-It is recommended to not use underscore for the name prefix because some of them are reserved &amp;lt;code&amp;gt;_DirtayBoi69&amp;lt;/code&amp;gt;. But you can use them as you will in the middle &amp;lt;code&amp;gt;Dirtay_Boi_69&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Variable Types =&lt;br /&gt;
&lt;br /&gt;
== Variable Size ==&lt;br /&gt;
&lt;br /&gt;
Everytime you use a variable, it has to be stored in memory. And the size depends of the type you are using.&lt;br /&gt;
&lt;br /&gt;
Variables size can be found by using the sizeof function. &lt;br /&gt;
&lt;br /&gt;
The size of most types are not fixed and may depend of the architecture (32 or 64 bits) but every type is guaranteed to have a minimum size to store the desired value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot; &amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; sizeof(int);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
As an example, a variable of type int will occupy 4 bytes of memory, but not always as said before.&lt;br /&gt;
So the console will usually output 4 for this code. &lt;br /&gt;
In the next paragraphs we are talking about the average size and those numbers are valid for most computers. But don't assume they will always be the same.&lt;br /&gt;
&lt;br /&gt;
=== Integral types ===&lt;br /&gt;
Integral types are variables that store integers.  There are signed and unsigned versions of each integral type and the built-in or simple types are char, short, int/long, and long long/uint64_t.  Generally, for the signed versions, you do not have to specify signed, but for unsigned versions; unsigned char, unsigned short, unsigned int, unsigned long long, you do have to specify.  Unsigned integrals are integers that don't have negative numbers, they go from 0 to double + 1 their signed counterparts in the positive direction.&lt;br /&gt;
&lt;br /&gt;
As an example, signed char goes from -128 to 127 whereas unsigned char goes from 0 to 255.&lt;br /&gt;
=== char ===&lt;br /&gt;
&amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; variables store an integer ranging from -128 to 127.  They occupy 1 byte of memory and are most commonly used for narrow text/string manipulation.  &lt;br /&gt;
=== short===&lt;br /&gt;
&amp;lt;code&amp;gt;short&amp;lt;/code&amp;gt; variables store an integer ranging from -32768 to 32767.  They usually occupy 2 bytes of memory.  An alias for short is wchar_t and is used for wide character text and strings used to extend support for languages with more characters than the char range can handle.&lt;br /&gt;
=== long long ===&lt;br /&gt;
&amp;lt;code&amp;gt;long long&amp;lt;/code&amp;gt; variables store an integer ranging from –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.  They usually  occupy 8 bytes in memory.  The type long long can also be referred to as int64_t because it is 64 bits long.&lt;br /&gt;
=== int ===&lt;br /&gt;
&amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; variables store an integer (non-fractional number) ranging from -2147483648 to 2147483647. They occupy 4 bytes of memory.&lt;br /&gt;
=== bool ===&lt;br /&gt;
&amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; variables store a Boolean logic value (true or false). They usually occupy 4 bytes of memory. The &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; type is used to control the operation of flow control statements, such as the &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; statement.&lt;br /&gt;
&lt;br /&gt;
== The const Specifier ==&lt;br /&gt;
Main article: [[const]]&lt;br /&gt;
&lt;br /&gt;
You can specify that a variable's value cannot be changed by declaring it like this: &amp;lt;code&amp;gt;const int blazeItFgt = 420;&amp;lt;/code&amp;gt;. Doing so can protect your code from unintentional bugs and is generally considered a fucking good practice called 'const correctness'. Note that when you declare a variable as &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt;, you need to initialize it during creation because you cannot assign to it afterwards.&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Main_Page&amp;diff=1154</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Main_Page&amp;diff=1154"/>
				<updated>2017-09-21T05:31:31Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Cplogo-big.png|right|caption]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;color:#BFB;font-size:180%;font-weight:bold;&amp;quot;&amp;gt;Welcome to Chilipedia!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This is Chilipedia. You can do anything at Chilipedia, anything at all. The only limit is yourself. The infinite is possible at Chilipedia. The unattainable is [http://zombo.com unknown] at Chilipedia. Welcome to Chilipedia.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If this is your first time at Chilipedia, might I recommend the [[Beginner C++ Game Programming Series]] page, it is ''especially'' derpy and unprofessional today. If you're looking for something a little spicier, check out the [[Intermediate C++ Game Programming Series]], or for something with a little more depth, check out the [[3D Fundamentals Series]]. Or you can always order à la carte from among our [[Special:AllPages|extensive selection of pure garbage]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For all other things that are Chili-related, check out the [http://www.planetchili.net Planet Chili Nexus].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Also if you are a patreon, i have some stuff for you on the [http://wiki.planetchili.net/index.php?title=Patreon_Exclusive_Content Patreon Exclusive Content] page.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Patreon_Exclusive_Content&amp;diff=1153</id>
		<title>Patreon Exclusive Content</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Patreon_Exclusive_Content&amp;diff=1153"/>
				<updated>2017-09-21T05:04:46Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Patrons of Planet Chili have access to exclusive content produced in appreciation of your support. These videos are unlocked by using the Chili Bucks that you receive for your pledges (every $1 pledged earns one Chili Buck). There are also about 1.5 ~ 2 bonus videos per month that are automatically unlocked for active patrons (Chili Bucks can be spent to unlock back issues of these videos).&lt;br /&gt;
&lt;br /&gt;
These videos are less produced and scripted than the main tutorial series. They generally take the form of candid views into Chili messing with stuff he is interested in, rather than detailed tutorials. The main reason for this is time constraints: if the Patreon content were as work-intensive as the mainline stuff, the tutorials would crawl to a stop, and that would run counter to the spirit of this Patreon.&lt;br /&gt;
&lt;br /&gt;
== SlideFucker 3000 ==&lt;br /&gt;
In this series Chili endeavors to create an AI agent in C++ that can solve a classic puzzle game (8/15/24 sliding puzzle). This agent will not only solve the base problem, but will also be able to use computer vision to read the puzzle state from the screen (with [http://opencv.org OpenCV]), and use input automation to enter the solution into the game (with AutoIt). There will be no reversing/process manipulation involved; the agent will be required interact with the game just as a human user would.&lt;br /&gt;
Check out the [https://www.youtube.com/watch?v=ugujLVv_k2E Mission Statement video] for more infos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:5%;border:1px solid grey;&amp;quot;|#&lt;br /&gt;
| style=&amp;quot;width:52%;border:1px solid grey;&amp;quot;|Topic&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:11%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Cost&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Bonus&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Announcement / Overview&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Apr 29, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5:49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|FREE&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili delivers the SlideFucker 3000 mission statement and outlines the main phases of development.&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Color Filtering / Thresholding / Contour Detection&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Apr 29, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|58:18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili gets the ball rolling by writing some code that processes a desktop screenshot to detect the game region and then to subsequently detect the individual sliding tiles therein. Tons of OpenCV shenanigans, with more to come ;)&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Digit Recognition with KNN Classifier&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 6, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:20:00&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili gets a k-nearest neighbor classifier trained up on the image data of our digits, and then refactors the recognition code into a neat class for recognizing the digits on puzzle tiles and converting them to integer values.&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Board Position Class&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55:19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili finishes the board capture by parsing the positions of the tiles on the board. We create a new data type &amp;lt;code&amp;gt;BoardPosition&amp;lt;/code&amp;gt; that will form the core of the AI solver, storing captured/explored board positions and providing a suite of fundamental operations thereon. At the end of this video, there is a brief discussion on the AI routine (A* heuristic search) that we will be using to solve the problem, setting the stage for Part 4.&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|A* Move Sequence Search&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 27, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:17:37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili implements the A* heuristic search algorithm to find optimal solutions for the sliding tile puzzle game. Mistakes! They were made! Bugs were also eliminated with extreme prejudice. But just when you think you're out... they pull you back in!&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Completing A* Solver with Divide-and-Conquer&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Aug 31, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:05:30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video we modify the solver to break the problem down into smaller sub-problems. We do this with a sexy heuristic functor system that allows us to swap out different functors, as well as a sub-problem mapper. The is the last video on the AI solver logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chili Fucks Unreal Engine 4 ==&lt;br /&gt;
This series chronicles Chili's journey through the atrociously-documented world of Unreal Engine 4 C++ development. It is not a tutorial ''per ce'', but rather a candid look at how someone might go about learning a new platform. Expect many expletives. Episodes of this series are currently being offered gratis to active Patrons as a Patreon perk at the time of their release.&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:5%;border:1px solid grey;&amp;quot;|#&lt;br /&gt;
| style=&amp;quot;width:52%;border:1px solid grey;&amp;quot;|Topic&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:11%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Cost&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Bonus&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Project Setup / Inherit &amp;amp; Extend Actor&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Oct 9, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42:54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili takes his first steps into the world of UE4 C++ dev, tackling the first official tutorial. We learn how to expose ourselves to UE4. Cones will hover and burn. [https://docs.unrealengine.com/latest/INT/Programming/QuickStart/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Extend Pawn / User Input / Attach Components&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Nov 1, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48:27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | This video covers extending the Pawn class to create a user agent, and implementing keyboard controls for the pawn. We also create components and attach them to the Pawn. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/PlayerInput/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Timers / Blueprint-C++ Interop Scripting&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Nov 16, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55:18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | This video covers the topic of exposing C++ member functions to the UE4 Blueprint scripting engine so that they may either be called or implemented in Blueprints. We also do said calling and implementing inside of Blueprints (this is not C++, Chili does not approve). The tutorial also covers using UE4 timers. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/VariablesTimersEvents/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Cameras / TArray&amp;lt;&amp;gt;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Nov 24, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39:52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video we create some cameras, attach them to shit, switch between them, and move them the fuck around. We also check out the UE4 TArray&amp;lt;&amp;gt; container class and how it can be exposed to / manipulated from the editor environment. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/AutoCamera/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Logging / Map &amp;amp; Game Mode / Mouse / Jumping / Importing &amp;amp; Adding Rigged Mesh&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Dec 14, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:09:01&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | This video is the first part of a multi-part miniseries covering the official C++ FPS tutorial for UE4. In this video we do a bunch of setup bullshit, fool around with logging, do some input mapping bullshit featuring the mouse and some jump controls, and import and attach a rigged mesh to our Character, who looks like a half-starved Michelin Man for fucks sake. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/FirstPersonShooter/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Spawning Actors Dynamically / Projectile / Collision Physics&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Jan 9, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41:50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | This video is the second part of a multi-part miniseries covering the official C++ FPS tutorial for UE4. In this video we implement the action of shooting a projectile. Topics covered include dynamic spawning of actors, setting up projectile motion, and setting up physics collisions. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/FirstPersonShooter/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Character Mesh Animation&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Feb 21, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41:33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | [State Machine] This video is the third (final) part of a multi-part miniseries covering the official C++ FPS tutorial for UE4. In this video we implement the animation of the first person mesh using the state machine animation system. State machines are dope shit. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/FirstPersonShooter/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Applying forces / Camera attachment / Detecting collision and communicating between actors &lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Apr 10, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:24:08&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | [Ball Toucher] In this video we Free Chili! We go off the rails and do some creative experimentation alone. The idea is to create a simple rolling ball game where you have to collect a number of items. Ball is moved by applying forces, causing it to roll. The camera is stabilized using sockets and the spring arm component. We also deal with handling overlap events between actors and communication between actors. It's good shit.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ASM and Chill with Chili ==&lt;br /&gt;
This series features Chili messing around x86 assembly programming while thinking out loud and giving various narrations and sporadic explanations. We will start off with 16-bit DOS assembly under TASM/DOSBox, and then perhaps move onto some supervisor mode (operating systems programming) stuff under MASM 32-bit x86 or x64 via VirtualBox.&lt;br /&gt;
&lt;br /&gt;
This is not a full-fledged hold-your-dick-and-wipe-your-ass tutorial series like the Beginner C++ stuff, but there are explanations given along the way and some links to useful material. Any questions you have can be answered by asking on the forum or the Discord.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:5%;border:1px solid grey;&amp;quot;|#&lt;br /&gt;
| style=&amp;quot;width:52%;border:1px solid grey;&amp;quot;|Topic&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:11%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Cost&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Bonus&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|simple source setup / building COM files / system interrupt services / basic computations / debugging with debug.exe&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Dec 28, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:22:00&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|PUBLIC&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili reacquaints himself with TASM and x86 assembly, going over the basics of setting up a .asm source file, and calling some system services (BIOS int 10h, int 16h, DOS int 21h). We then mess with some looping and counting, defining some global data and getting pointers (offsets), and then we go all the way in and do some real calculations, fucking shit up real good along the way. But debug.exe has got our back, and we squash the bugs while also showing you guys the machine code being executed instruction by instruction by the CPU, and how it affects the state of the registers and RAM. [[ASM and Chill with Chili 1|Click here for the page for this tutorial.]]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Functions and Stack Management&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Jan 3, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:27:42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|No&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili takes us on a magic carpet ride through the enchanting world of managing stack frames and calling functions. You'll never want to go back to high-level languages again where this stuff is all taken of you. Why would you, when you're having so much fun???!!! [[ASM and Chill with Chili 1|Click here for the page for the first tutorial of this series (contains download link).]] Contact Chili over Patreon to exchange CBuck$ for the unlock today!&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Segment:Offset Addressing &amp;amp; Video Memory&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Feb 5, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38:02&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|No&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | We learn about the weird wild world of x86 segment addressing (different pointers point to the same location in memory??? absurd!) and we draw dumb rectangles on the screen by pokin around in video memory. Also, &amp;lt;code&amp;gt;rep stosw&amp;lt;/code&amp;gt; is pretty cool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Patreon_Exclusive_Content&amp;diff=1152</id>
		<title>Patreon Exclusive Content</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Patreon_Exclusive_Content&amp;diff=1152"/>
				<updated>2017-09-21T04:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Patrons of Planet Chili have access to exclusive content produced in appreciation of your support. These videos are unlocked by using the Chili Bucks that you receive for your pledges (every $1 pledged earns one Chili Buck). There are also about 1.5 ~ 2 bonus videos per month that are automatically unlocked for active patrons (Chili Bucks can be spent to unlock back issues of these videos).&lt;br /&gt;
&lt;br /&gt;
These videos are less produced and scripted than the main tutorial series. They generally take the form of candid views into Chili messing with stuff he is interested in, rather than detailed tutorials. The main reason for this is time constraints: if the Patreon content were as work-intensive as the mainline stuff, the tutorials would crawl to a stop, and that would run counter to the spirit of this Patreon.&lt;br /&gt;
&lt;br /&gt;
== SlideFucker 3000 ==&lt;br /&gt;
In this series Chili endeavors to create an AI agent in C++ that can solve a classic puzzle game (8/15/24 sliding puzzle). This agent will not only solve the base problem, but will also be able to use computer vision to read the puzzle state from the screen (with OpenCV), and use input automation to enter the solution into the game (with AutoIt). There will be no reversing/process manipulation involved; the agent will be required interact with the game just as a human user would.&lt;br /&gt;
Check out the [https://www.youtube.com/watch?v=ugujLVv_k2E Mission Statement video] for more infos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:5%;border:1px solid grey;&amp;quot;|#&lt;br /&gt;
| style=&amp;quot;width:52%;border:1px solid grey;&amp;quot;|Topic&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:11%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Cost&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Bonus&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Announcement / Overview&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Apr 29, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5:49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|FREE&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili delivers the SlideFucker 3000 mission statement and outlines the main phases of development.&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Color Filtering / Thresholding / Contour Detection&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Apr 29, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|58:18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili gets the ball rolling by writing some code that processes a desktop screenshot to detect the game region and then to subsequently detect the individual sliding tiles therein. Tons of OpenCV shenanigans, with more to come ;)&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Digit Recognition with KNN Classifier&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 6, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:20:00&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili gets a k-nearest neighbor classifier trained up on the image data of our digits, and then refactors the recognition code into a neat class for recognizing the digits on puzzle tiles and converting them to integer values.&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Board Position Class&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55:19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili finishes the board capture by parsing the positions of the tiles on the board. We create a new data type &amp;lt;code&amp;gt;BoardPosition&amp;lt;/code&amp;gt; that will form the core of the AI solver, storing captured/explored board positions and providing a suite of fundamental operations thereon. At the end of this video, there is a brief discussion on the AI routine (A* heuristic search) that we will be using to solve the problem, setting the stage for Part 4.&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|A* Move Sequence Search&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 27, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:17:37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili implements the A* heuristic search algorithm to find optimal solutions for the sliding tile puzzle game. Mistakes! They were made! Bugs were also eliminated with extreme prejudice. But just when you think you're out... they pull you back in!&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Completing A* Solver with Divide-and-Conquer&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Aug 31, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:05:30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|NO&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video we modify the solver to break the problem down into smaller sub-problems. We do this with a sexy heuristic functor system that allows us to swap out different functors, as well as a sub-problem mapper. The is the last video on the AI solver logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chili Fucks Unreal Engine 4 ==&lt;br /&gt;
This series chronicles Chili's journey through the atrociously-documented world of Unreal Engine 4 C++ development. It is not a tutorial ''per ce'', but rather a candid look at how someone might go about learning a new platform. Expect many expletives. Episodes of this series are currently being offered gratis to active Patrons as a Patreon perk at the time of their release.&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:5%;border:1px solid grey;&amp;quot;|#&lt;br /&gt;
| style=&amp;quot;width:52%;border:1px solid grey;&amp;quot;|Topic&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:11%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Cost&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Bonus&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Project Setup / Inherit &amp;amp; Extend Actor&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Oct 9, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42:54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili takes his first steps into the world of UE4 C++ dev, tackling the first official tutorial. We learn how to expose ourselves to UE4. Cones will hover and burn. [https://docs.unrealengine.com/latest/INT/Programming/QuickStart/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Extend Pawn / User Input / Attach Components&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Nov 1, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48:27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | This video covers extending the Pawn class to create a user agent, and implementing keyboard controls for the pawn. We also create components and attach them to the Pawn. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/PlayerInput/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Timers / Blueprint-C++ Interop Scripting&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Nov 16, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55:18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | This video covers the topic of exposing C++ member functions to the UE4 Blueprint scripting engine so that they may either be called or implemented in Blueprints. We also do said calling and implementing inside of Blueprints (this is not C++, Chili does not approve). The tutorial also covers using UE4 timers. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/VariablesTimersEvents/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Cameras / TArray&amp;lt;&amp;gt;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Nov 24, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39:52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video we create some cameras, attach them to shit, switch between them, and move them the fuck around. We also check out the UE4 TArray&amp;lt;&amp;gt; container class and how it can be exposed to / manipulated from the editor environment. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/AutoCamera/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Logging / Map &amp;amp; Game Mode / Mouse / Jumping / Importing &amp;amp; Adding Rigged Mesh&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Dec 14, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:09:01&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | This video is the first part of a multi-part miniseries covering the official C++ FPS tutorial for UE4. In this video we do a bunch of setup bullshit, fool around with logging, do some input mapping bullshit featuring the mouse and some jump controls, and import and attach a rigged mesh to our Character, who looks like a half-starved Michelin Man for fucks sake. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/FirstPersonShooter/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Spawning Actors Dynamically / Projectile / Collision Physics&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Jan 9, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41:50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | This video is the second part of a multi-part miniseries covering the official C++ FPS tutorial for UE4. In this video we implement the action of shooting a projectile. Topics covered include dynamic spawning of actors, setting up projectile motion, and setting up physics collisions. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/FirstPersonShooter/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Character Mesh Animation&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Feb 21, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41:33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | [State Machine] This video is the third (final) part of a multi-part miniseries covering the official C++ FPS tutorial for UE4. In this video we implement the animation of the first person mesh using the state machine animation system. State machines are dope shit. [https://docs.unrealengine.com/latest/INT/Programming/Tutorials/FirstPersonShooter/index.html Original Tutorial Link]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Applying forces / Camera attachment / Detecting collision and communicating between actors &lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Apr 10, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:24:08&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|YES&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | [Ball Toucher] In this video we Free Chili! We go off the rails and do some creative experimentation alone. The idea is to create a simple rolling ball game where you have to collect a number of items. Ball is moved by applying forces, causing it to roll. The camera is stabilized using sockets and the spring arm component. We also deal with handling overlap events between actors and communication between actors. It's good shit.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ASM and Chill with Chili ==&lt;br /&gt;
This series features Chili messing around x86 assembly programming while thinking out loud and giving various narrations and sporadic explanations. We will start off with 16-bit DOS assembly under TASM/DOSBox, and then perhaps move onto some supervisor mode (operating systems programming) stuff under MASM 32-bit x86 or x64 via VirtualBox.&lt;br /&gt;
&lt;br /&gt;
This is not a full-fledged hold-your-dick-and-wipe-your-ass tutorial series like the Beginner C++ stuff, but there are explanations given along the way and some links to useful material. Any questions you have can be answered by asking on the forum or the Discord.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:5%;border:1px solid grey;&amp;quot;|#&lt;br /&gt;
| style=&amp;quot;width:52%;border:1px solid grey;&amp;quot;|Topic&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:11%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Cost&lt;br /&gt;
| style=&amp;quot;width:8%;border:1px solid grey;&amp;quot;|Bonus&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|simple source setup / building COM files / system interrupt services / basic computations / debugging with debug.exe&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Dec 28, 2016&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:22:00&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|PUBLIC&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili reacquaints himself with TASM and x86 assembly, going over the basics of setting up a .asm source file, and calling some system services (BIOS int 10h, int 16h, DOS int 21h). We then mess with some looping and counting, defining some global data and getting pointers (offsets), and then we go all the way in and do some real calculations, fucking shit up real good along the way. But debug.exe has got our back, and we squash the bugs while also showing you guys the machine code being executed instruction by instruction by the CPU, and how it affects the state of the registers and RAM. [[ASM and Chill with Chili 1|Click here for the page for this tutorial.]]&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Functions and Stack Management&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Jan 3, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:27:42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|No&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | In this video Chili takes us on a magic carpet ride through the enchanting world of managing stack frames and calling functions. You'll never want to go back to high-level languages again where this stuff is all taken of you. Why would you, when you're having so much fun???!!! [[ASM and Chill with Chili 1|Click here for the page for the first tutorial of this series (contains download link).]] Contact Chili over Patreon to exchange CBuck$ for the unlock today!&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Segment:Offset Addressing &amp;amp; Video Memory&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Feb 5, 2017&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38:02&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|$2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|No&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;6&amp;quot; | We learn about the weird wild world of x86 segment addressing (different pointers point to the same location in memory??? absurd!) and we draw dumb rectangles on the screen by pokin around in video memory. Also, &amp;lt;code&amp;gt;rep stosw&amp;lt;/code&amp;gt; is pretty cool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	</feed>