Saturday, 31 October 2015

Story and Production Line

With every plan and idea coming together, only one thing remains to do: develop a story. Now my game is designed to be a quick, arcade-like game so from the start I never really considered introducing a story to it. Saying that, I think there should be some form of context to what the players are doing somewhere in the game but not one that’s too in depth else it will slow down the fast pace of the game.

My short and quick concept is that each player is one of two brothers who are arguing about which one of them is the best shooter in the West. Eventually they decide to resolve the issue with a target shooting contest. At the end of the game, the player who did best is crowned the winner and that brother is the best shooter of the two.

Coming up with a short story didn’t take very long and adds a little bit extra to the game in terms of some context. Finishing that allowed me to go onto the final stage of the design process: the production line. This isn’t the same as in a factory where items are created, instead it’s a timeline of the projects design, showing when criteria were accomplished and when deadlines are approaching. My production line starts at the end of October, with the first marker being the creation of my specification, and ends approximately halfway through December when I’ll hand in my GDD containing all the details and plans of my game. Production lines are good for monitoring the progress of a project and assessing what areas may have needed more time put into them.
Production Line

Thursday, 29 October 2015

Sound Design: Audacity

Our design module has now changed from arts and modelling to covering sound design for a few weeks, which is something I personally think makes or breaks a game. Having the correct sounds in a scene can turn it into a piece of art if used correctly, for example a sad moment in a game will have a much more profound affect on the user if sad music and sound is played. Equally, a strong intense moment of game play will profit from fast paced/heavy music to empower the player.

For our introductory session we were taught about Audacity which can generate it's own sounds, or let you record some, then go on to add effects and edit them. To practice the software I created a selection of spot sounds and loops that could be used for a variety of situations. I had a few ideas of what to do for certain sounds so tried my best to create them first, other spot sounds simply occurred from recording a noise and fiddling around with effects, with the result actually being quite pleasing.


The first of my spot sounds took an auto generated, constant beep, which I broke down into segments to give a phone dial up tone. It isn't hugely impressive but it was the first thing I tried and it could be used for a phone call if ever needed.



The second sound was the result of me hitting my desk and playing around with a few settings. I found one called 'Paulstretch' which stretches out and echoes sounds to an almost eerie standard. The result of this made the slam on the table sound very distant, almost like a rock or object being kicked or dropped in a cave or dungeon.



Using the same 'Paulstretch' effect I recorded myself moaning and applied the effect to make a creepy distant groan. This reminded me of RPG games in dungeons with ambient creature noises and so I entitled the sound 'Ghosts'.


I attempted one more spot sound with 'Paulstretch' as the effect really intrigued me but I needed to have some variety in what I was making. I flicked a glass to make a high pitched ringing sound, then applied the affect and listened to the result. To me the sound is like a discovery noise for something dark or sinister such as a cave entrance or a dangerous scene.



Moving on to different sounds, I wanted to make a very simple light pick-up noise. I auto generated two pings of different pitches and attached them to roll from one into the other. The result sounded like an 80's style coin collection noise.



My final 2 spot sounds were very spacey/futuristic to me in the way that they sound like laser/teleportation noises.While different to each other I believe they could be used for teleport noises or at the very least, lasers.



For the loops, I had to create something that could replay nicely without people knowing when it had restarted. Unfortunately I can't make them loop from the links, but listening to them on SoundCloud allows you to loop it on there. I chose more generic sounds that would be played continuously in game or during a scene, as these are where loops come into play the most.

My first loop was a crackling fire which was actually just light rustling of a plastic bag. I didn't want the crackling to be too loud otherwise the affect would be unrealistic, so didn't normalise the track unlike with others where I needed the sounds louder.



Following on from fire I wanted to do another ambient sound, so decided to attempt a soft rustling wind. I simply blew past my mic for this one and then normalised it so it was easily audible and I think in a scene where the noise is just in the background it could be quite effective.



My final sound was an attempt at crunching leaves underfoot, which involved crumpling a piece of paper. In a loop the clip sounds quite good, however on it's own it isn't so effective, therefore it would sound much nicer in game than here on it's own.

Wednesday, 28 October 2015

Xbox Controllers

For my game I need to have different types of input so that two people can play the game at the same time. Obviously for a PC game I’m going to use the mouse and keyboard for one player, then for the other I’m going with an Xbox controller as it’s set up to work well in Unity. Setting the input axes for the controller has been quite simple and I think it’ll be easy to implement the controls into my final game.

