Monday, 28 May 2018

Download the game and Project Files!

The project files along with any additional documentation are located in this folder on my Google Drive.

To download the game please download the MiniMiner.zip and either run the .exe file within the testproject folder, to open it up the project in Unity.

Appendix

Due to the length of the appendix, it wasn't suitable to display it here. Please download this document to view the appendix.

References

References

Bunny83. 2015. C# Time.time Hours?. [ONLINE] Available at: https://answers.unity.com/questions/1101475/c-timetime-hours.html. [Accessed 28 May 2018].
Çetin, S. T. (17, May 14). Unity 5 - What is the proper way to handle data between scenes? Retrieved from: https://gamedev.stackexchange.com/questions/110958/unity-5-what-is-the-proper-way-to-handle-data-between-scenes?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa. [Accessed: 28 May 2018]
Enrique Moreno Tent. 2015. Unity 5 - What is the proper way to handle data between scenes. [ONLINE] Available at: https://gamedev.stackexchange.com/questions/110958/unity-5-what-is-the-proper-way-to-handle-data-between-scenes?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa. [Accessed 28 May 2018].
  gamesplusjames. (2015). Unity RPG Tutorial - Learn to make an RPG game & learn C#! [Playlist] . [Online Video]. 11 November 2015. Available from: https://www.youtube.com/playlist?list=PLiyfvmtjWC_X6e0EYLPczO9tNCkm2dzkm. [Accessed: 5 October 2017]. 
 John Hamilton. (2016). How to store variables in between scenes? Unity [duplicate]. [ONLINE] Available at: https://gamedev.stackexchange.com/questions/133872/how-to-store-variables-in-between-scenes-unity?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa. [Accessed 17 May 2018].
quill18creates. (2016). Unity Tutorial: Fast & Easy Level Editor Technique for Platformers and RPGs. [Online Video]. 26 July 2016. Available from: https://www.youtube.com/watch?v=5RzziXSwSsg&t=2539s. [Accessed: 28 May 2018].


Additional Sources:
[Course]: Ben Tristem, Rick Davidson (n.d). Complete C# Unity Developer 2D – Learn to Code Making Games. [ONLINE] [VIDEO PLAYLIST]. Available at: https://www.udemy.com/unitycourse/. [Accessed: 05 October 2017].

[YouTube Playlist]: Brackeys (2015). Inventory System Tutorial in Unity 5. [Online Video]. Available at: https://www.youtube.com/playlist?list=PLivfKP2ufIK78r7nzfpIEH89Nlnb__RRG. [Accessed: 28 May 2018].

Wednesday, 23 May 2018

Evaluation


Over the course of this year I have created, designed and testing my game MiniMiner. At the start of development, I was really unsure how it would turn out or how difficult it would be. I had no prior knowledge with using C# or Unity, and it’s taken hundreds of hours of research to get the game to where it currently stands.

In its current state, the game has most of the features that I drafted out for it. Unfortunately, there are more bugs within the game than I intended there to be, and going forward this game would need a fair bit more development time in order to iron out some of the creases. However, the skills that I have gathered during this year are invaluable. I now have the skills and knowledge to be able to write code by myself without the use of research sources. I am acquainted with most of the Unity engine features and I’m confident to use them.

Developing this game was a larger feat than I realised but overall, I’m happy with the way that its turned out. I just wish that I could have implemented a few more features, but at this point I’m confident that with a little more development I’ll be able to get the game into a fully stable state. The biggest challenge of this project by far was getting the inventory and shop to work. These were pretty huge features to implement and it took me a while to grasp the logic behind for loops. What I’ve learnt this year is how to use the Unity engine as well as how to program in an object-oriented programming language, and how to program in C#.

Monday, 7 May 2018

Play Test


The game is now in a place that I feel comfortable with. Now, seeing as time is running out, it’s time to make the game playable. Certain details of my game, such as ore health and item prices have been left as drafted in my initial creation. These details will need to be changed for the sake of game balancing and will also make the game more fun. For this playtest I will be testing the game myself but also handing it to other people to test so that I get a better insight. Every Player will have their own playstyle and will be able to pick up bugs / changes to the game that need to be fixed / made, changes that I won’t realise need to be made.

UPDATE: After giving the game to a couple of peers to play, as well as my Brother, I have discovered that there are many changes that need to be made. A lot of the feedback that I received was that the game just simply took too long. Progression was too slow and it took too long to upgrade pickaxes. Because of this, I have adjusted the prices of the pickaxes, and also increased the sell prices of ores:

Saturday, 28 April 2018

Pickaxe Upgrades, Stamina, Consumables


A lot of the features that were mentioned in my initial design have now been implemented and now seemed like the appropriate time to add the win conditions. These win conditions meant adding a timer in game. I experimented with this timer, such as its size, positioning and different colouring. I settled on reducing the size of the milliseconds, and only displaying the appropriate values as necessary i.e. only displaying hours once the Player had been playing for more than one hour.

The win condition for this game was to add the ‘Motherload’, a golden block which is considered to be extremely valuable! Once the Player has collected this, a prompt is added one screen instructing the Player to visit the shop in order to turn it in. Turning this into the shop will end the game and transition the Player to the win screen. This is just a simply screen which tells the Player what their completion time was. This was a tricky solution to find as I didn’t know how to carry data across scenes. The solution to my problem was using a static variable which I found from the StackExchange forum user (Çetin, 17). In his post he explained that the best way to carry data between scenes is to store it on an object which isn’t destroyed when loading a new scene. This object contains a script of static variables. These variables can be accessed from any script without getting a specific reference to it, this is done by calling [script name].[variable name] which in my case, for example I would call PublicData.finalMinutes. Once the Motherload has been handed in, before the new scene is loaded, the timer is paused, and the time is passed from the timer to this script.

Thursday, 19 April 2018

Stamina, Pause Menu

Within the last week or so I have been working on implementing a stamina system. This stamina system gives the Player a reason to go back up to the surface and allows me to implement a use for the consumable items. Upon starting my development of this system, I outlined three potential interactions for this stamina system:

·         Stamina will drain at a steady rate over time.
·         Increased further when mining, even if not hitting a target ore.
·         Increased even more if the Player is actually mining a rock.

In order to get this system to work the way I wanted it to, some of the mining code needed to be restructured as I couldn’t get it to work with the current system. To implement this solution, I first needed to move all of the mining code off of the Player and into a new script. Not only was this for peace of mind and clarity, but also to segregate the process so that the logic could be more easily determined. I separated the mining code into three logical steps:

1.       Every frame, check if the Player is mining.
2.       If they are then run the MineRock() function, which fires a raycast.
3.       If the raycast hits nothing, then stamina will decay at a flat rate but if it did hit, then the decay rate will be determined by the rock that they are mining.







EDIT: shortly after implementing this change and submitting this post I noticed a bug with the stamina drain rate. The stamina decay rate was fluctuating constantly, sometimes it would drain quicker than normal. I couldn’t figure out the exact cause of this problem, but by moving stamina to its own script fixed this issue.

I have also implemented a pause menu as there was no way to pause / exit out of the game up to this point.

Download the game and Project Files!

The project files along with any additional documentation are located in this folder on my Google Drive. To download the game please down...