Game Programming Resources


     Video games have evolved into much more than just simple entertainment. It only takes one look at successful games today to see that the level of sophistication involved in game development is continually advancing. Improvements in hardware and software mean that game developers now have the freedom to use that technology to create gameplay that draws players into these digital worlds. Learning to build those worlds and experiences is the challenge facing game developers today, and it's what this page is all about. By take you through the theory and design principles of games, then focusing on programming and implementation. The goal of this page is to provide helpful resources to take you through the entire game development process and prepare you for a challenging and rewarding career making games.



Math
    A lot of people pursue game development which is the programming side, unaware of the math required to create the very games they play; especially the 3D games. So before you jump into programming, its best to learn some math foundations. Don't let math scare you or prevent you from even trying. When I got my first build of my game up and running based off my engine, I didn't know as much math at the time. The following resources below will help you have a better understanding of mathematics to help you grasp concepts more quickly to lead you to be less confused.

Math Resources


  • Math & Physics Books - This page provides a collection of books to help you understand a variety of math and concepts in physics 

  • Video Tutorials - The page provides a collection of in-depth video tutorials for learning math, physics, banking and more

   



What is Computer Programming?
       Computer programming is the art of telling a computer what to do through a set of instructions. This page provides a host of resources for you to learn the basics of computer programming in several different programming languages as well as tips for getting started.


Programming Languages
       
Programming is the language of video games - the specific commands that control the what, how, and when of the game. To develop a game, you need to know how to speak this language and understand how to program to get the most out of the hardware or software at your disposal.This page covers the standard building blocks of programming languages as well as advanced programming concepts like data structures and key algorithms. You will find resources to get a solid foundation in learning C++, C# and scripting tools you can use to create convincing and interesting game worlds. You will first learn the basics of computer programming and then slowly build your skill-set by creating a variety of small programs to test your understanding of different coding concepts.


     C++ is the industry standard game programming language (for the most part). Even if you are a complete beginner, this section provides resources to hone your skills coding in this language. 

Dark-Basic-Pro - this is an open-source BASIC programming language for creating Windows applications and games. The solution requires the Microsoft DirectX SDK (August 2007).

FPS-Creator-Classic - source code and filed for FPS Creator Classic. In addition to the complete source code, the complete product and the latest update is also available. Also, see more by visiting The Game Creators.

     


Build the world you imagine in Unreal. 
Unreal Engine 4 Tutorials


       This next section is primarily helpful if your game uses XNA, MonoGame, SunBurn or Unity, but additional libraries are up to you, so long as you have the rights to use them freely. Which one you choose depends on the type of game that you are developing. XNA is good for experienced indie game developers who are comfortable using a framework to build their own engine on top of. You will start off learning C# since XNA, MonoGame and Unity utilizes this programming language. The XNA Framework is no longer supported by Microsoft, however there is an open source replacement called MonoGame. MonoGame is cross-platform and works on both OS X and Windows. XNA has more robust shader support should you need that in your game, however don't take my word on that since MonoGame is evolving with each update. Unity is a popular game engine that has Mono integrated into it. Mono is a cross-platform open source implementation of Microsoft's .NET Framework. It is based on the ECMA standards for C# and the Common Language Runtime.








Learning C# 
        Professional game programming is often done in C++, but this is a pretty brutal language to work in if you have never used it before. I found that C# eases the transition a bit so that you can focus on making a game and not decoding cryptic error messages. The advanced class makes use of C++ and other languages. The nice thing about C# is how similar it is to Java. Indeed, C# was Microsoft's idea at "doing Java right". If you are comfortable with Java, then the resources below should be enough to get you started in C#. In my humble opinion, its as if Java and C++ had a baby and C# was the result.


  • C# Books & Video Tutorials - this is a collection of helpful books and video tutorials training you in C# programming from beginner to advanced 

  • Java & C# Comparison - This is a quick reference guide to highlight some key syntactical differences between Java and C#. This is not a complete overview of either language, however I hope you will find this useful.








