Friday 24 February 2017

Bibliography

Reference

-Allain, A. (2011). If Statements in C - Cprogramming.com. [online] Cprogramming.com. Available at: http://www.cprogramming.com/tutorial/c/lesson2.html [Accessed 12 Jan. 2017].

-Answers.unrealengine, (2015). How can i make a character slide on ice? - UE4 AnswerHub. [online] Answers.unrealengine.com. Available at: https://answers.unrealengine.com/questions/311998/how-can-i-make-a-character-slide-on-ice.html [Accessed 9 Jan. 2017].

-Banjo-Kazooie. (1998). [N64] Twycross: Rare.

-Bioshock. (2007). [Xbox360] Boston: 2K.

-Bugs Bunny & Taz: Time Busters. (2000). [PS1] Montreal: Behaviour Interactive.

-Crash Twinsanity. (2004). [DVD] Knutsford: Traveller's Tales.

-Epic Games, (2016). Blueprints Visual Scripting. [online] unrealengine.com. Available at: https://docs.unrealengine.com/latest/INT/Engine/Blueprints/ [Accessed 5 Dec. 2016].

-Forums.unrealengine, (2015). ground friction setting not doing anything in first person template?. [online] Forums.unrealengine.com. Available at: https://forums.unrealengine.com/showthread.php?66455-ground-friction-setting-not-doing-anything-in-first-person-template [Accessed 9 Jan. 2017].

-Half Life 2. (2004). [PC] Washington: Valve.

-Jameson, M. (2017). Professional Projects | Molly Jameson. [online] Mollyjameson.com. Available at: http://www.mollyjameson.com/professionalprojects/ [Accessed 23 Feb. 2017].. Professional Projects | Molly Jameson. [online] Mollyjameson.com. Available at: http://www.mollyjameson.com/professionalprojects/ [Accessed 23 Feb. 2017].

-Jones, S. (2015). Unreal Engine 4 Tutorial - Creating a Snow Particle System [1/2]. [online] YouTube. Available at: https://www.youtube.com/watch?v=3cnRh_sE1x8 [Accessed 13 Jan. 2017].

-Lynda, (2016). Programming Languages. [online] Lynda.com. Available at: https://www.lynda.com/Programming-Languages-training-tutorials/1467-0.html [Accessed 5 Dec. 2016].
-Ormstad, B. (2015). UE4 Tutorial | Change / Animate Material Colors In-game. [online] YouTube. Available at: https://www.youtube.com/watch?v=0XoFKCoU6-0 [Accessed 9 Jan. 2017].

-P.T.. (2014). [PS4] Tokyo: Kojima Productions.

-Ratchet And Clank. (2016). [DVD] Burbank, California, United States: Insomniac Games.

-Tesla Dev, (2014). Unreal Engine 4 Tutorial - Interactable Button. [online] YouTube. Available at: https://www.youtube.com/watch?v=CflZnd4u33g [Accessed 4 Jan. 2017].

-The 3D Tutor, (2015). UE4 Tutorial - Open a Door with the E Key (Matinee Sequence & Blueprints). [online] YouTube. Available at: https://www.youtube.com/watch?v=tm5QZiqVdwI [Accessed 9 Jan. 2017].

-The Last of Us. (2013). [PS3] Santa Monica: Naughty Dog.

-Titanic Games, (2016). Unreal Engine 4 - AI Improved Patrol. [online] YouTube. Available at: https://www.youtube.com/watch?v=0gU5StGSq_o [Accessed 18 Feb. 2017].

-tutorialspoint, (2016). UML - Activity Diagram. [online] www.tutorialspoint.com. Available at: https://www.tutorialspoint.com/uml/uml_ Activity _diagram.htm [Accessed 5 Dec. 2016].

-tutorialspoint, (2016). UML - Class Diagram. [online] www.tutorialspoint.com. Available at: https://www.tutorialspoint.com/uml/uml_class_diagram.htm [Accessed 5 Dec. 2016].

-Unreal Engine, (2015). Endless Runner: Spawning the Course | 02 | v4.7 Tutorial Series | Unreal Engine. [online] YouTube. Available at: https://www.youtube.com/watch?v=3om6yJiYMcg [Accessed 19 Feb. 2017].

