2 years ago, I was just a 17 year old high school student who knew nothing about coding. But I still didn’t hesitate to learn and within a few months I had my first game on Steam.

Up to now, I have made more than 10 different games for both  web, and mobile , with a total of more than 1.9 million plays.

So no matter what level you are, you can still become a game developer . 2 years ago, I thought it was impossible, but still tried to do (indicated). It was also the hardest thing I’ve ever done, but the results were well worth it. Now I realize game making is like any skill – you only get better by trying => failing => improving

It can be said that I have taught myself everything I know and now I will teach you again

To develop a game, you have to go through 6 stages: Design, Art, Code, Audio, Finalization, Promotion.

In this article, I will divide each phase into 2 parts:

  • Advice and lessons I’ve learned
  • Resource needed for you

1. Design

Advice

You’ve got a great idea*

But how do you write it on paper ?

Everyone will have their own way. Some can compose documents up to 60 pages. Others, like me, just write a rather sloppy page of notes that can only be understood by themselves. Honestly I don’t know what’s best for you but I can give you a hint on what to write:

  • Hooks:  What makes your game idea great? For me, this is the most important thing to write down. Once you grasp this, you can write down the next three points much more easily. Are your games thought-provoking? Or controversial? Is it having an unexpected ending? Or, is it doing something that has never been done before?
  • Mechanic – How to Play:  What do your players need to do? And for what purpose? This is your gameplay part. It can be as simple as pressing QWOP to move around in a QWOP game, or pressing buttons to chat in Mystic Messenger, to tons of button wombo combos in Dwarf Fortress.
  • Story – Plot:  How should players remember the game’s plot? What emotions should they have when completing your game? Every game has a story. Be it numbers in 2048, or building a country in Civilization, or silent interactions in Monument Valley. Think about the story that will be perceived by the players in your game.
  • Mood – emotions:  What impression does your game make? Picture? Sound? First impressions are very important. The first impression will draw the player into the game. Presumably, you will give your game a retro vibe with pixel graphics and chiptune music.

Join the hackathon/jam game. You and other participants will be tasked with creating the game for a short period of time. During that process, you will be supported by other jammers. You will feel extremely excited and creativity will just flow. If you don’t know where to start? Try Ludum Dare , one of the biggest hackathon/jam games.

  • Keep a list of ideas. Me and other developers always document my ideas. That way, we can refer back to when we’re stuck with new ideas.
  • When a new idea comes up, stop whatever you’re doing and write it down.

Resources

To take notes:

  • Notes for Mac (👍)
  • Google Docs (👍)
  • Trello

To work:

  • Google Drive
  • GitHub (👍)  Git and Unity .gitignore required.
  • Unity Collab. Easiest of the three but the free version has many limitations.

Game design:

2. Art

Advice

If you have already planned your idea; Congratulations, you did a pretty good job! Now, you can develop the real game.

(If you don’t know how to code, I recommend doing step 3, Code , before Art )

Don’t know how to draw? Do not be afraid. Anyone can draw something beautiful with three basic visual principles : color, shape, and space.

UI

Think about how you can make it unique – have a distinct color scheme, fonts, shapes and icon(s) – but still be practical. Is important information clearly readable and understandable? Having problems with color/font/icon distraction?

2D animation

You have two options:

  • Bone-based . Draw each frame of the animation. For this you should use sprite sheets with TexturePacker (or if you’re using Unity, use Sprite Packer).
  • Bone-based . Draw each detail dynamically, then animate the position. Can be faster, easier and saves memory. If you’re doing 2D and using Unity, try editing axes sprites or Anima2D .

Misc

Here are some miscellaneous art tips that apply not only in games but also in other software.

Tile patterned assets to create tiled images and save memory.

9-patch/9-slice asset with non-scalable borders but expandable internally to create scalable images and help save memory.

Set the size of each asset to a multiple of 4 or a power of 2 to save memory. This depends on how you are compressing the asset.

If you are using Photoshop, use “File > Export > Layers to Files” to quickly export each layer as a file (e.g. PNG, JPEG).

Resources

Create UI:

  • Photoshop (👍).
  • Sketch.

How to create beautiful UI:

Create 2D assets:

  • Photoshop (👍).
  • Gimp.
  • Paint Tool is WRONG. If you like smooth/anime style.

Create 3D assets:

  • Blender (👍). Extremely strong but hard to learn
  • Maya. Good for animations.
  • Max. Good for rendering.

Free assets:

Inspired:

3. Code

Debug.Log(“Oh boy! Time to code!! ^_^”);. Log (“ Oh boy ! Time to code !! ^ _ ^”);

Your first step? Decide on a game engine and an IDE (Integrated Development Environment – ​​it’s basically an application that lets you code).

Second step? Program.

Don’t know how to code? Do not worry. You can learn.

These CS fundamentals are enough to get started. (All the code examples here are in C++, one of the primary languages ​​used by the Unity 3D game development framework.)

