<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://www.phstudios.com/monogame-advanced</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2016-03-27</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/56f834b62eeb8183c2c676f5/1444617610249/</image:loc>
      <image:title>MonoGame Advanced - Rectangular Collision</image:title>
      <image:caption>This is the very first tutorial of MonoGame Advanced!  In this tutorial, I show how to use the Rectangle.Intersects method.  I discuss the issues of rectangular collision with images with a lot of transparent pixels. Download the image Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/561b1d4ce4b0fcd88ca845a8/1444617610249/</image:loc>
      <image:title>MonoGame Advanced - Rectangular Collision</image:title>
      <image:caption>This is the very first tutorial of MonoGame Advanced!  In this tutorial, I show how to use the Rectangle.Intersects method.  I discuss the issues of rectangular collision with images with a lot of transparent pixels. Download the image Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/563673c0e4b0f1a21573d907/1446409358069/</image:loc>
      <image:title>MonoGame Advanced - Rectangle Binding</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, I will show you why we might need to bind an object to a rectangle.  In the video, we bind two objects to the game screen. Download the image Download the previous tutorial's project file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/5648d222e4b0e2061204c46c/1447613155028/</image:loc>
      <image:title>MonoGame Advanced - Per Pixel Collision</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, I will show you per pixel collision detection and why it might be needed. Watch the Game Math video Download the image Download the previous tutorial's project file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/5648d38ee4b0f54883ca317b/1447613382497/</image:loc>
      <image:title>MonoGame Advanced - Rotating Objects</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, I will show you how to rotate a sprite and how the origin affects rotation.  I also show you that our collision is broken now that we rotate the object. Watch the Game Math video Download the image Download the previous tutorial's project file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/5660dcbee4b013a85182134b/1449188595964/</image:loc>
      <image:title>MonoGame Advanced - Scaling Objects</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, I will show you how to scale a sprite.  I also show you that our collision is broken now that we rotate and scale the object. Download the image Download the previous tutorial's project file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/5660dd28e4b0766d427995b5/1449188700976/</image:loc>
      <image:title>MonoGame Advanced - Matrix Transformations</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, I will show you how to perform matrix transformations on our rectangle so we can fix our collision detection. Download the image Download the previous tutorial's project file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/5660dd6ce4b0af25425ee48a/1459106998467/</image:loc>
      <image:title>MonoGame Advanced - Transformed Per Pixel Collision</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, we will be fixing the per-pixel collision detection now that we have matrix transformations available. Download the image Download the previous tutorial's project file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/56aff5fa22482ea7cf0de8ed/1459106974302/</image:loc>
      <image:title>MonoGame Advanced - Vector Reflection</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, I discuss how to set up vector reflection using rectangular collision. Download the ball image Download the paddle image Download the collision code Download the previous tutorial's project file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/56d38fe1b6aa606b54a67809/1459106902277/</image:loc>
      <image:title>MonoGame Advanced - Sprite Sheet</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, I discuss how to set up a sprite sheet class and how to get started with animation. Download the sprite sheet Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45c6e4b0adbb715fb64d/57000a54356fb07515fd981d/1459620513700/</image:loc>
      <image:title>MonoGame Advanced - Audio Intro</image:title>
      <image:caption>Welcome to a new tutorial for the MonoGame Advanced series!  In this tutorial, I discuss how to add .wav files to your game and use them in the code.  I explain how to play a song and fire a sound effect. Download the music file Download the sound file Download the project file</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/monogame-basics</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2015-09-17</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45fae4b0c490e8c04cb9/55fb4741e4b025e949008393/1442531464200/</image:loc>
      <image:title>MonoGame Basics - Drawing Sprites</image:title>
      <image:caption>Welcome to the first tutorial for this Monogame Basic series.  In this episode, we will look into how the MonoGame content pipeline works and how to draw a PNG file to the screen.  This is very similar to XNA. View the texture file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fb4888e4b06623f76f133f/1442531464200/</image:loc>
      <image:title>MonoGame Basics - Drawing Sprites</image:title>
      <image:caption>Welcome to the first tutorial for this Monogame Basic series.  In this episode, we will look into how the MonoGame content pipeline works and how to draw a PNG file to the screen.  This is very similar to XNA. View the texture file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45fae4b0c490e8c04cb9/55fb479ce4b00c4914a7eaa6/1442531433158/</image:loc>
      <image:title>MonoGame Basics - Moving Sprites</image:title>
      <image:caption>Welcome to the second tutorial for this Monogame Basic series.  In this episode, we will look into how to move a sprite by using keyboard input. View the texture file Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb45fae4b0c490e8c04cb9/55fb47dce4b047fe82f972c7/1442531374744/</image:loc>
      <image:title>MonoGame Basics - Drawing Text</image:title>
      <image:caption>Welcome to the last tutorial for this Monogame Basic series.  In this episode, we will look into how to draw text by using a SpriteFont. Download the project file</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/flocking-ai</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2015-09-19</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fda2bde4b024a8a24eac11/1442684819342/</image:loc>
      <image:title>Flocking A.I. - Cohesion Concepts</image:title>
      <image:caption>This is the first tutorial for the Flocking AI series.  This tutorial will discuss the concepts of Cohesion.  This video will contain diagrams to help you understand the concepts.  We also discuss the mathematics behind this algorithm.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb460be4b021ff7ff13187/55fd9f10e4b0154e882c5500/1442684819342/</image:loc>
      <image:title>Flocking A.I. - Cohesion Concepts</image:title>
      <image:caption>This is the first tutorial for the Flocking AI series.  This tutorial will discuss the concepts of Cohesion.  This video will contain diagrams to help you understand the concepts.  We also discuss the mathematics behind this algorithm.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb460be4b021ff7ff13187/55fd9fa6e4b0ee634692204b/1442685155497/</image:loc>
      <image:title>Flocking A.I. - Cohesion Algorithm</image:title>
      <image:caption>This is the first algorithm tutorial for the Flocking AI series.  This tutorial will discuss the algorithm of Cohesion.   Download the source code and pseudo code</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb460be4b021ff7ff13187/55fda0f9e4b04067a6bdfa4d/1442685468902/</image:loc>
      <image:title>Flocking A.I. - Separation Concepts</image:title>
      <image:caption>This is the second concept tutorial for the Flocking AI series.  This tutorial will discuss the concepts of Separation.  This video will contain diagrams to help you understand the concepts.  We also discuss the mathematics behind this algorithm.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb460be4b021ff7ff13187/55fda160e4b04d304c92a44c/1442685354955/</image:loc>
      <image:title>Flocking A.I. - Separation Algorithm</image:title>
      <image:caption>This is the second algorithm tutorial for the Flocking AI series.  This tutorial will discuss the algorithm of Separation.  Download the source code and pseudo code</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb460be4b021ff7ff13187/55fda1c3e4b04c74c50b993c/1442685457057/</image:loc>
      <image:title>Flocking A.I. - Alignment Concepts</image:title>
      <image:caption>This is the last concept tutorial for the Flocking AI series.  This tutorial will discuss the concepts of Alignment (the easiest steering behavior of Flocking).  This video will contain diagrams to help you understand the concepts.  We also discuss the mathematics behind this algorithm.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb460be4b021ff7ff13187/55fda240e4b08422c889b6b1/1442685628997/</image:loc>
      <image:title>Flocking A.I. - Alignment Algorithm</image:title>
      <image:caption>This is the last algorithm tutorial for the Flocking AI series.  This tutorial will discuss the algorithm of Alignment.  Download the source code and pseudo code</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/game-ai</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2015-09-19</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fd9cfae4b00309609a1133/1442684119976/</image:loc>
      <image:title>Game A.I. - Seeking</image:title>
      <image:caption>In the very first tutorial of the series, we cover the very basic movement behavior known as Seeking.  The act of Seeking simply directs an object towards another object or position.   Download the source and pseudo code</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb464ae4b04d5ff63113cc/55fd99c9e4b054333b8cb7d3/1442684119976/</image:loc>
      <image:title>Game A.I. - Seeking</image:title>
      <image:caption>In the very first tutorial of the series, we cover the very basic movement behavior known as Seeking.  The act of Seeking simply directs an object towards another object or position.   Download the source and pseudo code</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb464ae4b04d5ff63113cc/55fd9a5be4b0347ac88fe2fd/1442684154741/</image:loc>
      <image:title>Game A.I. - Fleeing</image:title>
      <image:caption>In this tutorial, we will take the Seeking algorithm and transform it to a Flee algorithm.  We will also set up the algorithm to flee when the two object's distance is below a certain threshold.   Download the source code and pseudo code</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb464ae4b04d5ff63113cc/55fd9aa9e4b024a8a24e8cd6/1442683600880/</image:loc>
      <image:title>Game A.I. - Wandering</image:title>
      <image:caption>We now get in to the more complex operations.  We discuss the movement algorithm known as Wandering and how it is implemented for artificial intelligence.  This algorithm was made with vector math to create a nice smooth rotation when the object reaches the sides of the game window.  Also, when the object is in the clear, it will perform a zig-zag movement to create a more interesting wandering code. Download the source code and pseudo code</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb464ae4b04d5ff63113cc/55fd9af2e4b0154e882c450b/1442683687164/</image:loc>
      <image:title>Game A.I. - Obstacle Avoidance</image:title>
      <image:caption>In this video, I discuss the concept of Obstacle Avoidance.  We build on the last tutorial which covered Wandering.  We take the vector math approach to obstacle avoidance in order to create smooth movement. Download the tutorial and pseudo code!</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb464ae4b04d5ff63113cc/55fd9b3ee4b0aef3dbaf132a/1442683753727/</image:loc>
      <image:title>Game A.I. - Hiding Part One</image:title>
      <image:caption>Welcome back to another Artificial Intelligence tutorial!  In this tutorial, we will take a quick introductory look at hiding.  This is tutorial one of two.  The basic concept of this algorithm is:  Hide from the enemy by moving to a point where a box is between you and the enemy.   Download source code</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb464ae4b04d5ff63113cc/55fd9b83e4b0d87ff45053ae/1442683815070/</image:loc>
      <image:title>Game A.I. - Field of View</image:title>
      <image:caption>Welcome back to the new and improved Artificial Intelligence series!  This series has been through a lot of discussion about resuming or canceling.  I have decided to resume this series since the topics can be very interesting.  In this tutorial, I explain Field of View.  This tutorial gets us ready for Hiding Part II.  Hiding Part II will utilize this Field of View concept to determine if the player is within the enemy's field of view before we begin the hiding procedure. Download the source code here</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/direct-x-9-basics</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2016-08-29</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/57c37e51e6f2e148e8dc332e/1442537237343/</image:loc>
      <image:title>Direct X 9 Basics - Win32 Window</image:title>
      <image:caption>This tutorial covers how to create the basic framework for our game by first creating a Win32 Window and message loop.  I discuss several things about the Windows API, processing messages, and how our update and draw functionality will be utilized.  I also discuss how to get the horizontal and vertical size of our primary display. Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb53c6e4b05d951e4a14fc/1442537237343/</image:loc>
      <image:title>Direct X 9 Basics - Win32 Window</image:title>
      <image:caption>This tutorial covers how to create the basic framework for our game by first creating a Win32 Window and message loop.  I discuss several things about the Windows API, processing messages, and how our update and draw functionality will be utilized.  I also discuss how to get the horizontal and vertical size of our primary display. Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb54c7e4b0308bb8c3f015/1442534737191/</image:loc>
      <image:title>Direct X 9 Basics - Direct3D</image:title>
      <image:caption>In this tutorial, I discuss how to initialize Direct3D and connect it to our window.  I also wrap the Direct3D code in a class that we can later modify. Download the project file</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb5574e4b0482ee5446f37/1442535126920/</image:loc>
      <image:title>Direct X 9 Basics - Drawing Sprites</image:title>
      <image:caption>In this tutorial, I discuss how to initialize DirectX Texture and Sprites.  We wrap the functionality into a single class, GameSprite.  We then draw two separate sprites to the game window. Download the previous tutorial's result (project file) Download PNG file used in the tutorial Download the tutorial result (project file)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb570be4b0518e87619c6b/1442535339389/</image:loc>
      <image:title>Direct X 9 Basics - Game Class</image:title>
      <image:caption>In this tutorial, I discuss how to clean up the Main.cpp file by creating a Game class that will handle everything game related.  The Main.cpp file will just include the WinMain, GenerateWindow, and Windowproc functions (anything related to general Win32 window creation/message handling).  The Main.cpp will also include a pointer to our Game object so we can use it when it needs to update and draw. Download the previous tutorial's result (project file) Download PNG file used in the tutorial Download the tutorial result (project file)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb57f0e4b0766e57f5b1d5/1442535543025/</image:loc>
      <image:title>Direct X 9 Basics - Updating Sprites</image:title>
      <image:caption>In this short tutorial, I discuss how to update your game sprites by moving them around the screen. Download the previous tutorial's result (project file) Download PNG file used in the tutorial Download the tutorial result (project file)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb5897e4b04ab751b6da6f/1442535730969/</image:loc>
      <image:title>Direct X 9 Basics - GameplayObject Class</image:title>
      <image:caption>In this tutorial, I discuss how to create a gameplay object class that we can use in our game.  This class will hold our physics, information, and state data. Download the previous tutorial's result (project file) Download PNG file used in the tutorial Download the tutorial result (project file)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb59a4e4b04067a6b637b6/1442535963458/</image:loc>
      <image:title>Direct X 9 Basics - Basic Timer</image:title>
      <image:caption>In this tutorial, I discuss how to create a basic timer that we can use in our game.  We will be using Windows API to get the timer values and end up with a elapsed game time in seconds. Download the previous tutorial's result (project file) Download PNG file used in the tutorial Download the tutorial result (project file)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb5a3ae4b0ab8322fc1f70/1442536181887/</image:loc>
      <image:title>Direct X 9 Basics - Update Sprites with Timer</image:title>
      <image:caption>In this tutorial, we use the timer we created in the last tutorial to update our sprites.  I also discuss the mathematics behind updating sprites with time. Download the previous tutorial's result (project file) Download PNG file used in the tutorial Download the tutorial result (project file)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb5b20e4b0ea280eb79308/1442536349701/</image:loc>
      <image:title>Direct X 9 Basics - Introduction to Keyboard Input</image:title>
      <image:caption>In this tutorial, we use the message queue to get raw input data from the keyboard.  This is just one way of many to get keyboard input for your direct x game. Download the previous tutorial's result (project file) Download PNG file used in the tutorial Download the tutorial result (project file)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb5bc3e4b0482ee5448cb7/1442536499632/</image:loc>
      <image:title>Direct X 9 Basics - GetAsyncKeyState</image:title>
      <image:caption>In this tutorial, we use a function that we can call from the Update logic called GetAsyncKeyState.  This function will return the status of a key at the time of calling the function.  If you use this process, I suggest you call this once per key and at the very beginning of your Update logic. Download the previous tutorial's result (project file) Download PNG file used in the tutorial</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb5c4de4b0d8d207dd33b0/1442536630776/</image:loc>
      <image:title>Direct X 9 Basics - Sprite Movement</image:title>
      <image:caption>In this tutorial, we extend on the GetAsyncKeyState tutorial and tie our keyboard input into our game object.  This will allow us to move an object around by using our keyboard.  I decided to use the arrow keys for this tutorial.  Feel free to use different keys. Download the Tutorial 8 result Download the finished result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/55fb5cd5e4b0ee63468a5f27/1442536763215/</image:loc>
      <image:title>Direct X 9 Basics - Draw Text</image:title>
      <image:caption>In this tutorial, we take a look at how to draw text to the screen.  We will use the built in Direct X functionality and use a system font to draw text to the screen.  This is the last episode of the basic training series. Download the GameObject Class result Download the final project result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb465fe4b0dcd9e6c53cab/57c37dc137c58130bc5f5ef7/1472429649111/2D-Camera.png</image:loc>
      <image:title>Direct X 9 Basics - 2D Camera</image:title>
      <image:caption>In this tutorial, I show you how to implement a 2D Camera System in Direct X 9. Download Tutorial 11 Sample Download the resources for Tutorial 13 Download the final result</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/podcast-1</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2016-09-05</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/57cce392d2b857343fd7d408/1442686354914/</image:loc>
      <image:title>Podcast - Update August 2015</image:title>
      <image:caption>This video is a quick update on my tutorial series.  I upgraded to Windows 10 and Visual Studio 2015</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fda533e4b0fa9f9a86ae5a/55fda53ee4b04067a6be0a62/1442686354914/</image:loc>
      <image:title>Podcast - Update August 2015</image:title>
      <image:caption>This video is a quick update on my tutorial series.  I upgraded to Windows 10 and Visual Studio 2015</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fda533e4b0fa9f9a86ae5a/5648d47be4b0734a6c426614/1447613596044/</image:loc>
      <image:title>Podcast - November 2015 Announcement</image:title>
      <image:caption>This is a quick video to discuss the tutorial schedule for Thanksgiving and the dedicated game / library websites.  I also created a contact form on my site that you may use.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fda533e4b0fa9f9a86ae5a/56d3905f40261d09c3e74416/1456705674998/</image:loc>
      <image:title>Podcast - Announcement - February 28 2016</image:title>
      <image:caption>A quick announcement to discuss tutorials, Paddles, and PGL2D.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fda533e4b0fa9f9a86ae5a/57352b4722482e2bc53c2f4a/1463102285688/May-2016.png</image:loc>
      <image:title>Podcast - May 2016 Update</image:title>
      <image:caption>This is a short video to discuss content and where my videos are currently.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fda533e4b0fa9f9a86ae5a/57aa716c414fb508efcfad2c/1470787971561/Website-Update-August-2016.png</image:loc>
      <image:title>Podcast - Website Announcement August 2016</image:title>
      <image:caption>In this video, I discuss my plans for the next few months regarding what content you will see.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fda533e4b0fa9f9a86ae5a/57cce37d20099e44628627f8/1473045394926/September-2016.png</image:loc>
      <image:title>Podcast - September 2016 Announcement</image:title>
      <image:caption>In this video, I discuss the upcoming tutorials and game videos for the next couple of months.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/index</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <lastmod>2018-06-26</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f9f6fde4b0ff96fa1ef356/1442445053399/</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f8dcbde4b0eb0e5442e2d3/1442372800349/</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fa0bc3e4b0d0a2bf306482/1442450372121/</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fa03d3e4b09e7c37ba6972/1442448339679/</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fa1489e4b09141053294a8/1442452617299/</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f8b62ae4b0c80742d48046/1442362923384/</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f8b64ce4b0c80742d480fa/1442362956484/</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f8b63be4b0c80742d4809e/1442362940075/</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f5cf21e4b0b1dfc5ab3204/1442172706688/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f8d05fe4b062404f4d7576/1442369632342/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f8d0ebe4b09fd619471e34/1442369772760/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f8d18ee4b0f3c9b995f4f0/1442369935547/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Index</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fb2b5ce4b0a085301affd8/1442523996727/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Index</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/new-gallery</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-09-02</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55f5dbe6e4b0818e9742ca18/55f5dc1de4b0d81aa066fa5c/1447536938813/</image:loc>
      <image:title>Game Math - Vectors</image:title>
      <image:caption>This is the very first tutorial of Game Math!  In this tutorial, I discuss vectors and vector math that will help during game development.  The most common operation that you will use is building a vector from your object's speed and angle. View the PDF tutorial made in 2009</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5686a8eedf40f3987cbcf28a/1447536938813/</image:loc>
      <image:title>Game Math - Vectors</image:title>
      <image:caption>This is the very first tutorial of Game Math!  In this tutorial, I discuss vectors and vector math that will help during game development.  The most common operation that you will use is building a vector from your object's speed and angle. View the PDF tutorial made in 2009</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55f5dbe6e4b0818e9742ca18/55f5dfa8e4b0ee3005dcf163/1442530242262/</image:loc>
      <image:title>Game Math - Rectangle Collision</image:title>
      <image:caption>This is the second tutorial of Game Math!  In this tutorial, I discuss rectangles and rectangular collision detection.  The most common operation that you will use to detect collision detection is rectangular collision detection.  Once that succeeds, you can use more complex collision detection like Per-Pixel collision detection.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55f5dbe6e4b0818e9742ca18/5648d141e4b00af65e2fe57f/1447612787533/</image:loc>
      <image:title>Game Math - Per Pixel Collision</image:title>
      <image:caption>In this tutorial, I discuss rectangles and per-pixel collision detection.  I also take things a step farther and discuss getting an intersecting rectangle and using that to optimize the algorithm.  Since this algorithm loops through every pixel, it is recommended to use rectangular collision detection before per-pixel collision.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55f5dbe6e4b0818e9742ca18/5660dc4fe4b08cb1d72a8020/1449188453967/</image:loc>
      <image:title>Game Math - Matrix Transform</image:title>
      <image:caption>This is the fourth tutorial of Game Math!  In this tutorial, I discuss the mathematics being matrix transformations.  I also discuss how to represent a 2D vector as a 1x4 matrix.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55f5dbe6e4b0818e9742ca18/5686a8bbdf40f3987cbcf192/1451665646313/</image:loc>
      <image:title>Game Math - Vector Reflection</image:title>
      <image:caption>This is the fifth tutorial of Game Math!  In this tutorial, I discuss the mathematics behind vector reflection.  Vector reflection is a necessary process if you want to have your game object bounce off another object or a wall. Check out the PDF tutorial covering vector math</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55f5dbe6e4b0818e9742ca18/5b8c57f66d2a7323d92ffb3e/1535924368369/06-bezier-curve.png</image:loc>
      <image:title>Game Math - Bezier Curve</image:title>
      <image:caption>This is the sixth tutorial of Game Math! In this tutorial, I discuss the mathematics behind Bezier curves. These types of curves are necessary in order to create complex paths for game objects to travel.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/latest-videos</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2021-09-06</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/61362ebf833e8f712a6264b0/1597608049618/</image:loc>
      <image:title>Latest Videos - [VGAI 2.0] MCTS Thinking About Terminal States</image:title>
      <image:caption>Tutorials are back! Welcome to the start of the more advanced Video Game artificial intelligence series. The first topic we will be discussing in a series of videos is the Monte Carlo Tree Search (MCTS) algorithm. This tutorial will expand on the previous tutorial and provide a real life example. We discuss how to think about terminal states in a way that makes sense if the algorithm has to run in a very short time.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb292ae4b036fa7b1212c2/5f3967c96ced5e0ad461fe2c/1597608049618/</image:loc>
      <image:title>Latest Videos - [VGAI 2.0] MCTS Thinking About Terminal States</image:title>
      <image:caption>Tutorials are back! Welcome to the start of the more advanced Video Game artificial intelligence series. The first topic we will be discussing in a series of videos is the Monte Carlo Tree Search (MCTS) algorithm. This tutorial will expand on the previous tutorial and provide a real life example. We discuss how to think about terminal states in a way that makes sense if the algorithm has to run in a very short time.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb292ae4b036fa7b1212c2/5f0269fcff32c80f99b4ce69/1593994584657/</image:loc>
      <image:title>Latest Videos - [VGAI 2.0] Monte Carlo Tree Search Introduction</image:title>
      <image:caption>Tutorials are back! Welcome to the start of the more advanced Video Game artificial intelligence series. The first topic we will be discussing in a series of videos is the Monte Carlo Tree Search algorithm. This tutorial will introduce you to the basics of Monte Carlo Tree Search and how it can be beneficial in video games. We take a look at a very basic example to demonstrate how the algorithm chooses which action should be taken for any given scenario.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb292ae4b036fa7b1212c2/5ba83b3de2c4832fe2ad3ccf/1537751897565/09-Bezier-Curve.png</image:loc>
      <image:title>Latest Videos - [Game Algorithms] 09 - Bezier Curve</image:title>
      <image:caption>View the source code Welcome to a new tutorial for the Game Algorithms series. In this tutorial, I will go over a concept that will be used to work on Bezier Curves. It is recommended that you watch the Bezier Curve Game Mathematics video. This video will discuss a recursive implementation for Bezier Curves. We will also go in to the code and take a look at the algorithm in action.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb292ae4b036fa7b1212c2/5b8c58b26d2a7323d9300285/1535924425047/06-bezier-curve.png</image:loc>
      <image:title>Latest Videos - [Game Math] Tutorial 06 - Bezier Curve</image:title>
      <image:caption>This is the sixth tutorial of Game Math! In this tutorial, I discuss the mathematics behind Bezier curves. These types of curves are necessary in order to create complex paths for game objects to travel.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb292ae4b036fa7b1212c2/57dee6f35016e1d637225af7/1474225924786/02-Seeking-AI.png</image:loc>
      <image:title>Latest Videos - [Game Algorithms] 02 - Seeking AI</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine Seeking Artificial Intelligence.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb292ae4b036fa7b1212c2/58cf0382db29d633eb729376/1630940863493/Tutorial-07---Spawning-Objects.png</image:loc>
      <image:title>Latest Videos - [Unity2D Basics] 07 - Spawning Objects</image:title>
      <image:caption>In this tutorial, I go over the basics of spawning objects during a key press.  We use what we learned in the last video by making a bullet prefab and we spawned that prefab whenever we pressed the space bar. Download assets for the Space Shooter game Download the project result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb292ae4b036fa7b1212c2/58cf03f0e6f2e19aff916f1b/1630940863498/Tutorial-07b---RigidBody.png</image:loc>
      <image:title>Latest Videos - [Unity2D Basics] 07b - RigidBody</image:title>
      <image:caption>In this tutorial, I go over the basics of RigidBody components.  We extend on the last video by using a RigidBody component in order to make our bullets move. Download assets for the Space Shooter game Download the project result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/55fb292ae4b036fa7b1212c2/574f5f1e1d07c08c9792f472/1464819521569/Tutorial-03-IRemoveable.png</image:loc>
      <image:title>Latest Videos - [PGL2D Alpha] 03 - IRemoveable</image:title>
      <image:caption>This is the third tutorial for the PGL2D Alpha series.  In this short video, we will create the IRemoveable interface for our game.  Only a few more interfaces left to create. Download the tutorial result</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/updates</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2015-12-21</lastmod>
  </url>
  <url>
    <loc>https://www.phstudios.com/updates/2015/12/20/tutorials-during-the-holidays</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2015-12-21</lastmod>
  </url>
  <url>
    <loc>https://www.phstudios.com/game-algorithms</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-09-24</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5ba83b25b208fc93f04a1a6a/1463168459077/</image:loc>
      <image:title>Game Algorithms - Rectangle Collision Normal</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine a collision normal for rectangular collision. Download the image file containing the algorithm for the sides</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/573529992b8dde3d1133b8ef/1463168459077/01-rectangle-collision-normalpng.png</image:loc>
      <image:title>Game Algorithms - Rectangle Collision Normal</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine a collision normal for rectangular collision. Download the image file containing the algorithm for the sides</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/573529a63f40586ca37b7bd4/1463101849650/</image:loc>
      <image:title>Game Algorithms</image:title>
      <image:caption />
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/57dee6763e00be77caa6b4e7/1477261227852/02-Seeking-AI.png</image:loc>
      <image:title>Game Algorithms - Seeking AI</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine Seeking Artificial Intelligence.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/57fab2c08419c230ca038f11/1477261227851/03-Fleeing-AI.png</image:loc>
      <image:title>Game Algorithms - Fleeing AI</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine Fleeing Artificial Intelligence.  Fleeing AI is when we automatically want one object to flee from another if it gets too close.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/57fab2d9b8a79bc648ce241f/1477261227853/04-Wandering-AI.png</image:loc>
      <image:title>Game Algorithms - Wandering AI</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine Wandering Artificial Intelligence.  Wandering AI is when we automatically want one object to move around the environment in a random manor.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/57fab333d482e9a19e5882e5/1476047689507/05-ObstacleAvoidance-AI.png</image:loc>
      <image:title>Game Algorithms - Obstacle Avoidance AI</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine Obstacle Avoidance Artificial Intelligence.  Obstacle Avoidance AI is when we automatically want one object to avoid another when they get too close to each other.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/580d386344024392ea58bab2/1477261433342/06-Hiding-AI.png</image:loc>
      <image:title>Game Algorithms - Hiding AI Basics</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine Hiding Artificial Intelligence.  This is the introduction to Hiding AI and this is a very basic algorithm for this concept.  We will cover a more advanced algorithm in a future video.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/580d38852994ca6771b352f4/1477261469768/07-Field-of-View-AI.png</image:loc>
      <image:title>Game Algorithms - Field of View AI Basics</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over an algorithm that will be used to determine Field of View Artificial Intelligence.  This is the introduction to Field of View AI and this is a very basic algorithm for this concept.  This is something that can be included in the previous algorithm, Hiding AI, in order to improve when to actually hide.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/599a0491ebbd1ad8ed0166db/1503265966809/08-Pathing-Concepts.png</image:loc>
      <image:title>Game Algorithms - Pathing AI Basics</image:title>
      <image:caption>Welcome to a new tutorial for the Game Algorithms series.  In this tutorial, I will go over a concept that will be used to work on Pathing AI.  This type of pathing AI is not path-finding where we need to go from point A to point B in the quickest way possible.  Instead, this AI is used for a game object following a set of points known as a path.  Examples of where this might be used is having a security guard patrol (looping path) between three or four entrances of a base.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57352988c2ea51b32cf6b55b/5ba83a8c0d9297701b16f337/1537751845748/09-Bezier-Curve.png</image:loc>
      <image:title>Game Algorithms - Bezier Curve</image:title>
      <image:caption>View the source code Welcome to a new tutorial for the Game Algorithms series. In this tutorial, I will go over a concept that will be used to work on Bezier Curves. It is recommended that you watch the Bezier Curve Game Mathematics video. This video will discuss a recursive implementation for Bezier Curves. We will also go in to the code and take a look at the algorithm in action.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/pgl2d-alpha</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2016-06-15</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5760c9a327d4bdcb665685af/1464736463096/</image:loc>
      <image:title>PGL2D Alpha - Structure</image:title>
      <image:caption>This is the first tutorial for the PGL2D Alpha series.  In this video, we will structure our solution by creating a new project and adding folders. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/574ce43eb654f95fce4db613/1464736463096/Tutorial-01-Structure.png</image:loc>
      <image:title>PGL2D Alpha - Structure</image:title>
      <image:caption>This is the first tutorial for the PGL2D Alpha series.  In this video, we will structure our solution by creating a new project and adding folders. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/574ce43f379f94dfbbb6de9c/1464656958707/</image:loc>
      <image:title>PGL2D Alpha</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/574e1cd7746fb9870d13f52e/1465068737864/Tutorial-02-IMoveable.png</image:loc>
      <image:title>PGL2D Alpha - IMoveable</image:title>
      <image:caption>This is the second tutorial for the PGL2D Alpha series.  In this video, we will create the IMoveable interface for our game. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/574f5e8c4c2f85414298b6cd/1465068738291/Tutorial-03-IRemoveable.png</image:loc>
      <image:title>PGL2D Alpha - IRemoveable</image:title>
      <image:caption>This is the third tutorial for the PGL2D Alpha series.  In this short video, we will create the IRemoveable interface for our game.  Only a few more interfaces left to create. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5750a4ea22482e8f99164f10/1465068737872/Tutorial-04-IHideable.png</image:loc>
      <image:title>PGL2D Alpha - IHideable</image:title>
      <image:caption>This is the fourth tutorial for the PGL2D Alpha series.  In this short video, we will create the IHideable interface for our game.  Only a few more interfaces left to create. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5750a51f1bbee05a3aa9a424/1465068737892/Tutorial-05-IFreezable.png</image:loc>
      <image:title>PGL2D Alpha - IFreezable</image:title>
      <image:caption>This is the fifth tutorial for the PGL2D Alpha series.  In this short video, we will create the IFreezable interface for our game.  Only a few more interfaces left to create. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5750a585e707eb2ad2ab882f/1465068737968/Tutorial-06-IPhysical.png</image:loc>
      <image:title>PGL2D Alpha - IPhysical</image:title>
      <image:caption>This is the sixth tutorial for the PGL2D Alpha series.  In this short video, we will create the IPhysical interface for our game.  Next video will be an actual class. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5750a5ba555986f675e6dd70/1465068737976/Tutorial-07-GameEntity.png</image:loc>
      <image:title>PGL2D Alpha - GameEntity</image:title>
      <image:caption>This is the seventh tutorial for the PGL2D Alpha series.  We are done with most of the interfaces now.  This video actually has a class created using the interfaces we made in the previous videos. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5750a5ece707eb2ad2ab8bc2/1465068738064/Tutorial-08-ICollideable.png</image:loc>
      <image:title>PGL2D Alpha - ICollidable</image:title>
      <image:caption>This is the eighth tutorial for the PGL2D Alpha series.  This is also the last interface video for a while.  We will discuss the ICollidable interface in this video Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5750a9a1356fb0d767324b74/1465068738064/Tutorial-09-PhysicalEntity.png</image:loc>
      <image:title>PGL2D Alpha - PhysicalEntity</image:title>
      <image:caption>This is the ninth tutorial for the PGL2D Alpha series.  In this tutorial, we will discuss how to create the PhysicalEntity class.  This class will be a base class for all entities that have a physical representation in our game. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/57532cf1ab48ded9a8e51da8/1465068836961/Tutorial-10-TextEntity.png</image:loc>
      <image:title>PGL2D Alpha - TextEntity</image:title>
      <image:caption>This is the tenth tutorial for the PGL2D Alpha series.  In this tutorial, we will discuss how to create the TextEntity class.  This class will be responsible for our text objects in our game.  This class will be sharing some similar code with the Physical Entity class. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5754c8798a65e28abfc71275/1465174183304/Tutorial-11-Rectangle-Collision-Side.png</image:loc>
      <image:title>PGL2D Alpha - RectangleCollisionSide</image:title>
      <image:caption>This is the eleventh tutorial for the PGL2D Alpha series.  In this tutorial, we will discuss how to create the RectangleCollisionSide enum.  This file is another short one, so keep that in mind. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5754c8bc8a65e28abfc713f2/1465174251578/Tutorial-12-RectangleCollisionPoint.png</image:loc>
      <image:title>PGL2D Alpha - RectangleCollisionPoint</image:title>
      <image:caption>This is the twelfth tutorial for the PGL2D Alpha series.  In this tutorial, we will discuss how to create the RectangleCollisionPoint enum and the RectangleCollisionPointEx extension method class.  These files will help us with rectangle collision and processing sides/points. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5754c9078a65e28abfc7159a/1465174316011/Tutorial-13-MoveableEntity.png</image:loc>
      <image:title>PGL2D Alpha - MoveableEntity</image:title>
      <image:caption>This is the thirteenth tutorial for the PGL2D Alpha series.  In this tutorial, we will discuss how to create the MoveableEntity class.  This class will be responsible for game entities that are able to be moved (indirectly and directly) in our game. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5756198e45bf2169386c4d45/1465260491340/Tutorial-14-Collision.png</image:loc>
      <image:title>PGL2D Alpha - Collision</image:title>
      <image:caption>This is the fourteenth tutorial for the PGL2D Alpha series.  In this tutorial, we will discuss how to create the Collision class.  This class will be responsible for rectangle collision and returning the normal of the collision point. Check the Rectangle Collision Normal Game Algorithms video here Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/575b597e356fb0f0120e384c/1465604545531/Tutorial-15-InputMode.png</image:loc>
      <image:title>PGL2D Alpha - InputMode</image:title>
      <image:caption>This is the fifteenth tutorial for the PGL2D Alpha series.  In this short tutorial, we will discuss how to create the InputMode enum file. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/575b59cd356fb0f0120e3979/1465604642357/Tutorial-16-InputState.png</image:loc>
      <image:title>PGL2D Alpha - InputState</image:title>
      <image:caption>This is the sixteenth tutorial for the PGL2D Alpha series.  In this tutorial, we will discuss how to create the InputState class.  This class will be responsible for keeping a reference to the current Keyboard state and update it every game loop. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/575b5a3de707eb735217e356/1465604709262/Tutorial-17-InputSystem.png</image:loc>
      <image:title>PGL2D Alpha - InputSystem</image:title>
      <image:caption>This is the seventeenth tutorial for the PGL2D Alpha series.  In this tutorial, we will discuss how to create the InputSystem class.  This class will be responsible for handling our InputState objects (current loop's state and previous loop's state). Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/575b5aa9f85082971fc8f209/1465604810209/Tutorial-18-Input.png</image:loc>
      <image:title>PGL2D Alpha - Input</image:title>
      <image:caption>This is the eighteenth tutorial for the PGL2D Alpha series.  In this tutorial, we discuss the Input class.  This class will map a keyboard input key with an input mode. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/575b5aedf85082971fc8f301/1465604873149/Tutorial-19-Keybind.png</image:loc>
      <image:title>PGL2D Alpha - Keybind</image:title>
      <image:caption>This is the nineteenth tutorial for the PGL2D Alpha series.  In this tutorial, we discuss the Keybind class.  This class will map a string action name with a list of input objects. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/575b5b22f85082971fc8f3ed/1465604940602/Tutorial-20-InputMap.png</image:loc>
      <image:title>PGL2D Alpha - InputMap</image:title>
      <image:caption>This is the 20th tutorial for the PGL2D Alpha series.  In this tutorial, we discuss the InputMap class.  This class will contain a list of keybind objects (what we created in the previous video). Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/575b5b622b8ddec756153334/1465604996374/Tutorial-21-BaseScreen.png</image:loc>
      <image:title>PGL2D Alpha - BaseScreen</image:title>
      <image:caption>This is the 21st tutorial for the PGL2D Alpha series.  In this tutorial, we discuss the BaseScreen class.  This class will contain most of what we have covered so far as a abstract screen for our game.  This will contain a list of entities, an inputmap, updating and drawing entities. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/575b5b987da24f14b3bab95f/1465605044014/Tutorial-22-ScreenSystem.png</image:loc>
      <image:title>PGL2D Alpha - ScreenSystem</image:title>
      <image:caption>This is the 22nd tutorial for the PGL2D Alpha series.  In this tutorial, we discuss the ScreenSystem class.  This class will be responsible for updating, drawing, adding and removing screens.  This system also handles loading screen content. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5760c8902fe131e466609982/1465960630436/Tutorial-23-IControllable.png</image:loc>
      <image:title>PGL2D Alpha - IControllable</image:title>
      <image:caption>This is the 23rd tutorial for the PGL2D Alpha series.  In this short tutorial, we discuss the IControllable interface.  This interface will be used to indicate that classes must implement a HandleInput method, and contain a reference to an InputMap Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5760c8c401dbae1973621ab7/1465960686565/Tutorial-24-ControllableGameEntity.png</image:loc>
      <image:title>PGL2D Alpha - ControllableGameEntity</image:title>
      <image:caption>This is the 24th tutorial for the PGL2D Alpha series.  In this tutorial, we implement the IControllable interface and create the ControllableGameEntity class.  This class will use the pre and post pattern for moving the entity. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5760c90527d4bdcb665682f7/1465960739881/Tutorial-25-BaseGame.png</image:loc>
      <image:title>PGL2D Alpha - BaseGame</image:title>
      <image:caption>This is the 25th tutorial for the PGL2D Alpha series.  In this tutorial, we implement the BaseGame class.  This class is going to be the parent class to any game that uses the PGL2D library.  This will be responsible for creating the screen system and input system Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5760c93327d4bdcb665683ae/1465960780539/Tutorial-26-GameScreen.png</image:loc>
      <image:title>PGL2D Alpha - GameScreen</image:title>
      <image:caption>This is the 26th tutorial for the PGL2D Alpha series.  In this tutorial, we implement the GameScreen class.  In this class, we will build it in such a way that any game screen we make in our games need to derive from this type.  A reference to the BaseGame is added, and loading content is done in this screen as well. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5760c96101dbae1973621d62/1465960827147/Tutorial-27-Vector2Ex.png</image:loc>
      <image:title>PGL2D Alpha - Vector2Ex</image:title>
      <image:caption>This is the 27th tutorial for the PGL2D Alpha series.  In this short tutorial, we extend the Vector2 struct by using our own custom algorithm for Vector Reflection.  You are welcome to just use the one build in to MonoGame. Download the tutorial result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/574ce41f2fe1312abdee3c7b/5760c98901dbae1973621e2f/1465960867400/Tutorial-28-RandomEx.png</image:loc>
      <image:title>PGL2D Alpha - RandomEx</image:title>
      <image:caption>This is the 28th tutorial for the PGL2D Alpha series.  In this short tutorial, we extend the Random class by using our own custom algorithm for getting a next random odd number. Download the tutorial result</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/flat-paddles-1</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2016-08-08</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/57a7eb15e6f2e1f140dece9a/1468801763783/</image:loc>
      <image:title>Flat Paddles - Project, Enum and Interface</image:title>
      <image:caption>In this tutorial, I show you how to create the project, add a reference to the PGL2D library, and create a couple of the short files. Download the first tutorial result Download the PGL2D DLL file Download the FlatPaddles content</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/578c21e1bebafb8c814a374f/578c228d59cc680c787ce789/1468801763783/Tutorial-1-Project-Enum-and-Interface.png</image:loc>
      <image:title>Flat Paddles - Project, Enum and Interface</image:title>
      <image:caption>In this tutorial, I show you how to create the project, add a reference to the PGL2D library, and create a couple of the short files. Download the first tutorial result Download the PGL2D DLL file Download the FlatPaddles content</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/578c21e1bebafb8c814a374f/578c228f1dd454f8ab089925/1468801677129/</image:loc>
      <image:title>Flat Paddles</image:title>
      <image:caption />
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/578c21e1bebafb8c814a374f/579567e4d1758ec97e84c541/1469409451303/Tutorial-1-Paddles-and-Ball.png</image:loc>
      <image:title>Flat Paddles - Paddles and Ball</image:title>
      <image:caption>In this tutorial, I show you how to create the classes needed for the paddles and the ball. Download the second tutorial result Download the PGL2D DLL file Download the FlatPaddles content</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/578c21e1bebafb8c814a374f/579e930e725e2570d05a5f3a/1470010359578/Tutorial-3-GameScreen-and-finishing-up.png</image:loc>
      <image:title>Flat Paddles - GameScreen and Finishing Up</image:title>
      <image:caption>In this tutorial, I finish the pong clone and discuss some ideas for improvement that you can do on your own. Download the third tutorial result Download the PGL2D DLL file Download the FlatPaddles content</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/578c21e1bebafb8c814a374f/57a7eaf159cc6810b82123d7/1470622485451/Tutorial-4-Looking-Back.png</image:loc>
      <image:title>Flat Paddles - Looking Back</image:title>
      <image:caption>In this video, I take a look back at the flat paddles tutorial series as both a programmer and a content producer.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/final-fantasy-x-1</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2016-08-10</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/57aa77d7ebbd1a4f5c0e82f9/1470789165194/</image:loc>
      <image:title>Final Fantasy X - Part 1</image:title>
      <image:caption>Gameplay starts at 2:50 I am playing one of my most favorite games of all time!  Final Fantasy X HD Remaster is available on Steam now!</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa760759cc6881bc28f55d/1470789165194/Part-1.png</image:loc>
      <image:title>Final Fantasy X - Part 1</image:title>
      <image:caption>Gameplay starts at 2:50 I am playing one of my most favorite games of all time!  Final Fantasy X HD Remaster is available on Steam now!</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa760785c5bd54feab21a2/1470789127267/</image:loc>
      <image:title>Final Fantasy X</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa763b59cc6881bc28f7b6/1470789359461/Part-2.png</image:loc>
      <image:title>Final Fantasy X - Part 2</image:title>
      <image:caption>In this part, I am making my way to Luca</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa766859cc6881bc28f8f5/1470789359136/Part-3.png</image:loc>
      <image:title>Final Fantasy X - Part 3</image:title>
      <image:caption>In this video, I rescue Yuna, play some Blitzball (story requirement), and Auron joins the team.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa769159cc6881bc28fa45/1470789359401/Part-4.png</image:loc>
      <image:title>Final Fantasy X - Part 4</image:title>
      <image:caption>In this video, I make my way through the Mi'ihen Highroad and Mushroom Rock Road</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa76f7e3df28690209980c/1470789390302/Part-5.png</image:loc>
      <image:title>Final Fantasy X - Part 5</image:title>
      <image:caption>In this part, we get through Operation Mi'ihen and make our way to the Djose Temple.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa771be3df286902099951/1470789444214/Part-6.png</image:loc>
      <image:title>Final Fantasy X - Part 6</image:title>
      <image:caption>In this part, I get through the Djose Temple, I get my last party member, and I make my way to Guadosalam.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa7756e3df286902099b53/1470789477135/Part-7.png</image:loc>
      <image:title>Final Fantasy X - Part 7</image:title>
      <image:caption>In this part, we make our way through the thunder plains.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa776de3df286902099c3d/1470789506704/Part-8.png</image:loc>
      <image:title>Final Fantasy X - Part 8</image:title>
      <image:caption>In this video, I make my way through Macalania Woods!</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa7790e3df286902099db7/1470789535139/Part-9.png</image:loc>
      <image:title>Final Fantasy X - Part 9</image:title>
      <image:caption>In this part, I fight Seymour and make my way to Bikanel Island</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa77a7e3df286902099ed5/1470789562489/Part-10.png</image:loc>
      <image:title>Final Fantasy X - Part 10</image:title>
      <image:caption>In this very long part, I get through Bikanel and make my way to Zanarkand Ruins.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/57aa72873e00be3f30767354/57aa77c8e3df286902099fcc/1470789591778/Part-11.png</image:loc>
      <image:title>Final Fantasy X - Part 11</image:title>
      <image:caption>In this video, I get to the point in the story where we have one last chance to work on side missions.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/unity-2d-basics</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-22</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5b55199c70a6ad6dfd07f7eb/1477261669300/</image:loc>
      <image:title>Unity 2D Basics - Introduction</image:title>
      <image:caption>Welcome to a new series covering Unity 2D.  This series is available to provide basic training for Unity 2D development.  A similar series will be made whenever we dive into 3D development Unity website Visual Studio website</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/580d391fbebafb840acc212c/1477261669300/00-Introduction.png</image:loc>
      <image:title>Unity 2D Basics - Introduction</image:title>
      <image:caption>Welcome to a new series covering Unity 2D.  This series is available to provide basic training for Unity 2D development.  A similar series will be made whenever we dive into 3D development Unity website Visual Studio website</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/5828f789725e259c855b40f3/1479080845666/Tutorial-01-UI-Basics.png</image:loc>
      <image:title>Unity 2D Basics - UI Basics</image:title>
      <image:caption>In this tutorial, I go over the basics of the Unity UI.  More will be discussed as we progress through the series.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/580d3920c4d04b5740200010/1477261599759/</image:loc>
      <image:title>Unity 2D Basics</image:title>
      <image:caption />
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/5828f7ad725e259c855b4301/1479080845666/Tutorial-02-Sprites.png</image:loc>
      <image:title>Unity 2D Basics - Sprites</image:title>
      <image:caption>In this tutorial, I go over the basics of sprites.  I discuss the inspector for sprites, how to rotate, move, and scale the sprite. Download assets for the Space Shooter game View the MonoGame Matrix Transform video for a visual of 2D rotation on various axis</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/5828fb95e6f2e13993be129a/1487522185882/Tutorial-03-Script-Movement.png</image:loc>
      <image:title>Unity 2D Basics - Script Movement</image:title>
      <image:caption>In this tutorial, I go over the basics of scripting.  I discuss what scripting is and why we need to add scripts to our objects.  I also discuss how to move a sprite by using a script and looking at the keyboard input. Download assets for the Space Shooter game</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/58a9c99217bffc6029cf1fa9/1488252698841/04-BindingObjects.png</image:loc>
      <image:title>Unity 2D Basics - Binding Objects</image:title>
      <image:caption>In this tutorial, I go over the basics of restricting a game object to the bounds of the game window.  I discuss a generic approach that is camera mode independent - so it will work if you are using Orthographic or Perspective cameras. Download assets for the Space Shooter game Download the project (Unity 5.5.1f1)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/58b4ef236b8f5b9184f60175/1489353808808/05-MenuSystem.png</image:loc>
      <image:title>Unity 2D Basics - Menu System</image:title>
      <image:caption>In this tutorial, I go over the basics of creating a menu system.  I discuss UI elements, running scripts from a button press, changing scenes, and more. Download the project (Unity 5.5.1f1)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/58c5bc62f5e23157c0b63ce8/1489961752424/Tutorial-06---Prefabs.png</image:loc>
      <image:title>Unity 2D Basics - Prefabs</image:title>
      <image:caption>In this tutorial, I go over the basics of creating prefabs.  Prefabs are a very useful feature that will be an enormous benefit if you have multiple copies of an object.  Things like changing one copy's color, components, scale and more can apply to the rest Download assets for the Space Shooter game</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/58cf032e1b631bf52d2f00f5/1489961889338/Tutorial-07---Spawning-Objects.png</image:loc>
      <image:title>Unity 2D Basics - Spawning Objects</image:title>
      <image:caption>In this tutorial, I go over the basics of spawning objects during a key press.  We use what we learned in the last video by making a bullet prefab and we spawned that prefab whenever we pressed the space bar. Download assets for the Space Shooter game Download the project result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/58cf03a886e6c09542de23b3/1489962782782/Tutorial-07b---RigidBody.png</image:loc>
      <image:title>Unity 2D Basics - RigidBody</image:title>
      <image:caption>In this tutorial, I go over the basics of RigidBody components.  We extend on the last video by using a RigidBody component in order to make our bullets move. Download assets for the Space Shooter game Download the project result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/58cf07263a041149f328b0a6/1503263253722/Tutorial-08---Collision.png</image:loc>
      <image:title>Unity 2D Basics - Collision</image:title>
      <image:caption>In this tutorial, I go over the basics of collision.  I discuss how to set up a collider component.  I discuss the Polygon collider in detail so we can trace our bullet and enemy objects.  I also discuss how to destroy an object after a certain condition is met. Download assets for the Space Shooter game Download the project result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/5999fa328419c215258af8f4/1532303772885/09-SpriteSheetAnimation.png</image:loc>
      <image:title>Unity 2D Basics - Sprite Sheet Animation</image:title>
      <image:caption>In this tutorial, I go over the basics of sprite sheet animation.  I discuss setting up an animator controller, making sure you have the windows appearing on your workspace, and discuss animation/states. Download assets for the Space Shooter game Download the sprite sheet Download the project result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/580d3910b3db2b51a43eb4bd/5999fa32579fb3a4cb7ed47a/1503263285836/</image:loc>
      <image:title>Unity 2D Basics - [Unity2D Basics] 09 - Sprite Sheet Animation</image:title>
      <image:caption />
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/game-ai-20</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2020-08-16</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5f3969051902447baad5505c/1593994607256/</image:loc>
      <image:title>Game A.I. 2.0 - Monte Carlo Tree Search Introduction</image:title>
      <image:caption>This tutorial will introduce you to the basics of Monte Carlo Tree Search and how it can be beneficial in video games. We take a look at a very basic example to demonstrate how the algorithm chooses which action should be taken for any given scenario.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/5f026b83524a1c2b652fe528/5f026b9838bdf707c8e3c59c/1593994607256/</image:loc>
      <image:title>Game A.I. 2.0 - Monte Carlo Tree Search Introduction</image:title>
      <image:caption>This tutorial will introduce you to the basics of Monte Carlo Tree Search and how it can be beneficial in video games. We take a look at a very basic example to demonstrate how the algorithm chooses which action should be taken for any given scenario.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/5f026b83524a1c2b652fe528/5f026b9ffb7f38664f203331/1593994136225/</image:loc>
      <image:title>Game A.I. 2.0</image:title>
    </image:image>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/5f026b83524a1c2b652fe528/5f39689662c23339b57d5e9b/1597608049590/</image:loc>
      <image:title>Game A.I. 2.0 - MCTS Thinking About Terminal States</image:title>
      <image:caption>Tutorials are back! Welcome to the start of the more advanced Video Game artificial intelligence series. The first topic we will be discussing in a series of videos is the Monte Carlo Tree Search (MCTS) algorithm. This tutorial will expand on the previous tutorial and provide a real life example. We discuss how to think about terminal states in a way that makes sense if the algorithm has to run in a very short time.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/game-math-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f5dd5ae4b05b2fad65cfed/1442176346905/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Game Math</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/contact</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2020-11-07</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/56244ad0e4b0b08cacef86d5/1505163466745/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Contact</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/forums</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2017-09-11</lastmod>
  </url>
  <url>
    <loc>https://www.phstudios.com/help</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2017-09-11</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55f8c0c4e4b0e0afe28817e8/1442365636748/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Help</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/monogame-basics-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fdb1f8e4b024a8a24ee7bd/1442689529621/PGL2D-Code-Image.PNG</image:loc>
      <image:title>MonoGame Basics</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/monogame-advanced-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fdb23de4b00309609a6544/1442689598146/PGL2D-Code-Image.PNG</image:loc>
      <image:title>MonoGame Advanced</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/direct-x-9-basics-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fdb271e4b09b900d018447/1442689651074/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Direct X 9 Basics</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/game-ai-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fdb2ace4b0e8e002e7991b/1593993974781/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Game A.I.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/flocking-ai-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fdb2fae4b09a0dc28f42c6/1442689788374/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Flocking A.I.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/podcast-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2015-09-19</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fda5eae4b06df8abd772e3/1442686443572/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Podcast</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/about-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2015-09-19</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fda9b2e4b069a5199bf510/1592613125633/PGL2D-Code-Image.PNG</image:loc>
      <image:title>About Series</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/latest-games</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2016-08-10</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/55fdb54be4b04ab751bee1c4/1442690380154/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Latest Games</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/updates-1</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2015-12-21</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/56775dec05f8e2dd0076a9b0/1635515086890/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Updates</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/game-algorithm-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/573528f9f8508265d388893b/1442176346905/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Game Algorithms</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/calendar</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2016-05-21</lastmod>
  </url>
  <url>
    <loc>https://www.phstudios.com/pgl2d-alpha-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/574ce47804426269f1dd3eb2/1442689598146/PGL2D-Code-Image.PNG</image:loc>
      <image:title>PGL2D Alpha</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/flat-paddles</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5782e70a3e00be71f46ea67a/1442689598146/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Flat Paddles</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/donate</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2017-09-11</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5794f7f41b631bb132575073/1534819188508/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Donate</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/final-fantasy-x</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/57aa71ebf7e0abf1043781ae/1442689598146/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Final Fantasy X</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/unity-2d-basics-series</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-07-23</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/580d39c5bebafb840acc275d/1442176346905/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Unity 2D Basics</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/anonymous-contact</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2017-09-11</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/59b6f8ca49fc2ba8c641f0d3/1445219025199/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Anonymous Contact</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/friends</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-08-21</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5b7b7bc8758d462bead7ce2a/1534819275307/PGL2D-Code-Image.png</image:loc>
      <image:title>Friends</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/legacy-games</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-10-21</lastmod>
  </url>
  <url>
    <loc>https://www.phstudios.com/game-ai-2</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2020-07-06</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5f026af61476c808717188c1/1442689709046/PGL2D-Code-Image.PNG</image:loc>
      <image:title>Game A.I. 2.0</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/creative-commons</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2021-10-29</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/617bfb139cad8023e6b659bc/1635515157725/PGL2D-Code-Image.png</image:loc>
      <image:title>Creative Commons</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/shop</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2018-08-21</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/t/5b7b7bdfcd8366de34a76bc6/1534819297639/PGL2D-Code-Image.png</image:loc>
      <image:title>Shop</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.phstudios.com/shop/code-review</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-08-21</lastmod>
    <image:image>
      <image:loc>https://static1.squarespace.com/static/55f0f6f0e4b0d3922cc341e6/5689bfc325981d3d9136020c/5b5517e370a6ad6dfd07b56a/1534809967644/PHStudios-Code+Review+Icon.png</image:loc>
      <image:title>Shop - Code Review</image:title>
    </image:image>
  </url>
</urlset>

