About Project
Moon Hollow follows an unlikely hero who is trying to save the town from a curse by solving a series of riddles. Additionally, the player has options to:
- explore the town
- avoid enemies
- chat to an NPC
- collect gold to increase score
- collect milk to restore health
The game was developed for a course Entertainment Computing at Uni Bremen in the Summer Semester 2023/24. It was an individual project where the goal was to develop a game in less than 8 weeks.
My tasks included:
- Creating a Game Design Document (GDD)
- Prototyping the game mechanics described in GDD
- Designing the game and UI elements
- Implementing the game mechanics, adding animations and Game AI
- Presenting the finished game
- Conducting a Player Experience Inventory (PXI) Evaluation
Concept and Idea Generation
The game idea needed to fit into an unlikely hero theme. The game couldn't have been a clone of an existing game but should have some novel component or combine several elements from different games. The following criteria was given:
- It has to have a player character (could be a person, object e.g. car or playing cards)
- There should be at least one level
- A win condition with multiple player goals
- At least one non-player character (NPC) as enemies or companion
- The development has to be feasible for a single person in 8 weeks
Game Design Document
- Overview - A quick way to look for the main highlights of the game.
- Mechanics - This section describes the game elements, its attributes, and its interaction rules.
- Dynamics - This section describes the flow of the game.
- Visuals and Sounds - This section details what the player sees and hears.
- Document references - Lists all the documents referenced by this GDD.
Prototyping
For prototyping I used Figma, to quickly try out the game mechanics I used emojis as game elements and Adobe Firefly and AI Illustration generator for generating the backgrounds. After connecting the scenes, testing it out and screen recording the flows, I downloaded the appropriate sounds and music from Pixabay. Then I added the sounds to the video in CapCut.
Video Prototype
Game Design
Due to limited time, I generated the backgrounds for the game with the help of Adobe Firefly. Some game and UI elements I designed from scratch (cat, ghost, signs, milk collectable, main menu icon), and some of them I downloaded from svg repo and edited them to fit the theme (settings icon, NPC player).
Game Elements
UI Elements
Typography
Throughout the game I used two fonts: VT323 and Shadows Into Light. Both are free to use and downloaded from Google Fonts.
End Result
Below are screenshots taken from the game that showcase how everything looks combined.
Unity Implementation
Player Movement
After everything has been thought through and prototyped, it was the time to implement it in Unity. Player movement was one of the first thing to be realised. I used the new Unity input system, and had the player move (and jump) with arrow keys. Part of the game mechanics ended up to be that the player can jump really high - sort of like a cat.
Level Design
The next step was to start designing the logic, or mechanics of the game. Enemy character - ghost, collectible gold to increase score and milk to restore health. A big part of the game are also riddles. They work on principle of text input being compared to a list of possible solutions - so that "A solution" and "solution" for example would both be correct. There is also an NPC character whose sole purpose is to tell the player how to win the game.
Animation
Player movement is done via skeletal animation: idle state, walking and jumping. Then the enemy ghost is moved solely by its position, up and down. Finally, the NPC character is designed to have an orange outline around it getting bigger and smaller - that was done via sprite animation.
For UI Animations I used a DOTween package to make settings button rotate and expand the settings option with nice fading.
Game AI
AI is used so ghosts would attack the player when it would get close to them. It is also used to generate collectible elements on random spots so each game feels a little different.Game Testing and Evaluation
After the game was finished, testing and evaluation took place. I had seven players test out my game and fill out a PXI Questionnaire with two additional questions afterwards about their likes and dislikes in the game. Afterwards I analysed the data collected and wrote a report on it.
Tools, Frameworks & Technologies
- Figma
- Inkscape
- CapCut
- C#
- Unity
- Visual Studio Code
Conclusion
Developing this game was limited by time. During the development I learned a lot, but unfortunately I did not manage to implement everything I imagined when I wrote the game design document. I had to compromise the puzzle elements by replacing them with riddles, otherwise I would not be able to finish the game in time. I also moved from developing the game for Android devices to developing for PC, for several reasons. Firstly, because of the time limitation and easier testing. Secondly, because the game was graded as a Windows and Mac build, so I had to prioritize that. Despite the really good PXI results (and the excellent grade I received), I can also see plenty of areas for improvement, aside from the testers feedback.