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. XNA is good for experienced indie game developers who are comfortable using a framework to build their own engine on top of. 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 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.
If you are just beginning, I recommend using an existing game engine such as GameMaker, Unity or Unreal rather than a framework where you will have to build your own, but I will leave that up to you. 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.
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.
INSPIRATION & MOTIVATION
- Books - This is a collection of inspirational and motivational books
- Videos - This is a collection of inspirational and motivational videos to help boost your self-confidence and achieve your goals
- 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.
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
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 & Articles - 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
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 learn 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.
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
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
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.
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 4.0 Refresh Continued - Go to this link to download XNA Game Studio Extension for the following Visual Studio versions: 2010, 2012, 2013, 2015 and 2017. You can find further documentation here on how to install it for Visual Studio 2017. The XNA 4.0 source code can also be found there as well.
Beginning XNA Game Studio 4.0
- Introduction to XNA Game Studio 4.0
- Getting Started with XNA Game Studio Development
- Developing Xbox 360 Games
- Writing Game Code
- Adding, Art, Music, and Other Game Assets
- Advanced Topics
- Packing and Distributing Your Game
- XNA Framework Class Library
- Content Pipeline Class Library Reference
- Working with Windows Phone Behaviors
- Class Library Reference
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
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 - 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 - 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 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.
- Creating a Simple 3D Game with XNA
- C# XNA Made Easy
- C# XNA Platformer Made Easy
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.
- GitHub: download the one framework for creating powerful cross-platform games here
- Learn 2D Game Development with C#: this book uses the MonoGame Framework
- XNA 2 MonoGame: Learn how to transition your XNA projects over to MonoGame
- MonoGame Community: the official MonoGame Community Facebook Page
- MonoGame Indie Devs: a public friendly Facebook group for MonoGame devs to ask and answer questions, get help with projects, show off their work, etc.
- MonoGame Pipeline Tool
- IndieDB - MonoGame's Indie DB Page
- Randomchaos - MonoGame Samples created by Charles Humphrey
- MonoGame Tutorials
- Developer's Club
- MonoGame RPG Tutorials
- Making 3D Games with MonoGame - a video tutorial by Richard Garside
- The Darkside of MonoGame - a set of video tutorials produced by Simon 'Darkside' Jackson
- MeoMotion - a free 2D game character animation tool created by Jason White
- C# MonoGame RPG Made Easy
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:
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.
- One User Per License. You must purchase a license for each individual using Unity Pro and any other paid Unity Products.
- 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.
- 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.
- It is possible to write scripts in 3 languages: C#, JS, Boo. There is the possibility of using other scripting languages. Object-oriented programming
- 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 3D & 2D Game Development - This is the index page for access to important websites and tutorioals.
- Creating a 2D game with Unity
- 2D Game Creation
- Unity 5 2D Platformer Tutorial
- Serializing and Saving/Loading Data in Unity3D for UWP 10
Unity Prefabs - A list of prefab links posted by John C. Brown
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:
- Platform Layer - a managed framework for developing games
- Project Layout - using SunBurn
- Portable Development - work outside the sandbox
Universal Windows Platform (UWP)
- What's a Universal Windows Platform app?
- Guide to Universal Windows apps
- Intro to UWP apps
- Visual Studio
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?
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
Convert Videos to Gifs
- Zamzar - a free online file conversion website which supports a wide rage of formats
Video Screen Capture Programs
- OBS Studio
- Any Video Converter - This tool allows you to convert videos into any format. Its helpful especially for the huge AVI video file sizes Fraps produces at high quality settings.
Places to Sell Your Game(s)
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.