Welcome to a new series! In this series, we create an alpha version of a game library that we can use in various game projects. Things we create might be modified for the Beta and Final release. More functionality will be added in the Beta and Final releases.
The following video is the entire PGL2D Alpha series. This video just groups all tutorials into one video. If you prefer to watch tutorial-by-tutorial, use the videos further down the page.



This is the second tutorial for the PGL2D Alpha series. In this video, we will create the IMoveable interface for our game.

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.

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.

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.

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.

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.

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

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.

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.

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.

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.

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.

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

This is the fifteenth tutorial for the PGL2D Alpha series. In this short tutorial, we will discuss how to create the InputMode enum file.

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.

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).

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.

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.

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).

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.

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.

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

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.

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

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.

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.

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.
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