29 November 2014

Developing Square Drop - Part 1

So far what I've managed to do is what the updated timeline (see New extended timeline post) estimated:
  • Create the square, the square sensors, the platform and the platform gap place holder assets
  • Code the square fall on a platform
  • Code the square move across the platform when landed on it
  • Code the square fall again, when off the platform
Thanks to the Pong tutorial I didn't struggle with anything, so it was a very good decision from me to start off with a quick lesson before doing a game myself.

Here's the stage:

Here's the game:

This is what I've coded so far:
Square code:

Platform code:

27 November 2014

Proposal feedback and my response

After handing my proposal in, (it can be read here), the lecturers have provided me with very helpful feedback, which I'm willing to present here. They have also asked some questions which I'm happy to answer.

1st marker:
"Some of your comments are wholly subjective and, in some cases, wildly inaccurate and subject to confirmation bias. You must learn to research and to discipline your mind. You are going to have to change the way you think if you want any chance of succeeding with this dissertation."

I will do my best from now on, to back my statements up with academic referrencing.

"After our discussion, your dissertation proposal began to coalesce and your proposal is sound.
The ‘mass market’ in not a viable market sector, and is impossible to accurately design for. It is, however, viable when discussing UX in a general way, which is what you appear to be doing without referring explicitly to UX. Your observations on UX are relevant, but superficial, and need expanding on. You will need to refine your demographic in order to resolve countless questions related to pacing, mood, theme, mechanics, interaction, narrative, art style, player environment, play-style, etc., all of which will, to varying degrees, play some part in the succes or failure of your product/s."

I will go into more detail discussing what audience my game is specifically for in my future posts.

"Your analysis of job adverts is good. Your marking criteria are also good. However, I am unclear why you are proposing to develop more than a single game. I imagine that you intend to demonstrate that you can reproduce your success, and that you want the flexibility to develop further code-related skills. If so, you need to explicitly include these goals in your proposal and learning outcomes."

The reason why I want to develop more than one prototype is simply because that way I will have to code more, giving me more experience and increasing my programming knowledge of C#. This will be especially true if each prototype will require different mechanics and coding techniques.

"I like what you are attempting to achieve with this dissertation Patryk. If you are successful, you will be highly employable. However, you are currently prone to working in a superficial and uninformed manner, thereby severely impeding your chances of success. You have correctly identified many of the theoretical components of Bushnell’s Law, but are still a very long way away from being prepared for this dissertation."

2nd marker:
"The proposal is lopsided.  You talk about the games being easy to learn and hard to master as a starting point for your own game development. I know you want to make a twitch game but then very little else.  What is the scale and scope for this game, who is the audience?"

My plan is to create a very simple prototype which has no more than two or three mechanics. This is because I don't want to over estimate my project, and spend much longer on it than I thought I would, especially considering that I've only started learning C#, and anything can delay my predictions. My general audience is mobile gamers, but I'll go into more detail soon.

"You want to focus on programming, but again there is a lack of specificity here. What kinds of skills you expect to develop. If you make a second prototype what do you think you will code then?"

By the end of this dissertation I want to be able to code twitch based games and publish them on mobile devices. For example my first prototype requires me to code object movement until a collision with another object takes place, and an object interaction when the screen is tapped. For my second prototype I will design a prototype with a different set of mechanics, which will require a different approach of coding, giving me more experience as a programmer.

"Your reference to the job component of the rationale is very cursory. I want to know what you looked at, what you found and how your dissertation matches up to this, I don’t mind being referred back to the blog, but it is not a substitute for a reasonable statement on the proposal."

I have looked at job adverts which have the following requirements:
  • Possess an understanding of mobile game development and operating systems (iOS, Android and Windows Phone 8)
  • Experience in game development with Unity 2D/3D, C++, C#
  • Computer Science/Software Engineering degree or equivalent work experience
  • Experienced with Unity on at least one published title
  • Excellent knowledge of C++, C# or Java
  • Excellent grasp of object oriented development
  • Created a previous Unity game or demo