To start with I wanted to add movement and look inputs. I discovered that the input manager is already configured to move the player with the left stick which saved me one job, however the right stick look controls needed to be implemented. I needed to create 2 new inputs called Controller look X/Y which were set to the 4th and 5th axis respectively. Upon playing the game, right stick caused the player to look around, although the Y axis was inverted so I simply checked the box the reverse it.
Two custom inputs

The other things I wanted to play around with was adding the ability to sprint, crouch and jump from the controller. I decided that the controls I wanted were: pressing in left stick (8 on diagram) would sprint, A (0) would jump and B (1) would crouch. Each of these were surprisingly easy as all I needed to do was add an OR condition to my if statements that check the corresponding action can be performed. This solution means that the player can move with either the keyboard and mouse or controller, so for my actual game I’ll need to add a check at the very start of the movement script to assign each player a single input type rather than the ability to use both.
Xbox controls map for reference in Unity

Monday, 26 October 2015

Leap Controllers

Using the Leap motion controller was definitely a new experience for me. It works by using infrared cameras and registering what objects appear in the way, rendering them into game objects. I personally don’t think I’ll be using them in my game but it was a fun experience and I had a few ideas about what they could be used for nonetheless. We were provided with a Unity project containing lots of different scenes that showed off the Leap’s uses and we were told to have a play around, getting use to this new tool.

The first scene simply showed the users hands and responded to you doing different things like clenching your fist, wiggling your fingers and moving them around. This scene is only to show how the Leap controller registers you, so doesn’t have much to do in it.
Simple hands scene

The next scene allowed me to interact with an object, in this case a flower. The flower grows in the centre of the screen allowing you to pick it and hold it. From there you can move it around to look at it and even pull off petals one at a time. This could be a little fiddly at times and the Leap can be a little temperamental, especially if something is covered from below so the Leap can’t see it entirely. However this was a nice little scene to show some basic interaction.
Scene showing how delicate the Leap can be

My favourite scene was where you had 6 little cubes that you could gently pick up and stack upon one another. Again the Leap could have slight problems of freaking out making it very difficult to stack all of the cubes, but as long as your hand wasn’t too near the tower you would be alright. This example of the ability to move objects around and place them down could be very useful in a two player platform game of some form. 
Tower stacking scene

The final scene was very enjoyable and contained a room full of boxes which the user can scoop up and throw about at will. This is more of an example of mass movement/control over a situation using the Leap. It was quite fun and relaxing to spend a minute or two throwing boxes around and watching them bounce off the walls for a while.
Messy block scene

Saturday, 24 October 2015

Tutorial and UI Flow

At this point in the design process we have our game mechanics pretty much figured out and everything is falling into place. The next step is figuring out what goes on outside of the main game, by which I mean we need to plan out the menu system the players will interact with. Having an amazing game is one thing, but if the player struggles to get into it then the experience of the game will be damaged.

Upon starting the game, the player will be shown the splash screen and then taken to the main menu screen. Here they’ll have 3 buttons they can press: play game, options and quit game. Clicking play game will first play the optional tutorial video, then take the players into the game. Upon finishing, the win screen is displayed and players can choose whether or not to go again. If they press yes the game restarts else, if no, both players are returned to the main menu.
The options menu gives players a choice of another 3 buttons: audio, video and controls. The audio option allows players to adjust the overall volume and the SFX volume. Video lets players adjust the brightness and resolution to suit their needs. Finally, controls can be configured to meet the players needs/preferences.
Quit game brings up a yes or no option. Clicking yes exits the application, no returns them to the main menu. 
UI flow diagram

Something I was debating about whether to add to the menu or not was a tutorial. I was considering a small section where players could read up about what to do and how everything plays out, but felt something visual was more interesting. My new plan was to play a small ‘cut scene’ at the beginning of the game for players to watch and learn from. Both players can opt to skip it if they already know what they’re doing because being forced to watch a tutorial you already know is very boring.

It starts off with the main camera panning around the town then zooming in on targets and explaining the controls and to shoot as many targets as possible in the time remaining. The camera then pans over to the power ups and briefly explains each one before cutting the screen to black and starting the game.

Thursday, 22 October 2015