XNA Game Library
       I have been using XNA for quite a while now and I have been very happy with it. I am no professional programmer, but once you have mastered C#, XNA becomes fairly easy. XNA is just an additional set of APIs that extended the .NET framework. Because it is a popular platform for teaching game design, there are an awful lot of resources out there. The latest version of XNA 4.0 was released in September 2010 with a refresh in October 2011, so its a mature framework. There has been no announcement of a version 5.0, so the good news is that you don't have to worry about learning XNA 4.0 only for your knowledge to become immediately obsolete.

Installing XNA 
       You can download and install the Windows Phone SDK 7.1 which contains all the software and tools you will need to develop for Windows Phone, Xbox, or desktop. The download already includes Visual Studio Express 2010, however if you have a better version of 2010, you can install the XNA tools separately. Its optional but I also recommend purchasing an Xbox 360 controller for your PC for testing purposes.

  • XNA Installers - To learn how to run XNA in later versions of Visual Studio on Windows 10, visit my 57th blog post for more information.You can also find further documentation here on how to install it for Visual Studio 2017. 




Beginning XNA Game Studio 4.0 

XNA Tutorials 
  • Game Creation With XNA - This page contains tutorials on game creation with Microsoft's XNA framework. It was created by students of international media at HTW Berlin.


  • Robot Foot Games - This page contains tutorials created by Jeff Brown along with additional ones of my own. If you want to expand upon the XNA Platformer Starter Kit, I highly recommend checking out this page. 

Extra XNA Resources

Breaking Changes in XNA 4.0 - With the addition of Windows Phone, there were many changes made. See more information here on Shawn Hargreve's Blog


Rendertarget changes in XNA 4.0 - Several changes were made to the rendertarget API in Game Studio 4.0, with the goal of increasing usibility and reducing error. A brief summary of the changes can be found here.


Creating a Simple 3D XNA Game - This is an excellent book and guide to learn how to program a 3D game in XNA.


XNA App Hub Samples - This page contains essentially the content catalog from the XNA App Hub Community website that will shutdown in 2017. I would hate to see such great content and resources go to waste. Many developers still find them useful for their game projects. Luckily, I have made it all available here for everyone. It is incredibly important in preserving these XNA samples and the games built using XNA because it will help MonoGame developers. As my friend Lafe Walters said, "To let it all go to waste would be the equivalent of burning a book." I am still updating this page with MonoGame samples. This page contains all of the following from the App Hub website:

  • Educational Samples and Tutorials
  • Technical Articles
  • Starter Kits
  • Mini-Games
  • Utilities
  • More


XNA Developers Survival Kit  -  This is a list of links to tools that can be used by game developers to develop their own games or game engines, without having to spend weeks and weeks searching over the internet for specific libraries, algorithms and other resources needed to develop a game. This was originally posted by Nexlon Studios. Nelson Hurst who created the kit re-uploaded the original XDSK2 on his blog. I will be updating this page over time with more resources I find. So this page is essentially a combination of Nexlon's research and mine. If you are looking for tools to help you save time and money with your game projects, even if you don't use XNA or MonoGame, you will still find this page very helpful!


XNA 3.1 to 4.0 Cheat Sheet - This is the original conversion sheet for XNA posted by Nexlon Studios. Microsoft made a lot of changes to XNA between versions 3.1 and 4.0.


XNA Game Studio - This is a very helpful Developer Network page for XNA. Also be sure to check out the Fuel Cell example game




XNA Framework Class Library reference -  The XNA Framework class library is a library of classes, interfaces, and value types that are included in XNA Game Studio. This library provides access to XNA Framework functionality and is designed to be the foundation on which XNA Game Studio applications, components, and controls are built.


Reach vs. HiDef Profile Chart - If you plan to target Windows Phone 7 or want your game to work across platforms, you should select the Reach GraphicsProfile and stick to its feature set.The good news is that if you set your GraphicsProfile as Reach, the XNA framework will prevent you from using features that are not available in the Reach GraphicsProfile, even if your development PC can support more features. This ensures your game will work on machines with lower capabilities than your own.