I'm hoping that after this dissertation, my understanding of C# will improve enough, for me to consider looking for a programming job, which asks for the skills shown above.

26 November 2014

New extended timeline

Having designed Square Drop I have a better idea about what the development process is going to require more specifically now. Having said that, I present a more detailed timeline until Christmas holidays:

24th Nov
Create the square, the platform and the platform gap place holder assets
Code the square fall on a platform
Code the square move across the platform when landed on it
Code the square fall again, when off the platform
1st Dec
Stop all platforms when the square landed on one
Code the square fall through the gap when the LMB is clicked
Code the square move in the opposite direction when landed on a new platform
8th
Spawn platforms continuously
Spawn platform gaps on the left, or on the right side of the square depending on in which direction the square is moving
15th
Add the scoring system
Add the game over condition
Add the game over message

23 November 2014

Designing prototype #1

Thanks to the way I structured my dissertation, my first prototype has to meet the following rules:

Make it easy to learn:
  • Keep the amount of mechanics up to a minimum
  • Make sure the mechanics make sense, so that players can familiarise themselves with them quickly
  • If possible do not use any text
Make it difficult to master:
  • Since I'm aiming for the twitch mechanic, make a game which tests player reaction and/or timing skill in a challenging enough way to make it difficult to master. The tools I could use for achieving that could be:
    • Pure speed - completing a task as quickly as possible
    • Timing - performing actions at the right moment
    • Precision - performing precise actions
    • Avoidance - staying away from bullets or obstacles
    • Time pressure - completing a task within a time limit

Most importantly though, I need to think of a game that's within the reach of my C# knowledge. The restriction is significant, considering I've only started learning this language, however that won't stop me from designing what I believe is a game that has the potential of being easy to learn and hard to master.

The game: Square Drop
This one twitch mechanic game is all about timing and precision. Players are in control of a square that's moving across a platform which has a gap at a certain point. Players job is to tap the screen as soon as the square is straight above that gap. Once they do that, the square will drop down onto the next platform. The square will be moving at a constant speed, and once it drops, it'll move in the opposite direction, so if it was moving towards the right side of the screen, after a successful tap it'll move to the left.

Players get a point each time they successfully drop the square. Players lose the game if they tap the screen when the square isn't above the gap, or when the square moves off the screen (which would happen if the player doesn't tap at all). Highest score wins. 

16 November 2014

Pong tutorial - part 3

In the last step of the Pong tutorial which can be found under the following link:

http://www.awesomeincu.com/tutorials/unity-pong/

I have learnt the following things:
  • Adding a button
  • Making a button work when clicked (in this case it resets the score and the ball)
  • Adding a score screen
  • Making the score screen update when the ball touches the side wall
  • Setting up positions of GUI objects
  • Adding a GUISkin and setting up font appearance and size
This is the stage:


This is the game screen:

What happens when a player wins:

And that's the new code I have followed and learned:



I think I'm starting to understand the basics of C#, and next week I can begin designing a prototype simple enough, that will be achievable for me to code.

15 November 2014

Pong tutorial - part 2

Today I have completed step three and step four of the following Pong tutorial:

http://www.awesomeincu.com/tutorials/unity-pong/

This is what I've learned from them:
  • Applying a circle collider to the ball
  • Creating and applying a physics2D material to the ball + adjusting friction and bounciness
  • Ball code which covers:
    • moving the ball at certain x and y speeds
    • making the ball move after 2 sec when the game's started
    • random direction at which the ball is starting
    • resetting the ball when a player wins or presses the reset button
    • adjusting the velocity of the ball depending on the collision against the paddle
  • Adding walls around the stage to not let the ball move off the screen, and having them placed inside the HUD object variables to be able to control them all at once for the future
Scene view:

