Git Product home page Git Product logo

island-fish's Introduction

Island Fish

You can download the game from my Itch.io page here: Island Fish.

*Due to the original (private) repository that I used throughout development containing paid assets, I have made this new repository public with only the code available within it. I've set up my game repositories this way to be able to share my code, without violating any asset copyright rules. The private repository containing all project files and commit messages may be available upon request.

Description

Island Fish is a fishing collection prototype. There are eight different fish to be caught from multiple bodies of water, with each fish having its own unique stats. You must find bait worms along the coast in order to fish. The end goal is to catch every fish at its max size (trackable info in the player's journal).

All progression can be saved and loaded (via JSON).

Development

The overall goal I had envisioned for this project was to create a complete prototype/game. My prior projects were more focused on individual components: mobile with Rigidbodies, simple quest system with dialogue text, and more of the alike. With this project I wanted to include data in the form of Scriptable Objects, have a flow of starting with a cutscene, a main gameplay loop that could actually be completed, along with all the extra things that you would expect from a complete game such as a menu with system settings, an interactive UI, stats to track, and a saving and loading system.

In the end I feel like I accomplished what I set out to do from the start, but that's not to say it's a perfect project.

Learning Outcome

I planned a lot for this prototype with a diagram board for initial high-level scope and ideas, Trello board for programming tasks and overall progress, along with many empty projects for testing assets. Yet, even with all of this preparation, I still stumbled a bit and learned even more.

The main component of this prototype was a fishing system, which I struggled with a lot. From several iterations of using a line renderer, to implementing my own version of a Verlet Integration fishing line, to eventually landing on purchasing Obi Rope. Although Obi Rope is amazing for simulating rope physics, it is extremely complex. I spent nearly a month trying to understand how the asset worked and I lost a lot of time and motivation. I should have had a plan for how I was going to implement the fishing line, and stuck with it from the beginning.

Beyond the fishing line, I did not spend much time thinking about how to add details to the fishing system. This was purely on me having conflicting interests. My main goal was to create a comprehensive project, including all of the aforementioned systems, yet I overlooked the details of the main feature. I had added the fish Scriptable Objects, implemented saving and loading, had a cutscene, spent time creating the island, made a shop system with camera switching, but the fishing system, although it certainly works, could have used more time and planning.

End Thoughts & Future

I will shift how I think when it comes to implementing features. I found myself writing code for specific items/objects, rather than taking a bit more time to create a reusable system that is open for extension to apply to several similar objects. I really enjoyed creating custom Inspectors with Odin and I gained a better understanding of how to work with Scriptable Objects.


Fish Scriptable Object custom Inspector example.

This project also highlighted some key programming areas that I still struggle with and made me realize I need to directly spend time studying and practicing, some of those areas are:

  • Implementing Actions, Events, and Delegates more often.
  • Moving logic out of the Update() loop into more sub/unsub systems.
  • Getting a better handle on references to not rely on FindWithTag().
  • Decoupling in general.

I don't know what my next project will be at the moment, but I am certain it will be focused around my weak points mentioned above. I recently built a template for Ray Tracing in Unity's HDRP, which I am currently interested in exploring more of in regards to lighting and Ray Tracing.

Screenshots

Additional Information

  • Made with: Unity 2020.3.26 (URP)
External Tools Used:

island-fish's People

Contributors

kfollen93 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.