Game Development Pipeline and Technologies
Tags: flatiron, gamedev, games, unity3d
Published: 2019-04-08 18:53:53

---
title: Game Development Pipeline and Technologies
published: true
description: Game Development for People New to Gamedev
tags: flatiron, gamedev, games, unity
---
If you want to get into game development there are many paths you can take and in this article I'm going to go into the pipeline, the job responsibilities, and the technologies that go into making a game today. I'll try to include as many links as possible and it's my hope that you can come back to this post in the future to use as a starting point to lead you down the path you'd like to follow. I'd like you to keep in mind as well, that you can get started with gamedev today, absolutely free. I think it's also important to know that you also don't need to know how to code to get started.

*NOTE*: Analysis Paralysis is a very real thing so I suggest that if you truly want to get into making games pick anything that looks interesting to you from the outline below and just go ham. Absolutely dig into whatever it is because if you stand on the sidelines carefully picking out your technologies, you'll be left in the dust. Software changes constantly but the underlying principles do not, so just get started on something!

##What is a pipeline?
![Pipeline](https://oyster.ignimgs.com/mediawiki/apis.ign.com/spider-man-ps4/f/f2/CP_MinimalGripForce.jpg?width=2240)

In game dev a pipeline is a clear, methodological process to produce assets and features that go into a game. I'll be taking you through an overview on the process on how a game is created.

##Design Document
![GDD Example](https://www.researchgate.net/profile/Craig_Marais/publication/279998361/figure/tbl2/AS:669369906520064@1536601630051/Game-Design-Document-Template.png)

The process starts with a design document, known as a GDD (Game Design Document) it outlines the necessary steps and overview that will go into a game. This document should be treated as the IKEA manual for making your game. It should include art inspiration and the logic behind certain decisions. Your GDD should be expected to have eyes from every department on it so it needs to be as fleshed out as possible. This document isn't necessary for a one-man team but I find that creating a GDD is pretty fun and takes my idea out of the realm of fantasy and puts it one step closer to being enacted. A portfolio of GDD's can also serve as inspiration for a future project, as you can pull from this body of work to build something new.

##Prototyping

Prototyping can happen anytime that the GDD is being built. Prototyping is basically creating a physical game before you start work digitally. By creating a board game or testing mechanics outside of a game engine, you can very quickly decide what is and isn't fun. This is where you would apply your knowledge of [Game Theory](https://dev.to/scottslatton/applying-game-theory-to-your-app-5337) and check to see if your resources are balanced, if the incentives are there. If you aspire to be a Game Designer you will more than likely live and thrive in this phase. In this stage you can assess level design and player decision and actions. [Mario](https://qz.com/429862/the-original-super-mario-game-was-designed-on-graph-paper/) was famously designed using just graph paper for the levels.

###Technologies Used:
* Dice
* Playing Cards
* Grid paper
* Photoshop (for making custom cards or maps)
* Pencils & Pens

##2D vs 3D
![2D and 3D Mario](http://files.umwblogs.org/gamecult.umwblogs.org/files/2015/03/19223252/2D_Mario__3D_Mario.png)

During the prototype phase you probably have had this choice picked out already, but once that phase is over the decision needs to be made. Are you going to make a 3D game or a 2D one? When making the decision, the one thing that I'd say that is most important to consider is the size of your team. Are you a one man army? If so it might serve you better to stick with 2D. This is due to the amount of work that comes with 3D. By sticking with 2D you can focus almost solely on the level design, player interactions and crafting a story for the player (if that's what you want). With 3D you have to consider not only animation, and texturing (known in 2D as "sprites") but you have to model all the assets as well and create a whole lot more of everything in order to fill the space that the player can now traverse through.

On the flip side of the coin, 3D now encompasses Augmented Reality (AR) and Virtual Reality (VR) and even without these technologies just makes an entirely different experience for the player than 2D. By all means I do not want to discourage anyone from starting an adventure into 3D but I want them to be prepared for the struggles to come.

##Game Engines

Game engines are the sandbox that you put all of the pieces of your game together. They take care of the collision and interaction between objects and players as well as the networking and lighting. *Programmers* will be working mainly within the engine chosen. Picking a game engine is a large decision that should be informed mainly from what you want to do and what you know already. If you want to make a 2D game you can go with [Game Maker Studio 2](https://store.steampowered.com/app/585410/GameMaker_Studio_2_Desktop/) for a 2D exclusive experience. It uses a proprietary programming language called Game Maker Language (GML) which has a reputation of being pretty easy to pick up. One notable game made in Game Maker Studio is [Hyperlight Drifter](https://store.steampowered.com/app/257850/Hyper_Light_Drifter/)

If you've read anything about game engines then you probably know what's coming up. The two titans of game engines are [Unity](https://unity.com/) and [Unreal Engine](https://www.unrealengine.com) (known as UE4). Both of these are free solutions (up to a point) and support 2D and 3D projects. There are many notable games made in UE4 but by far the most popular is [Fortnite](https://www.epicgames.com/fortnite/).
As far as programming goes, Unreal uses C++ and a drag and drop system called "Blueprints" where you can buy modules of code that other programmers have made for a specific feature (like wall climbing) and use it with minimal coding experience necessary. 

Unity on the other hand, uses C# as the main programming language. Previously they supported a version of Javascript called Unityscript but that has been discontinued. One of the main strengths of Unity is it's community. Unity has a very large community with a wealth of shared information. One game of note made from Unity is [Hearthstone](https://playhearthstone.com/).

##Modeling

Modeling is a 3D specific process to create art for games, movies, and other forms of visual media.. It's a mathematical and visual artform where you create objects or characters for games or movies. Personally I find 3D modeling really therapeutic, in the same way making pottery or painting can be. That being said it can be a huge time sink, so professional 3D modellers become masters of their software with shortcuts memorized and value of work judged not only on how good something looks, but how fast you could make it. 3D objects have to be made in specific ways so that the game engines run them efficiently and don't outright break. To learn 3D modelling I suggest following some basic tutorial series to ensure you're following best practices (such as "no N-gons", polycount and proper UV unwrapping).

Another thing to take note of is the difference between *Character Modeling* and a general 3D modeler. Character modelers are highly specialized artists due to the detail and development required of them versus someone who needs to make a brick or a lamp. A technique known as "High to Low Poly" needs to be utilized in order to make extremely detailed models usable within a game engine.

###Technologies Used:
*[Maya](https://www.autodesk.com/products/maya/overview) for 3D modeling (free for students)
*[Zbrush](http://pixologic.com/) for Character Modeling
*[Blender](https://www.blender.org/), FREE 3D modeling software, great for learning

##UV Unwrapping
UV unwrapping is the process of taking a 3D object and making it 2D in order to paint on it. [This can never be a perfect process](https://xkcd.com/977/) but we can use software to help us along. With any 3D modeling software you use, it should come with tools used to unzip and flatten the model to prepare for texturing. However, specialized tools can help tremendously and in my opinion, should be in every 3D modeler's toolkit. One such tool is [Headus](https://www.uvlayout.com/). 

##Texturing

Texturing is the act of coloring and painting those 3D objects that were modeled. Once an object or character has been made, it needs to be unwrapped properly and then painted. This stage forms a lot of the personality of the artstyle in a game so it's important to have a good direction for all *Texture Artists* to follow. You can either paint this 2D canvas in Photoshop or Gimp by hand, or you can use a specialized program like Substance Painter, which I emphatically recommend.


###Technologies Used:
[Substance Painter](https://store.steampowered.com/app/978680/Substance_Painter_2019/#app_reviews_hash) and [Designer](https://store.steampowered.com/app/978690/Substance_Designer_2019/)
[Photoshop](https://www.adobe.com/products/photoshop.html)
[GIMP](https://www.gimp.org/)

##Animation

I'm going to break this into two sections because this is one area 2D and 3D diverge tremendously. They both fall under the same base animation concepts such as keyframing and timing and as such I think any *Animator* should have [this book](https://www.amazon.com/dp/086547897X/ref=cm_sw_r_cp_apa_i_Xa2QCbDXZ2PS1 ) to constantly reference and learn from. It should be noted that any sort of animation requires an insane amount of practice and time.

###2D
![Hollow Knight](https://hollowknight.com/wp-content/uploads/2018/09/cp_thumbs__0001_Life.jpg)
2D animation can be either [hand drawn](https://store.steampowered.com/app/268910/Cuphead/), or digitally drawn allowing for the personal flavor of the artist to really shine through. Whereas 3D likely has many hands on the same model before hitting the stage, and in my opinion can make the animation feel less personal. 2D game design utilizes [sprite sheets](http://www.angelfire.com/mn2/ryuujin/sprites/megamanx.gif) that have many different frames placed on one sheet and then that is sliced up (by the engine) and played like a flipbook at a certain speed to make the animations.

####Tools used:
[Photoshop](https://www.adobe.com/products/photoshop.html)
[GIMP](https://www.gimp.org/)
[Illustrator](https://www.adobe.com/products/Illustrator.html)

###3D
![Picture of Thanos unrelated](https://cdn.vox-cdn.com/thumbor/5wAaYeeQy2ufZoJb4Yi33KueVRM=/0x0:1280x705/1820x1213/filters:focal(323x177:527x381):format(webp)/cdn.vox-cdn.com/uploads/chorus_image/image/60325351/thanos.0.jpeg)
3D animation can be incredibly lifelike and immersive for players. The hard part about 3D animation for games vs for movies is that the animation has to look good from every angle. Models have a skeleton placed within and mapped to all parts of the model with fleshed out controls in order for the animators to actually ...y'know, *animate*. The process of creating those controls is known as *Rigging* which was my specialty.

####Tools Used:
*[Maya](https://www.autodesk.com/products/maya/overview)
*[Blender](https://www.blender.org/), FREE and great for learning


##Audio
Voice actors, musicians and sound effect artists can bring games to life like no other thing laid out in this article. Scores from games like [Halo](https://www.youtube.com/watch?v=0jXTBAGv9ZQ) carry a legacy and sound effects add that extra "oomph!" to player interactions. These sounds are placed within the engine and tied to objects, interactions or menu's by the designers or programmers.

###Tools Used:
[Adobe Audition](https://www.adobe.com/products/audition.html)

##Playtesting

While assets are being made it is crucial to keep a finger on the pulse of your game. You need to make sure that you schedule time to play your game and see if it's any fun. It's important to put your game in the hands of many different people and get their honest feedback. Maybe your menus need tweaking, maybe your players absolutely HATE that they get one-shot constantly. So it should be at the absolute top of your list to get the game into the hands of people that will give you honest feedback so you can improve.

There are so many positions to fill and roles you can take on just get out there and start making something!

As a side note: I'll try to keep this list up to date as much as I can.

Extra reading:

[State of the Game Industry 2019](http://reg.gdconf.com/GDC-State-of-Game-Industry-2019)