Tuesday, 26 November 2013

Game Progress

To start off with, I was looking at online tutorials (YouTube and web based). I was trying to follow their code and take parts that i wanted to adapt it into my own game. however, most of these attempts produced an awful lot of these:
I was struggling with unity, getting the main menu working and trying to build the game from the ground up for a mobile device was also proving to be difficult. Therefore, at the start of this week, i pushed back the main menu and android compatibility, as it is not the highest priority. Then i started working on a small game prototype i had thought of while watching one of the tutorials.

 Here is a quick mock up of the idea i had:


The creates at the side will choose a random colour when the game starts, then the truck at the top will ask for colour . The player will then have to drag X number of boxes into the truck in the given time limit. If they move a coloured box that the player is asking for then they gain a point, if the colours do not match they they lose a life.if they lose all lives or the timer runs out, they lose.

To begin with, the crates will stay their respective colours and the player will simply have to drag the boxes into the truck. there will be only 4 colours to begin with.
the second level of the game will have the creates spawn with their colour and a number to go along with the colour. Then when the game starts they will all turn to brown but their number stay remains, so when the truck asks for a colour, the player will have to remember which number represents which colour (ie. all 5s are blue).
the last level will be the same as the second one but the boxes will not have numbers on them. instead there will be a button on the side that will show all the boxes colour when held down. however, when the button is held down, the time remaining will count down faster.

Things that i am looking to iterate with this game:
Should the boxes respawn or be a single use.
How long should the timer be.
How many boxes should the truck request.
Should there be a bonuses for fast success with creates.


=== current game ====

From what i have learned with making the first game, i went back to the main menu and tried building it again. I is not how i imagined it but it works for now and i can improve it at a later date.

Clicking and dragging the mouse left or right, moves the buttons side to side and the closer they are to the middle the bigger they are.

The game at the moment, looks vaguely like my plan and is not very appealing on the eyes. However, it all works, so i am happy at the moment.

I had an idea while building the game, the idea was to have a separate scene to deal with what game should be loaded next. This screen will be used to keep track of what games have been played on what level, how many games have been played and what game and difficulty needs to be loaded next. it uses an empty object that does not get destroyed when the next scene is loaded, so it can keep track from game to game. I might make some loading artwork for it at a later date so it is not just a blank screen.

My knowledge of unity has improved drastically in this last week from working on the game. I now understand so much more then when i started 2 weeks ago. I now understand how scenes work, choosing Public or Private var's is more important and how to edit an object's properties within code. I feel that this project will have a snowball effect, in that i will struggle to get things working early on but later on will be able to create code far quicker as my knowledge and skill with unity and JavaScript grows.

On a side note, i have now found out that one of the books i had planned to heavy use while building this game, is no longer useful to me. 'JavaScript the Definitive Guide' talks about terms that unity does not support. For instance, Math.Random() is not supported in unity but instead unity uses Math.Range(min,Max) for generating random numbers. However, on unity's site, they have a list of everything and how it works.
http://docs.unity3d.com/Documentation/ScriptReference/index.html
I have found this a god send thus far.




Tuesday, 29 October 2013

MicroGames



Level Up! - The Guide to Great Video Game Design
By Scott Rodgers
‘A minigame is a simple game created to provide variety’ and ‘A microgame is a minigame that takes seconds to play’. Reading this, I feel that the games that I am going to make will be leaning towards microgames more than mingames.

The challenge of microgames for the player is figuring out how to play them in the short allotted time. They are quick and easy to make and offend represent more complex player activities. The author believes that any activity could be represented by a minigame and gives a few examples of some that already exist. Lock picking and cooking dinner being two.

He gives several tips on making minigames. Keeping the controls simple is a must as they imply ‘easy-to-learn’ gameplay. Keeping the gameplay short, as I am looking at making microgames, I am going to aim to have the games last 5 – 10 seconds.  

He then goes on to talk about adding new elements to the game with each progression or group progression. I had planned to do something along these lines, when the player completed a set of games, they would progress onto the next difficulty tier. Finally he talks about having a victory or loose condition so the player is not playing forever.

Lastly he talks about some ‘Universal Truths and Clever Ideas’. 

‘Design mechanics, hazards and props that work well with each other’. My understanding of this is that you should not use anything that seems out of place. For example, if you made a game where you were a cat trying to get home by jumping from roof to roof and a load of aliens came down, started shooting everyone that you needed to avoid, they would seem out of place.

‘Good game design is like music: it has a rhythm that the player can feel’. I think this is similar to the above and making sure the game feels nice to play.

‘Games should be challenging but not overly difficult’. This is the one that I will mostly likely struggle with. As I have said before, because I will test the game for bugs again and again, the games to me will feel too easy because I know how to beat them.

