The entire project did not go well. I had set aside time in my project plan, scheduled it out and worked on my game accordingly, but unforeseen errors arose in the coding department. I’m not entirely the best script writer in the world, but I did manage to work through a few of my issues whilst eating up the time that I was to use to implement audio and more art assets into the game.
My errors began with the movement controls. I had them working and exactly the way I had planned out, did it in under the time I had allotted and was quite happy with the results. But when it came time to work on having the dog companion follow along with the player, I had intended to use the NavMesh tool in Unity, which is where I developed my first issue.
The NavMeshing tool in Unity only allows creating a navigation plane on the X and Z axis, which is common for most 3D games. My game however was based on the X and Y axis, where its controls worked perfectly and the mouse controls to look and shoot were implemented perfectly. After much faffing about, I had to change the axis in which my game was on, because I simply had no idea how to make a core mechanic of my game, available to use without NavMesh.
This reworked the entirety of my movement, I had to set specific movement values and struggle with the mouse cursor not responding with the regular input commands due to the axis change. So I had jury rigged a simple set up for the controls, mapping the Q and E keys to rotate left and right respectively. This made the entire feeling of being outside very very sluggish and bogged down.
Having completed the movement overhaul so it’d work with the X and Z axis, I got to work on the NavMeshing, and the logic required to allow the dog to follow the player, and chase after a bunny game object on screen. The dog would chase the bunny and return after eating it (colliding and destroying the object), and add 1 to his current health. If the dog had eaten something in this instance of the outside level, he will no longer chase after bunnies and let the player shoot them. Which is where a short problem occurred where the RayCast method worked originally, after remapping the movement, caused issues which were solved by creating a different shooting mechanic, where a physical object would be spawned to fire outwards from the player.
I was incredibly disappointed with how the project was going, but I stormed on ahead anyway. I implemented a logic system that allowed the dog to chase a rabbit and return to the player. And after setting that up I realized I had to develop a ‘game manager’, which I had previously no experience in doing. I rescheduled time to set up the manager and link it to all my various scripts and set up the spine of the project. I could create logic dictating the health of the dog, the players health, the dogs mood and the various effects I had planned for the game. I linked the text pop ups to the game manager from various triggers in the cabin and things went well enough for a time until I destroyed my project with a single line error. I had my movement broken, the logic, the everything, in the scene didn’t work, because I had added something I couldn’t quite remember to the Game Manager.
I worked through trying to solve the problem of the broken project and ignored my scheduling in the process, meaning the weather effects, the proper triggers and dialogue pop ups, and implementing the sound I had designed for the game, a few features I wanted to have done properly were ignored, because the rest of my project was not functioning.
At the end of the day, when I had finally fixed the Game Manager, worked through the issues it had. I had decided to give up. It was the day before the play testing, the majority of my game was there and it was not a very pretty masterpiece that I had initially intended it to be.
I did learn a few things during this project however, it was not an entire waste of my time. I did learn how to use the NavMesh tool, and created a semi decent AI that would walk around the NavMesh, and along with that, I did learn how to create a GameManager, while it did still break my project for a short time, I managed to properly deal with it, and find a solution. I also spoke to an Audio guy, Francis and and two good friends willing to do art work for me. The artwork made for me was an interesting experience because I had to teach myself to talk to artists, and talk about what I want whilst having them understand me. The same goes for Audio students, having to have a meeting and sort out the details I want, have them understand me also. It was an interesting experience.
What I’d like to do different next time for a solo project, is extensively write out what exactly I need for the project, sit down and figure it all out before I do it. I don’t want to be caught having to research what a Game Manager is half way through a project, and then haphazardly stitch my various scripts to it. I realize that I need to sit down and think about my project before touching Unity.
So to summarize Winter, the Studio 2 Project dealing with Emotions. The final product was an interesting mess, but it lead to some interesting discoveries and learning outcomes for me, and I’m definitely happy with what I learnt during my time working on it.