From Zero to Hero in Game Design: Beginner's Guide
Tags: gamedev, beginners, guide, unity3d
Published: 2021-09-25 05:45:33

Hello, buddies! Game design is an exciting, rewarding, and multi-faceted field with promising job prospects. However, becoming a game designer can be a challenging journey. Passion, patience, and persistence are essential!

## What does a game designer do?
A game designer is a creative driver responsible for bringing a game to life. They are generally a cross between a writer, artist, and programmer. 


> 
It's not just about playing games and having ideas. You need to not only understand how to apply your ideas into many different, and often conflicting, areas of game design; you must also understand HOW to design, WHAT to design WHEN to design each feature, and WHY you are designing what you are designing.

Every game is comprised of several different gameplay systems, mechanics, and features which all work together to create a fun and engaging experience for players.

Your responsibilities may vary on your team/studio, the type of game you are working on, etc. But generally, Game design is all about - Design, Art, Code, Audio, Polish, and Marketing.

## 1. Design

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1632411198754/ZZ-IenRKX.png)
You’ve got a great idea, But how do you capture it in writing?

Everyone has their own way of doing their best. Some compose 60-page design documents. Others, like me, write a page of badly-written notes, unreadable to anyone else. I don’t know what’s best for you. But I can give suggestions on what to write about:

- Hook -  What makes your game idea great? Is it something that no one has done before?
- Mechanics - What does your player do?  Fighting with enemies to save the world, or just running to escape from evil?
- Story -  This may not be required in some types of games like hyper-casual. But in shooting games, puzzle-like games, etc it is important!. 
- Mood - What impression does your game make? What are the visuals? Sound? First impressions matter. First impressions will hook — then keep — the player playing.

Use Notepad, Trello, or just a paper and a pencil for writing your ideas!

## Art

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1632412307553/tjR7v5IvL.png)
Art is essential for a game. Mainly, the Art part in a game contains, UI design and 2D Animations.

### UI
Think about a way that you can make your UI look unique and attractive — have a distinct color scheme, font(s), shape(s), and icon(s) — while *functional*. Also, it should be readable so the Player can gain the correct info.

### 2D Animations
Don't worry, 2D Animations aren't hard as you think! 

If you need icons, fonts, and other UI stuff, just head to Behance. And if would recommend Blender for creating 3D assets or if you feel boring with doing everything yourself, just head over to [Unity Asset Store!](https://assetstore.unity.com/)(If you're using Unity as a Game Engine)

## Code

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1632411285141/GpX75nn_K.png)
Just don't fear this. I didn't know anything about C# or any other language before starting to make games!

First, Decide on a game engine and an IDE (Integrated Development Environment — basically, an app that lets you code). My recommended game engines + IDEs are in the Resources below.

**Game Engines**

- Unity(Great for beginners and have a large community)
- Unreal Engine

**IDEs**

- Visual Studio Code (For Mac)
- Visual Studio Community (For Windows)

So if you are a new buddy for C#/C++ or programming, just don't worry! You can learn them easily.

Here let's see examples that you will need(these are written in C#, which is used in Unity. Very similar to C++)

**Data types and variables**

 
The root of all code is data. That data is stored in variables. In games, GameObjects, Texts, are some examples of data stored in Variables. You can declare a variable like this:
```cs
public int x = 0; 
```
`int` is the data type. i is the variable name. And that `= 0` assigns zero as the variable value.

Some common data types: `int` is an integer. `float` and `double` are decimal numbers. And `string` is any sentence or a word. 

**If statements.**


 If statements evaluate if a certain condition is true. If it is, run the code that’s inside the if statement:

```cs
if (true){ //true is always true!

    doThings(); //I'm inside the if statement's brackets, run me!
}
```
If the condition isn’t true, we can evaluate other conditions with else if:

```cs
int i = 1;

if (i == 0){ 

   doThings(); 
}
else if (i == 1){

   doOtherThings(); //I'm gonna be run!
   
}
```

Or, just run some other code with else:

```cs
int i = 60000;

if (i == 0){

  doThings(); 
  
} else {

  doOtherThings(); //Again, I will run 
  
}
```

**For/while loops**


 While loops continue while a certain condition is still true, executing the same lines of code over and over again. When the condition is false, the while loop exits.

```cs
while (someBool == true){ //condition

   doThings(); //We'll keep doing things until someBool is false
   
}
```
How long does this while loop last?

