When looking back at this project I can see that I made quite a lot of mistakes but I also have a lot of positives too and I will be discussing throughout this evaluation of the project and about my individual performance.
Firstly, I chose to use construct 2 to make mt final major project which I thought was the best choice for me because I know that my weaknesses are 3D modelling and as construct 2 only deals with 2D creations I felt it was best suited to me. Also with construct I am not too confident with programming but constructs coding is more visual rather than text based which made it simple/easier for me to understand. To create my sprites I used piskel which is a 2D art website to focuses on the pixel/retro art style which is wanted I want to be in my game because I can create good pixel art that looks aesthetically pleasing.
When making my first final major project idea I gained new skills that I never thought that I would learn such as being able to select and name your own character is something that I also wanted to be in the game and with the help of tutorials I was able to make this a reality and it fitted into my game perfectly. Other skills that I learn where how to make the enemy follow the player which is also something that I've always wanted to learn because although a turret would have been easier to do that means the enemy would have had to been stationary which is not I wanted as this would have made the game too easy. The skills that I have developed further are my pixel art skills as I feel that I have learnt a lot about animation, body shapes and shading which are relatively small things but that make a big difference in the overall look of the game. Another skill that I have developed which I never thought I would during this project as it was an individual task but my teamwork skills were highly improved as whenever someone had a problem or an issue with their game they would ask other people including me for advise/help on how to fix the problem so everyone was learning from each other.
The project that I actually made and exported couldn't possibly be any further from what I actually proposed to do because initially I said that I was going to make a side-scrolling RPG game with boss fights, dungeons, character abilities, leveling system, inventory and different biomes/areas. I now realize that this was too much of a task to complete and after working on that first game for a couple months and I had only done so little of my original idea I knew that I wasn't going to complete this project so I decided that I would stop working on this project and start a much smaller project. I decided that this new project would be a side scrolling game where the objective is to just escape, you could still choose from a range of characters but you could no longer name your character because I just didn't have time to add this feature. The game wasn't very long but it had the potential to become a good game which has lots of levels and different obstacles to overcome.
My time management and scheduling on this project was perfectly fine I feel and this usually one of my biggest weaknesses but on this task I was keeping up to date with what I planned to do and of course I ran into problems but they were never major and didn't take too much time to fix. The main issue with time for me is that I just didn't think that I had enough time to complete a project on that scale which is why I downsized my project and I regret not doing that project from the start because my time management would have been even better meaning that I would have had more time to focus on the main gameplay, fixes bugs and add extra features.
Even though I completely
Jake Hyatt - Unit 4 & 5: Final Major Project
Thursday, 23 June 2016
Task 5 - Production Diary
|
|
PROGRESS UPDATE
|
PLAN FOR NEXT MONTH / WEEK (Including Possible Contingency Plans If
Problems Anticipated)
|
|
Mon W/B 08/01/16
(Detailed Weekly Summary)
|
So far when doing my final major project I have researched into
different assignment briefs, done my initial research into the game that I
want to create which will be a 2D questing/adventure game and now I am
currently preparing my presentation which will finalise my ideas.
|
My plan is to finish this presentation so that it meets all of the
requirements, I want to create my character assets, a very basic world layout
and a prototype to show the client what the game would look like and play
like. This presentation id due for the end of this week and I plan to meet
that deadline with time to spare so I can check over everything and practice
my presentation.
|
|
Mon W/B 12/01/15
(Detailed Weekly Summary)
|
During the week off college I didn’t have a chance to do much work
due to being busy with university interviews and other things. However last
Friday I did give my presentation in front of the rest of the class and
answered any questions that they had, I feel that the presentation went well
as I portrayed all of my ideas very well and I also have a few new ideas to
add to the game because of the class’s feedback.
|
For this week I want to start working on my games main title screen
and character select screen so that I can ensure that there mechanics are
working as they should and then after I am positive that they are working I
will add the assets so that it looks ascetically pleasing.
|
|
Mon W/B 19/01/15
(Detailed Weekly Summary)
|
During this week I didn’t work on the title screen as I said that I
would as I didn’t feel that it was as important/difficult as other aspects of
the game to create. I did complete the character select screen in its simplest
form by just using basic shapes to represent what will become portraits of
each character. As well as doing this I also made it possible to name your
character by using the dictionary tool in construct.
|
Next I plan to actually start working on the characters with the
basic movement and figuring out the correct size for them so that they don’t
take up too much of the screen. Will
also tweak the jump height, gravity, etc to make sure that the movement looks
real. As this shouldn’t take long I will also start working on the character
ability’s starting with the rouge.
|
|
Mon W/B 26/01/15
(Detailed Weekly Summary)
|
During this week I created all 4 characters and figured out the right
size, gravity and, speed, jump strength, etc. After this I started to work on
the abilities for the rouge which were straight forward until I got to the
ultimate ability which I couldn’t get to work so I had to change this to a
different ability. I also worked on the mage abilities but have yet to finish
these.
|
For next week I plan to finish the mage abilities and begin working
on the hotbar that I will have in my game displaying the player health and
abilities/cooldowns.
|
|
Mon W/B 02/02/15
(Detailed Weekly Summary)
|
On this week I have created the hotbar for the player which displays
the players health and abilities, during this time I also set a cooldown
timer on the abilities so that when you use one an “X” will appear on the
ability that you used and won’t disappear until the timer has gone down to 0.
|
Next I plan to make it possible to name your character to make the
experience more personal to the play and if I complete this I will create an
basic enemy sprite so that I can figure out the movement so that it follows
the player.
|
|
Mon W/B 09/02/15
(Detailed Weekly Summary)
|
During this week I watched tutorials and figured out how to make it
possible to let the player name their character that they will be playing
which was difficult at first but I got it to work okay I can now utilise this
feature in other aspects of my game. With this done I created a simple enemy
and coded his movement so that it would follow the player left and right.
However I could not get the enemy to jump meaning that it couldn’t follow the
player upwards.
|
Next I want to try to fix the enemy so that it will be able to jump
and follow the player in every direction. I also want to begin experimenting
with NPC’s as I seen a tutorial that would be perfect for my game as it
allows the NPC to have a personalised
message including the players name and I also want the hotbar to
display the players name which isn’t too difficult.
|
|
Mon W/B 16/02/15
(Detailed Weekly Summary)
|
I still didn’t get the enemy to work meaning that it doesn’t jump so
can only follow the player, left, right and down. On the positive side I did
get the NPc working perfectly so that when the player is in range the NPC
will display a message which includes the name that the player provided
themselves. Also I made it so that the players name is displayed on the
hotbar right above the health bar. With these complete I had time to make it
so that when the enemy collides with the player it will take a random amount
of health from the player and when the players’ health is equal to 0 then the
character will be destroyed.
|
With the basic mechanics done I plan to create some sprites next week
so I can see how they interact with each other and so I can get the
animations right.
|
|
Mon W/B 23/02/15
(Detailed Weekly Summary)
|
During this week I created the rouge sprite and the running animation
with took up most of my time and I then had to put this into construct 2 and
manually make the hitboxes for each frame of the character which also took a
lot of time. However once in the game the animation looked good and all the
abilities still worked with this new sprite.
|
For the next week instead of making each and every character
different I plan to just re-skin the rouge character and animation that I
have already created to save time but I will still have to do the hitboxes
for each frame manually.
|
|
Mon W/B 02/03/15
(Detailed Weekly Summary)
|
At this point in time I realised that I had given myself an
impossible task to complete this project with everything that I wanted and as
this project was going on I slowly lost passion for this idea and I decided
to change it to something that it more simple and straight forward. I know I
wouldn’t have a lot of time so I would just have to make a quick demo to
demonstrate the game idea that I had
|
So with in mind that I wanted to change my idea, next week I will
come up with a concept and character art that it simple and has a simple
animation that isn’t too hard to create.
|
|
Mon W/B 09/03/15
(Detailed Weekly Summary)
|
In this week I created all the sprites I would need for this new idea
which included character models, animations ,arrows, buttons, text, enemies
and an exit door.
|
With these sprites created I plan to implement them into the game
concept that I have created by starting with the title screen and the
character select screen which is something I already know how to do due to my
previous attempt at a game.
|
|
Mon W/B 16/03/15
(Detailed Weekly Summary)
Mon W/B 23/03/15
(Detailed Weekly Summary)
|
During this week I created the whole title screen which is animated with
the character sprites, a guard sprite, title, and buttons to take you to
different pages when this is programmed.
|
Next week I plan to make the main game screen which will have the
main gameplay focus which includes the players and the obstacles which they
have to avoid. As these are already created it will be easy to put them into
the game so I will also do some basic programming so that the players will be
able to move, the obstacles will be able to move and will also be able to
kill he players if they come into contact.
|
|
Mon W/B 30/03/15
(Detailed Weekly Summary)
|
During the week I inserted all the players with their animations,
fixed the hitboxes so that they would be smaller. I put all 5 characters that
I created into one family named “Players” so that it would be easier to code
instead of doing them individually. I also added in the enemy sprites (camera
sight and guards) but I couldn’t get the guard to work correctly so I just
have the camera sights for now. On the positive side, when the player comes
into contact with the camera sight the layout restarts.
|
Next I plan to create the character select screen so that you will be
able to choose which character you would like to be to make the game feel
more personal. I will also try to fix the guard enemies so that they work as
intended as they will make the gameplay better all around. If I have the time
I will also make a layout that tells you the objective and the controls of
the game.
|
|
Mon W/B 06/04/15
(Detailed Weekly Summary)
|
During this week I created the instructions page and the character
select screen which are both working perfectly fine, I added in all the
relevant buttons and coded them all so that they go to the right pages. I
could still not get the guard to work so I don’t think I will include that in
my game as it doesn’t work correctly and may cause issues in the future.
|
Next I want to create an end to the game so that when you get to the
end of the level you aren’t just stuck there with nothing to do, so for this
I will need to create some sprites such as a door and an exit sign.
|
|
Mon W/B 13/04/15
(Detailed Weekly Summary)
|
I created the sprites that I needed to finish off the quick demo that
I have been making for this new concept of a game. I imported the sprites
into the game and did all the relevant coding so that when you got to the end
of the level you’ll know that you’ve completed it.
|
With this game now completed for the next few weeks I will be working
on my blog, doing my production diary by taking screenshots of everything
that I’ve done and slightly explain what I’m showing. I will also export the
game and then let other people play it so that I can get feedback on the
project as a whole.
|
|
Mon W/B 20/04/15
(Detailed Weekly Summary)
|
I have started work on my production log and exported my game.
|
Finish the production log, get feedback on the game and then write an
evaluation.
|
|
Mon W/B 27/04/15
(Detailed Weekly Summary)
|
I have finished the production log by screen shotting every step and
then describing what I have done and how I have done this. I did plan to
write then evaluation but I just didn’t have the time.
|
As I didn’t have the time to do the evaluation this week I will have
to push it back to start and complete it by the end of next week along with
the survey results that I will have to analyse.
|
|
Mon W/B 04/05/15
(Detailed Weekly Summary)
|
I have now created a survey, collected the results and wrote u my evaluation
taking about the entire project as a whole, the skills I’ve learnt and developed,
my time management and of course about the results that I gathered from the
survey about my game.
|
|
Task 6 - Production
Production Log:
To start my project I created these basic shapes to represent my characters and I made them different colours so that I could tell the difference between the characters as this would help with the coding of the abilities. When I had all the characters I changed their size to 27 (width) by 54 (height) as this is the perfect size for the window size that I have these characters don't take up too much of the screen but when I create the sprites their details will still be clearly visible. For each of these characters I gave them the behaviors of platform so that they could move, jump and I had to change all the variables (max speed, acceleration, etc) until I felt that it was just right and looked right. I also added the "scroll to" behavior so that whenever the characters were moved the camera would follow them not allowing them to go off screen, I added the "bound to layout" behavior so the characters couldn't fall off the edge off the level as this would break the game. Finally I gave all the characters a health value of 100 so that you wouldn't die too easily.
Next I started to add the basic ground which was just a grey block and I gave this block the "solid" behavior so that when the layout starts the characters wouldn't just fall through the floor but be able to walk/run on them.
Once I had this one ground object I just copied and pasted it over and over but changed the size and angle if needed and began to create a basic layout. The block that is highlighted (light grey) is different to the other ground blocks as this has a "jumpthru" behavior meaning that you are still able to stand on top of these platforms but this allows you to jump through the platforms from beneath making it easier to get from the bottom platform to the top. I used these platforms instead of ladders as I couldn't get the ladders to work.
I then began work on the character select screen by creating this simple animation which has the 4 choices of characters and in each frame the dark blue highlight moves over each choice. The background is just a simple sprite that I painted black and made it to the size of the window.
After the character select screen I created the layout which would allow the player to give their character a name of their choosing. The background is just a simple blue sprite which has been scaled up to fit the size of the window. The fist object that I used is the top text box which allows the player to actually type a name into the box, the second object I used was the validation which will be used so that the player won't be able to progress without entering a name, the third object is the button which will just be used to take the player to the next layout and finally I used the dictionary object which I have never used before and this is where the information that the player enters is stored and saved and be easily taken/used when needed.
After this I went back to code the character select screen. For this I created 4 global variables (one for each character) and set them all to 0. To get the dark blue outline to move onto the selected character I first had to set the animation speed to 0 so that it wouldn't play on it's own and I then did the code (1) which states that if the number 1 key is pressed then the dark blue outline will go to frame 0 which is over the red block, i then copied and pasted this code to 3 times and changed the which number key was pressed increasing it by one each time and moving up one frame each time. After this I began the second section of code (5) and this says that if the red character has the dark blue outline and the "Enter" button is pressed then one will be added to the "player 1" global variable which will be used later to help spawn the correct player on the main layout. I repeated this piece of code 3 times changed the requirements for the animation frame needed and which global variable will be added to, however all of them will still take you to the "CharacterName" layout.
With the character select screen complete I then went back and did the coding for the character name layout and started this by creating the global variable called "textchanged" and set it to 0. To start I did the code line (1) which uses the dictionary object and says that whenever something is typed into that text box it will store the information letter by letter as it is typed and if any/all letters are removed then they will be removed in the dictionary too so the player can change their name while they are on this screen. The next section of code (2) says that if the text box if left empty then the text validation text will say "9 characters maximum" and be in red as this is the universal colour for something that is wrong. The next section of code (3) says that if the text box isn't empty then the red text will change green and say "you may enter", this also changesthe global variable I mentioned earlier to 1. The last piece of of code (4) says that the global variable has to be at the value of 1 to be able to press the button and go to the next layout.
Next I quickly added a block that would represent the enemy that I would have in my game, I set the size of this to be the same as the characters, after this I added all the behaviors beginning with line of sight so that the object will be able to detect when any of the characters are near it. I also added bound to layout for the same reasons as the characters, I also added sine behavior which will be used to make the enemy move from left to right, next I added the platform behavior instead of the bullet behavior as I didn't want this enemy to just move in one straight line making it easy to doge but with this behavior I set the "default controls" option to "no" so that when you were moving your character you wouldn't be moving the enemies as well, finally I added the solid behavior so that you the enemy would be able to collide with the characters. After this I had to add 2 instance variables, the first being health so that you will be able to kill the enemies and the second being the enemy state which will help me in the coding section when setting up the enemy attacking.
With the enemy now in the game I needed a way to be able to kill it so I began working on the rouge character abilities by creating these very basic and rushed sprites. The small grey sprite at the top is the dagger, the yellow one beneath is the ultimate arrow, the three top squares represent the three abilities that the character will have (dagger throw, invisibility and the ultimate) and finally the three bottom squares will be used to represent the cool down timers on the abilities after they have been used.
To start the coding for the rouge I had to create three global variables all set at 0 and these will be the cool down timers for the abilities which is why they have been specifically named after each ability but before I began with the abilities I quickly put in some code from lines (1) to (6) which are basically saying that if the character is moving left then it will play the running left animation and vise versa for the character moving right. The first ability that i focused on was the invisibility and starts at line (8) of the code which says when the "W" key is pressed then the characters opacity will be lowered to represent invisibility and will stay like this for six seconds until the character goes back to normal but will then add six to the cool down meaning that the player won't be able to use this ability for six seconds which is also shown in line (11) of the code. Line (9) and (10) say that if the cool down is greater than 5.9 then you won't be able to use it and the red cross will appear over the ability slot to show this to the player but if the cool down is lower than 0.1 then the red cross will disappear and you'll be able to use the ability. The last two lines while your invisible you won't be able to collide with the enemy object.
The only differences in the dagger throw section of code is that this time you press the "Q" key and this will spawn that small grey block on the player and will be fired forward as it has a bullet behavior. The other difference is that only one gets added to the dagger cool down global variable so this only has a one second cool down. With the ultimate I had to split it into two groups, the first group is to activate the ultimate by pressing the "E" key and allows you to use the ultimate for ten seconds before giving it a 300 second cool down. The second group says that during those ten seconds you are able to hit the "R" key as much as you can spawning an arrow each time, the rest of the code is exactly the same as the previous two.
After I had finished with the rouge abilities I began to work on mage abilities beginning with the fireball ability which is exactly the same as the rouges dagger throw ability except its a fireball which meant I just had to copy the same code with a few tweaks.
After I completed that one mage ability I decided to move onto the NPC and the players hot bar. The NPC is the yellow block that is off to the right and the box that the top of the screen will be the NPC's speech box which has the whole alphabet and symbols in pixel form already inside it but the text is just to say nothing.
The smaller grey box in the bottom will be the players hot bar and the red bar placed on top of the hot bar will be the players health bar and with that object I set the origin to the left.
Also on the hot bar I have put another box which contains the whole alphabet and symbols and set the text to say nothing.
I gave the NPC a line of sight behavior as it will need to be able to detect when any of the characters get close enough to the NPC which will help with the coding that I want to do.
This is all the coding that I needed for the hot bar. Line (1) is used so that when the layout starts then the game will get the information stored inside the dictionary and display it on screen using the alphabet/letters that are provided. The line of code (2) is there so that every second of the game the red health bar will be the width (length) of whatever the characters health is at that point in time starting with 100 as stated before.
With the hot bar done I next began to code the NPC so that he would be able to display a message to the characters if they were close enough. Line (1) of code is only there so that the NPC's speech box can store its position so that it knows where to spawn when it is needed. Line (2) of code is there and this tells the game that the character is in range of the NPC's line of sight. Lines (3) and (4) are there to set the messages that will be displayed in the speech box. Line (5) says that if the character isn't close enough then the NPC then the speech box and anything related will be destroyed. Lines (6),(7) and (8) say that if the character is close enough to the NPC then the speech box will be displayed with the correct message for the player to see and when they get out of the NPC's range it will be destroyed.
With the NPC finished I moved onto the enemy coding which looks confusing as there is a lot of coding but it is quite simple. Lines (1) to (4) say that if the character is in range of the enemy then the enemy will go into Attack mode otherwise it will stay in Idle mode which is when it just moves left and right in a pattern. The section also says that when the character is invisible the the enemy will stay in Idle state even if the character s in the enemy line of sight. Lines (5) to (8) say that if the character is in range and on the left side of the enemy then it will move -2 pixels which will be towards the player and will continue to do so until until they get out of the line of sight and the same goes for when the character is in range on the right side of the enemy except the enemy will move 2 pixels. Line (10) just says that when the enemy collides with any of the character then it will subtract from the player heath, line (14) is there so that when the enemy health is equal to 0 then the object will be destroyed. Finally lines (15) and (16) are there so that if the enemy is walking up/down a hill then it will be at the correct angle.