Game view:

Ball code:

HUD variables for the walls:

And the wall objects placed inside them:

Next time I'll undertake step 5 where I'll be adding the score interface.

14 November 2014

Pong tutorial - part 1

So far I went through step one and two of the Pong tutorial that can be found here:

http://www.awesomeincu.com/tutorials/unity-pong/

So these are the things I've learned so far:
  • Setting up the background and camera 
  • Adjusting object positions
  • Creating new layers and locking them
  • Adding physical components to objects (box collider2D to put a hit box around the object and rigidbody2d to add interactivity)
  • Adding scripts to objects
  • Paddle code which covers: 
    • moving the paddles up and down using keyboard inputs
    • making them move at a certain speed
    • making the paddles stop when no keyboard input is active
This is my stage so far:


And this is the paddle code I followed:

The second paddle has identical code with the exception that it gets triggered by the W and S buttons.

Tomorrow I'll add the ball and the code for it so that it moves freely and bounces off objects. I'll also set boundaries within the world so that the ball stays on stage.

13 November 2014

Theory work ends; Practical work begins

Having covered a significant amount of theory work covering Bushnell's law, I am finally going to design and develop my own mobile phone game that'll aim to be easy to learn and difficult to master. Before that happens however, I have decided to get started with C# by going through the following tutorial:

Make Pong game with Unity 2D [ONLINE] Available at: http://www.awesomeincu.com/tutorials/ unity-pong/. [Accessed 13th November 2014]

I have good memories with creating my first Pong game when learning Action Script. It really helped me get the hang of what coding is about, and a few months later my understanding of programming was good enough for me to design and create a fully working 2D game in Flash of my own.

Things have come full circle, and once again I'll take my first coding steps with Pong. This time though, in C#.

This week I'll publish a number of posts representing this journey.

9 November 2014

Four types of games

Here's a grid I found in the teamliquid blog, which shows that games can be broken down into four categories:
[image loading]

The image is self explanatory, however no mobile games have been taken into consideration, hence below I've listed down 8 successful Android games, demonstrating what category they fit in:

Game
Category
Description
Paper toss
A
In this game, players are asked to flick a piece of paper into a trash can. Depending on the trajectory of the wind, a different angle will be required to complete the task.

We’ve all once or twice tried to flick a piece rubbish into the bin like a professional basketball player and due to that familiarity the game is very easy to learn. In terms of mastery, the game is easy in the levels where the bin is positioned close to the player, however the ones that have bins positioned further away, require high precision, making it difficult to master.
Flow
B
Flow is almost patronisingly simple, with players just drawing lines between coloured dots to link them up. The only tricky part is not being able to draw one line across another.

This puzzle requires a bit of thinking, but even the hardest level will take an average player 10 minutes at most to figure out, hence I put it in the easy to master category.
Angry Birds
B
‘Use the unique powers of each bird to destroy the pigs defences. Angry Birds features challenging physics-based gameplay and hours of replay value. Each level requires logic, skill, and force to solve.’

Given the fact that the game asks players to just drag and release a bird, launching it in the air, game play is very easy to pick up and understand quickly. Completing each level doesn’t require a high skill, due to the fact that players aren't asked to do an awful lot apart from releasing birds at the right angle, and performing their special abilities at the right time. Having said that Angry Birds isn't difficult to master, but what makes it popular is the high quantity of levels it offers.
Flappy Bird
A
Tap the screen to flap bird’s wings. Avoid the incoming obstacles. That one single mechanic is understood by millions of players from any demographics or age in seconds.