3D Materials

For design work this week we focused on improving texturing and the appearance of objects when they are imported from 3DS Max into Unity. Setting a block of colour to an object gives it a very unrealistic appearance so effects can be used to make them look much nicer. In real life, objects like walls are slightly bumpy and never completely smooth, therefore adding a single sheet of colour will make it look strange. This can be helped by adding a layer of noise, which will create a form of static and make the wall look slightly bumpy, giving it an overall more realistic feel.

To practice to texturing we did last week, we were tasked with creating a cube and adding a different texture to each side. The six different textures were: brick, gravel, window, carpet, clean wall and dirty wall.
Carpet, clean wall and dirty wall

Gravel, brick and window

We then went into Unity and learnt about editing materials to change their appearance and tailor them to specific objects. The two settings we focused on were metallic and smoothness. The metallic setting determines how light is reflected off the object; the higher the setting, the more reflective the object is and the less colour is visible. Smoothness increases the objects micro surface detail and makes things look more or less glossy. For example, a wooden or stone object will have very little, if any, of either of these settings. Whilst a plastic or metal object will have larger values of each.
Stone(left), plastic(centre) and metal(right) materials

The final thing we were taught was that when an object from 3DS Max is imported into Unity, it's textures can be edited to change the materials appearance. This is very useful when you import an object and want to make the separate components look like different materials. To practice this I created a table in 3DS Max and imported it, then changed the settings to make the legs look metallic and the actual table top look like varnished wood with a plastic edging.
Render in 3DS Max
Changed materials in Unity

Wednesday, 21 October 2015

Fading Bullet holes

When I was playing around with the bullet holes, something I definitely wanted to do was cause them to fade out over time rather than just disappear immediately. The effect is slow and subtle so won't pull people out of the immersion of the game unlike constantly destroying the texture instantly would. After a bit I research I discovered that textures have an alpha setting along with the RGB settings. Alpha is the transparency of the texture, so in order to get my bullet hole texture to fade I needed to adjust the alpha setting over time. The way I thought of doing this was to use the interpolation mechanic I'd been taught the other week, to slowly adjust the setting from max to 0 over the course of three seconds.
Fading alpha interpolation code

After figuring all of this out and getting it to work I added it to my prototype scene to show it off.
Bullet hole partially faded

Monday, 19 October 2015

Pendulums and More Shooting

Continuing on from last weeks work about shooting, we added a few modifications to the scene. The first addition was adding a cross hair so the player could see where they were going to hit when firing. Using the new Unity 5 UI system makes adding text and images to the UI incredibly easy. Rather than having to code the entire object in a script, you can add a canvas to the scene and place an object upon that canvas. For images just move it into the position you want and for text items, do the same them add the text in and even stylise it if needs be. So I placed the cross hair image dead center of the screen, adjusting my bullet spawner to fire at the same point upon clicking.
Cross hair in scene used to destroy block

The second thing added to my shooter this week was a bullet hole upon impact. In order to do this I had to use Ray Casts for the game to judge on whether an object would be hit upon firing. If this is found to be true then a bullet hole will be instantiated at the point of impact giving a more realistic affect to the scenery. To stop graphical glitches, the bullet hole is not applied directly onto the object it hits, but set as a quad 0.01 units in front of the collision point. This stops the created bullet hole and target object from fighting for the same world space and flickering when looked at by the player.
Bullet hole created by bullet collision

When this was all implemented however, I very quickly found that the holes stacked upon one another. On top of this, since they were just placed where there was a collision, if the object the bullet hits gets moved then the bullet hole is left floating in space. To solve the first problem I needed to destroy the bullet holes after a little while to stop them from filling up space, so created a script which waited for 3 seconds after being created, before destroying it. To stop floating holes I had to set the object getting hit as a parent of the bullet hole. This means wherever the object hit goes, the bullet hole will go with it.
Code to create bullet hole and set object collided with as parent

After we finished with the new shooting mechanics, we moved onto something new: pendulums. Making a pendulum was surprisingly quick and easy, since all you need to add to an object is a Rigidbody and a hinge joint. When applying the hinge joint you add the object that will be the connected body and that causes the two objects to act as a hinge. Adding multiple objects in a row and hinging each to the previous one creates a chain that we added a sphere to the end of. After creating a wrecking ball it only made sense to add a wall to knock down with it, which is exactly what I did.
Pendulums swinging to destroy wall

