You may not agree, but video games are just about the coolest things in the world.
I've always thought that programming is creation in its purest form. Limited only by hardware and imagination, a skilled programmer can create anything, and video game development exemplifies this belief.
While some people only see video games as a time wasting distraction, the reality is that video games are interactive stories that provide a sometimes needed escape from the worries of the real world.
They take us far away into a world that does not exist where anything is possible and dreams come to life. They can be beautiful, endearing, frustrating, magical, scary or any number of other things but they are always completely baffling.
I mean really, I've seen a simple for loop crash computers, variables that aren't properly disposed of cripple systems and a misplaced call reduce websites to an endless realm of loading bars; but somehow video game developers are able to create a flawless experience that calculates 3D collision for every object in their world while simulating physics, adding intense graphics and audio output, and handling user input.
If that's not magic I don't know what is.
XNA (First Impressions)
Recently I decided to pursue this particular interest of mine and build a simple game. I figured people do it all the time. The app stores are flooded with games of all shapes and sizes; it can't be that hard.
Let me start by saying that it isn't, but only because of the brilliant and generous people who have created game engines for general consumption.
As I began my quest, my admiration for game developers increased at an unprecedented rate. My native language is C#, so I started where any good Microsoft lackey would – with XNA.
It was my first look at anything game related, so my opinion very well might be biased. That being said, XNA was difficult to grasp.
It's always a red flag for me when I search for how to use a tool and the top search results are books.
If a software company has to resort to books that means their documentation is bad, and their developer community is nonexistent.
Apart from being limited in deployment options (can only be Microsoft products) it's also not very intuitive and requires a firm grasp of programming in C#, an understanding of the run-time logic of XNA, and a solid foundation in math to do even the simplest thing.
It took me about a week to learn how to import an external 3D model and play an animation on click, and by the end that's all I had. A 3D model that could only generously be considered a hand (I'm not great at 3D modeling) that closed on click and moved around using the WASD keys.
In comparison, using Unity, it took me only three days to entirely create a simple game.
The Magic of Unity
After trying XNA I decided to look into some of its competitors and found a few good options, namely Unity3D and Unreal Engine.
Both are reputable and have great reviews, but I liked Unity's licensing agreement better and it seemed easier to find support; they have a great developer community.
Opening Unity for the first time I was expecting to be overwhelmed – like I usually am when first looking at new development software – but I was surprised to find the UI was simple and made sense.
Once I finished messing around for a little while, to familiarize myself with the program, I found a great series by Brackeys on Youtube
The series, titled “Make a Game,” consisted of only 13 videos, but after following them I was comfortable and confident using Unity.
Throughout the series they touch on a lot and provide a solid foundation for almost every aspect of game development: importing 3D models, the animation engine, how to play and tweak audio files, materials and meshes, basic UI uses, and proper scripting; and that's just in those 13 videos.
They also provide a more extensive tutorial titled “Survival Game” that goes into much greater detail about how things work within Unity, and tutorials in 3D modeling.
Along with those videos and many more, there is also Unity's community which is awesome. It's filled with tons of people who are asking questions and tons of people excited to share their answer.
Their documentation is easy to search and understand, and the asset store allows you to extend the core program to work perfectly for you and make creating your game enjoyable and, dare I say it, easy.
All in all Unity is simple enough for beginners to use, and powerful enough to handle anything you can imagine. For those of you looking to get started with game development I can't recommend Unity highly enough.