Project 2
— GDS212 —
— GDS212 —
Table of contents
Screenshots
Image: The final building of the Nordic level.
Image: The first pitfall trap in the Greek level.
Image: The two relics in the Museum level.
Game Design Document (Site)
Learning Journal Pages
Proficiency: For this main class project, I took up the role of programmer for the traps in the game. This was the first time I really got into programming stuff in a while but I was still pretty good at it. There were some points where I didn't have the best experience to fall back on, like with working with lerps (I was never able to fully understand how it worked), but I was able to use trial and error with trying different methods to solve the problems I was having, such as swapping around variables in formulas to see which works and get a better understanding of how it works.
The Unity C# documentation also helped me a lot, as well as forums such as the Unity Forum and StackOverflow from people who were having problems similar to mine. It was especially helpful in trying to troubleshoot an error such as errors like "cannot implicitly convert GameObject to Transform" and then actually getting it to click in my head when the Unity editor wasn't helping much at all.
I also found some useful programming information in Michelle Menard and Bryan Wagstaff's Game Development with Unity (2014) book, including some things I didn't even know about, such as the various functions in the Mathf section of Appendix B: Common Classes (pp. 409). The same section also contains information on the lerp function, which I already mentioned I don't have the best experience with, so while I probably won't be able to put what I learnt from this book into these trap scripts as I've already finalised them, this is something I will be able to put into practice in a future project.
Process: I tried to improve the workflow of my programming by looking into solutions for solving problems I encountered when debugging scripts I created for the traps, especially with errors the Unity editor threw at me that I didn't quite understand. I found that the Unity documentation and forums such as StackOverflow helped me get through my issues. For example, setting up lerps in the dart launcher trap, I found that the Game Dev Beginner's The right way to Lerp in Unity (with examples) blog post by John French (2020) was a massive help in getting a baseline understanding of how lerps work and how to use them to translate the position of my dart over time, and to also realise how messy lerping in scripting can be, but at least it works.
I did also try to look at some books that have sections on debugging in Unity, such as the Debugging section in Part 2 of Jeremy Bond's Introduction to Game Design, Prototyping, and Development (2017) book (pp. 425-440), but I found that a lot of the information shown in these books are either very outdated, with sections dedicated to debugging with MonoDevelop, a script editor program that the Unity editor has since scrapped in favour of Microsoft's Visual Studio, or information that I had already learnt from my current history of programming in Unity, which unfortunately includes the entire aforementioned Debugging section of Jeremy Bond's book.
Person: Even though I was a programmer, I found that I was not only communicating with the other programmers at times, but also the level designers. Firstly, there were plenty of times where I had to communicate with Ronan, the programmer in charge of the camera and player systems, to try and solve an issue I encountered when setting up my traps to work with his player controller, or even working together to fix an issue we found, like when the slow down effect of my poison darts was producing unexpected results so we had to work together to fix the issue in his script (the fix was to add a bool in his script to stop the player altogether).
Secondly, I was communicating with the level designers as well because, as per the order of operations in the team, I would have to hand off my traps to the level designers who were in charge of properly implementing the traps into their level, and I would make sure the level designers understood how to use the traps, such as with parameters I set up in the inspector component for the scripts to control various functions. I also sometimes had to work with the level designers to correctly implement the traps into the levels, and in the case of the Nordic level it was due to an oversight in the placement of the trigger and collider of the pitfall trap.
I didn't receive a whole lot of feedback for my traps, but I did receive feedback from the lecturer about the way I set the parameters for the dart trap in the Greek level. I set the darts to fire pretty much randomly, and the lecturer suggested that I should instead set them up to be in a pattern, which is something I didn't even think about but makes complete sense. Next time I take on the programming role and do something like the traps again, I'll consider this feedback.
Make sure you add a Mid-Project reflection for brief one. This should be min 250words.
You must have at least one scholarly reference per project (APA 7).
Proficiency: How did you develop your technical skills and knowledge? Give examples of the skills and knowledge, techniques, and self-directed research that inform your project. (Min 50 words)
Process: How did you improve your workflows and processes, including changes or setbacks? Give specific examples of your research and how it influenced your creative process. Cite sources in APA 7th , must be scholarly. (Min 50 words)
Person: What communication and collaboration skills did this project require, and how did you develop these skills?" How did you manage collaboration, receiving and giving feedback to others? (Min 50 words)
Appraisal: Overall, I'm somewhat happy with the way that the project turned out, but I'm not very happy about the fact that half of my traps were scrapped from my project. This isn't to say that I'm not happy about the decision the team made to remove them, this is to say I'm unhappy about how I wasn't able to solve all the problems with the scrapped traps in time to keep them in the project, but I'll hang on to the traps and maybe even fix them and re-implement them into an updated version of the game if I want to revisit it.
The traps were still a little rough around the edges at the end, it would have been cool to add extra polish to the traps, such as adding a sinking feature to the quicksand pitfall traps in the Greek level, but I'm happy they at least work and aren't complete junk.
Challenges: The biggest obstacles that I faced were writing up the scripts for the traps. There were plenty of times where I spent a lot of time trying to figure out out to get a specific part of a script working, such as with the lerp function of the darts as I didn't have the best experience with working with lerps in scripting, but I overcame it by keeping at it with trial and error, as well as referring to documentation and also the forums to see how others were able to overcome the problem. In saying this, though, poor time management made it hard to keep all traps in the game using this method.
There was also a major issue I encountered with trying to get the traps to distinguish between the two players because of the way Ronan had set up the player system, and it took me a while to get a fix working for it, but I overcame it by communicating a bit with Ronan and also thinking outside the box and recalling back to a method I learnt from GAD181, that being to use tags. Through all this, the lesson I learnt was to make sure to manage my time better if I want to keep a lot of the programming I created in the project, as I am going to have moments where I will spent a lot of time troubleshooting, and managing my time poorly does not go well with this at all.
Future Goals: For next time, the most important skill I will have to try and improve is time management. As I learnt throughout this trimester with programming the traps, if I'm creating anything more than a simple script or a script I've already written up 10 times before, I am going to run into issues that need troubleshooting, and managing my time well is going to allow me to troubleshoot the scripts effectively without having to cut content.
Something I'll have to do differently next time is with setting up the parameters for my scripts, as it was apparent that the level designers didn't entirely understand how to tweak my traps, so I will have to make it simpler and also better communicate with the level designers so they understand it better. For something I'll repeat, I think the habit of having things contained in a lesser amount of scripts (e.g. having one script only per trap and all functions are defined in that one script) as that keeps things tidy and allows for better organisation.
GIF: The player touching the pitfall trap in the Greek level. Note how the player simply stops in one place instead of sinking.
Bond, J. (2017). Introduction to Game Design, Prototyping, and Development : From Concept to Playable Game with Unity and C# (2nd ed.). Pearson Education, Limited. https://ebookcentral.proquest.com/lib/sae/detail.action?docID=7052290
French, J. (2020). The right way to Lerp in Unity (with examples). Game Dev Beginner. Retrieved May 11, 2023 from https://gamedevbeginner.com/the-right-way-to-lerp-in-unity-with-examples/
Menard, M., & Wagstaff, B. (2014). Game Development with Unity (2nd ed.). Cengage Learning. https://ebookcentral.proquest.com/lib/sae/detail.action?docID=3136735