Saturday, 17 October 2015

Prototyping

Once you've designed the game and researched what you want in it, the next step is to start prototyping a few mechanics to get things going. Prototypes don't need to be stylish or flashy, they simply need to test a mechanic and show it working. The entire point is for the prototype to be quick, simple and rough around the edges. I took the separate mechanics of my idea and wrote down a rough plan of what needed to be done for each one, then went to work adding bit by bit to the prototype.

I started by creating a character controller and mouse look because the character is the most essential part of the game as that's the players entry point. Once the character was in place, I focused on adding the bullets and gun, which went with the character, then set bullets to destroy in order to keep the scene and hierarchy tidy. With the bullets added, I needed something to test them on therefore the next mechanic and item I worked on was the targets. To create these I recycled and modified the interpolation script I was taught how to construct a few weeks previously. I used it to create targets that rise up only once and others which bounce between 2 points. At some point I'd like to implement a pool manager to deal with bullets, bullet holes and especially the targets I'll being creating as this will improve the efficiency of the game.
General shot of prototype

At this stage I was happy with the amount of mechanics that had in my first prototype, so moved on to create a map prototype. It's a simple layout that shows how each player will be positioned opposite each other and locked into separate sections that unlock over time. As it's only a prototype of a straight street, there isn't a huge amount to look at. However it does it's job of showing what I want the game area to like look, which is all it needs to do.

Street layout prototype

I plan to do a quick run-through video of my prototype and will get to it once I've learnt more about how to use OBS.

Thursday, 15 October 2015

UVW Mapping and Texturing

Practically every game contains objects and those objects need to have a texture. Applying a texture is a multi step process starting from the creation of the primitive object. Before we could create anything ourselves we were tasked with unwrapping a few objects that had been created to awkward scales and angles. Applying a checkered material to the object allows you to get a feel for how the texture will apply to the object and gives you a chance to change things round. Each polygon must be using the same scale as all others, else when the texture is applied it will become distorted and look wrong. Objects like cubes and cylinders are simple to unwrap and re-size, however objects like cones are a little trickier to sort out.
Re-sized objects from challenge

Once I had finished with the practice challenges, I was tasked with creating a few objects myself, then unwrapping and texturing them. The objects were: Coke can, dice, wine bottle and a crate. I started with the can as it seemed more interesting than the dice or crate but not as complex as the wine bottle. I started by making a cylinder and to make it seem more realistic I inset the top face and extruded it slightly, then chamfered the edges to round them off. When I was pleased with the shape I added the UVW Unwrap modifier and opened up the UV Editor to see how the object would look when unwrapped. Initially the mapping was confusing and messy so I used the unfold tool to make everything neater and easier to understand. The UVW template was then rendered and saved.
UVW template rendered and ready for texture to be added

The template was then imported into Photoshop so I could place the textures on it. The template works as a placement guide, allowing me to see where colours and pictures will appear on my objects once imported back into 3DS Max. I found a Coke can label and fitted it over the unfolded cylinder section of the UV, then proceeded to find a metallic texture which went over the can ends. For a little detail I looked up ring pulls and added it to the top face of the can.
Finished textures placed onto UVW template

When I was happy with the placement of each texture, I saved the image and placed it onto the object back in 3DS Max. The UVW was mapped back onto my can putting everything exactly where it was set in Photoshop. The result was a nicely textured can that can be used as a prop in game scenes.
Can with texture applied and finished

With the can complete, I set to work doing the same for the other 3 objects. The crate and dice were simple cubes so unwrapping them and adding the textures was no trouble.
Completed dice

Completed crate


The wine bottle was slightly more difficult to do and came out looking a little strange at first. To begin with I feel like I made the bottle slightly plump at the base rather than thin like it should really be. I do like the shape though and it could be used in a game for an alcohol bottle of many sorts. Secondly, I forgot the cork at the neck of the bottle, which I feel makes it more realistic, and the textures I applied didn't look very good. Therefore after I made the initial version, I copied it to try again. My second attempt looks far better and overall more realistic.
Improved wine bottle (left) and initial version (right)

