Blog

Task breakdown

BD 12 04 2018.PNG

So far this is how the burndown chart for my group is looking as of today and so far it is doing okay however we need to try and get some more tasks completed in order to get on track, there has been some black marks appeared on our asset list to indicate an area of the project that we won’t complete at this point however most of these are animation tasks that we are pretty confident won’t get completed due to our animator not continuing on the course

These tasks will be taken away from the total tasks count and will bring it closer to looking complete on our burndown chart.

In a scrum meeting we had today we discussed what we had completed over the two week break. Steven and Tom have been working steadily on their aspects of the project to good success, Lee said he made some concepts for ui but didn’t have them with him so I can’t confirm this. Matt made block outs for levels which I now have the fbxs for so they can be implemented now. Billy didn’t get any work done during the holiday due to an ongoing problem with his pc that had kept him from being able to work from home for some time now which is understandable.

Overall I am quite happy with how this project is going however MVP is soon so we will have to hurry a little bit to get this in a working condition and the rate being slower than last project worries me a little bit.

Advertisements

Group crit update 26 03 2018

Group progress has been pretty steady lately as each 3D modeler at this point has now finished an asset.

The concept art has progressed significantly since the last update and the artist has now moved onto UI.

One of the 3D modelers was struggling with creating rocks however when he has been looking at the internet he has been able to look at different methods of creating them so I think he will be able to create them from here on in.

Unity: Simulating Gravity

This script needs some explaining before I dive into it. So first off to be able to simulate gravity in a program we should probably know what the formula for gravity is. This is easy enough to get as its just one google search.

Image result for gravity formula

This is the formula for gravity where F is the force of gravity, m is the mass of our two objects, G is the gravitational constant which is normally 6.67 x 10 to the power of -11 however we will change this as we need by storing it as a variable, d is the distance between our two objects.

So lets see where we can get each of these components. The mass is one of the easiest to obtain as the rigidbody component has a mass variable available in it that we can pull from.

Rigidbody.PNG

The distance isn’t that hard to calculate either as all we need to do to get this is take the Vector3 positions of both objects, take them away from each other and take the magnitude from the Vector3 that gives you. And lastly we have the gravitational constant which we can set as a variable and edit as we need.

Variables.PNG

These are the variables that I will be using in this script and they will be explained as I go along.

Start.PNG

The start function is pretty simple, we just set our array to be all of the attractable objects in the scene however this may be changed later to account for enemies spawning or bosses using gravity wells as attacks so we might instead use lists.

FixedUpdate.PNG

We are using a fixed update instead of our normal update function as it instead runs on our fixed time step meaning that our updates are more consistent than normal. In this function we are taking each possible object we can attract and calling the next function to look at for each of them.

I’ve split this next segment into 3 points to make it easier to digest.Attract pt1.PNG

This part of the attract function  finds the direction of the object you want to attract and takes the magnitude of it which gives us our distance between the objects which helps us to complete the formula we had before.Attract pt2.PNG

Here is the formula we had before stored into a Vector3 so that it can be applied as a force.

Attract pt3.PNG

Finally, this part applies the force so that it will attract all the objects towards each other.04.gif

You can see here that so long as the objects are close enough to each other they will always attract towards the source at a rate based on their masses.

Unity: creating an AI

Creating an AI is something that I’ve never done before so trying to do this was quite scary when I initially started it but after some reading on the Unity forums I managed to get a decent grasp on how the navmesh system works and for the most part the set target function is key to creating at least a basic AI.

Variables.PNG

For this first part, I only needed these two variables, the player to use as a target to move towards and the agent to effect with this code.

Move towards player.PNG

This first step is very simple and just has us move towards the player no matter where they are.01.gif

For this next part the only variables I added is a Vector3 that will be the location the AI will start at and a float that tells you how close the AI tracks at.

StartPos.PNG

In the start function, all we do is keep the position that the AI starts in to move back to when the player is our of range.

MoveTowards.PNG

Now this part is different to how it was previously in that we calculate the distance between the agent and the player and see if its less than the tracking distance. If it is, we move towards to the player however if it isn’t then we move back to the position we started in.

Gizmos.PNG

This is just a part of the script that gives a visual representation in the Unity editor when we click on the agent of how far they can search for.

02.gif

For this part I have added a float for stopping distance.

Added stuff.PNG

This part has been added to the update function  which checks if the agent is a certain distance from the player and if it is then we set the destination to be the agents current position so it stops.03.gif

This is all I  have for this AI so far however there is still some problems with it. For example, if the player moves too close to the agent then it won’t attempt to move which is a problem right now as the player can move very close to it and it also doesn’t yet attack the player so I will work to improve this.

Synoptic Project: Team Work Update 13 03 2018

This far, our project has been making good but slow progress. Due to the large items of the slow nature that we are tackling at this point, the burndown chart says that we are significantly behind whereas we actually are not.

The 3D modellers have been doing good progress and presenting plenty of models for use in the project and each one of them has managed to create models that fits the style we are trying to achieve in the project.

Our Concept artist has managed to make many good looking pieces of art however there is now an inconsistency from his old pieces of art to his more recent ones due to him learning how to draw space ships with a bit more detail.

Our project leader has been doing a good job of keeping an eye over us and consistently keeping the design documents updated.

Our animator has caused us problems due to the fact that we haven’t seen him since our project has started so now we have 3D models that need animations but our animator isn’t present so theres a good chance that our final product will lack animation in the end.

Personally, I feel like I am doing an okay amount of work, I am in charge on compiling everybody’s assets into Unity and creating the code for the game and right now the game is functioning besides a few bugs however due to me having to look into entirely new areas of code I feel like I have been working pretty slowly at this stage.

 