Only while `someBool` is true. When it becomes, False, `while` loop will stop.

```cs
while (true){

  doThings();
  
}
```

For loops are basically while loops where:

```cs
int i = 0;
while (i < condition){ 

    doThings();
    
    i++; //increment after doing things
}
```
That’s equivalent to:
```cs
for (int i = 0; i < condition; i++){

    doThings();
}
```

**Basic data structures.**


 So, we have data, and we ways to evaluate and manipulate that data. We can also store that data into some structure — a data structure. Data structures you should know(As a Game Dev) are arrays, lists, and sets.

Here’s a quick example of an array:

```cs
/*
Say you have numbers 0 through 9 that you want to store somewhere. You can store it in an array!
*/
float[] values; // An array of floats
int[] ages; // An array of integers

/* 
If need an array of Gameobjects,

GameObject[] objects; // Depends on Game Engine
*/

```
The [] brackets declare an array. We assign a new array to arr of size 10 - that means it can hold 10 elements. Array now looks like this:

```cs
array = [ 0 0 0 0 0 0 0 0 0 0 ]
*/
for (int i=0; i<10; i++){

    array[i]=i; //We assign whatever i is to the the ith index of the array.
    
}

/*
After the for loop, our array data structure should look like this!
arr = [ 0 1 2 3 4 5 6 7 8 9 ]
*/

```

**Functions and exceptions.**

Functions are basically a small line of code describing a big bunch of code. For example, if you call:

```cs
EatChoco();
And EatChoco() looks like:

void EatChoco(){ //<---this is a function. 

   chocoAte=true;
   
   Debu.Log("I hope mom won't find I ate her chocolate");
   
}
```
Then the call to `EatChoco()` is actually a call to the two statements within the `EatChoco()` function.

If you do something bad in your code, an exception might get thrown. They’re angry red errors there to tell you, hey, back up, what you did right there just ain’t workin‘ out logically. Go revise it.

> 
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1632243483179/udMApnEvf.png)
RIP

**Language**

What language are you going to code in? C++? Javascript? C#? Every language is written somewhat differently and can let you do different things! Just don't let others demotivate you.

Not only learn by doing but learn by seeing is also a great way by the way!

 
Unreal and Unity both have a ton of free example projects. This’ll let you discover how everything comes together. Plus, you can build your game idea off of the project.

I know. Coding is scary at first. Nothing makes sense, you’re hitting constant roadblocks, and you might want to quit in the face of failures and exceptions. It doesn’t mean you’re bad at coding. Coding is challenging. It’s understandable to feel incompetent at first.

But it just takes time, like any other skill. It’ll get easier and fun!

##Audio

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1632411742546/MseRW9uUc.png)
Audio can do wonders for immersion and mood. But, it can cost memory.

Will you include music? Sound effects? Voiceovers or narration?

For any of the above, record and mix them in a way that matches your game’s mood. For example, Bastion uses organic mouth and instrument sounds, matching its game world. Crypt of the Necrodancer uses a blend of electronic beats and chiptune rock to match the colorful, rhythmic game.