Once each object was textured and I was satisfied, I set them up together and rendered the scene in it's entirety. I'm very pleased with the look and feel of each object, but it's definitely something I'll need to practice and work on if I hope to produce more detailed and higher quality objects/textures in the future. Unwrapping and texturing objects like this and even more complicated ones is quite daunting for me but it's a skill that will come in very useful so I'll spend some spare time practicing it and seeing what I can create for any games I produce.
Completed scene

Wednesday, 14 October 2015

Improving Catapult Mechanic

Whilst the catapult worked perfectly well, a few improvements could be made to make it more efficient/rounded. My first improvement was only allowing the object to aim and jump if the mouse is clicked whilst hovering over the object. In order to do this I needed to register the mouse position upon the person clicking. I set a ray cast to fire from the camera from this point and to see if it hit the box. If so then a Boolean 'hasClicked' is set to true, else it remains false. If the Boolean is true then the player has clicked on the object so can now fire it, otherwise nothing happens.
Object with aim dots showing path

The second improvement was altering the force applied depending on how far back the mouse was dragged. So the object can perform either a large leap, small hop or anything in between. To solve this issue I was required to use a few simple projectile physics equations that determine the distance based on the velocity and gravity. Once the equations have worked out the distance travelled, the position of the dots could be adjusted to create the new flight path of the object. As all of this is in a method called within update, the path will update in real time based on how the player is angling the shot.
Physics equations applied

This way, clicking on the object and moving the mouse to aim and apply force gives the feeling of pulling something back in order to fire the object forward.

Monday, 12 October 2015

Angry Birds and First Person Shooters



In week three we started doing something I've been looking forward to: first person shooters. Whilst we covered an Angry Birds style catapult system as well, the FPS mechanics are what I definitely want to use in my game, so learning about it helped me broaden my ideas for the mechanics I could use. We started the catapult/trajectory mechanic first, so I'll cover that to begin with. The objective was to create an object that, when the mouse was clicked and held, produced dots to show the trajectory of the object. Upon releasing the mouse button the object would be propelled along that path shown. In order to produce the trajectory, we needed to use two equations which calculated the distance the object traveled in both the x & y axis and project the dots along this path.
Trajectory equation code

For the first person shooter project we had to put a first person character controller into the scene and to that we attached a bullet script. This script very simply creates a bullet game object and applies an impulse force, which uses the objects mass and gives realism in the trajectory of the bullet. Initially the code was set to fire on every mouse click, which produces a semi-automatic gun. I changed mine to fire when the mouse button is down which creates a fully automatic gun, albeit an incredibly fast one which I'll need to tone down. To stop the scene from filing with useless bullets after they're fired, the bullets are set to be destroyed after 3 seconds. A pool manager would be far more useful and efficient so I'll work on that in my spare time.
Bullet fire code

In order to make the bullets fire from an appropriate position on the player, a gun script is needed which sets the firing position of the bullets to a specific place. In my case I used an empty game object attached to the right side of the player. This makes it look as if the player is firing a gun in their hands. For fun I added a second bullet spawn to the other side of the player to appear like the player is dual wielding the guns. These scripts are something I'll be playing around with a lot in order to get the best feel for my guns in my game.
Shooting block tower

Saturday, 10 October 2015

Mood Boards

Once I was happy with the concepts I had come up with, I moved onto the 3rd stage, research. This involved looking at all the ideas I'd had and thinking about how to develop them further, into proper mechanics/objects. A great way to do this is to create a series of mood boards; a page full of images that you can use for reference when designing your mechanics/objects. For my mood boards, I choose 4 different ideas to make them around: Western High Street, Guns, props and targets/power-ups.

For the Western high street idea, I gathered images of straight western main town roads and the old wooden buildings dotted along them. I got a nice mixture of real life town streets, movie set versions and a few from games. Using a variety like this will show me what the most popular definition of 'Western High Street' is, allowing me to create the most realistic environment for my game.
Western High Street ideas

My second mood board focused on the weapons I was hoping to use in the game. Since the setting is a an old Western one, I wanted to use authentic weapons of the time. This meant fully automatic weapons are pretty much out of the question and single shot ones are what I needed to look at. To have a western dual flare to the game I wanted to have the players use revolvers because they were the staple handgun in the era. I had an idea to possibly add a rifle as a power up that allows zoom and has more ammo in it, so looked up a few designs for those as well. I got a mixture of both real life and model pictures, so I have an idea of what to aim for in the long run.
Gun ideas