-unrealengine, (2014). Collision Response Reference. [online] Docs.unrealengine.com. Available at: https://docs.unrealengine.com/latest/INT/Engine/Physics/Collision/Reference/index.html [Accessed 4 Jan. 2017].

-Virtus Learning Hub / Creative Tutorials, (2015). Unreal Engine 4 Beginner Tutorial Series - #26 Matinee Introduction. [online] YouTube. Available at: https://www.youtube.com/watch?v=eR0X9Rb08KY&t=1s [Accessed 9 Jan. 2017].


-Virtus Learning Hub / Creative Tutorials, (2016). How To Create AI And Enemy Basics - #42 Unreal Engine 4 Beginner Tutorial Series. [online] YouTube. Available at: https://www.youtube.com/watch?v=3GV6-4uhkYc&t=1s [Accessed 19 Jan. 2017].

Bibliography

-Allain, A. (2011). If Statements in C - Cprogramming.com. [online] Cprogramming.com. Available at: http://www.cprogramming.com/tutorial/c/lesson2.html [Accessed 12 Jan. 2017].

-Answers.unrealengine, (2015). How can i make a character slide on ice? - UE4 AnswerHub. [online] Answers.unrealengine.com. Available at: https://answers.unrealengine.com/questions/311998/how-can-i-make-a-character-slide-on-ice.html [Accessed 9 Jan. 2017].

-Banjo-Kazooie. (1998). [N64] Twycross: Rare.

-Bioshock. (2007). [Xbox360] Boston: 2K.

-Bugs Bunny & Taz: Time Busters. (2000). [PS1] Montreal: Behaviour Interactive.

-Crash Twinsanity. (2004). [DVD] Knutsford: Traveller's Tales.

-Epic Games, (2016). Blueprints Visual Scripting. [online] unrealengine.com. Available at: https://docs.unrealengine.com/latest/INT/Engine/Blueprints/ [Accessed 5 Dec. 2016].

-Forums.unrealengine, (2015). ground friction setting not doing anything in first person template?. [online] Forums.unrealengine.com. Available at: https://forums.unrealengine.com/showthread.php?66455-ground-friction-setting-not-doing-anything-in-first-person-template [Accessed 9 Jan. 2017].

-Half Life 2. (2004). [PC] Washington: Valve.

-Jameson, M. (2017). Professional Projects | Molly Jameson. [online] Mollyjameson.com. Available at: http://www.mollyjameson.com/professionalprojects/ [Accessed 23 Feb. 2017].. Professional Projects | Molly Jameson. [online] Mollyjameson.com. Available at: http://www.mollyjameson.com/professionalprojects/ [Accessed 23 Feb. 2017].

-Jones, S. (2015). Unreal Engine 4 Tutorial - Creating a Snow Particle System [1/2]. [online] YouTube. Available at: https://www.youtube.com/watch?v=3cnRh_sE1x8 [Accessed 13 Jan. 2017].

-Lynda, (2016). Programming Languages. [online] Lynda.com. Available at: https://www.lynda.com/Programming-Languages-training-tutorials/1467-0.html [Accessed 5 Dec. 2016].
-Ormstad, B. (2015). UE4 Tutorial | Change / Animate Material Colors In-game. [online] YouTube. Available at: https://www.youtube.com/watch?v=0XoFKCoU6-0 [Accessed 9 Jan. 2017].

-P.T.. (2014). [PS4] Tokyo: Kojima Productions.

-Ratchet And Clank. (2016). [DVD] Burbank, California, United States: Insomniac Games.

-Tesla Dev, (2014). Unreal Engine 4 Tutorial - Interactable Button. [online] YouTube. Available at: https://www.youtube.com/watch?v=CflZnd4u33g [Accessed 4 Jan. 2017].

-The 3D Tutor, (2015). UE4 Tutorial - Open a Door with the E Key (Matinee Sequence & Blueprints). [online] YouTube. Available at: https://www.youtube.com/watch?v=tm5QZiqVdwI [Accessed 9 Jan. 2017].