‘No rocks on the heads of the player:  be fair when punishing your player’. From other books ive read, it is common knowledge that ‘cheap deaths’ where players are killed without warning, can dishearten some players. However, there have been some games built around the concept of cheap deaths and the other way to win is to die hundreds of times to learn every stage. ‘I want to be the guy’ is a good example of one of these.

‘Be creative: don’t resort to worn-out clichés like crates and whack-a-mole unless you have to.’ I think that this is what the other book was talking about, how to use old ideas but then put your own twist on them.

‘No cat Moustache: don’t make puzzles so cryptic that the player can’t use logic, knowledge, or skill to solve them’. At the start of each of my minigames, I had intended to give a single vague hint along with the controls for the current game. Also, as I am aiming to build micro games, I don’t think there would be enough time for the player to complete a complex challenge.

‘Give the player opportunities to catch their breath by providing plenty of checkpoints’. For my mini games, I have planned them so they will wait until the player chooses to start them. Therefore, if there is a knock at the door or someone starts talking to them, they are able to stop without losing the whole game.

Also in the book, Scott talks about boss battles and progression. I would not include them in the initial pitch but if I had enough time towards the end, I might look at having mini games that acted like boos fights. So when the player completed enough minigames, they had to complete another set game that that was slightly harder before they could play the next tier of minigames. This would give a clear dividing line between difficulties and hopefully a sense of acc

MiniGames



HTML5 Game Programming with enchant.js
Brandon McInnis and Ryo Shimizu

Chapter 5
Mini games are small, made by 1 – 3 people. They can be made in less than an hour but shouldn’t take any longer that a few days. Reading this, I had originally planned that each mini game would take 2 – 3 weeks to build (code, art, sound). But now I feel that is far too long and if they take any longer than a week, they are going to be too complex.

Start by designing a small simple game around the skills I already have. Don’t be 100% original as you run the risk of no one enjoying the game. ‘Imagine a food that no one has tasted before, cooked by someone that has never cooked before’. Innovation is important, but it’s not worth ends up terrible. Instead start by combining familiar themes and gradually start creating my own unique twist from there.

The book then goes on to talk about how players should grasp the game in ten seconds or less, as people can easily loose interest with a game that has too many rules or seems overly complex. In a perfect game, players get hooked the instant they start playing. When creating the mini games, I will need to think from the average player’s view and whether they will find the game fun within ten seconds of play. Additionally, be careful with tutorials, players do not like to read massive blocks of text explaining how to play. Skip-able tutorials are most preferred, as integrated tutorial levels can become tedious to experienced players.

‘Time Attack’. The book talks about how in most games, you can up the ante and fun by adding a time pressure. It gave an example of playing “High Speed Reversi”, which is at its core Othello with a time limit. I tried to play it, however the site is in Japanese and I have no idea how it works. However the concept of time attack is often used in many games as an additional challenge to players who have already completed the game.

It also talks about how not to be concerned with what is not in the game or not having enough time to complete the game you had envisioned. Instead focus on creating the best game you can in the time you have available to you. I think this is the same concept as over scoping, planning small and building upon it if you finish with time to spare.

The section ends with saying that you should aim to make it fun for others to play. It talks about how you should not try to aim for a game that will get hundreds of hits but instead making a game that is fun for your friends to play.

Most of what this section talks about are things that I have already learned over the last two years. However, I am aware that I do have a habit of making games to my own tastes (2D, complex shooters). I feel this comes from my attitude of ‘why cant the player have an ai buddy’ or ‘why cant the player swing a sword as well’. I would then code this into the game, partly to see if I could and partly because I like games that the player has a wide range of options available to overcome a problem. However, when you add more mechanics into a game, you have more mechanics to balance. Thus often the games I created were amusing but not always fun. 

Additionally, because I am the one who is constantly testing and adjusting the game, I would find that it was too easy, so I would crack up the difficulty a little. However, when someone else tried to play my game, they would find it punishingly hard, as I had made the game for my tastes.


Saturday, 19 October 2013

Next Steps



I want to me marked on the code that runs the game rather than on the game itself, Art, Fun Game Mechanics etc. The reason behind choosing to learn unity code for my dissertation is because it is a good program to start building mobile games in, which is the market i am looking at getting into.

The revenue in the mobile game’s market is picking up across all mobile platforms, mainly in the iOS titles, with freemium titles being the big leaders. We over here in the UK do not tend to put too much money into mobile games compared to Asia and more Eastern countries. When I visited We R Interactive with the university, their CEO told us that when they compared downloads with revenue generated from the game, they found that the highest percentage of their downloads came from the UK, however, the highest percentage of their revenue came from places like Turkey.
Additionally, while at We R Interactive, one of their coders mentioned that when he first left university, he found it hard to find a job. But last year, he was constantly receiving emails from teams asking if he would join them on a project. indicating that job opptunity is incressing.

