First Game (EVER)
Introduction:
My name is Jack Miller, and this is my first game developed for the KIT109 Games Fundamentals unit at the University of Tasmania. It's also my first-ever game and coding experience beyond the exposure I had in the Programming Principles unit at the same university, where I used Python. Although I had no prior experience with C#, my background in Python helped me to at least comprehend and understand the line elements of the C# code. Given my lack of experience with C#, I relied heavily on GitHub Copilot for script writing and troubleshooting. For instance, when I first configured the paddle physics, the paddles would rebound backward in a spinning fashion off the screen upon collision.
Game Concept:
The game is based on the classic retro Pong arcade game. Player controls are simple: the left paddle is controlled using the W and S keys, while the right paddle is controlled using the Up and Down arrow keys. The game ends when a player reaches a score of 10, with a message displayed declaring the left player or right player as the winner.
Development Process:
The planning stage involved identifying the primary objects needed to make the game, such as the paddles, game field (including the middle line, top and bottom walls, ball, and goal ends).
During development, I created a simple white square sprite in Paint, which I used for all the visual objects, maintaining the classic arcade style of Pong. The key scripts generated and linked to their respective objects included the Ball Controller, Game Manager, Input Manager, Paddle Controller, and UI Manager. These scripts were essential for controlling movement, managing game logic, handling player inputs, and displaying the UI.
Given my lack of experience with C#, I relied heavily on GitHub Copilot for script writing. Initially, I encountered issues with the paddle physics, where the paddles rebounded off the screen in a spinning motion upon collision. This was resolved by adjusting the physics settings in Unity.
The only triggers set up were for the goal ends, detecting when the ball crossed the boundary to update the score. Rigidbodies were applied to ensure smooth and accurate physics interactions. The UI displayed player scores, and the game concluded when a player reached 10 points.
Challenges and Solutions:
One of the main challenges I faced was the issue with paddle physics, where the paddles would react unpredictably when struck. This problem was resolved by fine-tuning the Rigidbody and Collider settings for the paddles. Additionally, balancing the game speed and paddle responsiveness required several iterations to get the gameplay feeling right.
Reflection
As the game development progressed, my understanding of C# scripting significantly improved. I became more comfortable reading and interpreting the scripts, which allowed me to make more informed adjustments and troubleshoot issues more effectively. Additionally, I gained a deeper understanding of how to utilise the Inspector window in Unity. This tool became invaluable for adding and configuring components, linking them to scripts, and fine-tuning the game’s behaviour. By the end of the project, I felt more confident in navigating Unity's interface and making real-time adjustments to enhance the gameplay experience.
Future Enhancements
Looking ahead, I plan to include several features to enhance the gameplay experience in future releases. These enhancements may include:
- Sound Effects: Adding sound effects for paddle hits, scoring, and game over events to make the game more immersive.
- Ball Speed Control: Implementing a ball speed control feature to allow players to adjust the difficulty level by increasing or decreasing the ball's speed.
- New Game Option: Introducing a 'New Game' option in the UI, allowing players to restart the game easily without having to relaunch it.
- Customisation Options: Offering customisation features where players can modify the background, ball, and paddles. This could include changing colours, applying textures, or even selecting different themes to personalise the game.
These enhancements aim to provide a richer and more engaging experience for players, offering them greater control and personalisation options.
Comments
Log in with itch.io to leave a comment.
Nice comprehensive devlog -- keep it up for assignment 3 :)