-The Last of Us. (2013). [PS3] Santa Monica: Naughty Dog.

-Titanic Games, (2016). Unreal Engine 4 - AI Improved Patrol. [online] YouTube. Available at: https://www.youtube.com/watch?v=0gU5StGSq_o [Accessed 18 Feb. 2017].

-tutorialspoint, (2016). UML - Activity Diagram. [online] www.tutorialspoint.com. Available at: https://www.tutorialspoint.com/uml/uml_ Activity _diagram.htm [Accessed 5 Dec. 2016].

-tutorialspoint, (2016). UML - Class Diagram. [online] www.tutorialspoint.com. Available at: https://www.tutorialspoint.com/uml/uml_class_diagram.htm [Accessed 5 Dec. 2016].

-Unreal Engine, (2015). Endless Runner: Spawning the Course | 02 | v4.7 Tutorial Series | Unreal Engine. [online] YouTube. Available at: https://www.youtube.com/watch?v=3om6yJiYMcg [Accessed 19 Feb. 2017].

-unrealengine, (2014). Collision Response Reference. [online] Docs.unrealengine.com. Available at: https://docs.unrealengine.com/latest/INT/Engine/Physics/Collision/Reference/index.html [Accessed 4 Jan. 2017].

-Virtus Learning Hub / Creative Tutorials, (2015). Unreal Engine 4 Beginner Tutorial Series - #26 Matinee Introduction. [online] YouTube. Available at: https://www.youtube.com/watch?v=eR0X9Rb08KY&t=1s [Accessed 9 Jan. 2017].


-Virtus Learning Hub / Creative Tutorials, (2016). How To Create AI And Enemy Basics - #42 Unreal Engine 4 Beginner Tutorial Series. [online] YouTube. Available at: https://www.youtube.com/watch?v=3GV6-4uhkYc&t=1s [Accessed 19 Jan. 2017].

Thursday 23 February 2017

Evaluation

Introduction

This evaluation purpose is to look back at the project as a whole and review the planning, development and outcome. I will be looking at the quality of the prototypes, the re-usability, the concepts used, what skills I have learnt and other aspects of the project. I will finally make a short conclusion, to sum up, my work as a whole.

Development compared to planning


For my first prototype, I was able to stay almost exactly the same as the plan itself. The reason why I stuck so close was because the plan had a great structure and told me how to achieve those programming concepts. I was able to draw out what exactly happened and what was the goals of the player throughout the two levels. Using the UML diagrams I was able to understand the progress of the prototype and what classes I needed to make. On the other hand looking at my class diagram I had rather limited knowledge on programming so I would say if I could redo it again I would have added a lot more classes that I had to create.


For my second prototype, I kept the same setting and genre but change all the gameplay. I had to recreate my UML for this new design, write out a new pseudocode and edit some of the programming concepts to suit concepts I missed out on my last prototype. While I could have stuck with the original plan, after three hours trying to create this prototype I found iI just wasn't interested in the original designs. I decided to try out something new with the same concept and see what new ideas come around. The reason why I decided to do with a new plan was the fact that the original had no new programming concepts to advance me as a programmer. So I based my new plans on the concepts I haven't done before. 


Reflecting back I'm glad I took that risk as I have designed a better prototype with more complex and challenge concepts I haven't done before. My new plans had helped me understand the basics of what I was doing but most of this prototype was trial and error, to see what I could create.



Measure of quality 


Throughout my development of these two prototypes, I have been measuring the quality of my programming. I have talked about efficiency ('Collision detection and handling' from 04/01/2017 ), maintainability ('Ice Physics' from 12/01/0217), and usability ('AI' from 19/01/2017). I have been able to consider how I have worked efficiency by using ready my nodes from the blueprint library. Instead of having to make the blueprint code myself which would cost me time, there are already made that makes production faster. For example, I didn't have to write out 'AI move To' in my enemy class ('AI' from 19/02/2017). I was able to use a node that was ready made in the character blueprint class. Overall I have been able to work with efficiency throughout this project. 
Re-usability


