Disney's Pirates of the Caribbean Online - Fishing Game

 

 

Platform:
Windows, Mac OS

Engine:
Panda3D

Language:
Python

Tools Used:
Komodo IDE

Duration:
3 months

Team Size: 6

Role:
Game Design,
Gameplay programming

 

Overview

Disney’s Pirates of The Caribbean Online (POTCO) is a 3D MMO set in the Pirates mythos.  We designed and built several new minigames to spice up the game including the fishing minigame I was responsible for building.  Working on this project was truly collaborative between art and design.  It was hard work, but in the end, it is worth it because thousands of players love it!

The fishing game takes place in the 3D world, but on a fixed 2D camera.  It consists of three phases: casting, reeling, and fish fighting. As you cast, the camera zooms out a bit and follows your lure.  Once it hits the water, it begins to sink and you can reel it in.  To catch a fish, you need to position the lure near its mouth.  If your lure is within attraction range that fish, it will attempt to bite it.  When it bites, click the mouse button to hook it!  Now the final phase of fishing begins where you hold the mouse button to reel.  The fish will periodically fight back and pull the lure further out to sea!  If you are reeling when it fights back, your line’s health meter will drop.  If it reaches zero, your line will break and the fish will steal your lure!

There are a variety of special abilities you earn as you level up your fishing skill.  Stall, Heal, Pull, Tug, Sink, and Ocean Eye.
Abilities allow you to have more control over the minigame via the lure’s movement in the water (stalling in place, quickly sinking, etc) or by healing your line (Heal) and forcing a fish to stop fighting (Tug).  Ocean Eye gives you a view of the entire minigame playing field so you can find rare fish!

For more information about the fishing game including all the crazy kinds of fish you can catch, check out this wiki:
http://piratesonline.wikia.com/wiki/Fishing

You can play Pirates (and this minigame!) for FREE here: http://piratesonline.go.com/

 

Gameplay Video

 

 

Screenshots


 


Detailed Info


Design

I was not the lead designer on this project, however since I was the gameplay programmer, I had a lot of input on the design. Game development is highly collaborative, so I can't take credit for everything!

However, several abilities were my design such as Ocean Eye and Sink because they came up during development as "man, wouldn't it be so nice if…" features. A lot of the configurable variables were also born from this same method.

In addition, there's an easter egg in the game that was my design – if you can manage to get a larger fish lured into the same area as smaller fish, it will start eating them and grow larger. Since the game stores your largest fish caught for each species, you can set your record for each fish by doing this! 8-)

Also, I enjoyed suggesting we add a special touch when you catch a legendary fish. Since it is legendary, and we want other players to catch them and have the story make sense, your pirate keeps a scale from the fish and sets it free. The camera changes to behind the pirate as they wave goodbye and the legendary fish swims off into the sunset.

In the early phases, I played a lot of fishing games to get a feel for what we wanted to do. The casting of a free flash game called Fishing Girl was satisfying, but reeling was boring. The reeling of Pet Society's fishing game was exciting, but casting was boring and you couldn't see the fish. The idea behind the Pirates fishing game design was to merge the exciting casting of Fishing Girl with the exciting fish struggle and reeling of Pet Society only enhanced so we can see all the fish action under the water. It's a success!


Programming


I was the gameplay programmer for this minigame.

Initially, I developed the minigame independently from the Pirates codebase, which is quite large. This allowed me to build rapid prototypes that we playtested with kids in the target demographic (and adults too!). Iterating with these prototypes, we were able to come up with what was fun and cut what was not.

I worked closely with design to build a system that was incredibly configurable. The overall game has many variables such as the minimum and maximum fish to spawn in a random range, etc. Also, each fish has over 10 configuration variables including random ranges on weight, rarity, where they spawn in the world, how strong they are, how likely to bite, various time delays, etc. Since it is Python, we could change the values and reload the code without restarting the game. This enabled us to very rapidly balance and tweak all of the gameplay!

I also worked closely with art to get assets through the Panda3D and Pirates pipeline.

Since this game was already released, I had to integrate the fishing minigame into the existing Pirates codebase once it was relatively complete. I had to integrate fishing with the leveling system, inventory system, collection system, and also the boat system so players could fish on boats at sea.

There was a lot of functionality from Panda3D leveraged including AABs for collision, distance checks, basic fish AI, animation systems for fish and pirate, state machines for all the game objects, manipulating the scene graph, render bins, applying a water caustics shader on the fish, and a whole lot more.

All of the code is written in Python.