28/JAN/2015 Meeting activities

This is the list of activities prepared for the meeting. If you don't know what to do, feel free to look through the list of suggestions and pick something you'd like to do. If you have something else in mind, go ahead and do it (and involve others if you can :))

Discussion about gamedev
Think about the way you play games. In a bad game, you often find yourself not being engaged. The game designer wants you to progress through the game the way it's intended. However, if a game is not engaging, you can easily find yourself not caring and start goofing around. Think about why you play the game the way it's intended. And think about how the designer can enforce this. Use your favourite games and game moments as examples.

One example of a memorable moment that can be clearly analysed:

http://i.ytimg.com/vi/mdjLBYxAcUI/maxresdefault.jpg

Metal Gear Solid 4, going through the "microwave" room. All that the player needs to do is move forwards. If the player does not do this, the game completely breaks immersion. Therefore, the game designer really wants the player to move. A sense of urgency is created by dramatic music and dialogue firstly. However, and more imporantly, the screen is split into two panels, the second one showing all of your friends losing their battles. Since the player becomes attached to the characters throughout the game, seeing them overwhelmed gives a strong emotional response, an urgency to advance and help them. While going throughout the room, the player character, who is old and tired, experiences continuous pain and starts moving slower and slower, eventually ending up crawling with what little strength he has. Because of the attachment to the character, the player does not want to see him suffer, and therefore tries to advance as quickly as they can.

Learn Unity
Most of the activites assume you already know Unity. If you don't, you can start learning by making your first game: http://catlikecoding.com/unity/tutorials/runner/

If you don't have any experience with these types of software, and you are confused about what's going on and what you're doing, here are a few tutorials that go over the interface and basic concepts:
 * http://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/editor-basics - video tutorial going through the interface and basic concepts in depth


 * http://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/gameobjects - video tutorial explaining what GameObjects are in a bit more depth


 * http://docs.unity3d.com/Manual/LearningtheInterface.html - documentation describing the interface

Level design
Read this article: http://www.gamasutra.com/view/feature/131736/beginning_level_design_part_1.php (and discuss it with others if you want)

Download the SuperJetroid2D demo project and open it in Unity. Play the scene titled "Level 1". The goal is to get the artifact hidden in the room and then escape through the exit. Use the arrow keys to control the character. The character also has a limited air supply. When it runs out, the player dies. You can fine tune how much air the player has within the "Meter" gameobject.

Check out how the different types of enemies work. Coins don't do anything in the game at the moment.

Screenshot_(11).pngning levels
To start designing your own levels, you can duplicate the scene titled "Level1" and call it "Level2" or something similar. Then you can delete most of the components there. Fundamentally, you need to arrange the level space by duplicating sprites inside the Background gameobject. You can move them in alignment while holding the "ctrl" key. All of your level should be covered in background tiles. Now start laying out Foreground tiles to shape your level into corridors. Foreground tiles are the ones that the player can't go through. Fundamentally, make sure you have an Exit, a Meter, a Player and an Artifact. You need to link the Artifact to the Exit. If you use switches, you need to link them to doors. Lay out some traps and some enemies throughout the level. That's it, you're now designing your own level!

Learn Art/Animation
If you want to, try and find some good drawing tutorials. Share them with everyone else as well.

The fundamental thing about doing art, is that you have to be sketching a lot to become good at it. So, for this week's meeting, you should sketch a character. The topic is either a pirate or a ninja. Use a pencil and eraser for this.

One thing to understand about character design, is that they are essentially made up of components resembling beans.

You can use this for reference: http://profspevack.com/archive/animation/tech_support/images/character_dev/character_shapes.jpg

Characters' proportions are usually defined by their head count: http://www.zebtoonz.com/index_htm_files/527.jpg The more "heads tall" the character is, the more of an adult they are.

If you are struggling with facial expressions and eyes, here are a few references for you to use:

https://andrewduffycca.files.wordpress.com/2010/01/50_facial_expressions_and_how_to_draw_them-20071207-075359.jpg or just google "character expressions" and you'll get plenty of other references.

http://3.bp.blogspot.com/-Rz3TgIIBsDg/Tphml7Fty8I/AAAAAAAAAVo/P1nvGry8wkg/s640/Manga+Eyes+%25281%2529.jpg or just google "character eyes" and you'll get plenty of other references. You can do the same thing for character mouths and such.

Always draw guidelines as to where the eyes should be, as well as the middle of the face, as such: http://curkovicartunits.pbworks.com/f/character%20angles.jpg

Don't try to draw your character in one go. Rather, sketch the body shape, then sketch the arms, etc. Once you are happy with the overall shape and body proportions, start adding a little bit of detail to it and refine it. Try to add some features that make the character more unique, make him stand out and suggest something about his personality.

Once you are happy with your rough sketch, it's time to bring it into the computer. Take a picture of it, or, ideally, scan it in. Open it up in a program such as Inkscape and create a new layer on top. Now use the path tool to draw the contours of your character. If you will want to animate it later, you want to "ink" in different body parts on different layers.

If you have never used a vector graphics package such as Inkscape, you can learn the basic user interface here: https://inkscape.org/en/learn/tutorials/

Most important for this part of your character is the tutorial on Paths: https://inkscape.org/doc/advanced/tutorial-advanced.html but I do recommend going through all of them.

Implement game mechanics
Supplementary article to read: http://www.gamasutra.com/view/feature/4091/anatomy_of_a_game_mechanic.php?print=1

If you want to implement game mechanics, but you'd like a suggestion/challenge of what to implement, here are two mechanics to implement for this week:
 * Combining items . In this mechanic, the player can select two (or more) items and combine them to create a new item out of the two. It is up to you how you implement it. You can use the SuperJetroid demo as an area to work in for this (see Level Design section for a description of SuperJetroid). You can take references from Minecraft, Terraria, Dead Rising or any other game you fancy.
 * Displaying dialogues . In this mechanic, some dialogue is displayed on the screen when the player triggers some sort of event. This is almost fundamental to any game that will tell a story, so it is a useful one to know. The dialogue might be stopping the action or not. One example would be the Final Fantasy type of dialogue: https://lh5.ggpht.com/K_dRFbI4YIeDUg4oEi-qMwpKW9y8fVKJ_DgiAvjKTcDXvJcBPljL_Rc1oPYUQ0YEaQ=h900 and another would be Bastion, where the player can advance even while the dialogue is running http://i.ytimg.com/vi/b5sLkWZpMg4/maxresdefault.jpg . You can also think about whether the dialogue should be skippable or not, include a picture thumbnail of the speaker, etc. Think about how you should store the dialogue written in advance, potentially in an external file? Google around and see what you find.
 * Inventory system. The player should be able to collect stuff on the ground, and then display the items he has collected so far. This is quite common for Adventure games and RPGs, as well as a bunch of other games where there are elements of these two genres. The inventory should reset when the player starts a new game.
 * Scoring system . The player should be able to increase their score when they collect stuff. The score should be displayed somewhere on the screen and reset once the game restarts.

Learn C#
If you know Java, then just start programming in C# and watch compiler errors to adjust your syntax (if needed). C# is more or less identical to Java, so you shouldn't struggle too much.

If you don't know Java/any programming language, you might want to go through this course on Lynda.com: http://www.lynda.com/Visual-Studio-2010-tutorials/C-Essential-Training/83789-2.html