With the setting and weapons researched, I wanted to get some ideas for a bit of detail to the scene so created a board of props. The 3 things I had an idea for were barrels, crates and some plants. These aren't a huge part of the game but adding them in will make the scene seem more realistic and they can also be used to hide targets behind. I got a real life image of each thing to see what they would really look like and then checked out some 3D models/game versions to see how similar the 2 were. Each were very close in appearance, most likely due to the fact that there never is much variety in the appearance of barrels and crates etc, however it's always good to double check and get references.
Prop ideas

The final board was filled with my ideas for the targets and power up icons. I chose generic red and white ringed targets because they're recognisable to people and will be easy to see in the game scene. I also wanted to add a few different things into the scene which may not be as obvious to shoot but will still give points. For this I was planning to use some props, such as the barrels, or even add other new objects such as scarecrows or lights. For the power ups I wanted a variety of things to keep the game as interesting as possible. I obtained images for:

  • X2 points(doubles points for short time)
  • Explosives(grenades or dynamite with AoE damage)
  • Dual wielding revolvers(double the ammo/negate reload time)
  • Rifle(more ammo and can zoom)

Each of these will have a chance to randomly appear in the scene and the first person to shoot it will be given that power up for a short time.
Target & power-up ideas

Thursday, 8 October 2015

Polygon Modelling

In the second weeks design session, I learnt to how model polygons into something more than just a primitive object. I learnt about tools such as: extrude, inset, bridge, chamfer and connect. Extrude allows you to move a polygon within or out of the rest of the object, creating an extrusion. Inset creates a smaller polygon within the selected one, using the selected polygons vertices as a shrinking point. Bridge takes two selected edges and bridges the gap in between with a new polygon. Chamfer creates new edges on the selected area and can be used to smooth edges. Connect will create a new edge from one edge to another, splitting the polygon they're part of in two.

I was tasked with using all of these new tools to create a house model from a single box object. In order to have a plan to work from, I was provided with a house model sheet that had perspectives of each side of the house on. I attached it to a plane and then duplicated the plane at a 90 degree angle, creating a cross shape. I could then build my house to the correct dimensions using the pictures on the planes as a template. Something else I learnt to do was how to make an object see-through, effectively like a ghost. This was necessary to allow me to see the image through the object and use it as a template.
Finished house model with template in place

Once the house was finished, the next objective was to add more objects to our scene. Since the template had a wall on it, that was my next plan of action, with a gate, pavement, road and lamppost to follow after. Each of these were new objects rather than extensions from the house object since they were more for detail and filling out the scene.
Completed scene with all objects added

Now that everything was finished I could add lighting in order to create renders of my scene. I wanted to use the lamppost as a light source rather than simply have it as scenery. I remembered the use of the spotlight in my work the week before and thought this would work excellently for a lamppost. However when I rendered the scene for the first time, the spotlight was far too pinpoint for my liking, so I changed the spotlight parameters to increase the falloff. This gave a much wider spread of light and made the scene look more realistic. An omni light was added to slightly brighten the scene in general for aesthetic purposes.
Night scene using spotlight on lamppost

Finally I was taught by a friend on how to use a daylight system, which allows me to set the light on my scene as it would be at a specific time of day and month. This allowed for much easier control of making the scene appear as I liked it and I'll definitely use it again in the future.
Shot of back of house during daytime

Wednesday, 7 October 2015

Physics Debugging and Manual Interpolation

Following up from Monday's session, we implemented debugging to see how Unity controls the change in velocity. To do this I added a max speed which, when reached and passed, lowered the speed back below the maximum. The speed was not lowered to a constant however and continues to increase meaning this process happens very quickly multiple times a second. To show this, a line is set to be drawn that shows the direction and magnitude of force. This line appears to vibrate/shake rapidly when the player moves which is the program constantly adjusting the velocity.
Cyan debug line in physics scene

Another thing I added to this weeks work was creating manual interpolation rather than have it bounce back and forth of it's own accord. To do this I only needed to tell the co-routine that it should only operate when a specific button is pressed and held. This sort of mechanic could be used for moving platforms and can even be set up to activate the interpolation upon a single button press, allowing you to make elevators.

Monday, 5 October 2015

Physics and Interpolation

