Unity For Beginners… From a Beginner

Part 1: “Why use Unity?”

Jon Foust
8 min readAug 24, 2018

If you’re reading this then you may have stumbled across this post in an effort to begin a journey in game development. I’m here to help you gain some understanding of the elements of game design. I mean let’s be serious… You wouldn’t show up to play a sport without the proper equipment or without knowing the rules! But chances are you don’t yet know the rules of the land so expect to suck at game development, at least at first. You shouldn’t feel too bad because you’re new to this (as am I). Hopefully, you’ll find something here to help you get a running start on your own journey from what I’ve learned in my short three months in game design.

Before I start getting too technical, let’s address the prerequisites for getting into game development. The main ingredient is that you just need a passion and desire for creating games! If you code and want to make something fun then you can get into game development. Into art or graphic design? There is definitely a place for you in game development. There is also a place for those who enjoy writing. What’s a game without a script/story? Perhaps video games are your hobby and you have the desire to make something your own. That is enough. You don’t need to be an expert in 3D graphics, Infra/Ops, or game design to have fun.

Selecting a Game Engine

If you’re a beginner then you likely do not have a full development team to work with. So, you are responsible for every part of your game, including the three main areas of design, art, and development/programming. Since I have a computer engineering degree, my expertise falls within the development/programming area. Your experience may put you in another area or none, but you’ll most likely require the help of a game engine. A game engine is a software application that provides the tools necessary to create games effectively. This can include rendering, physics, collision detection, animation, and more. Selecting the right game engine may make or break your creation based on the features it provides. For example, one very important feature is what deployment platforms it can target. Whatever your target platform may be, you have the ability create one project and deploy to all the targets supported without making major changes to your project.

I’ve included a list of a few game engines for comparison below (there are many others):

Unity

  • Uses C# and JavaScript
  • Runs on Windows and OSX
  • Used to create 2D and 3D games
  • Deployment platforms: Desktop, Mobile, Console, Augmented Reality/Virtual Reality headsets

Unreal

  • Uses C++
  • Runs on Windows, OSX, and Linux
  • Used to create 2D and 3D Games
  • Deployment platforms: Desktop, Mobile, Console, Augmented Reality/Virtual Reality headsets)

Godot

  • Uses C++, C#, GDScript
  • Runs on Windows, OSX, Linux
  • Free and Open Source (Community Developed)
  • Used for 2D and 3D games only
  • Deployment platforms: Windows, OSX, Web,

GameMaker

  • No coding experience needed
  • Runs on Windows and OSX
  • Used to create 2D games and games with limited 3D
  • Deployment platforms: Desktop, Mobile, Console, limited Augmented Reality/ Virtual Reality headsets)

It’s not hard to see many similarities between the game engines. For more details, check out this article and pick a game engine that best suits your experience and needs (non-programmers vs. programmers, languages, platform target, and 2D vs. 3D).

As a C# and C++ developer, I had the opportunity to play around with multiple engines (which I recommend) prior to supporting game developers in my work at Google. Unity has everything I was looking for in a development tool: 3D and 2D development, ease-of-use, and multiple platform target options which ultimately made the decision very easy. If you are stuck trying to decide among several engines, your best option is to think of a simple project and try to make the same project across your choices. If you have the time and the ability to do this, you will likely find the one that works best for you. If not, I encourage you to think about features that are most important to you.

A Quick Look at Unity

Just to give you a small glimpse of what Unity looks like, below are images of the Unity UI once you begin a 3D and 2D project, respectively. I will save a description of the mechanics of Unity and its UI for a future post; for now, just take a minute to examine these images.

Unity 3D Project
Unity 2D Project

The UI looks similar in many ways in both 2D and 3D projects, which offers developers a level of comfort when working with both project types. One noticeable difference is the center window. This is the main window in which you will develop your Scene, which contains all of your game objects, levels or playable area, and UI. There are noticeable differences between the two project types so we will briefly explore those.

3D Axes Icon

In the 3D project, notice the icon in the top right. This is used to visualize the axes (X/Y/Z) for your scene. There is also a light source depicted by the sun icon and a main camera depicted by the camera icon, which represents the current/default source of light for your scene and the main camera (view for play area).