One job site I looked at had a feature that let you see past job offers matching the search criteria. I searched ‘Unity’ and ‘Game’. In 2011 they only had 7 posts. In 2012 there was 19 posts and in 2013 there have been 26 posts, which indicate an increase in available jobs. Looking at other sites like Monster.co.uk, I had a look at some of the skills that they were looking for. Most offers were looking for C# coders with at least 3-4 experience with a few looking for C# or Java. A few offers were also looking for people with some skills in 3ds max and Photoshop.

Looking on some forums where people had made posts asking about ‘which is better for unity C# or Java?’ and ‘Learning Unity, Where do I start?’. The community seems to be one sided with C# being the better code to learn, arguing that even though it is harder to pick up than java, it has more usage outside of unity and that the java used in unity is a watered down version of javascript.  But from the people that suggested starting out with java, they posted several sites that they used to learn it from. The two that seemed to be most promising being:
http://unity3d.com/support/resources/tutorials/
Unity Game Development Essentials by W Goldstone was one of the recommend books to study and I am currently looking through Unity 3.x Game Development Essentials by the same author.

Even though learning to code with C# is the best choice to do. But as I have less than a year to learn a new code, I am going to aim for java as it is the easier of the two to learn. At the end of the year, i will look at learning C# as it will most likely help my employability. My next step is to work through some of the tutorials and books to gain a basic understanding of how unity works. This in turn will help me to understand what else I need to learn in order to build the game I am intending to build.

Thursday, 10 October 2013

Initial Dissertation Idea



I want to learn how to build and code games in unity. For my dissertation, I am going to build a game in unity for mobile devices. Because I want to be marked on my code more than the end product, I am not going to focus too much on the art work and the mechanics of the games.

Raw Concept of the Game Idea
The game that I am going to build will essentially be a collection of mini-games within one large game. Similar to games like Frobisher says and WarioWare Smooth Moves, the game will have the player complete small, short and simple mini-games. My idea will be aimed at less game savvy people, middle aged people and people who just want something to occupy 30 minutes – an hour of their time while they travel or are waiting for something. Because of this, the mini-games will not be overly challenging or have complex controls.

Additionally, I will have to experiment with art work to get the feeling I want. Not to flashy but enough to keep the players attention.  


Players will be scored on how many mini-games they can complete in a row. As the player continues to complete the games, they will become progressively harder with new ones or modified versions of the easier games.


This is the first idea of how I want the main menu to look and how players will interact with it. Using their thumb, they can scroll up and down the options. As they scroll, the option in the middle of the screen will become larger, giving the illusion that it is coming towards the screen. Taping on the option will choose them. ‘Play’ will start the game. ‘Stats’ will show the players largest score, times played, mini-games played etc. ‘Practice’ will allow the player to play a single level that they have played before but maybe could not complete. This option will be an additional feature depending on how hard or easy I find coding in unity. At the bottom of the screen I will have a random fact like ‘Broccoli and cauliflower are the only vegetables that are flowers’.


From the games that I have made in the past, one thing that people have commented on was that they were unable to pause the game once they had started. Therefore, at the start of each mini-game, I will have a screen that gives simple instructions on how the play and it will wait for the player to tap the screen to start. This will allow the player to have a break if they need to while playing the game.
The instructions will tell the player to tap, press and drag or swipe, with a vague hint for the game. Some games will be obvious to the player but some may require the player to experiment slightly in order to win. For example, ‘tap all the red squares’ but if the player taps blue squares or red circles they will fail.

Some games will require the player to solve a puzzle in a set time or have 3 lives for the game. When the player fails a puzzle, the game ends and they receive a score and a new high score respectively.


Basic structure for the game (From my experience with AS3).
When a game is played, it’s state is changed to used. Therefore, the player will not play the same game of the same difficulty in one play through.

Before I start working on the game, I am going to first have a go at a few Unity tutorials so I understand how to code with java and how the class system works in unity. In addiction, I will also have a look that studies into attention spans, keeping people’s attentions and how much to reward the player for completing a game.

Scoping
I am quite competent in coding in AS3 but unity is completely new to me. After having talks with my tutors about this idea, to avoid over-scoping and ending up with an unfinished game, I plan on only building a very basic game to start with. To begin with, the main menu will only have the ‘play’ and ‘stats’ options. I plan on making 3 different mini-games with easy, medium and hard difficulties. This will allow me to focus on the mini-games having the right feel to them and that they work correctly. As the year goes on, if I pick up coding in java and using unity, I can increase the number of mini-games and add the ‘practice’ option.