Throughout the two prototypes, I have been testing my blueprints to see if they are reusable. I have tried many ways to coping classes and changing them to suit a new purpose. For example, in my 'Array' blog (posted 20/02/2017) I talked about how I was able to copy the 'Enemy' class three more times and only edit the static mesh and target points. I did not touch the blueprint script. They all worked perfectly. 


The best experiment I did for re-usability was explained in my blog post 'Loop and instantiation' where I decided to migrate a blueprint class called 'PressE' for my first prototype to my second. I was able to show not only was I able to re-use classes within the same project, I could re-use classes in another project.


Further improvements 


Looking back at the two prototypes I can see that there is still a lot of improvement to be made. I designed these two prototypes to display game concepts which could be made. 


For my first prototype, I would have improved it by having a boss level at the end to show a more complex AI. Comparing prototype one to prototype two, prototype two had an end to the game where the player dies. Whereas with prototype 1 you finish the indoor level and that's the end. With this boss, I could have created a health bar and have the player hit him several times before he was killed. Likewise with the character, to further improve the game I could have added a health bar so he could have more hit damage and have a visual way to how much health Timmy had left. 

I based my second prototype on my game concept from the game design unit from last year. I wanted to show what this horror game could be like, through creating this prototype. So if I was able to recreate the prototype in future, I would want to drive deeper into my concept and try out the other aspects I missed in this prototype. Concepts like the combat mechanics, more advanced AI for the enemies, use of physics like wood catching on fire, and how to code quick time events.  I would use my game design document from last year as a basis. 


On the other, if I didn't recreate this prototype and made further improve it instead I would improve the AI. As I said in my 'Array' blog post (from 20/02/2017) the AI being able to sense and attack the player would have been a better way to add tension within the prototype. This would have shown more of the gameplay style I was going for in my game design document. Right now my prototype seems to be more of walking simulator because of the lack of mechanics. 



Testing


For both prototypes, I was able to do black box testing. I planned out these tests before creating the prototypes themselves. So I would know what I was trying to achieve at the start of the test. The reason why black box testing has helped me so much is because it has allowed me to test a function repeatedly until I am able to find a solution or alternative. The results of the testing have impacted the gameplay of the prototypes. For example, in prototype two I discovered that the blueprint kill player when he collides with an enemy was making the game unplayable as it kept restarting the game. So I decided to cut the stealth mechanics from the gameplay. 


With prototype one, testing allowed me to better understand how to program. With the 'PressE' class, I used a tutorial which for some reason didn't work. So I decided to try and fix the blueprint, that still didn't work. In the end, with the knowledge, I learnt from the tutorial I created a new blueprint that did work. 


While I did have peer reviews from peers to tested out my game, I didn't use their feedback to improve my prototypes. I should have had them test the game a lot earlier so I could have implemented their suggestions. Overall self-testing was a great success, where I was able to learn from my failures to become a better programmer. 



Programming concepts implemented


I have been able to implement I wide range of programming concept with an in-depth description the basics, how I applied these concepts and why I  implemented them into my prototypes. I explain all of this in the table below:


Comparing to last year I have been able to show more programming concepts. With a greater understanding of how these concepts work. I feel like this year's prototype has a better use of the conditional statement. Looking below said 'if player jump, jump'. I did not code that player script. Whereas I did create a more complex conditional statement where if it true that the player did activate the two switch then open the door if false keep door closed. 

('Evaluation' post on 07/01/2017 from 'ProgrammingForGameDevelopment')
Overall I have been able to use a wide range of programming concept and improved those concepts that I learnt from last year. This is a great sign of progression and advance understanding of I have learnt. 


Game design concepts


With the knowledge learnt from my game design unit last year, I have been able to use what I have learnt to improve the design of my two prototypes. I have used a wide range of concepts for these two prototypes and here is a description of them below:

For both prototypes, I have considered what the interaction model is going to me. For my horror game, I go in depth about why I decided to choose first person camera and an avatar to interact with the game world.('Loop and instantiation' from 19/02/2017). The main reason was to add to horror theme to having the player be in the perceptive of the unknown character they are controlling. As the character is unknown the player will more likely project them as the character instead of just a player.