1) Data types and variables . The essence of Code is Data. That data is stored in variables. You can declare a variable like this:

int i = 0;i = 0 ;

Where, int is the data type. i is the variable name. And    assign 0 as the variable value.= 0

So what is this?

string s = "pusheen is best cat";s = "pusheen is best cat" ;

string is the data type.  s  is the variable name. And    is the variable value.pusheen is best cat

Some common data types:   int  and   long are integers. ` float and  doubleis a decimal. And string is any sentence.

You want to know more? See more here .

2) If statement . If statement evaluates if a certain condition is true. If yes, then the code inside the statement   if  will be run:

if (true){ //true is always true! ( true ){ //true is always true! 
    doThings(); //I'm inside the if statement's brackets; run me!(); //I'm inside the if statement's brackets; run me! 
}}

If the condition is not true, the other conditions will be evaluated , if any:else if

int i = 1;i = 1 ; 
if (i == 0){if ( i == 0 ){  
 doThings();();
}}
else if (i == 1){else if ( i == 1 ){   
 doOtherThings(); //I'm gonna be running!(); //I'm gonna be running! 
}}

Or, just run some other code with   else:

int i = 60000;i = 60000 ; 
if (i == 0){if ( i == 0 ){  
doThings();();
} else {} else {  
doOtherThings(); //I'm still gonna be running.(); //I'm still gonna be running. 
}}

3) For/while loop . While code loops continue as long as a certain condition remains true, when the condition is false, the while loop exits.

while (someBool == true){ //condition ( someBool == true ){ //condition  
 doThings(); //We'll keep doing things until someBool is false(); //We'll keep doing things until someBool is false 
}}

How long will this while loop run?

while (true){ ( true ){
doThings();();
}}

For the loop is the while loop where:

int i = 0;i = 0 ; 
while (i < condition){while ( i < condition ){ 
  doThings();();
  i++; //increment after doing things++; //increment after doing things 
}}

That is equivalent to:

for (int i = 0; i < condition; i++){ ( int i = 0 ; i < condition ; i ++){ 
  doThings();();
}}

4) Basic data structure: We have data and now it is time to evaluate and use that data. In addition, we can also store that data into a form of structure – also known as a data structure. The data structures you should know about are arrays , lists , queues , stacks , and sets .

Quick example of Arrays:

/*
Say you have numbers 0 through 9 that you want to store somewhere. You can store it in an array!
*/
int[] arr = new int[10]; int [] arr = new int [ 10 ];   
/*/*
The [] brackets declare an array. We assign a new array to arr of size 10 - that means it can hold 10 elements. Arr now looks like this:
arr = [ 0 0 0 0 0 0 0 0 0 ]
*/
for (int i=0; i<10; i++){for ( int i = 0 ; i < 10 ; i ++){ 
    arr[i]=i; //We assign whatever i is to the itth index of arr.[ i ]= i ; //We assign whatever i is to the ith index of arr. 
//Did you know data structures' indices start at 0? 😲//Did you know data structures' indices start at 0? 😲
}}
/*/*
After the for loop, our array data structure should look like this!
arr = [ 0 1 2 3 4 5 6 7 8 9 ]
*/

5) Functions and exceptions:  Functions are basically a small line of code describing a large sequence of code. For example, if you call:

EatBread();();

and EatBread() looks like this:

void EatBread(){ //<---this is a function. EatBread (){ //<---this is a function. 
breadAte=true;= true ;
 printf("I CAN FEEL THE CARBS COURSING THROUGH MY BODY");( "I CAN FEEL THE CARBS COURSING THROUGH MY BODY" );
}}

Then the call is    actually a call to two statements in    function.EatBread()EatBread()

If you do something wrong, an exception will be thrown. They are the angry red errors that are there to tell you to revise it.

To learn more about functions, go here ; for exception, go here .

Then there are other things you should know:

6) Programming languages . What language will you code in? C++? Javascript? C#? Each language is written slightly differently and may allow you to do different things.

7) API (Application Programming Interface) . Once you know the basics, you’ll have to learn your game engine’s specific API. Essentially, APIs are a bunch of powerful tools wrapped in simple classes and functions that you can call. APIs make life easier. Easier way.

8) Look at a project that uses the game engine of your choice . Unreal and Unity both have a lot of free projects that you can refer to. This will allow you to discover how things come together. In addition, you can build your own game ideas.

if (you.getThisFar()==true){ ( you . getThisFar ()== true ){
veryProud=true;= true ;
you.didIt(); //CURRENT MOOD: THE SHKEST. didIt (); //CURRENT MOOD: THE SHKEST 
}}

Word of encouragement: I know coding is scary at first when you’re hit with roadblocks that keep failing. It doesn’t mean you’re bad at coding, it’s a challenge, you’ll have to fail in order to succeed.

But it’s like any other skill as it will take time to learn and master.

End of part 1, continue reading part 2!

source: topdev.vn