Next I created my first sprite using piskel which was the rouge character because this was the character that I had all the abilities ready for. However at this point in time I realized that I had just only scraped the surface of this project and it was already full of problems so I decided that I would leave this project as it was and move onto a new project that would be smaller on scale and be more simple with the mechanics.

To start the new project I first created the sprites that I would need as I knew that these would take the longest to do. To create the five characters that you will be able to choose from I just make one basic character outline and then just re-skined it with different designs, The next sprite I created was the red triangle which will be the camera light which the layers will have to avoid, next I created the the three bottom sprites (door, exit and press E) which will all be used at the end of the level. Finally I created the last three sprites (bottom image) which will also be an object that the player will have to try and avoid.
Each of the character sprites had to have a running animation which I created one and when I was happy with how the animation looked then I applied the 5 different skins that I created to this animation.
When I imported the characters into construct 2 the first thing that I did was to give them the standard behaviors such as solid, scroll to and platform for the same reasons as the last project that I was doing.
For the camera sight object I lowered the opacity to 35 so that the red colour wasn't so overpowering compared to the characters on the screen. I also added a sine behavior so that it moves on an angle from left to right, I had to change the magnitude so that the characters would be able to fit underneath the camera sight.
Next I added the ground which is just a simple block which has a solid behavior so the player doesn't just fall straight through the floor, to create the roof I just copied the floor and moved it upwards.
For the character select screen I created this animation which just has all of the different characters on each frame.
This is the character select screen which has the animation that I just created and I added a title which was created in piskel and scaled it down so that it wasn't too large on the screen. I added an arrow on each sde of the animation which will be used to move the animation frames. Finally I added the start button in the bottom right which will allow the player to go to the next screen.
I then Created the title screen which has all five of the characters that will be paying their run animation to simulate that they are being chased, I added the 2 sprites at the bottom which were created in piskel and will allow the player to go to which ever page they want to.
Next I created the instructions page which tells the player what the controls are and what the main objective of the game is, the sprite in the to left will be used to go back to the title screen.
The final sprite that I created is for the end game which is just so the player knows that the game demo is over.
This is the event sheet for the title screen which just sets the characters animations to run right but doesn't allow them to actually move, the other two pieces of code are for the the two buttons that are on the title screen so when the player clicks on Instructions they will be taken to the controls page and when they press start they will be taken to the screen where they can choose their character.
This is the event sheet for the character select screen which has the global variable CharacterSelect and it is set to 0. Lines (1) and (2) of the code allows the animation frame to be changed depending on which arrow you click on. Lines (3) to (7) just tell the game which frame to go to depending on what the CharacterSelect global variable is equal to. Lines (8) and (9) doesn't allow the global variable to go higher than 4 or lower than 0 as no animation frames match these numbers. Finally I added a simple piece of code which says that if you click on the start button then it will take you into the game layout.
This all the code that I needed for the controls screen as you are just meant to look and read it but to get back to the main menu you just need to click on the arrow in the top left corner.
Finally I coded the main game layout starting with lines (1) to (5) uses the global variable from the last layout and depending on what that is equal to it will spawn the players selected character. Lines (6) and (7) is just to set the characters animation so that when the layer holds down the right arrow the animation is set to run right. I used the same code for running left except it's a different animation and you need to hold down the left arrow. The next piece of code is so that if the player comes into contact with the camera sight then the layout will restart. The final piece of code is for when the player reaches the end of the level, when they are overlapping the door and press E they will be taken to the end layout which is the end of the game.
Friday, 12 February 2016
Subscribe to:
Comments (Atom)
















