For both prototypes, I have been able to use semiotics to enhance the experience. For prototype one in my blog post 'changing colour' (from 09/01/2017), I talked about how I used colours to represent when a switch was activated. Red often represents off and green represents on.


For prototype two ('Loop and instantiation' from 19/02/2017) I called about how I used a skull and the colour red to represent death. I wanted the semiotics to suit the horror theme of the prototype. With the symbols of death, it foreshadowed the character's death in the next scene.


For the visual style of my first prototype, I talked about how I have design the aesthetics to improve my game ('Snow' from 13/01/2017). I made a snow particle system to add to the winter theme of the level. I also made a part of the gameplay apart of the level theme. The iceberg platform was a way to connect mechanics and visuals style to the overall winter theme.


For prototype two, I briefly talked about how I displayed visual style through enemy design('Array' from 20/02/2017). I created undead models to add to the horror theme. As the enemies, I showed horror visual style by the graveyard and crypts setting. Making the level take place on a rainy night and the moon turning moon. Whereas I could I added some visual way to add to the overall horror style.


I did talk about game flow in my blog post 'AI' (from 19/01/2017). Where I talk about how I introduce the player to an enemy and that enemy can't kill the player. Considering what the player has learnt so far I learnt that I needed to get them use to how an enemy would work but they prove a challenge later in the game. If I created a whole game I would make the next enemy encounter a challenge to test the player's skill before increasing the difficulty.

A new concept which I didn't learn in last years game design unit was '
design by subtraction'. I talked about this concept and how I used it in my blog post 'Collision detection and handling'. Where I explain why I didn't give any instructions on how to play prototype one. I didn't want lots of tutorials on how to play this game or a tutorial level which would take away from the main experience I am going for. I started the player in a place environment to test out the controls before any challenge start. 



Why I used blueprint in Unreal?


When using Unity for my programming unit last year, I found that I didn't get on with the engine. It started off with a blank scene for my to work on. Whereas in Unreal it gave me a pre-creating character with ready made code for me to start playing with. Unity had a harder to understand interface and was less user-friendly. Most of the reasons why I decided to go with Unreal is down to my personal needs and understanding. I feel like unity is better for those who are more skilled with programming and I'm not. Whereas Unreal is easier to understand because it uses semiotics in its interface design. It colour codes what is what. For example, materials are green, levels are orange, blueprints are blue-est. It when has icons to show these as well



The biggest reason why I decided Unreal was the fact that I could use Blueprints. For someone who struggles with programming, blueprint gave me a safe place to test and experiment my ideas and learn from them. With written scripts, a beginner could be spending hours looking for syntax errors. While could be as simple as capital letters. With so many areas for fail at it can be hard for the beginning. Whereas with blueprints there are almost no syntax errors you need to worry about. It's the logical errors you get to focus on.




Skills learns

With the ability to use Blueprints I feel like I have been able to have a deeper understanding of all the programming concepts for last years programming unit. I have learnt the different ways of using collision detection and handling. Looking back at my development blog from last year I can see where I went wrong. For this code below, I can see that I haven't said which level the engine needs to reload.






('Fall Death' 06/01/2017 blog post from 'ProgrammingForGamesDevelopment')

I have been able to do the same thing and have my player restart in my prototypes from this year.



That is just one small example of the problems I faced last and what I have learnt this year which has allowed me to overcome those problems.

This year I have learnt to create two different types of AI: pawn sensing ('AI' 19/01/2017) and patrolling AI ('Array' post from 20/02/02017). I have learnt how to spawn objects ('Loop and instantiation' from 19/02/2017) into a scene. I have learnt how to have a conditional statement which opens a door once two switches are activated ('Conditional statements' from 12/01/2017). Finally, I have learnt how to create a form of physics ('Ice physics' from 12/01/2017). All of these was not able to create in my prototype from last year.

Professionally present this project


Researching into programmer portfolios I found a great example from Molly Jamesson (Jameson, M.2017). She had a page called 'Professional projects' and listed the games her has programmed for. For each game, she has explained the programming language used, her role, what she specify did in that game. For example, she explained she did all the boss AI for the game 'Ratchet and Clank' (Ratchet And Clank. 2016) with pictures of some of the bosses. 



