Resources

       Thinking about creating your own games or game engines? Well, you have come to the right place. If you are a programmer or just beginning, then you will find this page to be a useful collection of resources. Many of you will not just be learning a new API, but a whole new language. If you find any additional resources that you feel should be included on the page, click on the Contact tab located at the top to email me.

       This page 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. 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 changing 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.

       It is my hope that this page will be of help to anyone and all the struggling indies out there. Whether you are a hobbyist, student or a developer working in the industry, we are all in this together. Unsure about how to get started? Worried that you don't have the time, patience or money?  Then you are at the right place! These resources are all free for the most part. This page provides everything from free online eBooks, to Tutorials, Starter Kits and so much more! Most of all, I want to show you, to encourage you, that all the code you need to create a fully functional game and or game engine is out there, in books, on the web, free, within your reach.


BOOKS
IT eBooks - At this site, you can download [Security, Web Development, Programming and Computer Science] eBooks. There was a time when all of the eBooks were free but unfortunately downloading is temporarily unavailable. For hard-copies you must purchase.

what-when-how - An online resource for in-depth information and tutorials on many topics.




GENERAL COURSES 

  • Books - This is a collection of books covering a variety of general courses. 

  • Video Tutorials - This is a collection of video tutorials where you can learn a variety of general coursework. 




GAME DESIGN 
       Learn the elements of great game design and the importance of developing a unified approach to gameplay in the initial design stage. Craft the components of a game together to develop a finely-tuned experience. Learn how to implement design standards and gameplay mechanics in a way that best serves the needs of the project. While supporting new innovative concepts is one of the responsibilities of a Producer at a game studio, for a well-designed game, you will need to understand the precise balance of story and gameplay.

  • Game Design Books - This is a collection of eBooks and resources where you can learn what it takes to be an efficient game designer



GAME ART
 

       Artists are redefining the limits of what games are capable of displaying visually on screen. They are shaping the future of one of the world's fastest growing forms of entertainment. Get creative and explore the skills to give you a foundation in understanding content creation for both 2D and 3D games. Learn to develop well-versed 2D and 3D asset creation for game development. You will learn a variety of software tools to gain the necessary skills for 3D modeling, texturing, lighting and animation.

  • Game Art Books - This is a collection of eBooks and resources where you can learn to create 3D content to suit any game.

  • Video Tutorials - This page provides a collection of in-depth video tutorials depending on the specific software and tools for game art content creation



GAME PROGRAMMING

       Bring your artwork to life by learning and understanding the development side through game programming. Learn the languages and tools necessary to develop and program both single and multiplayer games for consoles, personal computers and mobile devices. The level of sophistication involved in game development is continually advancing. This section provides resources to help you develop critical thinking, problem solving, and analytical skills when it comes to programming games. You will lean to program tools and graphics, networking for online play, the math and physics which bring worlds to life, artificial intelligence for opponents, and user-interfaces.



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



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

  • C# Books & Links - this is a collection of helpful books and links to learn C# programming

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





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.


Beginning XNA Game Studio 4.0 


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.


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.


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.


XNA 4.0 Refresh Continued - Go to this link to download XNA Game Studio Extension for Visual Studio 2010, 2012, 2013, and 2015. You can find further documentation here on how to install it. A link to the XNA 4.0 source code can also be found here.



XNA Game Studio - Helpful Developer Network page for XNA


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 -


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


XNA Video Tutorials & More - This page contains a collection of tutorials utilizing the XNA Framework


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 

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








