Files
15112-fishing-miniproject/spec-sheet.md
T

4.7 KiB

Spec Sheet for Fishing Game

Note

This document was handwritten by me as part of the first prompt for this project, in markdown format because it is easily understood by agents and allows me to fully describe what I want and how I want the AI to help. This note won't be part of the prompt, just making sure it is clear what was written by me and what was not. I will be using AI to outline the code, followed by writing the actual code content myself. You are more welcome to look through my commit history (as well as time log) as I will make it clear which changes were made by AI and which were wholly my own, I do not want it to appear as though I am one-shotting this or don't plan to introduce plenty of my own code - the spec sheet is also so I have my own solid plan.

Style

This is a mini-project for my programming class, on basic python. I am designing a game based around fishing and luck-based play, with a rogue-like upgrade system. follow the specifications carefully, but feel free to suggest additional improvements. The project should be primarily written in Python. it must be fully comprehensible at our current level in the class. Therefore, please feel free to use loops, strings lists, 2d lists, tuples, dictionaries (not official material but I have experience), and other things I have not specifically forbade. However, please try to avoid extensively using recursion, sets, Object Oriented Programming, and other very advanced methods. The code MUST be clean, well-commented/labeled, and clear to read, as both I and any other students/professors need to be able to follow the logic. Please try to mainly use one python file as the actual game script. Please try to use the cmu_graphics library for the main engine of the game. If we require features that it is unable to achieve, suggest another framework, but it will be cleaner and easier to understand this way. I WILL be reading through every line that you have written, so dont be too verbose. This isn't an incredibly complex project, and careful commenting and well-written code will make it easy to understand.

Game Architecture

As previously stated, cmu_graphics should be the main backend engine, with the MVC pattern.

The gameplay will be similar to as follows:

  • you start fishing, and after a random amount of time a "skill check" appears to see if you successfully reel it in
  • this skill check will be somewhat like the dead by daylight game, where there are bars around a circle that you must time your clicks to match
  • the difficulty of the fish (different for each fish, stored in the database) determines things like the speed of the cursor going around the circle, the length of the bars, and the number of the bars
  • upgrades can be purchased in the shop that can do things like lower the speed, add modifiers, and do other actions to make fishing easier
  • the difficulty of fish available depends on the bait you use, which can be changed in the shop (you pay for a license once, then can switch to any owned bait at any time)
  • fish are randomly selected, probably skewed towards easier but ensuring the user still has ample opportunity to have some fun skill checks they feel proud of passing
  • higher difficulty fish give more money when sold to the market
  • for database, a csv file containing each fish, its description, price, sprite filename, difficulty, length, and weight (among any other info) should be sufficient (this can be "creatures.tsv" in a "data" directory)
  • sprites will be stored in a "sprites" folder, with all the fish being stored in a "fish" subfolder I will find sprites - leave placeholder files for what should be included (no need for them to be actual png or sprites, just so i know whats needed)
  • game save data can be stored in JSON format, ensuring it persists between play sessions for a smooth experience. this can just be "save.json" in the same directory as the script.

The UI will appear this way:

  • bottom 1/3 of the screen is the lake/water that you are fishing into, just blue and maybe some wave patterns or improvements
  • there is a dock with your character sprite sitting on the end with it's fishing rod, with the bobber going down onto the water when you fish
  • shop and other ui will appear as sprites standing on grass behind the dock/water area, and are clickable to interact with the shop/ui
  • caught fish should have their sprite appear to come up flying out of the water, and stay on the screen while it displays the fish stats and name + description, until the user clicks it away

UI Planning

  • shop menu includes purchases at the top in 3 columns for each type, with the bait selector / purchaser at the bottom
  • idle screen has fisherman on dock on left, water in bottom middle, shop guy in top middle, cash and current bait in top right