reflecting at how a professional programmer presents their work. For these two prototypes. I would create a blog that has a title for the two prototypes, description of what I had in the game, and that I used Unreal engine blueprints. I would have screenshots of some of the functions I coded. And because I have used blueprint I could have screenshots of my best example of blueprints I have made. Overall I feel that these two prototypes would be easy to present as I have used blueprint which is a visual program. 


Time management


Out of 35 tasks, I have been able to complete 31. For the 4 tasks, I didn't complete I feel like they would affect this project in a major way. I have been able to keep to all three deadlines for this project with only minor tasks not completed. For example in my blog post 'AI' (from 19/01/2017) I wasn't able to complete all the tasks for the deadline so I moved those tasks to my next section on the taskboard. Overall I feel like I have been able to keep up to date with tasks and have them finished for the deadlines. This taskboard has been useful to show me what needs to be done and by what deadline. While it's not out task boards are professionally laid out. It has helped me for my own personal use.





Research


For both prototypes, I have been able to research a lot of different functions and ways to create specific things with blueprints. For example in my blog post 'Array' (20/02/2017). I was able to find a tutorial on how to create a patrolling AI. In most of my blogs, I have been able to find a tutorial on how to create some. Here is the list of tutorials below. 


'Unreal Engine 4 Tutorial - Interactable Button' (Tesla Dev, 2014)  from 'Collision detection and handling' (04/01/2017)