Sector Defence Pre-Production

The Pre-Production for my project is now mostly done with all present members of my group having now made an individual contribution form and a production schedule at least to a minimal level.

01

02

This is my production schedule and personal contribution form as it is for now, when I complete some of the items on these lists I will add some more from the full asset list.

The art of an imagined world: Kingdom Hearts

In this post I will be discussing the art of kingdom hearts and how the separate art styles from final fantasy and Disney come together in the main character, Sora.
Like most people my age, Disney was a large part of my childhood so when I saw a game called Kingdom Hearts riddled with characters from across Disney, I was excited to play it. For this I will focus on the main character of the series, Sora.

The initial design for the main character of this game created problems as Disney wanted Donald Duck to be the protagonist whilst Square Enix wanted Mickey Mouse instead. The lead designer at Square Enix, Tetsuya Nomura, had a different idea. He decided that he wanted an original character to take the lead in this game and he started to make a design.

Kingdom Hearts concept art

This was the original concept for the main character that took aspects from both Disney’s art style and Square Enix’s and it would combine them both. In this version of the design he had a chainsaw that would later be changed to match the younger audience that Disney would bring to this game. In this design you can see the cartoonishly large hands and feet that would commonly be found in Disney characters such as Mickey Mouse. There are also animalistic parts of this original design which is commonly used in Disney cartoons as they find that animals are not only easier to animate but they also make it easier to keep a child’s attention to an animal.

Image result

Square Enix is known for having large amounts of chains, belts, zippers and identifying features on characters and weapons alike and this can be seen on this concept. With chains that you can faintly see on on his front as well as the recurring crown mark on his design which helps make the connection to the title.

Image result for squall leonhart

You can see these features on this character, Squall from Final Fantasy Viii. You can see this design in the fact that Squall has three belts on, a keychain from his weapon, a lot like how all of the weapons that Sora gets has. There is also a large similarity in the pose that Square Enix protagonists often take up.

images (1).jpeg

Cloud-FFVIIArt.png

images.jpeg

This is a pose often used by Square Enix to show off a characters design as it shows a lot of aspects of their character as well as give a good scale for their weapons and their armor pieces. This pose also portrays a protector which is a good value for their protagonists and is once again seen in Sora and it shows in his personality as he finds a need to find and protect his friends throughout the story.

As this went on they further developed the character of Sora and dropped the lion like design to make the character fit in more with the Square Enix roster and they started to add aspects to also fit into the Disney style.

As you can see here by this illustration, the final design for Sora takes a lot from the Disney art style and even has the same colour scheme as Mickey mouse as a little reference to the fact that at a part in the development the main character was Mickey mouse, both the previous ideas for the main characters were not lost either as they both play active roles in the game, Mickey being a king that you have to search for and Donald being an ally and a friend to Sora. You can also see here that Sora has kept the pose as well as the zips, belts and chains that come from the Square Enix art direction.

In conclusion, the art style in this game came to be a nice mix of the two producers styles by having the proportions and colour scheme from Disney and the pose and outfit from Square to make him easily fit in most

Ludum Dare – Trap Control

We are now diving head first into the more complicated script that were made for this game jam.

Variable.PNG

These are the variables used in the script. In the public ones we have a value for timing the spike changes. Then we have a string to identify what the tag the player has on it is. we then have a value for how much damage we deal to the player and a timer value that is not really used in the final version of this. We also identify the player and the spikes to make sure we can change values on them. The last public value is a value to tell how long we wait for the spike to activate.

In  our private variables  we have two timer values used for resetting timers. and two booleons, the second of which stopped being used towards the end, the first tells us if the spikes should be up or not. We also have an integer which helps to stop values switching too much.

Start.PNG

In the start function we set the timer values that we use as constants later and we set a value to false that we don’t use in the final version.

Update.PNG

This update function is a large one that could use some explaining. At the start we let our delayed start timer count down and when it hits 0 the rest of the script can go. after it hits 0 it starts the timer for the spikes itself and when that timer goes to 0 we set i to 1 and switch the spikes between on and off depending on what it was on previously and reset the timer. When the spikes are active we make them have collision however they are a trigger when they are inactive

Collisions.PNG

In this part we test for if the player collides with spikes and if it does then we access a part of the players script which is an open void that lets us apply damage to the player. We also tell the script that the player is trapped however this wasn’t part of the final product.

Ludum Dare – Movement

We are still on the simple scripts with this one. In this blog post we will look at how the player moved in my Ludum Dare 40 game.

Variables.PNG

These variables are reasonably simple, we take a power value that will later be set and used to determine how fast the player moves. We also find the rigidbody that we need to make the player move.

Start.PNG

In the start function we simply take a value from another script and set the power variable to be equal to it.

Move.PNG

The move function is where everything happens in the script. We find the direction the player is moving in by using the axis’ that unity provide for us to access. We then take this value and multiply it by the power from earlier to give us a value we use for our velocity. We then take this function and call it in the update function however since it is the only thing in the update function I won’t cover it here.

Ludum Dare – Camera Controls

I will be making a series of blog posts describing how my game for ludum dare worked by explaining the scripts I contributed for the game. To start I will be showcasing the simple scripts and working up to the major core ones.

variables.PNG

These are the variables used for this script, these are both selected in the engine and one of them just needs to identify the player and the other will keep a certain distance away from the player to simulate a camera following the player.

Update.PNG

In this Update function we make the position of the camera equal to the players except the Y value has the camera distance added to it so that it will keep a distance from the player and we set this every frame.