10 productivity tips to not give up on your game project

These tips are not just for game development, this applies to almost anyone who wants to create stuff and can apply to any project in your life.

ExtraCredits is a really good youtube channel for anyone who is interested in making games. Today I saw this video on their GameDesign playlist. It gave some amazing tips as listed below. This is just a summary for those crazy people who prefer reading instead of watching videos, like me :)

1) Don't plan a project that will take you more than a month
This is a great point. After years of having dropped projects, prototypes and trying to do too many things, or everything that excites me at the moment. I guess this is a must follow.

2) Its gonna take you more than a month, if you plan for a month.
Haha, yes, so true. But don't panic, but if you hit 3 months, its time to revisit.

3) Don't spend too much time designing
Don't spend too much time designing stuff you don't know if you can build yet. Experience is way more valuable than end result at a beginner level game designer, indie experience.

4) Set milestones - every week
This is going to be a deal breaker if you miss it. It is so important to keep track of how good your estimation skills are, and how much time you actually can dedicate for your project.

5) Break milestones - if something takes more than a week, break it into smaller ones.
The main advantage of this is already mentioned in the previous point, but a more important advantage is you feeling closer to the end result and having a sense of momentum and progress.

6) Send yourself producer emails - what you did, and what you plan to do this week
This is what makes points 4 and 5 valid and trackable, and as you progress, imagine being able to look back at your own reports and learning from your production experience.

7) Review the game at least once a week
Just 30 mins will do. It is easy to forget where you are especially, if your day job or school gets in way. Warning : Its really common to let 2 weeks slip by - and MOST people give up when that happens due to a feeling of no progress gets in your mind.

8) Don't worry about production values - looks, sounds good is not as important as you think
Because these are distractions truly, until you ship a couple of titles out on the web or any platform. There are tons of games which look ugly and still has a player base.

9) Don't spend more than 1 hours, trying to do anything yourself
Stuck? - above 1 hour - look up tutorials/existing solutions. You don't want to learn to build everything. If you do, time to think, do you really want to build games, or just understand how things works and become a specialist.

10) Make people play your game, early and often to get feedback, doesn't have to be complete
The best advice I got for this point is from this article by 2dBoy.

Personal notes - This is specific to only certain cultures. Most of your friends will not give you honest feedback to not hurt your feelings, especially if you are a little "pussy boy nice guy". Most people might leave your game in 10 seconds, if you were not standing behind their shoulders. So playtest it with kids, or people who you don't know etc. And don't be too nice when you ask them for it, because you will make it awkward for them to say no, or say negative things.

So a very valid place to find feedback is on the internet. Here is where things get tricky, its really good to be hated than being ignored. And most people on the internet have very low attention span, so the game that you put months of effort into is just another free game for them. And it is not their fault, it is your responsibility to catch their attention in the first 10 seconds and hold it.

And you will be ignored. A lot! Especially if you put the game to the wrong audience, which is what marketing is all about. So make sure you don't get disheartened because you barged on this facebook group just to promote your prototype and everybody didn't just play your game immediately and give feedback, stopping everything they are doing in their life.

Happy game making :)

Game development live blogging - Part 2

Alright yesterday I left a body-less snake alone in Part 1.

Today I am going to make it attach with its body, and have you test-drive the snake in the editor, even in "Edit mode"... Fancy! I know, that's one of the strength's of Unity3d's editors.

Recap : So far, in the editor, edit mode, I am able to drag the snake's head GameObject, and snap it to the grid. Now its time to link them together.

Usually in the past, I always hold them all in a single array like data structure and keep updating their position using code, by shifting their position data from head to body 1, and body 1 to body 2 and so on. This time I am going to try a new approach. Let's do it the Unity3d's way.

First I am going to declare a new variable called "nextPart" of type SnakePart. I realised, each part's responsibility is only to pass its old position to the next body part. This will be a chain effect and the entire snake will move. Also we never use the body part's position in any snake game, except for to check collision between head and all of its body parts every time the head moves.

Added this line to SnakePart.cs script
public SnakePart nextPart;

Now the editor inspector looks like this

Now drag and drop, body1 to the next part. Do the same thing with body2 and drag and drop that GameObject onto body1's SnakePart script. Now the link is formed. For the sake of aesthetics, lets make more body links, by copy pasting the existing body parts. Highlight "body2"on the hierarchy window and pressed Cmd + D until I see body3, 4 and 5.

Now to drag them all as a snake, I need to pass the previousX and Y position to the nextPart of each SnakePart until nextPart is null. Also I am going to remove the code in Start() method, as I assume the snake body locations will be setup correctly in the beginning due the snapping feature.

So I introduce a new public method called SetSnakePosition(), and use it to set the position.
public void SetSnakePosition(int x, int y)
if (x != this.X || y != this.Y)
if (nextPart != null) nextPart.SetSnakePosition(this.X, this.Y);
this.X = x;
this.Y = y;
this.transform.localPosition = new Vector3(this.X * gridConverter, this.Y * gridConverter, 0);
The above code does two things, it updates the position of the linked snake part behind the current part & it sets the correct localPosition by converting grid co-ordinates into world co-ordinates using the gridConverter scaling value.

In next part we will do more exciting things in the snake and get it to move using the method we wrote above.

Application could not be verified, when installing app to iPad Air

Solution : Delete the existing app on the device and try again.

Note : You don't have to do this all the time. It happens only when a version of the app is installed from the AppStore or from an Ad-hoc source like Testflight.

I hadn't seen this error before, but it happened to me on XCode - version 6.3.1 (6D1002) with an iPad Air. But around the internet it seems to happen to iPhone 6 and 6 Plus too.