The goal of this project was to create a simple, interactive game that tested my skills in problem-solving and gameplay design. I aimed to make the player experience smoother and more intuitive by experimenting with different control methods and adding subtle visual cues. This project reflects my approach to tackling design challenges in small steps, focusing on practical improvements to enhance playability.
Iterative development I Starting the game as a game jam prototype, the game was refined through testing and feedback, including switching from WASD to mouse controls for better precision and smoother gameplay.
Design Improvements: I added intuitive visual cues like jiggling apples and fall indicators, guiding players and enhancing both accessibility and engagement.
Back end integration I connected the game to a PHP and MySQL backend to manage user accounts and high scores. This integration allowed players to log in and track their progress.
Password encryption I used SHA-256 encryption to protect user passwords, ensuring data security. This taught me the importance of handling sensitive information in a securer way.
To save your score, you'll need to create an account within Unity. The Unity registration code uses SHA256 encryption for secure password storage and communicates with a PHP script for registration, which returns errors Unity can interpret. The Unity High Login Code retrieves only the player's name and top score, while a PHP script for high score storage handles back-end operations to protect sensitive data.
This project is the first time I used PHP and worked with a MySQL backend. I'm running the database locally because of security reasons. The code is still susceptible for SQL injections. The only security measure is now within unity which doesn't allow more then 16 characters making it harder to inject something. But if someone where to get the Http address they would be able to break the whole database. The player is able to login to an account and play with the amount of apples they collected.
One day, a teacher jokingly mentioned how old websites were easily hacked through SQL injection. This made me think about My Old Code and realize it was vulnerable. I later updated it to use prepared statements with parameterized queries, making it secure. This experience taught me the importance of secure coding practices, even in languages I’m still learning.
Revisiting this project taught me the importance of iteration and player feedback. Improving controls and adding visual cues enhanced gameplay and user experience. Additionally, implementing features like saving player progress taught me valuable lessons about secure data storage and protecting user information.