As of any endless runner, Flappy Bird is technically impossible to master, given the fact that making a mistake is inevitable unless the player’s a robot. What makes it stand out of other games of this genre, is its very high difficulty from the very beginning. Interestingly, the creator didn’t follow tuning, which would make the game progressively harder, instead it is hard from the very beginning. Players get frustrated but not in a way that they want to stop playing, but the opposite - to carry on and on and on, until they feel like they've mastered the game. This, and the Mario related artwork, made it one of the most successful apps.
Retry
A
Quoting the original description: ‘You’re in the cockpit of a smoking, loop-the-looping, out of control, 8-bit jalopy of an airplane.  Fly through treacherous obstacles, and earn stars to unlock new worlds‘

The games controls are straightforward hence it's easy to learn - hold to accelarate, release to decelerate. Keep holding to perform a back loop. Similarly to Flappy Bird, Retry uses a tricky to handle twitch mechanic, making it difficult to master.
Fruit Ninja
A
Slice fruit, don’t slice bombs the description says. And indeed that’s all there is in terms of learning. When it comes to actually playing the game, as easy as it seems at the beginning it gets progressively more difficult as more bombs are being thrown in the air, making it tricky to avoid slicing them.
Super Digestion Moose
B
The only endless runner that I found manageable to master, without making the process too difficult. The aim is to tap the incoming fruits to feed the moose and avoid tapping mushrooms which poison it. 

The game is quite tricky at the beginning, given the fact the hit boxes for the touchable objects are annoyingly small, but since game play doesn’t speed up or get more difficult overtime, eventually mastery is achievable.
Tippy Tap
A
In Tippy Tap the player is asked to touch the black tiles before they run off the screen. Tapping the wrong colour, or not tapping the right tile before it moves off the screen results to game over.

Similarly to Fruit Ninja, Tippy Tap is easy at the beginning, but as the game starts speeding up, it is very difficult to keep up with the pace.

As the table demonstrates, not a single top downloaded mobile game is either hard to learn and easy to master (which is always terrible), or hard to learn and hard to master. The reason behind it, is because mobile gamers, as they're on the bus, at work, or chilling in bed, are the sort of audience who look for an easy non committing challenge. If they want to play something more complex, they'll turn their pc / console on. Having said that, it was a good decision from me to make easy to learn and hard to master games for mobile devices, because those are the ones that attract my audience the most, and sell the best.

Sources:
Game Study #1: Bushnell's Law [ONLINE] Available at: http://www.teamliquid.net/blogs/155657-game-study-1-bushnells-law [Accessed 9th November 2014]

4 November 2014

Dissertation proposal

Student Name                                  
Patryk Swacinski

Proposed Dissertation Title:
Producing 2D Mobile Phone Games that are Easy to Learn and Hard to Master.

Brief Outline of Work:
My dissertation is based on learning C# throughout the process of developing and iterating a number of digital prototypes in Unity. My objective is to keep each prototype optimised and bug free, to demonstrate that I have learnt to program in C# effectively.

My prototypes will aim to follow the principles of Bushnell's law which states "All best games are easy to learn and hard to master". Quoting Gamasutra, this type of games is: ‘addicting; one people want to play over and over again once they've started, and in which starting is smooth and easy’ (link to the article in the bibliography).

This project will take me out of my comfort zone given the fact I have currently no experience in programming in C#. I will also have to perform a thorough research covering Bushnell’s law in order to be able to create artefacts which follow his philosophy.

Below I’ve listed down the steps that I’ll be undertaking throughout the project.

Step 1 – Research
Throughout the first six weeks I am going to undertake research to find out exactly what Bushnell’s theory means, looking at the readings and articles that explain what makes a game easy to learn and what makes a game hard to master. I will then perform a comparison between games that follow those principles to ones that don’t. Doing this will help me draw a conclusion that will prepare me for the practical work.