Shawn Hargreaves Blog Index - This is an index of posts from Shawn Hargreaves blog, organized by category.


Vertex data in XNA 4.0 - vertex data in XNA 4.0 vs. vertex data in XNA 3.1


XNA Color Chart - Thanks to Brandon's Blog, this is a color chart of all the XNA/C# stock colors. This helpful chart works great for Monogame developers as well.







       MonoGame is a powerful .NET open-source framework for creating cross-platform games. The general consensus is that MonoGame is the official spiritual successor to XNA and is the way of the future for your XNA game projects. MonoGame is a port of the Microsoft XNA 4.0 Application programming interface to Mono. Essentially Mono is a cross-platform version of C#. It allows you to write games for Windows, OS X, Android, i OS and other platforms (though Android and i OS come with hefty licensing costs). With thousands of titles shipped across desktop, mobile and console platforms, the MonoGame framework has been used in several popular games. Dust an Elysian Tail is an example of such a title originally coded in XNA 4.0 and then converted to MonoGame. Other successful titles include Bastion and Fez. If you loved XNA, then you certainly will love MonoGame.

MonoGame - MonoGame is essentially the continuation and the future of XNA. So now, games built with XNA can find a home on other platforms. The PS4 as well as the Xbox One dev kits support MonoGame to licensed developers. In the past, the Xbox One dev kit did not offer support for MonoGame. Sony saw a potential market in many indies who utilize MonoGame for their game projects. So many developers who use XNA and MonoGame found themselves moving to PS4 over Xbox One. Sony added MonoGame support to their dev kit in March of 2014. Two years later, in March of 2016, Microsoft allowed their dev kit to also support MonoGame.








Details coming soon...
Unity3D - the main website


Unity Documentation - This is the Unity User Manual which helps you learn how to use the Unity Editor and its associated services. You can read it from start to finish, or use it as a reference.


Free Unity Packages


Unity Resources - This link provides a list of links to tools, tutorials and resources posted by John C. Brown to help game developers who are using. If you scroll down, you will find resources for the Unity Game Engine. John C. Brown has been an inspiration to me. He initially did all the game design and software development by himself for his game Diabolical. Diabolical is essentially an over the shoulder third-person shooter with action and cooperative gameplay.


Unity Prefabs - A list of prefab links posted by John C. Brown

Unity Tutorials







       There are several alternatives that exist besides MonoGame and Unity people seem to be unaware of or don't mention. One is SunBurn which officially provides a completely free Platform Framework. SunBurn offers an API that is similar to XNA's and provides a lot of the same features with added support for many more. It is cross-platform and supports Windows Desktop, Windows Phone, Android, Linux, and Mac OS. So this means less worry about creating "#if statements" so to speak for each platform. The team behind SunBurn keeps an active forum where they are constantly answering communities' questions. They also respond very well to fixing any bugs that have been found and offer excellent support. For a thorough overview of SunBurn, check out Dark Genesis' Blog.


  • Synapse Gaming - the main website page for SunBurn
  • Platform Framework - SunBurn's free framework

    With SunBurn, you can share majority of your source code across multiple platforms without any changes. It allows you to do so by separating your game into three types of projects: the Content Project (same as XNA), the Game Library and the Platform specific project:
  • Platform Layer - a managed framework for developing games
  • Project Layout - using SunBurn
  • Portable Development - work outside the sandbox





  • Universal Windows Platform (UWP)
    Image Link
           The Universal Windows Platform created by Microsoft, is a software platform designed to help develop apps that run on both Windows 10 and Windows 10 Mobile without the hassle of re-writing too much code for each. This platform supports Windows application development using C++, C#, VB.NET, or XAML. The API for the most part utilizes C++, but it is also supported in VB.NET, C# and JavaScript. UWP essentially allows developers to create applications that will run on multiple types of devices.




    Trello - This helps you manage development and see upcoming features, what's currently being worked on, bugs, and everything that's been finished. You can see an example here by Subsurface Games on how it can be used for your game projects.



    Need help programming?


    Networking Communities