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.
Degree Project
Monday, 28 May 2018
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:
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.
·
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.
Subscribe to:
Posts (Atom)
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...