The University of Melbourne
COMP30019 – Graphics and Interaction
GHOSTY PACMAN - Group 33 Reimagined Potato
We re-created Pac-Man in 3D.
Watch Game Trailer on YouTube Now
Pac-Man was originally developed and released in 1980 by the Japanese company, Namco (Puck Man). It became one of the most successful arcade games in history. Over the years, a lot of variations emerge from different places across the whole world. 40 years later, we, Reimagined Potato, decided to recreate the game, but in 3D. Upon this stage, we have created a working version of this game for both Windows and Mac; however, this is NOT our destination. Soonly enough, we will create VR version of this game and let the hard-core gamers to have the opportunity to enjoy the classic classic old but gold game.
GHOSTY PACMAN README
Table of contents
- Team Members
- Explanation of the Game
- Technologies
- How We Completed the Main Features
- Resources Used
- Evaluation
- Final Words from Team Reimagined Potato
Team Members
Name | Task |
---|---|
Wei Ge@gewg |
|
Leyan Lin@Sushi6006 |
|
Xubin Zou@NicKZ-gene |
|
Chang Shen@ChangShen0925 |
|
Explanation of the Game
How to Run
- Clone this repository with the command
git clone https://github.com/Graphics-and-Interaction-COMP30019/project-2-project2_group_33.git ReimaginedPotato
- Import the folder
ReimaginedPotato
as an Unity project in Unity Hub. - click da lil play button lah
☺️ - If it does not work, the reason may be, according to our past experience, because of different platforms (i.e. Windows/macOS).
Reimport All
solves the problem. - If step 3 works, just
Reimport All
to avoid potential problems.
OR
Simply open the GhostyPacman.exe
or GhostyPacman.app
depending on your operating system and that should be working just fine.
How to Play
Goal:
Live, run away from ghosts (some are chasing you!), and eat as many pacdots as you can before you die (just like the original one).
Game Mechanics:
However, there are stuff that work differently compared to the original Pac-man:
- Some ghosts will be permanently chasing you, some will completely ignore you.
- Pacdots respawn, after every period of time. So do the power-ups.
- Besides the power-dot (yellow) that allows you to eat Ghosts, we give another two powerups: speed-up (blue) that allows you to, as the name suggests, run really fast, and shield (green) that blocks one ghost attack.
- You will know when you can eat ghosts when there is red particals around you; you will know when it is safe to bump into a ghost when there is a translucent shield around you; and you can know you have a speed-up buff when you, obviously, run really fast.
Controls:
In Ghosty Pacman, we have two control system:
- Default Pac-man WASD Control (DPWC for reference)
- DPWC was inherited from the very original arcade Pac-man game, where you are always moving forwards and WASD keys are used to change the direction you are going towards.
- FP(but no shooting) WASD+Mouse Control (FPWC for reference)
- FPWC was inspired by modern FPS games where WASD keys are used to move in the given direction and the direction of "forward" is controlled by the mouse.
Players can use C
to switch between two control systems. If you are not sure what mode you're in:
- If you are moving forward without pressing any keys, you are in DPWC, use WASD to change directions
- If you are stationary without pressing keys, you are in FPWC, use WASD to start moving
Also, the V
key can be used to switch between third-person view and first-person view.
One More Thing:
Press ESC
to pause the game.
Technologies
Project is created with:
- Unity 2019.4.8f1
Tools we have used:
- Windows 10 (Wei) / macOS Catalina (Others)
- Git/GitHub (for version control and collaboration)
- WeChat/Discord/Zoom (for communications)
- VS Code (for writing C# code)
- Photoshop (for icons and buttons)
- Bfxr (for sound effects)
- Bosca Ceoil (for music)
- ProBuilder & ProGrid in Unity (for map creation)
- Google/YouTube/StackOverflow/UnityDocumentation/UnityForum (for learning)
- special thanks to: Brackeys (YouTube)
How We Completed the Main Features
Menu & UI
Unity Animator and Canvas (the UI GameObject) were used to create a fantastic UI for our game.
The animator was used to create the animations for all the buttons of three of our menus: main, pause and after-game. The script controls the functionalities and the animations of the buttons.
Shader
Toon Shader
Because we have weak light elements in our game, we choose Toon shader, which is basically unaffected by light. Another reason is the Toon shader makes the object adorable, suitable with our Pacman theme.
Toon shader is generated by 4 parts: ambient + specular + rim: the ambient and specular is not impacted a lot by light, we can manipulate the size of specular, color of ambient manually.
The directional light gives our shader a basic distinction between dark plane and light plane.
In ambient, we soften the edge between light and dark to remove the jaggedness, smoothstep() supports it.
Specular part is very similar to the Phong shader in the lab, we also soften the specular spot's edge.
The "rim" of an object will be defined as surfaces that are facing away from the camera, we calculate the rim by taking the dot product of the normal and the view direction, and inverting it.
Transparent Shader
Transparent shader is used for shields.
We designed a transparent shader with texture firstly, but we did not use the texture later, Texture parameter is kept in the shader.
We turn off the depth writes(ZWrite) to keep further object's rendering and turn on Blending(Blend SrcAlpha OneMinusSrcAlpha) for the transparent result.
We add ambient and diffuse in the shader to make our shield more powerful.
The blending method makes better shield than the depth test method.
Player Control
Pacman Control
We use CharacterController to control our characters, it will ignore the physical engine and bring smooth operation experience. We designed two control systems, the 'turn around effect' in classic mode is made for smooth reflection(really hard part).
Camera
We design two versions of view, the first person and third person, with switching camera's position. The camera is set as pacman's child object to follow the pacman.
We add ray between camera and pacman to avoid the camera going through walls, the ray will detect the obstacle and zoom the camera.
Ghosts (AI)
The chasing system on Ghost is finished by navigation in unity, every ghost is an agent. At first, we have stairs in our map, so gravity calculation is added to the pacman though the stairs were removed at last. The ghost can float.
Pacdot and Power-ups
The script not only makes all the pacdots and power-ups respawn after a certain amount of time, but also makes our object float instead of sticking to the ground.
Map Creation
Our map was a complete copy from the original Pac-man with all the dimensions and scales re-calculated and adjusted. It was created using ProBuilder (Verified Version 4.2.3) and ProGrid (Preview Version 3.0.3). The map consists of only two objects: A "block" with all the walls and a "plane" for the floor. This is different to the first version of the map with hundreds if not thousands of small cubes. Putting all the walls in one game object makes the AI implementation much easier to do, fixing a bug we had where the chasing ghosts (AI) will wait for the player to stop moving to keep chasing.
Resources Used
Menu was created along with this tutorial:
Make A Gorgeous Start Menu (Unity UI Tutorial)!
Map was created along with this tutorial:
MAKING YOUR FIRST LEVEL in Unity with ProBuilder!
Evaluation
Field studies were taken after the very first minimum viable prototype was completed (when the trailer was made). Since we are creating a casual/arcade game for everyone to play when relaxing, laboratory studies were not suitable for us to investigate in our design. The method of field studies, therefore, were chosen.
We had 6 participants outside from our development team to play/test our game for us. While choosing our participants, we aimed to find people with distinct backgrounds including their gender, age and gaming experience. We believe that, by doing this, what we can conclude from these feedbacks could be extremely meaningful for our project as our game is going to be a casual/arcade game for everyone to play. However, due to the lack of time and resources, we were only able to find 6 participants, including our parents, families and friends.
For privacy purpose, we will use Participants #[id]
to identify each of our participant. The following table includes the background/information of each participant.
Participant ID | Age | Gender | Electronic Gaming Experience |
---|---|---|---|
0 | 19 | Male | Played a few (hyper-)casual games (e.g. Ketchapp/Supercell) |
1 | 21 | Female | Plays a lot of mobile MOBA-games, played a few casual games |
2 | 22 | Female | Sometimes play some PUBG or Honor of Kings on mobile phones |
3 | 13 | Male | Plays a lot of casual games on iPad |
4 | 44 | Male | Played a lot of computer casual/arcade games (e.g. BattleCity) |
5 | 46 | Female | Barely played any games |
Note: We have got consent from all our participants to use and share the information included in this report.
Observation Methods
There were three options to choose from: Think aloud, Cooperative evaluation, and Post-task walkthroughs. We chose Think aloud and Post-task walkthroughs as our observation methods. We did not choose Cooperative evaluation because of how distracting this can be. Also, we figured that our game is simple enough to play and Think aloud is enough for the feedback we want; Cooperative evaluation can be an overkill with negative effects that come along.
Our implementation of the observation methods is:
- Start a Zoom meeting with the participants and start recording with consents
- Interview for their background (included in the table above)
- Explain the methods we are going to experiment (either Think aloud or Post-task walkthrough)
- Send the executable files to them (either
.app
for macOS or.exe
for Windows) - Let them play and get feedback
- Review the recordings and fill the details that were potentially missed in the previous step
For participants 0, 1 and 4, we used Think Aloud observation methods and for participants 2, 3 and 5 we chose Post-task Walkthroughs.
Note: The feedback recorded might not be direct words that came out from them. This is simply what we have concluded from their responses. However, we ensured that we did not alter the meaning of their sentences by double checking our concluded feedback with the corresponding participants.
Think Aloud
The reason why we have chosen this observation method is that it gives instant feedback on players' feelings towards a certain action or a specific scene of the game. Though some might say this method is distracting, we feel that the distraction level is totally fine for a casual game like ours after experiencing this observation method within our own team.
Participant #0
- Expects a "snake game" like control system, instead of WASD+Mouse
- given at the very start of the game
- Thinks the pyramid is creative, innovative, but unnecessary
- about 30 seconds into the game
- Finds the lighting system (day&night) weird and unnecessary
- after 3-4 minutes into the game
- Finds the Ghosts not chasing (Developers' Note: because the AI was not working correctly as mentioned)
- Finds the map boring. "It is just sides of squares with a pyramid that gives you absolute safety."
- at the end
- Really likes the sfx we have
- at the end
Participant #1
- Finds pacdot eating sound too shrill (high-pitch)
- after she had about 15 pacdots
- Still thinks the eating sound is good though, will be better if at a lower pitch
- about 45 seconds in
- Thinks that a background music would be great (Developers' Note: we just have not put it in yet)
- about 1 minute into the game
- Finds the Ghosts too creepy at night
- about 1 minute into the game
- Finds that players can bug through the wall if pushing hard enough
- after 5 minutes into the game
- Finds the control system too tiring where you have to hold keys to keep moving
- at the end
Participant #4
- Likes the sfx a lot
- about 30 seconds into the game
- Does not like the day & night lighting
- 1 minute into the game
- Ghost lighting visual bugs
- 1 minute into the game
- Thinks that the game is just too easy (Developers' Note: because the AI was not working correctly as mentioned)
- at the end
Post-task Walkthroughs
We chose post-task walkthroughs as one of our observation methods because of the "undistracted session" our players can have. Though players might forget certain things they encounter and start to make up things that do not exist, we are still curious to see what feedback we can get with this post walkthroughts. It is also a good opportunity to see what differences we can get from two different observation methods.
Participant #2
- Does not like the day & night lighting because Ghosts are too creepy
- Does not like the map
- Thinks it is a nice boredom-killer
Participant #3
- Thinks the game is fun to play
- Finds the character hard to control
Participant #5
- Likes the pyramid
- Likes the sfx
Developers' Conclusion from Observation Methods
There was a clear difference between the quantity and quality of feedbacks given from Think aloud and Post-task walkthroughs. For Post-task walkthroughs, we even asked questions such as "What do you think about our player control system?" and the responses were pretty pointless. In future development, we as game developers will definitely emphasises more on the feedbacks from the method Think aloud. Also, for the Think aloud method, while rewatching the recordings, I found out that because we were busy noting their feedback, we barely gave reply to their feedback. This might discourage them from giving frequent or meaningful feedback in the latter part of testing and this is definitely something we should improve on.
Since our sample size was incredibly small, we have to value each feedback as important as the others even though they may only appeare once.
We have summarised some key points from all the feedback we have got from Observation Methods:
- Player control system may be weird
- Day & Night lighting system is widely disliked
- Bugs need to be fixed (such as AI not working)
- Features need to be completed (such as background music)
- Sfx could be improved
Query Techniques
We use SUS (System Usability Scale) as our query technique (which was shown in the lecture) for all our 6 participants. All members of our development team like this template a lot and think this is a good form for our game. The following are the questions we listed for our participants (with scale of 1-5 for each):
(1: Strongly Disagree, 5: Strongly Agree)
- I think that I would like to play this game frequently
- I found this game unnecessarily complex
- I thought the game was easy to use
- I think I would need someone to teach me to be able to play this game
- I found the controls and the game mechanics in this game were well integrated
- I thought there was too much inconsistency in the game
- I would imagine that most people would learn how to play this game very quickly
- I found the game very cumbersome to use
- I felt confident playing this game correctly
- I needed to learn a lot of controls and game mechanics before I could start play the game normally
We gave google forms for our participants to fill in, and the following table shows their responses:
Participant ID | Q1 | Q2 | Q3 | Q4 | Q5 | Q6 | Q7 | Q8 | Q9 | Q10 | SU Score |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 5 | 1 | 5 | 1 | 3 | 1 | 5 | 1 | 5 | 1 | 95.0 |
1 | 2 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 2 | 90.0 |
2 | 4 | 1 | 4 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 95.0 |
3 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 2 | 97.5 |
4 | 2 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 92.5 |
5 | 3 | 1 | 3 | 1 | 4 | 1 | 3 | 1 | 4 | 4 | 72.5 |
Average SU Score = 90.41667
Our SU score is pretty high, meaning that our game is easy to play. This is a good indication that we are on the right track while designing different elements in our game. However, this data is not very meaningful for two reasons. The first one is that our sample size is extremely small with only 6 participants. The second reason is that all participants are our families and friends. Though we already asked them to not show any "mercy" while giving us feedback, it is still possible that they gave us scores thinking that their family/friend made this game so cannot be too harsh.
We later had discussions with our participants on why they gave out some scores, the following are some meaningful responses (either for us to improve or to give reasons on why certain scores were given):
- "Not my type of game"/"Don't play games anymore"
- "Not used to the control system"
- "Gamemode is interesting"
- "FPS control on arcade games does not feel comfortable"
Changes Made
Thanks to all the responses we get, we made some big improvements to our game. Here is a list of what we changed after the evaluation process:
- New control system (WASD only) is now added and users can choose whatever they want whenever they want it.
- Some sound effects are updated with lower pitch and volume. Background music is added
- Whole lighting mechanism was remade:
- day & night effect is now gone
- fixed ghost lighting visual bug
- whole map is lit up
- Map was remade with respect to the original Pac-man.
Final Words from Team Reimagined Potato
2020 has been a tough year for all of us, stucking at home getting mental issues. We, as a team, would like to thank our subject coordinator and lecturer Dr. Jorge Goncalves for giving us this amazing opportunity bringing us together to complete this project. It has been a great semester having the opportunity to participate in this subject thanks to our lecturer' and tutors' hardwork.
This was the first time developing a full size game for all of us and we all had an amazing time creating what only existed in our mind. Though it may still have bugs, poorly designed flaws, we are proud of what we have achieved and we definitely look forward to completing this game to an industry standard when the holiday is coming up. Great appreciation is to be given to Dr. Goncalves for his kindness giving us a 2-day extension to complete this project with our situation.
Lastly, we deeply hope that everyone can enjoy our (prototype) game. Stay safe, and take care!
Best regards,
Team Reimagined Potato