'UE4 Tutorial | Change / Animate Material Colors In-game' (Ormstad, B.2015from 'Changing colour' (09/01/2017)

'Unreal Engine 4 Beginner Tutorial Series' (Virtus Learning Hub / Creative Tutorials,2015) from 'Cinematics' (10/01/2017)

'Unreal Engine 4 Tutorial - Creating a Snow Particle System' (Jones. S, 2015) from 'Snow' (13/01/2017)


'How To Create AI And Enemy Basics(Virtus Learning Hub / Creative Tutorials, 2016) from 'AI' (19/01/2017)



'Endless Runner: Spawning the Course' (Unreal Engine, 2015) from 'Loop and instantiation' (19/02/2017)

'Unreal Engine 4 - AI Improve Patrol' (Titanic Games, 2016) from 'Array' (20/02/2017)

As you can see I used a lot of different tutorials to help me out with these two prototypes. The research into how to create snow, AI, spawning object etc, has show allowed me to gain more knowledge of programming concepts and how to implement.





Conclusion 

To summarise the project I would say learning through practice. I have learnt a great deal about programming through trying, failing, and fixing those failures. I now have a more advanced understanding that I had from last years programming unit.  Researching concepts and implementing them as shown me new methods that I have tried out myself. Comparing this project to last years project this is a major advancement in quality, skill and management. while these are short coming like the fact my prototypes is lacking in functionary and the first is too short. The fact that I have been able to complete to two prototypes in working condition with no errors is outstanding to me. So I would call this project is a success.  

Bibliography


Jameson, M. (2017). Professional Projects | Molly Jameson. [online] Mollyjameson.com. Available at: http://www.mollyjameson.com/professionalprojects/ [Accessed 23 Feb. 2017].Professional Projects | Molly Jameson. [online] Mollyjameson.com. Available at: http://www.mollyjameson.com/professionalprojects/ [Accessed 23 Feb. 2017].


Ratchet And Clank. (2016). [DVD] Burbank, California, United States: Insomniac Games.

Monday 20 February 2017

Array


Basics
As well as loops and instantiation, arrays were going to be shown through creating snow in my first prototype. With this final concept needing to be shown I researched how to achieve this in my second prototype. I could have made an inventory for my character to store their weapons but I decided to display arrays through patrolling enemies. As there will be a number of target points the enemy has to move to it counts as a collection of data a variable. 


HowI watched a tutorial called 'Unreal Engine 4 - AI Improve Patrol' (Titanic Games, 2016). I will be able to show another form of coding AI compared to the first prototype. The image below shows the whole blueprint class I made for this enemy. I will break down what this all does.

First I started a custom event called 'PatrolToPoint'. I referenced this custom event to be activated when the level begins (Event BeginPlay). Next, I created my array variable called 'PatrolPoints' which is a target point data type. In this variable, there are all the target points the enemy will to. Next I another variable called 'Patrol Index' which shows the index of the target points within the array. I linked the two variable to get to get the index of the targets in the array. The 'AiMoveTo' node tells the enemy where to move to. So linking get to target actor this tells the AI to move to the targets within the arrays. Finally, the pawn is 'Self' the enemy class. 



Next, I needed to make a conditional statement. While there might make been a way of use an 'if else' statement I felt that a 'true or false' statement would get faster and easier to use. I made the condition that when the length of the array is meet then the condition is true. 


When the condition is true reset index back to 0 and begins 'Patrol to Point' again. If false then move to next target. 



Testing

After completing this blueprint class I decided to test the class. The basic function of this class worked. The enemy moved constantly moved from point to point without stopping. I decided to add to the function of this enemy. I added when sensing player, follower player. When player collides with the enemy, player restarts the level. 


I could have migrated the enemy class from TimmyAdventures project like I did for the 'PressE' class but I decided to try an alternative way of getting the enemy to follow the player. I tried out two new nodes from the library of codes. Testing this new method and I discover that it works much as well as the 'AI Move To' node. 
Next, I tried out using knowledge from prototype 1 for this function to restart the level. I remembered the node 'Get all Actors of class' from the open level blueprint in 'Outside_level'. I created a custom event within my First Person Character class and referenced it in Enemy. So when player overlaps with enemy box, get 'Kill Player' custom event from 'First Person Character' and activate the custom event. 
In the end, I cut both of these extra functions as they were causing issues while playing the level. Looking back now I think I can see the issue, the custom event must have been activated by something within the first person character class as well as the enemy overlap. I'm not sure what it was but if I had more time I'm sure I could have fixed the issue.




WhyIf the pawn sensing and kill player blueprints work, this would have displayed horror through gameplay. The gameplay idea was to have the player sneak through this area trying to avoid enemy sight. This was to bring tension to the level and you need tension to make a horror game.  While I wasn't able to try tension to this function have been able to display a horror visual style by making undead models for enemies. Another reason why I did this was to tick off arrays as another programming concept I was able to use across my two prototypes.



Industry expectations


Usability in games like my AI in my first prototype I have been able to show a basic use of AI. While both are limited they do show functions AI could have. This AI doesn't have enough functions or complexity to be usable. If I was able to get those extra functions this would be the usable code I could use in other projects.



Ready made libraries - I was able to use 'AI Move To' node from the character class. Which was made for characters specifically? The other nodes you can get from the other classes so I didn't use that much from the library for this class. 


Re-usability -This blueprint is independent of any other class. While in the game it goes through a constant state of moving from point to point. I could change the static mesh and use this in another project if I needed this function. As I have already copied this class to create the other enemies in the level. I can confirm that this is easy to adjust and is re-usable. 


Time management


In such a short amount of time, I have been able to complete all but one of the tasks set for prototype two. The reason why is due to the fact that I did a lot of these tasks in prototype one. So I was able to use my knowledge learnt from creating prototype one to create prototype two. while there is still one task left, I feel that I was able to display this in my first prototype, so I don't need to complete it in this prototype.  With 10 days to go, I am rather happy with my progress as I'm beyond what I expected to be at this time.


Bibliography

Titanic Games, (2016). Unreal Engine 4 - AI Improved Patrol. [online] YouTube. Available at: https://www.youtube.com/watch?v=0gU5StGSq_o [Accessed 18 Feb. 2017].

Sunday 19 February 2017

Loop and instantiation


BasicsKnowing that I wasn't able to demonstrate loop or instantiation for my first prototype I decided to make it my first goal for my second prototype. As my plan was to display loop and instantiation through creating snow in blueprints didn't work out. I needed to research methods of how I can use these in my game. I spent too long trying to suit my plans for prototype 2 to fit these programming prototypes that I decided to throw out the plans and design a level suited to the concepts. I keep the same setting and genre but change the whole level design. While this wasn't the best method, I did find that I was able to design a better prototype with more complex concepts as a result. 


How- I watched a tutorial called 'Endless Runner: Spawning the Course' (Unreal Engine, 2015). Which taught me how to spawn floor tiles into the game world. First I created an actor class called 'Spawn_Floor' and created a function. This function 'Get Attach Transform' tells the class where the next floor tile needs to attach from. The attach point is positioned at the end of the floor tile for the next tile to spawn from

Within the game mode class, I created a new function to spawn floor tile. The node 'SpawnActor' allows me to find the class of the actor I want to spawn and the position 'spawn transform' of where I will it to spawn too. This blueprint reference the blueprint above to where in the game world does the floor tile need to spawn. So the floor tile will spawn at the attach point. 


Again within the game mode class, I say when I want the spawn to start. For this, I said 'Event BegainPlay'. Which is when the level starts. Next, I used a 'For Loop' to specify the number of times I wanted 'Add Floor Tile' to occur. As I only wanted two tiles I put 'Last Index' as 1 (this is because blueprint starts counts from 0).

Back in the 'Spawn_Floor' class I added a collision box and added collision handling. When player collides with box activate 'Add Floor Tile' which spawns in a floor tile. Then 'Destroy actor' which destroy the floor tile. 


Testing-
While testing I discover an error I did not think I won't find. In my second level, I had trigger boxes which had text visual when the collides with it. When I was placing then through my scene 
I discovered that on the path there the floor tiles will spawn I wasn't allowed to place any trigger boxes. If I did the game would crash. As a result of discovering this unforeseen error, I decided to use rendered text already visible in the game instead of text that appears. 






Why - As there is no clear path and there is no floor set I wanted to create a small but uneasy feeling when the player uses these floor titles. The player will feel safe on the ground that doesn't disappear after you step off it. I wanted the feeling of uncertainty when the player walks across these floor tiles. 


Other that the floor tiles there are many other ways I have tried to get the horror theme across through mechanics and visual style. After the player gets off the floor tile bridge they are greeted by a skull coated in red light. Both the colour red and a skull are semiotics of horror and death. I wanted this semiotics to be a foreshadowing of the player's death in the next scene where the player is lowered into a grave. 


For this prototype I decide to use the first person camera model and for the player to interact with the game world through an unknown avatar. Basically an avatar interaction model. The reason why is to add to the horror theme. If you playing with an unknown avatar you are more likely to relate that avatar as yourself. I want the player to experience the game through their own eyes and I can achieve this through using first person camera model. This is to make the horror more real for them. 




Industry expectations


Usability: This blueprint class is easy to use and to edit. I had no issues when I want to change something. When I had an issue with the trigger boxes I was able to find the cause by looking through the class and seeing no errors.


Ready made libraries - I was able to find spawn actor from the ready made library. Without that node, this would have taken a lot longer to write out. 


Re-usability - For this blueprint, I was able to use it in two of my levels. So it is reusable within the same project as least. A big issue I could see is the fact that I used the game mode class. If I was going to re-use this blueprint in another project I might have to copy the blueprint from the game mode class of this project into the game mode of another project. To sum up I don't thin you could re-use this blueprint in another project.


On the other hand, I was able to migrate a blueprint class from 'PressE' from my prototype 'Timmy's Adventures'. I was surprised how easy it was and how it worked perfectly when I tried it out a level. This has proven to me that you can re-use well-designed blueprints from one game to the next. I used this class in the level 'Cathedral2' and the only thing I needed to change was the text I wanted to display. 


Time Management 

Having 11 days to go until the final deadline and only completing the two tasks from the previous section isn't the use of time management. On the other day if I complete the 'Array' task soon I will be able to focus on the work I need do for this section of the project. 



Bibliography

Unreal Engine, (2015). Endless Runner: Spawning the Course | 02 | v4.7 Tutorial Series | Unreal Engine. [online] YouTube. Available at: https://www.youtube.com/watch?v=3om6yJiYMcg [Accessed 19 Feb. 2017].