Space Fishing Game

Tech Stack: Unity 2023, Visual Studio, Maya/Blender, Substance Painter, Gitlab

The Assignment

This project started very strangely for me because I got shifted around from group to group four times before I got placed by my final group whom I completed the project with. The assignment was to make a game in the style of your choosing and my group chose to make a walkthrough game with some fun mechanics. We had a total of 6 weeks for this game minus the 2-3 weeks I got shifted from group to group. The game was completed in the week of 22-01-2024 and me and my whole group got to present the game at the GLU 2024 expo and got to teach a bunch of people how to play the game. Overall one of my better projects.

My Role

I was the lead developer of the project. When somebody needed an opinion on their code or art they came to me and I helped them improve it. I was in charge of the game design, before this project I hadn‘t really had to do much around game design. But it became apparent to me after a couple of weeks that if no one else was going to do it would have to...

Here are some more of my tasks:
  • Boat functionality
  • Camera Boat functionality
  • Player Interaction
  • Complete Game Loop
  • Main and only bug fixer
  • Comic Players (Start and End of the game)
  • Audio Management and integration
  • Camera Functionality
  • Death Functionality
  • Game Designer
  • Group Leader
  • Map functionality
  • Quest Management
  • Respawning System
  • Player out of bounds management
  • WebGL Build
  • Code Highlights

    Distance Checking Player Interaction
    private List<float> DistToObjects(List<Interactable> list) { List<float> dists = new(); for (int i = 0; i < list.Count; i++) { dists.Add(Vector3.Distance(transform.position, list[i].transform.position)); } for (int i = 0; i < dists.Count; i++) { if (dists[i] > floatRadius) { list[i].inRadius = false; list[i].inRadiusEvent.Invoke(); list.Remove(list[i]); dists.Remove(dists[i]); } } return dists; }

    Explanation:
    This code defines a method DistToObjects that takes a list of objects (interactable) as a parameter and calculates the distances between the current object (with this script) and each object in the provided list.
    The method calculates distances between the current object and a list of interactable objects, updates their "inRadius" status, triggers events, and removes objects that are beyond a specified radius.



    Zone Locking Functionality
    private void CheckWhichZone() { for (int i = 0; i < zones.Count; i++) { if (zones[i].bounds.Contains(player.transform.position)) { playerZoneLocation[i] = true; playerRef.currentZone = zones[i]; } else { playerZoneLocation[i] = false; } } } private bool CheckIfZoneUnlocked() { //als de zone waar de speler in zit niet unlocked is var zone = playerRef.currentZone; int currentZoneIndex = zones.IndexOf(zone); for (int i = 0; i < playerZoneLocation.Length; i++) { if (playerZoneLocation[i] == true && zones[currentZoneIndex].GetComponent<Zone>().unlocked == true) { return true; } } return false; }

    Explanation:
    CheckWhichZone() iterates through a list of zones to determine if the player is inside any of them. If a zone contains the player‘s position, it sets a corresponding flag in an array to true and updates the player‘s current zone.
    CheckIfZoneUnlocked() checks if the current zone where the player is located is unlocked. It examines the flags set in the array during the previous method and verifies if the associated zone is unlocked. If both conditions are met, it returns true; otherwise, it returns false.

    Reflection On The Project

    After the fact I wish I had picked a more capable group at the beginning of the project. This would have given me more time to make a better game. And it would have gotten me a better mark on this project. I recently got my mark and I got a 6.5 out of 10. Which is not that high for 6-7 weeks of stress... The project itself was fun and I like that I still get some plays on my project sometimes.