Step 2 – Design
After completing research work, I will design my first prototype making sure that I follow the information I have learnt throughout the undertaken theory. Given the fact that there is a high market for twitch based mobile phone games, showing examples like Tippy Tap getting 2 million downloads (source:https://itunes.apple.com/gb/app/ tippy-tap/id853590523?mt=8) , or Flappy Bird with over 50 million downloads before it was taken down (source: http://www.bbc.co.uk/news/technology-26114364) , I will be aiming towards creating games that will test player timing and reaction skills.

Step 3 - Development
After designing my game, I will work with the Unity2D engine to digitalise it. Since I want to be particularly marked based on how effectively my C# knowledge develops, I will put full focus on programming. This means that I will not pay any attention on artwork, using place holders alternatively. As soon as the prototype is finished I will transfer it onto an Android device to get it ready for play testing.

Step 4 – Playtest
After completing the prototype I will get my family, friends, and people from the course to play it through. I will then give them a questionnaire to fill out asking them how easy to learn and how hard to master they found the game. Judging by the feedback I’ll decide whether any iterations are required.

Step 5 – Iterate
If the received feedback will state that my prototype is not easy to learn, or not hard to master, I will implement the requested iterations and repeat the play testing process until the players agree that the game successfully represents the principles of Bushnell’s philosophy.

Step 6 – Summarise
Once player feedback will demonstrate that my prototype achieved the aim of successfully representing Bushnell’s Law, I’ll summarise the development process, highlighting design and code related issues I have found on my way, and how I dealt with them so that they can be avoided during the development of my next prototype.

Step 7 – Start over with a new prototype
The amount of prototypes that I will complete by the end of the year will vary between one to three, depending on how long each development as well as iteration processes will take. Although my timeline estimates completing two prototypes, if the iteration process takes longer than expected I will end up finishing one prototype. Alternatively, if I have overestimated the timeline, and as an example - coding will require much less time than previously calculated, by May I will have three working prototypes.

Rationale For The Project.
I’m hoping that this project will demonstrate that having learnt a powerful design principle I can create addicting games. Furthermore, after going through the development and iteration processes of each prototype, I will learn new C# techniques, giving me the experience in the area that I wanted to achieve since I came to this course.

Additionally given the fact that I will gain skills like having the experience in game development with Unity 2D, launching a title on iOS, or being able to code in C#, I will open doors to many work opportunities. A detailed research, showing job offers which highlight particular requirements which I will gain after completing this dissertation, can be found on my blog.

Annotated Bibliography:
Below I’ve listed down a number of books and hyperlinks that will help me throughout the project.

Reference:
Category
Description:
1
M. Tim Jones, Game Design - Theory & Practice, Second Edition, Jones & Bartlett Learning, 2010
Bushnell’s law research
Has a chapter called ‘What players want’ which has useful information regarding making games easy to learn.
2
Brenda Brathwaite and Ian Shreiber, Challenges For Game Designers, Delmar Publishing, 2008
Bushnell’s law research
Talks about techniques that can be used to challenge players which will be useful for learning how to make games difficult to master.
3
Francois Dominic Laramee, Game Design Perspectives, Charles River Media, 2002
Bushnell’s law research
Has a chapter called ‘Balancing challenge without frustrating players’ which will be good for learning tuning which prevents from making the game too difficult to master.
4
Gamasutra: Persuasive Games: Familiarity, Habituation, and Catchiness [ONLINE] Available at: http://www.gamasutra.com/view/feature  /132369/persuasive_games_familiarity_. php?page=1 [Accessed 7th Aug 2014]
Bushnell’s law research
Gamasutra has its own article dedicated for breaking down what makes a game easy to learn and hard to master.
5
Thomas Finnegan, Unity Android Game Development by Example - Beginner's Guide, Packt Publishing, 2013
Creating Android games
This book will teach me how to transfer my prototypes onto an Android device.
6
Claudio Scolastici, Mobile Game Design, Packt Publishing Limited, 2013
Mobile game design
This book is written by two highly experienced industry professionals to give real insights and valuable advice on creating games for mobile phones.
7
Unity Scripts [ONLINE] Available at: https://unity3d.com/learn/tutorials/modu les/beginner/scripting. [Accessed 25 Oct 2014]
Learning C#
Official Unity tutorials will introduce me to the syntax used by Unity.
8
C# Scripting Tutorials for Unity [ONLINE] Available at: http://catlikecoding.com/unity/tutorials/r unner/. [Accessed 25th Oct 2014]
Learning C#
A runner tutorial, will prove useful when learning code considering I’ll be making similar games to this.
9
Make Pong game with Unity 2D [ONLINE] Available at: http://www.awesomeincu.com/tutorials/ unity-pong/. [Accessed 15th Sep 2014]
Learning C#
A written Unity C# tutorial for creating Pong, will teach me how to create a very simple 2D game in Unity.
10
Finally, an interactive tutorial series that WILL teach you C# for Unity3D [ONLINE] Available at: http://forum.unity3d.com/threads/finally -an-interactive-tutorial-series-that-will- teach-you-c-for-unity3d.175410/.  [Accessed 28th Aug 2014]
Learning C#
Video tutorials that will teach me how to create a shooter. Having followed that I will have a better understanding of the C# functions and syntax.


Project Timeline and Milestone Deliverables 2014_15:-
2014 - 2015
Year Long

22 - 26 Sept
Induction

29 Sept - 3 Oct
Week 1
Post dissertation thoughts,
Post about Game mechanics used for touch screen devices
6 - 10 Oct
Week 2
Post about what makes a game easy to learn,
Research and post job offers
13 - 17 Oct
Week 3
Post about the dissertation timeline and marking criteria
20 - 14 Oct
Week 4
Post about what makes a game hard to master
27 - 31 Oct
Week 5
Submit the proposal
3 - 7 Nov
Week 6
FRIDAY 7TH NOVEMBER 4:00 PM FINAL SUBMISSION FOR PROJECT PROPOSAL
Post about four types of games
10 - 14 Nov
Week 7
Learn the basics of C# by following the Pong guide
17 - 21 Nov
Week 8
Start designing prototype #1
24 - 28 Nov
Week 9
Knowing what prototype #1 is going to require develop a more detailed timeline
Start developing prototype #1 (will be more detailed once the game’s designed)
1 - 5 Dec
Week 10
Prototype #1 development process (will be more detailed once the game’s designed)
8 - 12 Dec
Week 11
Prototype #1 development process
15 - 19 Dec
Week 12
Publish prototype #1 on a smartphone
Get people to playtest prototype #1
Start iterating prototype #1 (will be more detailed once the game’s play tested)
22 - 26 Dec
Christmas
29 Dec - 2 Jan
5 - 9 Jan
19 - 23 Jan
Week 13
Prepare for the seminar presentation
DISSERTATION SEMINAR PROJECT PRESENTATIONS DATES TIMES TBC
Prototype #1 iteration process
26 - 30 Jan
Week 14
Prototype #1 iteration process
2 - 6 Feb
Week 15
Prototype #1 iteration process
Summarise prototype #1
9 - 13 Feb
Week 16
Start designing prototype #2
16 - 20 Feb
Week 17
Start developing prototype #2
23 - 27 Feb
Week 18
Prototype #2 development process
2 - 6 Mar
Week 19
Prototype #2 development process
9 - 13 Mar
Week 20
Publish prototype #2 on a smartphone
Get people to playtest prototype #2
Start iterating prototype #2
16 - 20 Mar
Week 21
Prototype #2 iteration process
23 - 27 Mar
Week 22
Prototype #2 iteration process
30 Mar - 3 Apr
Easter
6 - 10 Apr
13 - 17 Apr
20 - 24 Apr
Week 23
Prototype #2 iteration process
Summarise prototype #2
27 Apr - 1 May
Week 24
Evaluate the dissertation project
4 - 8 Ma

Submit the dissertation
FRIDAY 8TH MAY 4:00PM FINAL SUBMISSION OF DISSERTATION ARTEFACT AND BLOG