Unity

       Before I dive into Unity, I have come across so many articles these days with people saying how much they hate XNA and things like "Screw XNA! - use Unity Instead!" Just to be very clear, XNA is not a game engine; it's a framework. What I mean by that is XNA is essentially a set of Helper Classes to help game developers save time programming their games. Those classes are saved into .dll files which are a set of library files. This is where I think Microsoft slipped up on the whole "tools" part. The following tools come with XNA after you install it:

  • Microsoft Cross Platform Audio Creation Tool 
  • XACT Auditioning Utility
  • XNA Framework Remote Performance Monitor
  • XNA Game Studio Command Prompt


       XNA does not come with features like tile-maps, particles, scripts, physics, level editors... etc. If you are looking for a game engine that has all of these things, then Unity is what I recommend. With XNA and MonoGame, you have to code everything yourself for the most part. XNA and MonoGame exists less as an engine and more as an extremely robust and superbly usable library system. As I mentioned before, Unity has Mono built into it. So if you are eager to finish your XNA game, with some work, it is possible to import your XNA or MonoGame project into Unity. So don't throw away your XNA game projects just yet. This is great news! I posted a link below of an example XNA game project working inside of Unity. With that said, I am aware that importing XNA game projects into Unity can pose a ton of hassles. My hope for Unity one day is for them to create an extension to allow XNA and MonoGame projects to be easily imported as an option for developers.
       
  • Platformer Starter Kit - This is proof of concept showing the Platformer XNA starter kit running inside of Unity3D. Zero code changes have been made to the original game code. Using a mixture of new code and some code from MonoGame, the author has implemented XNA emulation. They did so by having a game object with a script attached running the XNA game performing updates and drawing. 


With that said, Unity is a fantastic game engine and very user friendly. Many developers often times find themselves purchasing add-ons to make the engine better but in my personal opinion, I don't think you should have to.

Advantages of Unity:
  • You can build for nearly all major platforms
  • Easy to learn
  • Great Assts pipeline, which supports most 3D packages
  • Helpful Community and hundreds of tutorials
  • Good Documentation
  • A big fund as backbone which will allow this engine to be further developed and get better
  • One of the most optimized mobile engines

       The basic version of Unity is free but if you are serious about game development, you will need to purchase at least the pro license. If you want to develop for the iPhone and Android, you have to purchase their pro license if you want your game to support those platforms. While Unity has many advantages, many of the crucial features of Unity are not included. I say this to help make indie developers more aware. For indie developers on a tight budget, this can be pretty pricey. With that said, I am not criticizing Unity in any way. I am simply pointing out that making games often cost money! Fortunately, everything that I have created thus far has cost me literally no money. I also found a way to import some of my game projects into Unity. They aren't perfect by any means but I am continuously fixing them. This is something I would like to continue.  If you plan on making a game in Unity, these are things worth considering. With that said, below are some other things to consider.

  1. One User Per License. You must purchase a license for each individual using Unity Pro and any other paid Unity Products. 
  2. Do not forget that the individual platform and team license purchased at an additional price. So be careful because the apparent cheapness of the Unity engine is just an illusion. 
  3. Unity is closed sourced. This actually doesn't bother me in all honesty. I understand they want to protect their product. This is the reality with majority of tools. That is simply are you limited by the technologies of the tools. Developers can feel limited only by the fact that the Unity technologies realized. 
  4. It is possible to write scripts in 3 languages: C#, JS, Boo. There is the possibility of using other scripting languages. Object-oriented programming
  5. If you encounter bugs, you can send in bug reports to have them fixed but often this means waiting for a new version of the engine with the bugs fixed. 

Unity3D - the main website


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 Tutorials



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






SunBurn 

       
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.



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:






Universal Windows Platform (UWP)
       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.




Steamworks.Net - This is a C# Wrapper for Valve's Steamworks API. It is designed to be used from both Unity and standalone C# applications such as XNA and MonoGame.


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 



MUSIC & RECORDING ARTS
Devout Sound Design

        Learn a variety of software tools to produce audio for you games. Whether it be creating sound effects, music or dialogue, this section will help you develop a broader understanding of audio skills. Taking your ideas and translating them onto a recorded product can be a powerful experience.

  • Books - a collection of books on software for creating and recording sound effects and music

  • Video Tutorials - This page provides a collection of in-depth video tutorials depending on the specific software and tools for creating both sound effects and music for your games




Video Screen Capture Programs


Places to Sell Your Game(s)


Sites to Email About Your Game



       With everything that I have covered, nothing is perfect. Many people ask me which tools are better. In my opinion, the tools don't really matter. Its not a question of which game engine is the best but rather which tool is the best for you to use and for your game. Its a matter of which tool you feel more comfortable with. It's a matter of preference. There are people who have made successful games starting with nothing from scratch and there are tons of successful games made with all sorts of game engines.