Allow users to fish for fish using fishing rods
A new ocean entity which can be interacted with has created. The way the ocean/water was previously presented currently was just through a plane placed at zero height. Now that the ocean entity has been created, it can be interacted with.
The next step is to provide a fishing rod entity type. This would also need a client model.
The fishing rod needs to be baited with bait. We'll go with earthworms here. In order to obtain earthworms the user needs first to dig up a pile of dirt through the use of a shovel and then look through the pile. The functionality for digging up piles of dirt is already present, however there's currently no functionality for looking though it for worms. For this, we will provide a more generic functionality for inspecting containers, something which is currently missing.
For a start, we are implementing the task of obtaining earthworms simply as interacting with a mound of earth with a sieve equipped. The sieve sifts through the earth, and the earthworms are generated while the activity is being carried out and directly added to the player's inventory. Once the basic functionality is implemented, further additions will be made for realism, such as decreasing the quantity of earthworms with time and generating different starting amounts of earthworms based on soil moisture content.
Now, for fishing, an earthworm should be attached to the fishing rod as bait. It's not entirely clear how this should be handled in the interface. One option would be to just add the worm as a child of the rod (which is how it should be anyway). However, it's not clear that such an operation would be logical for the user. Overall we might need to look into different interface solutions for combining different items.
Once the rod has been baited it needs to be wielded and then used on the ocean. A rudimentary AI for fish is now complete. The fish move in schools, and avoid players. In the future, once earthworms are implemented as bait, the fish will also have a tendency to move towards and "eat" the bait.
The functionality for the actual baiting needs some thoughts, both on the server and client. For fishing, we will need a way to place that earthworm into the ocean while still being attached to the fishing rod and then also provide logic so that when the earthworm is eaten the fish is actually caught in the rod.
A possible solution here would be to use three different entities: the rod, a tack and the earthworm. The tack is a child of the rod and the earthworm is a child of the tack. When deployed, the rod will then be attached to the player entity, and the tack will extend down into the water (the bounding box of thus needs to be extended dynamically). At the end of the tack the bait would be placed (alternatively we would also provide a lure in between the tack and the bait). Such a setup would make it possible for the bait to be placed into the water while still attached to the rod.
- terrain (moraf)
- pile/mound of dirt
- fishing rod
- tack (possible also a lure)
To extend the functionality it could be possible to add different species of fishes, and different types or baits and lures. Some combination of bait and lures would then be partially alluring to certain types of fishes. This would add some degree of skill to the fishing experience since the player would first need to survey the types of fish available and then try to find the most effective lure or bait for that fish.