Just check out the below resources!
- [Soundcloud](http://soundcloud.com/) 
- [Incompetech](https://incompetech.com/music/)
- [Bensound](https://www.bensound.com/royalty-free-music)

## Polish

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1632412097111/keW3SsUHX.png)
Finally, you've made a game! Congrats! But wait, this is not the end. We have to polish it before selling it!

You’re done.. right?

Well. There’s a 99.99999% chance there’re bugs.

It’s time to bug test! 

Just don't do it yourself. Ask your friends. Of course, they'll be very happy to get early access for a new game! And be sure to play it on all targeted platforms. Sometimes, it might work well on Editor but in an android, it won't work. 

Alright, you found a bug. 

**Check the console for exceptions** Found one? Great! Find the file and line number where the exception was thrown. If the exception sounds like something from Mars or Jupiter, Google it and learn about it. Then figure out why that line number is throwing that exception.

Still can’t figure it out? Write to console. Start tossing in them log statements in the place(s) you think are causing you trouble. Print variable values, and see whether what’s printed is what’s expected. If not, fix that. (`Debug.Log()` is useful in that case. [More info](https://docs.unity3d.com/ScriptReference/Debug.Log.html))


When worse comes to worst, check logs. The logs of your project will give you way more info than the console. Read the last lines where the exception occurred. Google anything you don’t know. Can you fix it now?

4. Sleep. It’ll get fixed in the morning. This is just a bad dream. Right? (This is an approved solution, to be honest)

Let's see some common errors (specially in Unity).

- **NullReferenceException**
```cs
var.doThing(); //throws NullReferenceException: Object reference not set to an instance of an object
```
Problem: You’re doing a thing on a null (nonexistent) variable.

Quick fix: Check if the variable is null before doing the thing.

```
if(var != null)
    {
        var.doThing(); // do the thing safely!
    }
```
- **SyntaxErrorException.**


Problem: Your code has invalid syntax.

Quick fix: In the Exception message, it should tell you what character is throwing the error. Change that character.

Note: If the character is a double quote, make sure you’re using dumb quotes instead of smart quotes:

```cs
" //dumb quote
” //smart quote.
```

- **Pink or black screen.**


Possible problem: Some shaders can’t render.

Possible causes: You’re using a 3D shader for a 2D game. Or, you’re using some shader feature unsupported by the target OS. Be sure to use mobile shaders for mobile games.

Great, you've nicely polished your game! Then, the most important thing,

## Market

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1632412246580/UUBIQpFan.png)
Congrats! You’ve made something. It’s time to show the world what you’ve made.

In general, marketing is our most anxiety-inducing stage. If you, too, get doubtful, the game developer community is helpful. You’re not alone in this. And you’ve come so far — might as well get through to the end, right?

Good. So now what? Let's see with the essentials. You'll need:

**A website**

Whether your website acts as a home base for all of your games, or just the one you're currently working on, it needs to be updated frequently and departmentalized. The home page should feature an extended overview, captivating screenshots (a picture of your UI isn't all that exciting), and relevant links. You'll also need a media page that houses images or videos. 

**Active Social Media**

At the very least you should have a Facebook page and a Twitter profile. If your game is small or mid-sized this is probably enough, but in theory, you could subscribe to dozens of social media outlets. 

**A development blog:**

While development blogs are less essential than a website and a strong social media presence, gamers and developers alike love to read about the personal struggles and triumphs associated with making a game. Keep it personal, as if you're speaking directly to your readers. Humanize yourself and viewers will connect with and appreciate your plight. Post as frequently as necessary, but try to avoid posting about every little bug fix or new art piece. It's enough simply to prove that your game is coming along.


**Trailers**

This comes a bit later but is probably one of the single most important things you can do to get people excited to play your game. Don't overload it with cheesy titles, and don't think you have to be an expert cinematographer to produce a compelling video. Instead, target each facet of gameplay at least once, clearly display the game's title and the name of your company (you do have one, right?), and keep the cut scenes down to a minimum.

And remember to document everything and share them with your fellow team members!


> 
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1632409948146/45EDKbG0u.png)
Great documentation(I think so.. 😇😇)

Here are some tips that may help you to blow your game on Social Media

- The r/IndieGaming subreddit is a great place to link your YouTube trailers, preview, reviews and game demos. 

Your website should link to your social media accounts. Your Twitter account should have links to your Facebook page and website. Your Facebook page... you get the point!

- It's worse to have a grossly outdated Facebook page and website than none at all. Keep things current. 

- If you must relay your game dev failings to the Internet, try to be funny about it. The same goes for your announcements.

There’s no cheat code to making a game. It’s just a lot of determination and effort. You’ll get confused. You’ll make mistakes. You might even cry!

But that’s okay. It means you’re growing. If you‘re putting in that much effort, I believe in you and your game: You can do it!

If you ever want a hearing ear, just Email me. I would be happy to help you technically as well but for now, I'm a little bit busy. Anyway, my inbox is open!



![1ws.gif](https://cdn.hashnode.com/res/hashnode/image/upload/v1632411088307/Xpi70m0D_.gif)

[Originally](https://mr-unity-buddy.hashnode.dev/from-zero-to-hero-in-game-design-beginners-guide) published on Hashnode
__________________________________________________________________________________________________
## References
- https://gameifyouare.com/2019/05/15/indie-game-marketing-101-part-1-a-beginners-guide-to-games-marketing/
- https://www.process.st/indie-game-marketing/
- https://elearningindustry.com/advertise/elearning-marketing-resources/blog/beginners-guide-marketing-your-games-online
- https://www.gamedeveloper.com/discipline/a-beginner-s-guide-to-making-your-own-games