In the 2D project, notice there is no 3D axes icon nor a source of light. This makes sense since you will be playing from a flat viewpoint. Lighting in a 2D project is not included by default and must be added to the scene manually. Interestingly enough, there are three axes in a 2D game as well. You may be wondering why is there no 3D axes icon if there are three axes? That is because you cannot rotate around the z-axis in 2D. Try drawing two unique stick figures on a piece of paper and flipping that paper over. Now either you cannot see the image or the image will be completely reflected, which isn’t ideal for a 2D platformer (the figure would be moving in the other direction). The z-axis actually brings game objects closer or moves them farther away. The 2D camera also utilizes the z-axis. Try using your phone camera to take a picture of your stick figure masterpiece on the table. Now imagine changing the picture’s z-axis and your picture ends up on top of your phone. Now change the z-axis of the camera and your phone ends up under the table! This sounds crazy, but cool right? I will dive deeper into dealing with cameras and axes in a later blog post.

Unity in Action

2D Platformer example from Unity in Action

What kind of messenger would I be if I didn’t include something I’ve worked on myself? For the past few months, I’ve been reading Unity books, watching online material, and learning tactics for game design. The image above is from a chapter in Unity in Action. It is a simple 2D platformer (platformers are among my favorite games so I was particularly excited for this) with moving platforms and obstacles to clear. If you’ve played a 2D platformer, then you are probably thinking that you’ve already been introduced to the main mechanics of a 2D platformer after following this example. Add a couple of enemies, wacky obstacles, typical in-game items for health and stamina, and maybe a boss or a hidden secret/area and you’ve made a pretty solid 2D platformer. I’ve also been following the Learn Unity YouTube playlist, which includes many game tutorials for a variety of game genres. These resources were a great starting point for me and I can recommend them for you as well.

Looking for something a little more polished as an example of what can be made in Unity? Sorry I can’t deliver one I’ve made myself (yet) but here are a couple great examples of games made by others with Unity.

Cuphead [Xbox/Windows]

I have played and loved Cuphead. The premise of this impressive 2D shoot ’em up side-scroller is to repay a debt to the devil after a bad gamble. To do so you must defeat all the other debtors who owe the devil. This game is a challenge but amazing! The 1930's style artwork and animation are breathtaking. See the trailer here.

Pokémon Go [Android/iOS]

Pokémon Go is one of the most popular AR mobile games ever released. Bringing a modern approach to the popular adventure RPG from the ’90s, this game lets you catch, battle, train, and trade the hundreds of Pokémon discovered right in your backyard. The game was once so popular that it crashed when released in certain regions because it could not handle the unexpected amount of downloads/users. It still currently has roughly 147 million active daily users (I myself being one of them).

Getting Started

If you’re now thinking about what you need to get started, I have good news. You don’t need much. At a minimum you need to be running Mac OS X or a 64-bit version of Windows. There are also Linux builds but they are not well supported at the moment. Plus, you will need a graphics(integrated or dedicated) with DirectX 10 capabilities. These are the bare minimums; depending on the complexity of your projects you may require a more powerful setup, such as a dedicated graphics card.

If you’ve made it this far, you’re still interested in game development, and attracted to the idea of using Unity as your gaming engine I recommend picking up a book or two on Unity or following along with some YouTube tutorials. Also, stay tuned here. I will continue to share my journey with Unity and other interesting things along the way on this blog. In the meantime, I’ve included a few links below that you can use to get started. I’ve included links to IDEs (Integrated Development Environments) that you can use to script the behavior of your gameplay. I have been developing in Visual Studio for many years so it is my choice for IDE. MonoDevelop has been used for years along Unity so it is very reliable as well. JetBrains Rider is a IDE specifically made for .NET thus making it a contender as well. Play around with the three of them and I am sure you will feel comfortable with one relatively quickly.

  • Download Unity here: Download
  • Download Visual Studio IDE here: Download (Community Edition 2017 is free)
  • Download JetBrains Rider here: Download
  • Download MonoDevelop here: Download

--

--

Jon Foust

Developer Advocate @ Google. Gamer. Maker. Trying to make things easier for others by doing the hard stuff myself. Opinions are my own.