Adding to what we were taught last week about movement, this week we started applying physics to objects and seeing how it caused them to interact. We started off by adding physics to the character in order to make it look like the object is accelerating rather then going straight from 0 to the desired speed.
Code to apply force in direction of movement

We also learnt about interpolation. This is the process of moving an object smoothly between 2 points so it hits every point in between them, rather than jumping from one to the other. In order to do this we needed to learn about 'Lerp'  which interpolates between the two points for us.
Lerp code snippet

Once we had learnt the basics and got a system set up, we started to use co-routines in the interpolation. This is like a separate method that can only progress to the next step once the previous ones have been completed so can be held waiting for a long time until conditions are fulfilled. We used an initial co-routine to send the object from point A to B, then set up a reverse system to move it back.
Initial and reverse co-routines
Shot of interpolation in action

The last thing we were taught was how to make different objects act like they were made of different materials. For example, two materials I made were metal and ice which, when applied to an object, caused it to interact with the environment differently. The metal material had high friction and very low bounciness which made the object slow and heavy whilst moving. The ice material also had low bounciness but in contrast, next to no friction. This caused it to slide around and have other objects slide off of it. Physics materials will be useful if independently moving objects interact because they will make the collision feel more realistic based on the material they're designed to be made of.

Saturday, 3 October 2015

Game Specifications

Along with 3D modelling, we are also being taught about the design process in the games industry. This will cover everything from coming up with basic ideas to creating a GDD with enough information to build the game from. An effective design process is essential to creating the best project possible. Knowing how to generate ideas, refine them and implement them is key to success. In general, the stages are:
  • Specification - Clarify the specification/requirements
  • Analysis - Break down the specification into component parts
  • Research - Gather information on these components
  • Conceptualisation - Experiment and filter ideas from analysis and research
  • Prototyping - Develop prototype solutions based on concepts
  • Iteration - Refine prototypes to a final level product
Following these steps will allow you to create a far greater product than if you simply pluck and idea or concept out of thin air then try and build it straight away. In order to practice the process I've started designing a game and will follow the steps to make it as successful as possible.

As I'm coming up with my own idea rather than creating one from a specification, this step is replaced with creating a brainstorm to generate as many ideas as possible, very quickly, that can be inspected later on. To start with I had to generate an idea/name to branch from, effectively a concept to start working from. The concept I chose was a western style shooter, which I scribbled down and added anything and everything that came into my head from there. The entire point of this is to generate as many possibilities as you can which can be tweaked later of when needed. The result looks messy and uncoordinated but that's the desired result, the next step is where we tidy up these ideas.
Brainstorm

When we have a brainstorm we're happy with, we can start to organise what we've written into more comprehensible sections that are easy to read and understand. This is the conversion of a brainstorm into a mind map. Rather than have many messy sections dotted all over a page a mind map orders these into components such as UI, objectives, settings and game play. From these larger generalised terms we branch into the finer details of them but in a neater more readable way. This is also the time to remove anything that was generated during the brainstorming that, on second thought, doesn't seem right or may not be needed for the game. This entire process organises the thought process and slightly refines it.
Mind map

Thursday, 1 October 2015

First Design Session - 3D Modelling

For our first session we were taught about the basics of using the 3D modelling software 3DS Max. We were walked through the interface and shown how to create primitive objects as well as manipulate them in the 3D space. Initially we were tasked with adding random objects and moving them about or changing properties but after we were happy with it, we set to creating a scene. The brief was to build a snowman and then add other objects once that was complete. For independent study I had to add different lighting to the scene and take renders to show what could be created.

I took an initial screen cap to show how the scene looked with no extra lighting.
Original scene

My first lighting choice was a simple omni light was produces light in all directions from it's position, drastically reducing the amount of shadows.
Addition of the omni light

After seeing the initial outcome I changed the colour and saturation to create a scene that looked more night based.
Omni light night time scene

When I was satisfied with the outcome of the omni light I swapped to a skylight which replicates daylight as if there is a dome above the scene, giving more realistic shadowing.
Skylight in action

Again, after I saw how the light made the scene look normally, I played around with some of the settings to make a night time scene. In this one I set the colour to a little darker than before and it came out very purple, so in the future I'll use lighter shades to make a more realistic appearance.
Skylight night scene

The final type of light I used was a spotlight which was interesting. It could be used to create scenes were a certain area is highlighted to attract the users attention or even to create street lights.
Spotlight shining from right